@particle-academy/react-fancy 5.54.1 → 5.54.2

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 (36) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/button.cjs +3 -3
  3. package/dist/button.js +1 -1
  4. package/dist/{chunk-ZFU4FY3Q.js → chunk-4FZOH7BJ.js} +3 -3
  5. package/dist/{chunk-ZFU4FY3Q.js.map → chunk-4FZOH7BJ.js.map} +1 -1
  6. package/dist/{chunk-TCW72JBU.cjs → chunk-6XX6OHAP.cjs} +15 -15
  7. package/dist/{chunk-TCW72JBU.cjs.map → chunk-6XX6OHAP.cjs.map} +1 -1
  8. package/dist/{chunk-I2TBENUQ.cjs → chunk-7R7HENZG.cjs} +6 -6
  9. package/dist/{chunk-I2TBENUQ.cjs.map → chunk-7R7HENZG.cjs.map} +1 -1
  10. package/dist/{chunk-XOXA3QZR.cjs → chunk-C5YX5XVL.cjs} +3 -3
  11. package/dist/chunk-C5YX5XVL.cjs.map +1 -0
  12. package/dist/{chunk-EULOJOTU.js → chunk-DAJPPKPO.js} +3 -3
  13. package/dist/{chunk-EULOJOTU.js.map → chunk-DAJPPKPO.js.map} +1 -1
  14. package/dist/{chunk-REKY2CM6.js → chunk-KQYOIPHQ.js} +3 -3
  15. package/dist/{chunk-REKY2CM6.js.map → chunk-KQYOIPHQ.js.map} +1 -1
  16. package/dist/{chunk-4I4Y5MZO.cjs → chunk-LVE6ERRS.cjs} +4 -4
  17. package/dist/{chunk-4I4Y5MZO.cjs.map → chunk-LVE6ERRS.cjs.map} +1 -1
  18. package/dist/{chunk-6GKR5OAW.cjs → chunk-SIEPD6NR.cjs} +4 -4
  19. package/dist/{chunk-6GKR5OAW.cjs.map → chunk-SIEPD6NR.cjs.map} +1 -1
  20. package/dist/{chunk-45JO5BEZ.js → chunk-TLRRMYNV.js} +3 -3
  21. package/dist/chunk-TLRRMYNV.js.map +1 -0
  22. package/dist/{chunk-TBXZ3NGR.js → chunk-YBRQTZKV.js} +3 -3
  23. package/dist/{chunk-TBXZ3NGR.js.map → chunk-YBRQTZKV.js.map} +1 -1
  24. package/dist/index.cjs +25 -25
  25. package/dist/index.js +5 -5
  26. package/dist/json-editor.cjs +13 -13
  27. package/dist/json-editor.js +2 -2
  28. package/dist/magic-wand.cjs +3 -3
  29. package/dist/magic-wand.js +2 -2
  30. package/dist/prompt-input.cjs +3 -3
  31. package/dist/prompt-input.js +2 -2
  32. package/dist/reason-tag.cjs +3 -3
  33. package/dist/reason-tag.js +2 -2
  34. package/package.json +1 -1
  35. package/dist/chunk-45JO5BEZ.js.map +0 -1
  36. package/dist/chunk-XOXA3QZR.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -23,7 +23,7 @@ var chunkYH75G6SP_cjs = require('./chunk-YH75G6SP.cjs');
23
23
  var chunkUXYFM2XT_cjs = require('./chunk-UXYFM2XT.cjs');
24
24
  var chunk5ZNOLPIJ_cjs = require('./chunk-5ZNOLPIJ.cjs');
25
25
  var chunkAE53RKWR_cjs = require('./chunk-AE53RKWR.cjs');
26
- var chunk4I4Y5MZO_cjs = require('./chunk-4I4Y5MZO.cjs');
26
+ var chunkLVE6ERRS_cjs = require('./chunk-LVE6ERRS.cjs');
27
27
  var chunk5P3PISAX_cjs = require('./chunk-5P3PISAX.cjs');
28
28
  var chunkY7RGUUTS_cjs = require('./chunk-Y7RGUUTS.cjs');
29
29
  var chunkEZA6GWZL_cjs = require('./chunk-EZA6GWZL.cjs');
@@ -33,7 +33,7 @@ var chunkFVQO75KY_cjs = require('./chunk-FVQO75KY.cjs');
33
33
  var chunkKSU6RYWU_cjs = require('./chunk-KSU6RYWU.cjs');
34
34
  var chunkK5MQZTDW_cjs = require('./chunk-K5MQZTDW.cjs');
35
35
  var chunkB4YV2V7G_cjs = require('./chunk-B4YV2V7G.cjs');
36
- var chunkI2TBENUQ_cjs = require('./chunk-I2TBENUQ.cjs');
36
+ var chunk7R7HENZG_cjs = require('./chunk-7R7HENZG.cjs');
37
37
  var chunkBJKKW77L_cjs = require('./chunk-BJKKW77L.cjs');
38
38
  require('./chunk-I27K6NLX.cjs');
39
39
  var chunkBK6XQQYG_cjs = require('./chunk-BK6XQQYG.cjs');
@@ -46,14 +46,14 @@ var chunkWMANILKC_cjs = require('./chunk-WMANILKC.cjs');
46
46
  var chunkSSCW67KA_cjs = require('./chunk-SSCW67KA.cjs');
47
47
  var chunkAYBKPAI2_cjs = require('./chunk-AYBKPAI2.cjs');
48
48
  var chunk6MXFZ3B5_cjs = require('./chunk-6MXFZ3B5.cjs');
49
- var chunkTCW72JBU_cjs = require('./chunk-TCW72JBU.cjs');
49
+ var chunk6XX6OHAP_cjs = require('./chunk-6XX6OHAP.cjs');
50
50
  var chunkJRRYYW3Y_cjs = require('./chunk-JRRYYW3Y.cjs');
51
51
  var chunkGLGUQGAQ_cjs = require('./chunk-GLGUQGAQ.cjs');
52
52
  var chunk2O5UXH5R_cjs = require('./chunk-2O5UXH5R.cjs');
53
53
  var chunkTLRFXSPA_cjs = require('./chunk-TLRFXSPA.cjs');
54
54
  var chunkIEQK3LGI_cjs = require('./chunk-IEQK3LGI.cjs');
55
55
  var chunkL4JIBKFW_cjs = require('./chunk-L4JIBKFW.cjs');
56
- var chunk6GKR5OAW_cjs = require('./chunk-6GKR5OAW.cjs');
56
+ var chunkSIEPD6NR_cjs = require('./chunk-SIEPD6NR.cjs');
57
57
  var chunkMAZEX4EZ_cjs = require('./chunk-MAZEX4EZ.cjs');
58
58
  require('./chunk-MRZXTL46.cjs');
59
59
  var chunkP53432AK_cjs = require('./chunk-P53432AK.cjs');
@@ -110,7 +110,7 @@ var chunkKNKOSMOQ_cjs = require('./chunk-KNKOSMOQ.cjs');
110
110
  var chunk57FQGQJK_cjs = require('./chunk-57FQGQJK.cjs');
111
111
  var chunkRXDRYWVD_cjs = require('./chunk-RXDRYWVD.cjs');
112
112
  require('./chunk-M5MUGSON.cjs');
113
- var chunkXOXA3QZR_cjs = require('./chunk-XOXA3QZR.cjs');
113
+ var chunkC5YX5XVL_cjs = require('./chunk-C5YX5XVL.cjs');
114
114
  var chunkX2FC7ODX_cjs = require('./chunk-X2FC7ODX.cjs');
115
115
  var chunkXCZZVRBY_cjs = require('./chunk-XCZZVRBY.cjs');
116
116
  var chunkMXWR3T3N_cjs = require('./chunk-MXWR3T3N.cjs');
@@ -303,7 +303,7 @@ Object.defineProperty(exports, "selectMode", {
303
303
  });
304
304
  Object.defineProperty(exports, "ReasonTag", {
305
305
  enumerable: true,
306
- get: function () { return chunk4I4Y5MZO_cjs.ReasonTag; }
306
+ get: function () { return chunkLVE6ERRS_cjs.ReasonTag; }
307
307
  });
308
308
  Object.defineProperty(exports, "Section", {
309
309
  enumerable: true,
@@ -351,19 +351,19 @@ Object.defineProperty(exports, "Progress", {
351
351
  });
352
352
  Object.defineProperty(exports, "PromptInput", {
353
353
  enumerable: true,
354
- get: function () { return chunkI2TBENUQ_cjs.PromptInput; }
354
+ get: function () { return chunk7R7HENZG_cjs.PromptInput; }
355
355
  });
356
356
  Object.defineProperty(exports, "browserPlatformHints", {
357
357
  enumerable: true,
358
- get: function () { return chunkI2TBENUQ_cjs.browserPlatformHints; }
358
+ get: function () { return chunk7R7HENZG_cjs.browserPlatformHints; }
359
359
  });
360
360
  Object.defineProperty(exports, "detectPlatform", {
361
361
  enumerable: true,
362
- get: function () { return chunkI2TBENUQ_cjs.detectPlatform; }
362
+ get: function () { return chunk7R7HENZG_cjs.detectPlatform; }
363
363
  });
364
364
  Object.defineProperty(exports, "modifierKeyLabel", {
365
365
  enumerable: true,
366
- get: function () { return chunkI2TBENUQ_cjs.modifierKeyLabel; }
366
+ get: function () { return chunk7R7HENZG_cjs.modifierKeyLabel; }
367
367
  });
368
368
  Object.defineProperty(exports, "Tooltip", {
369
369
  enumerable: true,
@@ -443,51 +443,51 @@ Object.defineProperty(exports, "textareaAdapter", {
443
443
  });
444
444
  Object.defineProperty(exports, "JSON_FIELD_TYPES", {
445
445
  enumerable: true,
446
- get: function () { return chunkTCW72JBU_cjs.JSON_FIELD_TYPES; }
446
+ get: function () { return chunk6XX6OHAP_cjs.JSON_FIELD_TYPES; }
447
447
  });
448
448
  Object.defineProperty(exports, "JsonEditor", {
449
449
  enumerable: true,
450
- get: function () { return chunkTCW72JBU_cjs.JsonEditor; }
450
+ get: function () { return chunk6XX6OHAP_cjs.JsonEditor; }
451
451
  });
452
452
  Object.defineProperty(exports, "applyJsonEdit", {
453
453
  enumerable: true,
454
- get: function () { return chunkTCW72JBU_cjs.applyJsonEdit; }
454
+ get: function () { return chunk6XX6OHAP_cjs.applyJsonEdit; }
455
455
  });
456
456
  Object.defineProperty(exports, "describeEdit", {
457
457
  enumerable: true,
458
- get: function () { return chunkTCW72JBU_cjs.describeEdit; }
458
+ get: function () { return chunk6XX6OHAP_cjs.describeEdit; }
459
459
  });
460
460
  Object.defineProperty(exports, "findJsonConflicts", {
461
461
  enumerable: true,
462
- get: function () { return chunkTCW72JBU_cjs.findJsonConflicts; }
462
+ get: function () { return chunk6XX6OHAP_cjs.findJsonConflicts; }
463
463
  });
464
464
  Object.defineProperty(exports, "getAtPath", {
465
465
  enumerable: true,
466
- get: function () { return chunkTCW72JBU_cjs.getAtPath; }
466
+ get: function () { return chunk6XX6OHAP_cjs.getAtPath; }
467
467
  });
468
468
  Object.defineProperty(exports, "inferType", {
469
469
  enumerable: true,
470
- get: function () { return chunkTCW72JBU_cjs.inferType; }
470
+ get: function () { return chunk6XX6OHAP_cjs.inferType; }
471
471
  });
472
472
  Object.defineProperty(exports, "parseKeyMap", {
473
473
  enumerable: true,
474
- get: function () { return chunkTCW72JBU_cjs.parseKeyMap; }
474
+ get: function () { return chunk6XX6OHAP_cjs.parseKeyMap; }
475
475
  });
476
476
  Object.defineProperty(exports, "parsePath", {
477
477
  enumerable: true,
478
- get: function () { return chunkTCW72JBU_cjs.parsePath; }
478
+ get: function () { return chunk6XX6OHAP_cjs.parsePath; }
479
479
  });
480
480
  Object.defineProperty(exports, "pathToString", {
481
481
  enumerable: true,
482
- get: function () { return chunkTCW72JBU_cjs.pathToString; }
482
+ get: function () { return chunk6XX6OHAP_cjs.pathToString; }
483
483
  });
484
484
  Object.defineProperty(exports, "resolveKeyRule", {
485
485
  enumerable: true,
486
- get: function () { return chunkTCW72JBU_cjs.resolveKeyRule; }
486
+ get: function () { return chunk6XX6OHAP_cjs.resolveKeyRule; }
487
487
  });
488
488
  Object.defineProperty(exports, "typeMatches", {
489
489
  enumerable: true,
490
- get: function () { return chunkTCW72JBU_cjs.typeMatches; }
490
+ get: function () { return chunk6XX6OHAP_cjs.typeMatches; }
491
491
  });
492
492
  Object.defineProperty(exports, "Input", {
493
493
  enumerable: true,
@@ -519,7 +519,7 @@ Object.defineProperty(exports, "Kbd", {
519
519
  });
520
520
  Object.defineProperty(exports, "MagicWand", {
521
521
  enumerable: true,
522
- get: function () { return chunk6GKR5OAW_cjs.MagicWand; }
522
+ get: function () { return chunkSIEPD6NR_cjs.MagicWand; }
523
523
  });
524
524
  Object.defineProperty(exports, "Textarea", {
525
525
  enumerable: true,
@@ -827,11 +827,11 @@ Object.defineProperty(exports, "useEscapeKey", {
827
827
  });
828
828
  Object.defineProperty(exports, "Action", {
829
829
  enumerable: true,
830
- get: function () { return chunkXOXA3QZR_cjs.Action; }
830
+ get: function () { return chunkC5YX5XVL_cjs.Action; }
831
831
  });
832
832
  Object.defineProperty(exports, "Button", {
833
833
  enumerable: true,
834
- get: function () { return chunkXOXA3QZR_cjs.Button; }
834
+ get: function () { return chunkC5YX5XVL_cjs.Button; }
835
835
  });
836
836
  Object.defineProperty(exports, "sanitizeHref", {
837
837
  enumerable: true,
package/dist/index.js CHANGED
@@ -21,7 +21,7 @@ export { TimePicker } from './chunk-AZQXPI5S.js';
21
21
  export { Timeline } from './chunk-QGY5FPVM.js';
22
22
  export { Toast, useToast } from './chunk-UIE5FP3A.js';
23
23
  export { QrCode, encodeQr, selectMode } from './chunk-RLE5WYY6.js';
24
- export { ReasonTag } from './chunk-ZFU4FY3Q.js';
24
+ export { ReasonTag } from './chunk-4FZOH7BJ.js';
25
25
  export { Section } from './chunk-SLJD25VV.js';
26
26
  export { Separator } from './chunk-JSD6IEBW.js';
27
27
  export { Sidebar, useSidebar } from './chunk-YJHP5FVA.js';
@@ -31,7 +31,7 @@ export { StatList } from './chunk-SXXDTW7S.js';
31
31
  export { Pillbox } from './chunk-G35XN5WV.js';
32
32
  export { Profile } from './chunk-GOE36IXL.js';
33
33
  export { Progress } from './chunk-UE3QO7R3.js';
34
- export { PromptInput, browserPlatformHints, detectPlatform, modifierKeyLabel } from './chunk-REKY2CM6.js';
34
+ export { PromptInput, browserPlatformHints, detectPlatform, modifierKeyLabel } from './chunk-KQYOIPHQ.js';
35
35
  export { Tooltip } from './chunk-TGBLDJ72.js';
36
36
  import './chunk-SV5BW3IA.js';
37
37
  export { PullQuote } from './chunk-44VYWOCG.js';
@@ -44,14 +44,14 @@ export { OtpInput } from './chunk-TMQF2CRN.js';
44
44
  export { Pagination } from './chunk-LKN7FYW6.js';
45
45
  export { IndexList } from './chunk-BLOX7MRO.js';
46
46
  export { InputTag, contentEditableAdapter, controlledAdapter, inputAdapter, textareaAdapter } from './chunk-BX7EDTL4.js';
47
- export { JSON_FIELD_TYPES, JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-TBXZ3NGR.js';
47
+ export { JSON_FIELD_TYPES, JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-YBRQTZKV.js';
48
48
  export { Input } from './chunk-XQDGUXMS.js';
49
49
  export { Select } from './chunk-T45LBTXH.js';
50
50
  export { Switch } from './chunk-DXZCKDYS.js';
51
51
  export { DatePicker } from './chunk-2UTN3EFK.js';
52
52
  export { Kanban, useKanban } from './chunk-35MF32VQ.js';
53
53
  export { Kbd } from './chunk-OTSVOPKP.js';
54
- export { MagicWand } from './chunk-EULOJOTU.js';
54
+ export { MagicWand } from './chunk-DAJPPKPO.js';
55
55
  export { Textarea } from './chunk-UVUBV4VZ.js';
56
56
  import './chunk-KXYMMNNV.js';
57
57
  export { DisplayValue } from './chunk-WX5XYDVN.js';
@@ -108,7 +108,7 @@ export { Breadcrumbs } from './chunk-3AYRLFNO.js';
108
108
  export { useOutsideClick } from './chunk-RGANGU7X.js';
109
109
  export { useEscapeKey } from './chunk-JXE5XID6.js';
110
110
  import './chunk-LQ4ICCN2.js';
111
- export { Action, Button } from './chunk-45JO5BEZ.js';
111
+ export { Action, Button } from './chunk-TLRRMYNV.js';
112
112
  export { sanitizeHref, sanitizeHtml } from './chunk-6TBRBN7H.js';
113
113
  export { EMOJI_CATEGORY_ORDER, EMOJI_DATA, EMOJI_ENTRIES, SKIN_TONES, applyTone, find, hasSkinTones, resolve, search, skinTones } from './chunk-45BBNJQD.js';
114
114
  export { Icon, configureIcons, registerIconAddendum, registerIconSet, registerIcons } from './chunk-J3A4Z2P7.js';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkTCW72JBU_cjs = require('./chunk-TCW72JBU.cjs');
3
+ var chunk6XX6OHAP_cjs = require('./chunk-6XX6OHAP.cjs');
4
4
  require('./chunk-JRRYYW3Y.cjs');
5
5
  require('./chunk-GLGUQGAQ.cjs');
6
6
  require('./chunk-2O5UXH5R.cjs');
@@ -21,7 +21,7 @@ require('./chunk-NBZC6LOB.cjs');
21
21
  require('./chunk-MOU6O324.cjs');
22
22
  require('./chunk-57FQGQJK.cjs');
23
23
  require('./chunk-RXDRYWVD.cjs');
24
- require('./chunk-XOXA3QZR.cjs');
24
+ require('./chunk-C5YX5XVL.cjs');
25
25
  require('./chunk-X2FC7ODX.cjs');
26
26
  require('./chunk-XCZZVRBY.cjs');
27
27
  require('./chunk-MXWR3T3N.cjs');
@@ -33,47 +33,47 @@ require('./chunk-ZU5Q77OT.cjs');
33
33
 
34
34
  Object.defineProperty(exports, "JsonEditor", {
35
35
  enumerable: true,
36
- get: function () { return chunkTCW72JBU_cjs.JsonEditor; }
36
+ get: function () { return chunk6XX6OHAP_cjs.JsonEditor; }
37
37
  });
38
38
  Object.defineProperty(exports, "applyJsonEdit", {
39
39
  enumerable: true,
40
- get: function () { return chunkTCW72JBU_cjs.applyJsonEdit; }
40
+ get: function () { return chunk6XX6OHAP_cjs.applyJsonEdit; }
41
41
  });
42
42
  Object.defineProperty(exports, "describeEdit", {
43
43
  enumerable: true,
44
- get: function () { return chunkTCW72JBU_cjs.describeEdit; }
44
+ get: function () { return chunk6XX6OHAP_cjs.describeEdit; }
45
45
  });
46
46
  Object.defineProperty(exports, "findJsonConflicts", {
47
47
  enumerable: true,
48
- get: function () { return chunkTCW72JBU_cjs.findJsonConflicts; }
48
+ get: function () { return chunk6XX6OHAP_cjs.findJsonConflicts; }
49
49
  });
50
50
  Object.defineProperty(exports, "getAtPath", {
51
51
  enumerable: true,
52
- get: function () { return chunkTCW72JBU_cjs.getAtPath; }
52
+ get: function () { return chunk6XX6OHAP_cjs.getAtPath; }
53
53
  });
54
54
  Object.defineProperty(exports, "inferType", {
55
55
  enumerable: true,
56
- get: function () { return chunkTCW72JBU_cjs.inferType; }
56
+ get: function () { return chunk6XX6OHAP_cjs.inferType; }
57
57
  });
58
58
  Object.defineProperty(exports, "parseKeyMap", {
59
59
  enumerable: true,
60
- get: function () { return chunkTCW72JBU_cjs.parseKeyMap; }
60
+ get: function () { return chunk6XX6OHAP_cjs.parseKeyMap; }
61
61
  });
62
62
  Object.defineProperty(exports, "parsePath", {
63
63
  enumerable: true,
64
- get: function () { return chunkTCW72JBU_cjs.parsePath; }
64
+ get: function () { return chunk6XX6OHAP_cjs.parsePath; }
65
65
  });
66
66
  Object.defineProperty(exports, "pathToString", {
67
67
  enumerable: true,
68
- get: function () { return chunkTCW72JBU_cjs.pathToString; }
68
+ get: function () { return chunk6XX6OHAP_cjs.pathToString; }
69
69
  });
70
70
  Object.defineProperty(exports, "resolveKeyRule", {
71
71
  enumerable: true,
72
- get: function () { return chunkTCW72JBU_cjs.resolveKeyRule; }
72
+ get: function () { return chunk6XX6OHAP_cjs.resolveKeyRule; }
73
73
  });
74
74
  Object.defineProperty(exports, "typeMatches", {
75
75
  enumerable: true,
76
- get: function () { return chunkTCW72JBU_cjs.typeMatches; }
76
+ get: function () { return chunk6XX6OHAP_cjs.typeMatches; }
77
77
  });
78
78
  //# sourceMappingURL=json-editor.cjs.map
79
79
  //# sourceMappingURL=json-editor.cjs.map
@@ -1,4 +1,4 @@
1
- export { JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-TBXZ3NGR.js';
1
+ export { JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-YBRQTZKV.js';
2
2
  import './chunk-XQDGUXMS.js';
3
3
  import './chunk-T45LBTXH.js';
4
4
  import './chunk-DXZCKDYS.js';
@@ -19,7 +19,7 @@ import './chunk-WHEXTDPV.js';
19
19
  import './chunk-6FCQD2KQ.js';
20
20
  import './chunk-RGANGU7X.js';
21
21
  import './chunk-JXE5XID6.js';
22
- import './chunk-45JO5BEZ.js';
22
+ import './chunk-TLRRMYNV.js';
23
23
  import './chunk-6TBRBN7H.js';
24
24
  import './chunk-45BBNJQD.js';
25
25
  import './chunk-J3A4Z2P7.js';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk6GKR5OAW_cjs = require('./chunk-6GKR5OAW.cjs');
3
+ var chunkSIEPD6NR_cjs = require('./chunk-SIEPD6NR.cjs');
4
4
  require('./chunk-MAZEX4EZ.cjs');
5
5
  require('./chunk-MRZXTL46.cjs');
6
6
  require('./chunk-P53432AK.cjs');
@@ -12,7 +12,7 @@ require('./chunk-NBZC6LOB.cjs');
12
12
  require('./chunk-VBWRH4UW.cjs');
13
13
  require('./chunk-MOU6O324.cjs');
14
14
  require('./chunk-M5MUGSON.cjs');
15
- require('./chunk-XOXA3QZR.cjs');
15
+ require('./chunk-C5YX5XVL.cjs');
16
16
  require('./chunk-X2FC7ODX.cjs');
17
17
  require('./chunk-XCZZVRBY.cjs');
18
18
  require('./chunk-MXWR3T3N.cjs');
@@ -22,7 +22,7 @@ require('./chunk-ZU5Q77OT.cjs');
22
22
 
23
23
  Object.defineProperty(exports, "MagicWand", {
24
24
  enumerable: true,
25
- get: function () { return chunk6GKR5OAW_cjs.MagicWand; }
25
+ get: function () { return chunkSIEPD6NR_cjs.MagicWand; }
26
26
  });
27
27
  //# sourceMappingURL=magic-wand.cjs.map
28
28
  //# sourceMappingURL=magic-wand.cjs.map
@@ -1,4 +1,4 @@
1
- export { MagicWand } from './chunk-EULOJOTU.js';
1
+ export { MagicWand } from './chunk-DAJPPKPO.js';
2
2
  import './chunk-UVUBV4VZ.js';
3
3
  import './chunk-KXYMMNNV.js';
4
4
  import './chunk-WX5XYDVN.js';
@@ -10,7 +10,7 @@ import './chunk-WHEXTDPV.js';
10
10
  import './chunk-IQ4KQJAO.js';
11
11
  import './chunk-6FCQD2KQ.js';
12
12
  import './chunk-LQ4ICCN2.js';
13
- import './chunk-45JO5BEZ.js';
13
+ import './chunk-TLRRMYNV.js';
14
14
  import './chunk-6TBRBN7H.js';
15
15
  import './chunk-45BBNJQD.js';
16
16
  import './chunk-J3A4Z2P7.js';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkI2TBENUQ_cjs = require('./chunk-I2TBENUQ.cjs');
3
+ var chunk7R7HENZG_cjs = require('./chunk-7R7HENZG.cjs');
4
4
  require('./chunk-BJKKW77L.cjs');
5
5
  require('./chunk-I27K6NLX.cjs');
6
6
  require('./chunk-AIA5UNQ5.cjs');
@@ -11,7 +11,7 @@ require('./chunk-NBZC6LOB.cjs');
11
11
  require('./chunk-57FQGQJK.cjs');
12
12
  require('./chunk-RXDRYWVD.cjs');
13
13
  require('./chunk-M5MUGSON.cjs');
14
- require('./chunk-XOXA3QZR.cjs');
14
+ require('./chunk-C5YX5XVL.cjs');
15
15
  require('./chunk-X2FC7ODX.cjs');
16
16
  require('./chunk-XCZZVRBY.cjs');
17
17
  require('./chunk-MXWR3T3N.cjs');
@@ -22,7 +22,7 @@ require('./chunk-ZU5Q77OT.cjs');
22
22
 
23
23
  Object.defineProperty(exports, "PromptInput", {
24
24
  enumerable: true,
25
- get: function () { return chunkI2TBENUQ_cjs.PromptInput; }
25
+ get: function () { return chunk7R7HENZG_cjs.PromptInput; }
26
26
  });
27
27
  //# sourceMappingURL=prompt-input.cjs.map
28
28
  //# sourceMappingURL=prompt-input.cjs.map
@@ -1,4 +1,4 @@
1
- export { PromptInput } from './chunk-REKY2CM6.js';
1
+ export { PromptInput } from './chunk-KQYOIPHQ.js';
2
2
  import './chunk-TGBLDJ72.js';
3
3
  import './chunk-SV5BW3IA.js';
4
4
  import './chunk-TJ66S5K6.js';
@@ -9,7 +9,7 @@ import './chunk-WHEXTDPV.js';
9
9
  import './chunk-RGANGU7X.js';
10
10
  import './chunk-JXE5XID6.js';
11
11
  import './chunk-LQ4ICCN2.js';
12
- import './chunk-45JO5BEZ.js';
12
+ import './chunk-TLRRMYNV.js';
13
13
  import './chunk-6TBRBN7H.js';
14
14
  import './chunk-45BBNJQD.js';
15
15
  import './chunk-J3A4Z2P7.js';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunk4I4Y5MZO_cjs = require('./chunk-4I4Y5MZO.cjs');
3
+ var chunkLVE6ERRS_cjs = require('./chunk-LVE6ERRS.cjs');
4
4
  require('./chunk-UZG6LO4Z.cjs');
5
5
  require('./chunk-J2DI6RMR.cjs');
6
6
  require('./chunk-NBZC6LOB.cjs');
7
7
  require('./chunk-57FQGQJK.cjs');
8
8
  require('./chunk-RXDRYWVD.cjs');
9
9
  require('./chunk-M5MUGSON.cjs');
10
- require('./chunk-XOXA3QZR.cjs');
10
+ require('./chunk-C5YX5XVL.cjs');
11
11
  require('./chunk-X2FC7ODX.cjs');
12
12
  require('./chunk-XCZZVRBY.cjs');
13
13
  require('./chunk-MXWR3T3N.cjs');
@@ -17,7 +17,7 @@ require('./chunk-ZU5Q77OT.cjs');
17
17
 
18
18
  Object.defineProperty(exports, "ReasonTag", {
19
19
  enumerable: true,
20
- get: function () { return chunk4I4Y5MZO_cjs.ReasonTag; }
20
+ get: function () { return chunkLVE6ERRS_cjs.ReasonTag; }
21
21
  });
22
22
  //# sourceMappingURL=reason-tag.cjs.map
23
23
  //# sourceMappingURL=reason-tag.cjs.map
@@ -1,11 +1,11 @@
1
- export { ReasonTag } from './chunk-ZFU4FY3Q.js';
1
+ export { ReasonTag } from './chunk-4FZOH7BJ.js';
2
2
  import './chunk-XYOT75HH.js';
3
3
  import './chunk-MQ6VGG62.js';
4
4
  import './chunk-WHEXTDPV.js';
5
5
  import './chunk-RGANGU7X.js';
6
6
  import './chunk-JXE5XID6.js';
7
7
  import './chunk-LQ4ICCN2.js';
8
- import './chunk-45JO5BEZ.js';
8
+ import './chunk-TLRRMYNV.js';
9
9
  import './chunk-6TBRBN7H.js';
10
10
  import './chunk-45BBNJQD.js';
11
11
  import './chunk-J3A4Z2P7.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@particle-academy/react-fancy",
3
- "version": "5.54.1",
3
+ "version": "5.54.2",
4
4
  "description": "React UI component library for Human+ UX — controlled, agent-bridgeable primitives",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Button/Button.colors.ts","../src/components/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-45JO5BEZ.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-button-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const buttonColorClasses: Record<Color, string> = {\n // The host's colour, from CSS variables -- no dark: variant, because a\n // host that themes per mode scopes the variables themselves.\n brand: \"bg-brand text-brand-contrast border border-brand hover:bg-brand-hover\",\n slate: \"bg-slate-500 text-white border border-slate-600 hover:bg-slate-600 dark:bg-slate-600 dark:border-slate-500 dark:hover:bg-slate-500\",\n gray: \"bg-gray-500 text-white border border-gray-600 hover:bg-gray-600 dark:bg-gray-600 dark:border-gray-500 dark:hover:bg-gray-500\",\n zinc: \"bg-zinc-500 text-white border border-zinc-600 hover:bg-zinc-600 dark:bg-zinc-600 dark:border-zinc-500 dark:hover:bg-zinc-500\",\n neutral: \"bg-neutral-500 text-white border border-neutral-600 hover:bg-neutral-600 dark:bg-neutral-600 dark:border-neutral-500 dark:hover:bg-neutral-500\",\n stone: \"bg-stone-500 text-white border border-stone-600 hover:bg-stone-600 dark:bg-stone-600 dark:border-stone-500 dark:hover:bg-stone-500\",\n red: \"bg-red-500 text-white border border-red-600 hover:bg-red-600 dark:bg-red-600 dark:border-red-500 dark:hover:bg-red-500\",\n orange: \"bg-orange-500 text-white border border-orange-600 hover:bg-orange-600 dark:bg-orange-600 dark:border-orange-500 dark:hover:bg-orange-500\",\n amber: \"bg-amber-400 text-amber-950 border border-amber-500 hover:bg-amber-500 dark:bg-amber-300 dark:text-amber-950 dark:border-amber-400 dark:hover:bg-amber-400\",\n yellow: \"bg-yellow-400 text-yellow-950 border border-yellow-500 hover:bg-yellow-500 dark:bg-yellow-300 dark:text-yellow-950 dark:border-yellow-400 dark:hover:bg-yellow-400\",\n lime: \"bg-lime-400 text-lime-950 border border-lime-500 hover:bg-lime-500 dark:bg-lime-300 dark:text-lime-950 dark:border-lime-400 dark:hover:bg-lime-400\",\n green: \"bg-green-500 text-white border border-green-600 hover:bg-green-600 dark:bg-green-600 dark:border-green-500 dark:hover:bg-green-500\",\n emerald: \"bg-emerald-500 text-white border border-emerald-600 hover:bg-emerald-600 dark:bg-emerald-600 dark:border-emerald-500 dark:hover:bg-emerald-500\",\n teal: \"bg-teal-500 text-white border border-teal-600 hover:bg-teal-600 dark:bg-teal-600 dark:border-teal-500 dark:hover:bg-teal-500\",\n cyan: \"bg-cyan-500 text-white border border-cyan-600 hover:bg-cyan-600 dark:bg-cyan-600 dark:border-cyan-500 dark:hover:bg-cyan-500\",\n sky: \"bg-sky-500 text-white border border-sky-600 hover:bg-sky-600 dark:bg-sky-600 dark:border-sky-500 dark:hover:bg-sky-500\",\n blue: \"bg-blue-500 text-white border border-blue-600 hover:bg-blue-600 dark:bg-blue-600 dark:border-blue-500 dark:hover:bg-blue-500\",\n indigo: \"bg-indigo-500 text-white border border-indigo-600 hover:bg-indigo-600 dark:bg-indigo-600 dark:border-indigo-500 dark:hover:bg-indigo-500\",\n violet: \"bg-violet-500 text-white border border-violet-600 hover:bg-violet-600 dark:bg-violet-600 dark:border-violet-500 dark:hover:bg-violet-500\",\n purple: \"bg-purple-500 text-white border border-purple-600 hover:bg-purple-600 dark:bg-purple-600 dark:border-purple-500 dark:hover:bg-purple-500\",\n fuchsia: \"bg-fuchsia-500 text-white border border-fuchsia-600 hover:bg-fuchsia-600 dark:bg-fuchsia-600 dark:border-fuchsia-500 dark:hover:bg-fuchsia-500\",\n pink: \"bg-pink-500 text-white border border-pink-600 hover:bg-pink-600 dark:bg-pink-600 dark:border-pink-500 dark:hover:bg-pink-500\",\n rose: \"bg-rose-500 text-white border border-rose-600 hover:bg-rose-600 dark:bg-rose-600 dark:border-rose-500 dark:hover:bg-rose-500\",\n};\n\nexport const buttonGhostClasses: Record<Color, string> = {\n // The host's colour, from CSS variables -- no dark: variant, because a\n // host that themes per mode scopes the variables themselves.\n brand: \"bg-transparent text-brand hover:bg-brand/10\",\n slate: \"bg-transparent text-slate-600 hover:bg-slate-50 dark:text-slate-400 dark:hover:bg-slate-950/50\",\n gray: \"bg-transparent text-gray-600 hover:bg-gray-50 dark:text-gray-400 dark:hover:bg-gray-950/50\",\n zinc: \"bg-transparent text-zinc-600 hover:bg-zinc-50 dark:text-zinc-400 dark:hover:bg-zinc-950/50\",\n neutral: \"bg-transparent text-neutral-600 hover:bg-neutral-50 dark:text-neutral-400 dark:hover:bg-neutral-950/50\",\n stone: \"bg-transparent text-stone-600 hover:bg-stone-50 dark:text-stone-400 dark:hover:bg-stone-950/50\",\n red: \"bg-transparent text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/50\",\n orange: \"bg-transparent text-orange-600 hover:bg-orange-50 dark:text-orange-400 dark:hover:bg-orange-950/50\",\n amber: \"bg-transparent text-amber-600 hover:bg-amber-50 dark:text-amber-400 dark:hover:bg-amber-950/50\",\n yellow: \"bg-transparent text-yellow-600 hover:bg-yellow-50 dark:text-yellow-400 dark:hover:bg-yellow-950/50\",\n lime: \"bg-transparent text-lime-600 hover:bg-lime-50 dark:text-lime-400 dark:hover:bg-lime-950/50\",\n green: \"bg-transparent text-green-600 hover:bg-green-50 dark:text-green-400 dark:hover:bg-green-950/50\",\n emerald: \"bg-transparent text-emerald-600 hover:bg-emerald-50 dark:text-emerald-400 dark:hover:bg-emerald-950/50\",\n teal: \"bg-transparent text-teal-600 hover:bg-teal-50 dark:text-teal-400 dark:hover:bg-teal-950/50\",\n cyan: \"bg-transparent text-cyan-600 hover:bg-cyan-50 dark:text-cyan-400 dark:hover:bg-cyan-950/50\",\n sky: \"bg-transparent text-sky-600 hover:bg-sky-50 dark:text-sky-400 dark:hover:bg-sky-950/50\",\n blue: \"bg-transparent text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-950/50\",\n indigo: \"bg-transparent text-indigo-600 hover:bg-indigo-50 dark:text-indigo-400 dark:hover:bg-indigo-950/50\",\n violet: \"bg-transparent text-violet-600 hover:bg-violet-50 dark:text-violet-400 dark:hover:bg-violet-950/50\",\n purple: \"bg-transparent text-purple-600 hover:bg-purple-50 dark:text-purple-400 dark:hover:bg-purple-950/50\",\n fuchsia: \"bg-transparent text-fuchsia-600 hover:bg-fuchsia-50 dark:text-fuchsia-400 dark:hover:bg-fuchsia-950/50\",\n pink: \"bg-transparent text-pink-600 hover:bg-pink-50 dark:text-pink-400 dark:hover:bg-pink-950/50\",\n rose: \"bg-transparent text-rose-600 hover:bg-rose-50 dark:text-rose-400 dark:hover:bg-rose-950/50\",\n};\n","import { forwardRef, type AnchorHTMLAttributes, type ElementType, type ForwardedRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { sanitizeHref } from \"../../utils/sanitize\";\nimport { resolve } from \"../../data/emoji-utils\";\nimport { Icon } from \"../Icon/Icon\";\nimport type { ButtonProps } from \"./Button.types\";\nimport type { ButtonColor, Size } from \"../../utils/types\";\nimport {\n buttonColorClasses as colorClasses,\n buttonGhostClasses as ghostColorClasses,\n} from \"./Button.colors\";\n\nconst iconSizeMap: Record<Size, \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"> = {\n xs: \"xs\",\n sm: \"xs\",\n md: \"sm\",\n lg: \"md\",\n xl: \"lg\",\n};\n\nconst alertIconSizeMap: Record<Size, \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"> = {\n xs: \"xs\",\n sm: \"xs\",\n md: \"xs\",\n lg: \"sm\",\n xl: \"sm\",\n};\n\n// ---------------------------------------------------------------------------\n// Color classes\n//\n// Solid + ghost color maps live in ./Button.colors (AUTO-GENERATED, all 22\n// Tailwind v4 hues as literal strings). The state-color classes below\n// (default/active/checked/warn) branch on flags, not specific colors.\n// ---------------------------------------------------------------------------\n\nconst defaultClasses =\n \"bg-white text-[color:var(--fancy-text-soft,var(--color-zinc-700))] border border-[color:var(--fancy-border,var(--color-zinc-200))] hover:bg-zinc-50 hover:border-zinc-300 dark:bg-zinc-800 dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:hover:bg-zinc-700\";\n\nconst activeClasses =\n \"bg-blue-500 text-white border border-blue-600 hover:bg-blue-600 dark:bg-blue-600 dark:border-blue-500 dark:hover:bg-blue-500\";\n\nconst checkedClasses =\n \"bg-emerald-500 text-white border border-emerald-600 hover:bg-emerald-600 dark:bg-emerald-600 dark:border-emerald-500 dark:hover:bg-emerald-500\";\n\nconst warnClasses =\n \"bg-amber-50 text-amber-700 border border-amber-200 hover:bg-amber-100 dark:bg-amber-900/30 dark:text-amber-300 dark:border-amber-700 dark:hover:bg-amber-900/50\";\n\nconst ghostDefaultClasses =\n \"bg-transparent text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\";\n\nconst ghostActiveClasses =\n \"bg-blue-50 text-blue-700 hover:bg-blue-100 dark:bg-blue-950/50 dark:text-blue-300 dark:hover:bg-blue-950\";\n\nconst ghostCheckedClasses =\n \"bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:bg-emerald-950/50 dark:text-emerald-300 dark:hover:bg-emerald-950\";\n\nconst ghostWarnClasses =\n \"bg-transparent text-amber-700 hover:bg-amber-50 dark:text-amber-300 dark:hover:bg-amber-950/50\";\n\n// ---------------------------------------------------------------------------\n// Size helpers\n// ---------------------------------------------------------------------------\n\nconst horizontalSize: Record<Size, string> = {\n xs: \"px-2 py-1 text-xs\",\n sm: \"px-2 py-1 text-xs\",\n md: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2.5 text-base\",\n xl: \"px-5 py-3 text-lg\",\n};\n\nconst circleSize: Record<Size, string> = {\n xs: \"w-7 h-7 text-xs\",\n sm: \"w-8 h-8 text-xs\",\n md: \"w-10 h-10 text-sm\",\n lg: \"w-12 h-12 text-base\",\n xl: \"w-14 h-14 text-lg\",\n};\n\nconst iconSize: Record<Size, string> = {\n xs: \"w-3 h-3\",\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n xl: \"w-6 h-6\",\n};\n\nconst avatarSize: Record<Size, string> = {\n xs: \"w-4 h-4\",\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n xl: \"w-7 h-7\",\n};\n\nconst alertIconSize: Record<Size, string> = {\n xs: \"w-2 h-2\",\n sm: \"w-2.5 h-2.5\",\n md: \"w-3 h-3\",\n lg: \"w-4 h-4\",\n xl: \"w-4 h-4\",\n};\n\nconst badgeSize: Record<Size, string> = {\n xs: \"text-[10px] px-1 min-w-[14px] h-3.5\",\n sm: \"text-[10px] px-1.5 min-w-[16px] h-4\",\n md: \"text-[11px] px-1.5 min-w-[18px] h-[18px]\",\n lg: \"text-xs px-2 min-w-[22px] h-5\",\n xl: \"text-xs px-2 min-w-[24px] h-5\",\n};\n\nconst externalIconOffset: Record<Size, string> = {\n xs: \"0.75rem\",\n sm: \"0.75rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction isColored(color?: ButtonColor, active?: boolean, checked?: boolean): boolean {\n return !!(color || active || checked);\n}\n\nfunction getColorClasses(\n color?: ButtonColor,\n active?: boolean,\n checked?: boolean,\n warn?: boolean,\n ghost?: boolean,\n): string {\n if (ghost) {\n if (color) return ghostColorClasses[color];\n if (checked) return ghostCheckedClasses;\n if (active) return ghostActiveClasses;\n if (warn) return ghostWarnClasses;\n return ghostDefaultClasses;\n }\n if (color) return colorClasses[color];\n if (checked) return checkedClasses;\n if (active) return activeClasses;\n if (warn) return warnClasses;\n return defaultClasses;\n}\n\nfunction getIconColorClasses(\n color?: ButtonColor,\n active?: boolean,\n checked?: boolean,\n warn?: boolean,\n ghost?: boolean,\n): string {\n if (ghost) {\n // Ghost variant: icon inherits currentColor from the button text\n return \"text-current\";\n }\n // A filled button's icon takes the label's colour — whatever that colour class\n // says, including a host's per-mode `text-brand-contrast` and the dark labels on\n // amber / yellow / lime. Hard-coded white was invisible on any light fill.\n if (color || active || checked) return \"text-current\";\n if (warn) return \"text-amber-600 dark:text-amber-400\";\n return \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\";\n}\n\nfunction getBadgeClasses(\n color?: ButtonColor,\n active?: boolean,\n checked?: boolean,\n warn?: boolean,\n ghost?: boolean,\n): string {\n if (ghost) {\n return \"bg-current/10 text-current\";\n }\n // Tinted with the label's own colour, for the same reason as the icon.\n if (isColored(color, active, checked)) return \"bg-current/20 text-current\";\n if (warn) return \"bg-amber-200 text-amber-800 dark:bg-amber-800 dark:text-amber-200\";\n return \"bg-zinc-200 text-zinc-700 dark:bg-zinc-600 dark:text-zinc-200\";\n}\n\n// ---------------------------------------------------------------------------\n// Placement parsing\n// ---------------------------------------------------------------------------\n\ntype PlacementAxis = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nfunction parsePlacement(iconPlace: string): { primary: PlacementAxis; secondary?: PlacementAxis } {\n const parts = iconPlace.split(\" \") as PlacementAxis[];\n return { primary: parts[0], secondary: parts[1] };\n}\n\nfunction isVerticalPrimary(primary: PlacementAxis): boolean {\n return primary === \"top\" || primary === \"bottom\";\n}\n\n// ---------------------------------------------------------------------------\n// Sort parsing\n// ---------------------------------------------------------------------------\n\ntype ElementKey = \"e\" | \"i\" | \"a\" | \"b\";\nconst DEFAULT_SORT = \"eiab\";\n\nfunction parseSortOrder(sort?: string): ElementKey[] {\n const chars = (sort ?? DEFAULT_SORT).split(\"\") as ElementKey[];\n const valid: ElementKey[] = [];\n const seen = new Set<string>();\n for (const c of chars) {\n if (\"eiab\".includes(c) && !seen.has(c)) {\n valid.push(c);\n seen.add(c);\n }\n }\n // Add missing keys in default order\n for (const c of DEFAULT_SORT.split(\"\") as ElementKey[]) {\n if (!seen.has(c)) valid.push(c);\n }\n return valid;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n className,\n variant = \"default\",\n color,\n size = \"md\",\n active,\n checked,\n warn,\n alert: alertProp,\n icon,\n iconTrailing,\n iconPlace = \"left\",\n alertIcon,\n alertIconTrailing,\n emoji,\n emojiTrailing,\n avatar,\n avatarTrailing,\n badge,\n badgeTrailing,\n sort,\n loading = false,\n disabled,\n href,\n as: As,\n responsive,\n labelClassName,\n ...props\n },\n ref,\n ) => {\n const isCircle = variant === \"circle\";\n const isGhost = variant === \"ghost\";\n const { primary, secondary } = parsePlacement(iconPlace);\n const isVertical = isVerticalPrimary(primary);\n const isCompound = !!secondary;\n const needsWrapper = isVertical || isCompound;\n const isReversed = iconPlace === \"right\";\n\n // -----------------------------------------------------------------------\n // Sizing — always use horizontalSize for the button itself\n // -----------------------------------------------------------------------\n const sizeClass = isCircle ? circleSize[size] : horizontalSize[size];\n\n // -----------------------------------------------------------------------\n // Build decorative elements\n // -----------------------------------------------------------------------\n const iconColorCls = getIconColorClasses(color, active, checked, warn, isGhost);\n\n const buildElement = (key: ElementKey, trailing: boolean): ReactNode => {\n switch (key) {\n case \"e\": {\n const slug = trailing ? emojiTrailing : emoji;\n if (!slug) return null;\n const char = resolve(slug);\n if (!char) return null;\n return (\n <span key={`emoji-${trailing ? \"t\" : \"l\"}`} data-action-emoji>\n {char}\n </span>\n );\n }\n case \"i\": {\n if (loading && !trailing) {\n return (\n <span\n key=\"spinner\"\n className={cn(\"animate-spin border-2 border-current border-t-transparent rounded-full\", iconSize[size])}\n />\n );\n }\n const iconSlug = trailing ? iconTrailing : icon;\n if (!iconSlug) return null;\n // For vertical/compound placements, icons render outside the button — not inside\n if (needsWrapper) return null;\n return (\n <span\n key={`icon-${trailing ? \"t\" : \"l\"}`}\n data-action-icon={trailing ? \"trailing\" : \"leading\"}\n className={cn(\"inline-flex items-center flex-shrink-0\", iconColorCls)}\n >\n <Icon name={iconSlug} size={iconSizeMap[size]} />\n </span>\n );\n }\n case \"a\": {\n if (!avatar) return null;\n const isTrailing = avatarTrailing ?? false;\n if (isTrailing !== trailing) return null;\n return (\n <img\n key=\"avatar\"\n src={avatar}\n alt=\"\"\n className={cn(avatarSize[size], \"rounded-full object-cover flex-shrink-0\")}\n data-action-avatar\n />\n );\n }\n case \"b\": {\n if (!badge) return null;\n const isTrailing = badgeTrailing ?? false;\n if (isTrailing !== trailing) return null;\n return (\n <span\n key=\"badge\"\n className={cn(\n \"inline-flex items-center justify-center font-medium rounded-full\",\n badgeSize[size],\n getBadgeClasses(color, active, checked, warn, isGhost),\n )}\n data-action-badge\n >\n {badge}\n </span>\n );\n }\n default:\n return null;\n }\n };\n\n // Alert icon element\n const renderAlertIcon = (trailing: boolean): ReactNode => {\n if (!alertIcon) return null;\n const isTrailing = alertIconTrailing ?? false;\n if (isTrailing !== trailing) return null;\n const alertIconEl = <Icon name={alertIcon} size={alertIconSizeMap[size]} />;\n return (\n <span\n key=\"alert-icon\"\n className=\"relative inline-flex flex-shrink-0\"\n data-action-alert\n >\n <span className=\"text-red-500 dark:text-red-400 animate-pulse\">\n {alertIconEl}\n </span>\n <span className=\"absolute inset-0 flex items-center justify-center text-red-400 dark:text-red-300 animate-ping opacity-75\">\n {alertIconEl}\n </span>\n </span>\n );\n };\n\n const sortOrder = parseSortOrder(sort);\n\n const leadingElements: ReactNode[] = [];\n const trailingElements: ReactNode[] = [];\n\n for (const key of sortOrder) {\n const leading = buildElement(key, false);\n if (leading) leadingElements.push(leading);\n const trailing = buildElement(key, true);\n if (trailing) trailingElements.push(trailing);\n }\n\n // Insert alert icon\n const leadingAlert = renderAlertIcon(false);\n if (leadingAlert) leadingElements.push(leadingAlert);\n const trailingAlert = renderAlertIcon(true);\n if (trailingAlert) trailingElements.push(trailingAlert);\n\n // -----------------------------------------------------------------------\n // Classes\n // -----------------------------------------------------------------------\n const classes = cn(\n // `text-left` overrides the UA <button> center default so a wrapped,\n // width-constrained multi-word label stacks left-aligned. Overridable —\n // twMerge lets a `text-center` / `text-right` in `className` win.\n \"inline-flex items-center justify-center text-left font-medium transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-1\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n isCircle ? \"rounded-full\" : \"rounded-lg\",\n sizeClass,\n getColorClasses(color, active, checked, warn, isGhost),\n !isCircle && !needsWrapper && \"gap-2\",\n !isCircle && needsWrapper && \"gap-2\",\n isReversed && !needsWrapper && \"flex-row-reverse\",\n alertProp && \"animate-pulse\",\n className,\n );\n\n // -----------------------------------------------------------------------\n // Content\n // -----------------------------------------------------------------------\n const content = isCircle ? (\n <>\n {loading ? (\n <span\n className={cn(\n \"animate-spin border-2 border-current border-t-transparent rounded-full\",\n iconSize[size],\n )}\n />\n ) : (\n icon ? <Icon name={icon} size={iconSizeMap[size]} /> : children\n )}\n </>\n ) : (\n <>\n {leadingElements}\n {children != null && (\n <span\n data-react-fancy-button-label=\"\"\n className={cn(\n // A button narrower than its label WRAPS the label inside itself\n // (left-aligned, via the button's `text-left`); the icon is its own\n // shrink-0 flex item, so it stays put beside the text. `min-w-0`\n // lets the span shrink below its text. Words are never split\n // (measured: in the showcase's 104px column `break-words` turned\n // \"customer\" into \"custome/r\"). Unconstrained, nothing wraps and\n // the button looks as it always did.\n //\n // No white-space class here, on purpose: `labelClassName=\"truncate\"`\n // must win uncontested to give one line with an ellipsis, and a\n // `whitespace-normal` would fight its nowrap in the cascade.\n // (5.54.0 and earlier forced `whitespace-nowrap`, so a constrained\n // label spilled out of the button and over its neighbours.)\n \"min-w-0\",\n // `responsive` collapses to icon-only when squeezed, while keeping\n // the label readable to screen readers.\n responsive && \"sr-only sm:not-sr-only\",\n labelClassName,\n )}\n >\n {children}\n </span>\n )}\n {trailingElements}\n </>\n );\n\n // -----------------------------------------------------------------------\n // Build the button element\n // -----------------------------------------------------------------------\n const safeHref = sanitizeHref(href);\n // Anchor mode renders `as` when provided (e.g. a router's <Link> for\n // client-side navigation — Inertia, React Router, Next). Previously `as`\n // fell through ...props onto the <a> where React silently DROPS a\n // function-valued unknown attribute — so `<Button as={Link}>` looked fine\n // but did a full page load. `as` only applies in anchor mode; without an\n // href (or when disabled) the plain <button> renders as always.\n const Anchor = (As ?? \"a\") as ElementType;\n const buttonEl = safeHref && !disabled ? (\n // Anchor mode forwards the same rest props as the <button> branch so\n // onClick / target / rel / ref / ARIA / data-* reach the <a> (issue #7).\n <Anchor\n ref={ref as ForwardedRef<HTMLAnchorElement>}\n href={safeHref}\n className={classes}\n data-react-fancy-button=\"\"\n data-react-fancy-action=\"\"\n {...(props as AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {content}\n </Anchor>\n ) : (\n <button\n ref={ref}\n className={classes}\n disabled={disabled || loading}\n data-react-fancy-button=\"\"\n data-react-fancy-action=\"\"\n {...props}\n >\n {content}\n </button>\n );\n\n // -----------------------------------------------------------------------\n // Wrap for vertical/compound icon placement\n // The icon is absolutely positioned so it never shifts the button.\n // -----------------------------------------------------------------------\n if (needsWrapper && (icon || iconTrailing)) {\n const iconSlug = icon ?? iconTrailing;\n const offset = externalIconOffset[size];\n\n // Determine position styles for the icon\n const posStyle: React.CSSProperties = { position: \"absolute\" };\n\n // Primary axis: which side of the button\n if (primary === \"top\") {\n posStyle.bottom = \"100%\";\n posStyle.marginBottom = \"0.125rem\";\n } else if (primary === \"bottom\") {\n posStyle.top = \"100%\";\n posStyle.marginTop = \"0.125rem\";\n } else if (primary === \"left\") {\n posStyle.right = \"100%\";\n posStyle.marginRight = \"0.125rem\";\n } else if (primary === \"right\") {\n posStyle.left = \"100%\";\n posStyle.marginLeft = \"0.125rem\";\n }\n\n // Secondary axis: cross-axis alignment\n if (isVerticalPrimary(primary)) {\n // Vertical primary → secondary controls horizontal position\n if (secondary === \"left\") {\n posStyle.left = \"0\";\n } else if (secondary === \"right\") {\n posStyle.right = \"0\";\n } else {\n // center (default)\n posStyle.left = \"50%\";\n posStyle.transform = \"translateX(-50%)\";\n }\n } else {\n // Horizontal primary → secondary controls vertical position\n if (secondary === \"top\") {\n posStyle.top = \"0\";\n } else if (secondary === \"bottom\") {\n posStyle.bottom = \"0\";\n } else {\n // center (default)\n posStyle.top = \"50%\";\n posStyle.transform = \"translateY(-50%)\";\n }\n }\n\n const externalIcon = (\n <span\n className={cn(\"absolute flex-shrink-0\", iconColorCls)}\n style={posStyle}\n >\n <Icon name={iconSlug!} size={iconSizeMap[size]} />\n </span>\n );\n\n return (\n <span\n data-react-fancy-action-group=\"\"\n className=\"relative inline-flex\"\n >\n {buttonEl}\n {externalIcon}\n </span>\n );\n }\n\n return buttonEl;\n },\n);\n\nButton.displayName = \"Button\";\n\n/**\n * @deprecated Renamed to {@link Button}. `Action` remains as an alias for\n * backward compatibility and will be removed in a future major version.\n * Prefer importing `Button` from \"@particle-academy/react-fancy\".\n */\nexport const Action = Button;\n"]}