@particle-academy/react-fancy 5.29.1 → 5.30.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 (38) hide show
  1. package/dist/Card-CuRZivBz.d.cts +136 -0
  2. package/dist/Card-CuRZivBz.d.ts +136 -0
  3. package/dist/card.cjs +12 -6
  4. package/dist/card.d.cts +50 -3
  5. package/dist/card.d.ts +50 -3
  6. package/dist/card.js +3 -1
  7. package/dist/chunk-5F6V5HHT.cjs +399 -0
  8. package/dist/chunk-5F6V5HHT.cjs.map +1 -0
  9. package/dist/{chunk-Y3T7WMT6.cjs → chunk-65HKNZFG.cjs} +2 -2
  10. package/dist/{chunk-Y3T7WMT6.cjs.map → chunk-65HKNZFG.cjs.map} +1 -1
  11. package/dist/{chunk-2HGYDDIQ.js → chunk-ASCATIDJ.js} +3 -3
  12. package/dist/{chunk-2HGYDDIQ.js.map → chunk-ASCATIDJ.js.map} +1 -1
  13. package/dist/{chunk-6GWOB2Z4.js → chunk-CESGP5AF.js} +2 -2
  14. package/dist/{chunk-6GWOB2Z4.js.map → chunk-CESGP5AF.js.map} +1 -1
  15. package/dist/chunk-CF2U25LM.js +392 -0
  16. package/dist/chunk-CF2U25LM.js.map +1 -0
  17. package/dist/chunk-CFH6CJQG.js +3 -0
  18. package/dist/chunk-CFH6CJQG.js.map +1 -0
  19. package/dist/chunk-FJKZ5NOA.cjs +4 -0
  20. package/dist/chunk-FJKZ5NOA.cjs.map +1 -0
  21. package/dist/{chunk-FEUAZW3X.cjs → chunk-SCGE6DCE.cjs} +3 -3
  22. package/dist/{chunk-FEUAZW3X.cjs.map → chunk-SCGE6DCE.cjs.map} +1 -1
  23. package/dist/heading.cjs +3 -2
  24. package/dist/heading.js +2 -1
  25. package/dist/index.cjs +26 -25
  26. package/dist/index.d.cts +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.js +5 -4
  29. package/dist/json-editor.cjs +13 -13
  30. package/dist/json-editor.js +2 -2
  31. package/docs/Card.md +170 -20
  32. package/package.json +1 -1
  33. package/dist/Card-BZ5F6-wd.d.cts +0 -50
  34. package/dist/Card-BZ5F6-wd.d.ts +0 -50
  35. package/dist/chunk-5DQ2XUJI.cjs +0 -173
  36. package/dist/chunk-5DQ2XUJI.cjs.map +0 -1
  37. package/dist/chunk-ZIDBI6JX.js +0 -167
  38. package/dist/chunk-ZIDBI6JX.js.map +0 -1
package/dist/heading.cjs CHANGED
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkY3T7WMT6_cjs = require('./chunk-Y3T7WMT6.cjs');
3
+ require('./chunk-FJKZ5NOA.cjs');
4
+ var chunk65HKNZFG_cjs = require('./chunk-65HKNZFG.cjs');
4
5
  require('./chunk-ZU5Q77OT.cjs');
5
6
 
6
7
 
7
8
 
8
9
  Object.defineProperty(exports, "Heading", {
9
10
  enumerable: true,
10
- get: function () { return chunkY3T7WMT6_cjs.Heading; }
11
+ get: function () { return chunk65HKNZFG_cjs.Heading; }
11
12
  });
12
13
  //# sourceMappingURL=heading.cjs.map
13
14
  //# sourceMappingURL=heading.cjs.map
package/dist/heading.js CHANGED
@@ -1,4 +1,5 @@
1
- export { Heading } from './chunk-6GWOB2Z4.js';
1
+ import './chunk-CFH6CJQG.js';
2
+ export { Heading } from './chunk-CESGP5AF.js';
2
3
  import './chunk-MMW2JGKZ.js';
3
4
  //# sourceMappingURL=heading.js.map
4
5
  //# sourceMappingURL=heading.js.map
package/dist/index.cjs CHANGED
@@ -40,12 +40,11 @@ var chunk6LOV75CN_cjs = require('./chunk-6LOV75CN.cjs');
40
40
  var chunkHIN6PHSE_cjs = require('./chunk-HIN6PHSE.cjs');
41
41
  var chunkYAJYIRQL_cjs = require('./chunk-YAJYIRQL.cjs');
42
42
  var chunkWKNVZUWZ_cjs = require('./chunk-WKNVZUWZ.cjs');
43
- var chunkFEUAZW3X_cjs = require('./chunk-FEUAZW3X.cjs');
43
+ var chunkSCGE6DCE_cjs = require('./chunk-SCGE6DCE.cjs');
44
44
  var chunkB5KK7NYP_cjs = require('./chunk-B5KK7NYP.cjs');
45
45
  var chunkVUKIFFWK_cjs = require('./chunk-VUKIFFWK.cjs');
46
46
  var chunkLHNC42J3_cjs = require('./chunk-LHNC42J3.cjs');
47
47
  var chunkFXP4JLGU_cjs = require('./chunk-FXP4JLGU.cjs');
48
- var chunkXLFGWNW4_cjs = require('./chunk-XLFGWNW4.cjs');
49
48
  var chunkQAFAPHAF_cjs = require('./chunk-QAFAPHAF.cjs');
50
49
  var chunkSUCBR6L5_cjs = require('./chunk-SUCBR6L5.cjs');
51
50
  var chunkH6PXIB35_cjs = require('./chunk-H6PXIB35.cjs');
@@ -63,7 +62,7 @@ var chunkGBGJWAXZ_cjs = require('./chunk-GBGJWAXZ.cjs');
63
62
  var chunkJV6RDIA6_cjs = require('./chunk-JV6RDIA6.cjs');
64
63
  var chunkLAQGBLIU_cjs = require('./chunk-LAQGBLIU.cjs');
65
64
  var chunkOOZCJLEF_cjs = require('./chunk-OOZCJLEF.cjs');
66
- var chunkY3T7WMT6_cjs = require('./chunk-Y3T7WMT6.cjs');
65
+ require('./chunk-FJKZ5NOA.cjs');
67
66
  var chunkQDVDBUJM_cjs = require('./chunk-QDVDBUJM.cjs');
68
67
  var chunkTGNQ5Y6F_cjs = require('./chunk-TGNQ5Y6F.cjs');
69
68
  var chunkF7YCIII4_cjs = require('./chunk-F7YCIII4.cjs');
@@ -102,7 +101,9 @@ var chunkBFKCVSNK_cjs = require('./chunk-BFKCVSNK.cjs');
102
101
  var chunkQOGKO6JH_cjs = require('./chunk-QOGKO6JH.cjs');
103
102
  require('./chunk-3I2KWNXT.cjs');
104
103
  var chunkLCNHEYIM_cjs = require('./chunk-LCNHEYIM.cjs');
105
- var chunk5DQ2XUJI_cjs = require('./chunk-5DQ2XUJI.cjs');
104
+ var chunk5F6V5HHT_cjs = require('./chunk-5F6V5HHT.cjs');
105
+ var chunkXLFGWNW4_cjs = require('./chunk-XLFGWNW4.cjs');
106
+ var chunk65HKNZFG_cjs = require('./chunk-65HKNZFG.cjs');
106
107
  var chunk6SO2ZX3J_cjs = require('./chunk-6SO2ZX3J.cjs');
107
108
  var chunkN4VHOTMK_cjs = require('./chunk-N4VHOTMK.cjs');
108
109
  var chunkZTC3EQFZ_cjs = require('./chunk-ZTC3EQFZ.cjs');
@@ -290,51 +291,51 @@ Object.defineProperty(exports, "usePopover", {
290
291
  });
291
292
  Object.defineProperty(exports, "JSON_FIELD_TYPES", {
292
293
  enumerable: true,
293
- get: function () { return chunkFEUAZW3X_cjs.JSON_FIELD_TYPES; }
294
+ get: function () { return chunkSCGE6DCE_cjs.JSON_FIELD_TYPES; }
294
295
  });
295
296
  Object.defineProperty(exports, "JsonEditor", {
296
297
  enumerable: true,
297
- get: function () { return chunkFEUAZW3X_cjs.JsonEditor; }
298
+ get: function () { return chunkSCGE6DCE_cjs.JsonEditor; }
298
299
  });
299
300
  Object.defineProperty(exports, "applyJsonEdit", {
300
301
  enumerable: true,
301
- get: function () { return chunkFEUAZW3X_cjs.applyJsonEdit; }
302
+ get: function () { return chunkSCGE6DCE_cjs.applyJsonEdit; }
302
303
  });
303
304
  Object.defineProperty(exports, "describeEdit", {
304
305
  enumerable: true,
305
- get: function () { return chunkFEUAZW3X_cjs.describeEdit; }
306
+ get: function () { return chunkSCGE6DCE_cjs.describeEdit; }
306
307
  });
307
308
  Object.defineProperty(exports, "findJsonConflicts", {
308
309
  enumerable: true,
309
- get: function () { return chunkFEUAZW3X_cjs.findJsonConflicts; }
310
+ get: function () { return chunkSCGE6DCE_cjs.findJsonConflicts; }
310
311
  });
311
312
  Object.defineProperty(exports, "getAtPath", {
312
313
  enumerable: true,
313
- get: function () { return chunkFEUAZW3X_cjs.getAtPath; }
314
+ get: function () { return chunkSCGE6DCE_cjs.getAtPath; }
314
315
  });
315
316
  Object.defineProperty(exports, "inferType", {
316
317
  enumerable: true,
317
- get: function () { return chunkFEUAZW3X_cjs.inferType; }
318
+ get: function () { return chunkSCGE6DCE_cjs.inferType; }
318
319
  });
319
320
  Object.defineProperty(exports, "parseKeyMap", {
320
321
  enumerable: true,
321
- get: function () { return chunkFEUAZW3X_cjs.parseKeyMap; }
322
+ get: function () { return chunkSCGE6DCE_cjs.parseKeyMap; }
322
323
  });
323
324
  Object.defineProperty(exports, "parsePath", {
324
325
  enumerable: true,
325
- get: function () { return chunkFEUAZW3X_cjs.parsePath; }
326
+ get: function () { return chunkSCGE6DCE_cjs.parsePath; }
326
327
  });
327
328
  Object.defineProperty(exports, "pathToString", {
328
329
  enumerable: true,
329
- get: function () { return chunkFEUAZW3X_cjs.pathToString; }
330
+ get: function () { return chunkSCGE6DCE_cjs.pathToString; }
330
331
  });
331
332
  Object.defineProperty(exports, "resolveKeyRule", {
332
333
  enumerable: true,
333
- get: function () { return chunkFEUAZW3X_cjs.resolveKeyRule; }
334
+ get: function () { return chunkSCGE6DCE_cjs.resolveKeyRule; }
334
335
  });
335
336
  Object.defineProperty(exports, "typeMatches", {
336
337
  enumerable: true,
337
- get: function () { return chunkFEUAZW3X_cjs.typeMatches; }
338
+ get: function () { return chunkSCGE6DCE_cjs.typeMatches; }
338
339
  });
339
340
  Object.defineProperty(exports, "Switch", {
340
341
  enumerable: true,
@@ -352,10 +353,6 @@ Object.defineProperty(exports, "Select", {
352
353
  enumerable: true,
353
354
  get: function () { return chunkFXP4JLGU_cjs.Select; }
354
355
  });
355
- Object.defineProperty(exports, "Text", {
356
- enumerable: true,
357
- get: function () { return chunkXLFGWNW4_cjs.Text; }
358
- });
359
356
  Object.defineProperty(exports, "Kanban", {
360
357
  enumerable: true,
361
358
  get: function () { return chunkQAFAPHAF_cjs.Kanban; }
@@ -448,10 +445,6 @@ Object.defineProperty(exports, "Grid", {
448
445
  enumerable: true,
449
446
  get: function () { return chunkOOZCJLEF_cjs.Grid; }
450
447
  });
451
- Object.defineProperty(exports, "Heading", {
452
- enumerable: true,
453
- get: function () { return chunkY3T7WMT6_cjs.Heading; }
454
- });
455
448
  Object.defineProperty(exports, "ImageViewer", {
456
449
  enumerable: true,
457
450
  get: function () { return chunkQDVDBUJM_cjs.ImageViewer; }
@@ -722,7 +715,15 @@ Object.defineProperty(exports, "Callout", {
722
715
  });
723
716
  Object.defineProperty(exports, "Card", {
724
717
  enumerable: true,
725
- get: function () { return chunk5DQ2XUJI_cjs.Card; }
718
+ get: function () { return chunk5F6V5HHT_cjs.Card; }
719
+ });
720
+ Object.defineProperty(exports, "Text", {
721
+ enumerable: true,
722
+ get: function () { return chunkXLFGWNW4_cjs.Text; }
723
+ });
724
+ Object.defineProperty(exports, "Heading", {
725
+ enumerable: true,
726
+ get: function () { return chunk65HKNZFG_cjs.Heading; }
726
727
  });
727
728
  Object.defineProperty(exports, "Carousel", {
728
729
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -38,7 +38,7 @@ export { IndexList, IndexListItem, IndexListProps } from './index-list.cjs';
38
38
  export { PullQuote, PullQuoteProps } from './pull-quote.cjs';
39
39
  export { Stat, StatBand, StatBandProps, StatProps } from './stat.cjs';
40
40
  export { Profile, ProfileProps } from './profile.cjs';
41
- export { d as Card, a as CardBodyProps, b as CardFooterProps, C as CardHeaderProps, e as CardProps } from './Card-BZ5F6-wd.cjs';
41
+ export { e as Card, f as CardBleedEdges, d as CardBleedProps, a as CardBodyProps, b as CardFooterProps, C as CardHeaderProps, c as CardMediaProps, g as CardPadding, h as CardProps, i as CardSectionProps, j as CardSections, k as CardSize } from './Card-CuRZivBz.cjs';
42
42
  export { Callout, CalloutProps } from './callout.cjs';
43
43
  export { FauxClient, FauxClientProps } from './faux-client.cjs';
44
44
  export { StickyNote, StickyNoteColor, StickyNoteProps } from './sticky-note.cjs';
package/dist/index.d.ts CHANGED
@@ -38,7 +38,7 @@ export { IndexList, IndexListItem, IndexListProps } from './index-list.js';
38
38
  export { PullQuote, PullQuoteProps } from './pull-quote.js';
39
39
  export { Stat, StatBand, StatBandProps, StatProps } from './stat.js';
40
40
  export { Profile, ProfileProps } from './profile.js';
41
- export { d as Card, a as CardBodyProps, b as CardFooterProps, C as CardHeaderProps, e as CardProps } from './Card-BZ5F6-wd.js';
41
+ export { e as Card, f as CardBleedEdges, d as CardBleedProps, a as CardBodyProps, b as CardFooterProps, C as CardHeaderProps, c as CardMediaProps, g as CardPadding, h as CardProps, i as CardSectionProps, j as CardSections, k as CardSize } from './Card-CuRZivBz.js';
42
42
  export { Callout, CalloutProps } from './callout.js';
43
43
  export { FauxClient, FauxClientProps } from './faux-client.js';
44
44
  export { StickyNote, StickyNoteColor, StickyNoteProps } from './sticky-note.js';
package/dist/index.js CHANGED
@@ -38,12 +38,11 @@ export { OtpInput } from './chunk-2LBRS6Z4.js';
38
38
  export { Pagination } from './chunk-YF2EHBTV.js';
39
39
  export { Pillbox } from './chunk-SX4CSO6C.js';
40
40
  export { Popover, usePopover } from './chunk-6KXAFP2T.js';
41
- export { JSON_FIELD_TYPES, JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-2HGYDDIQ.js';
41
+ export { JSON_FIELD_TYPES, JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-ASCATIDJ.js';
42
42
  export { Switch } from './chunk-6ZDXG5VC.js';
43
43
  export { DatePicker } from './chunk-L2FPIFMN.js';
44
44
  export { Input } from './chunk-L5KKMJ2Q.js';
45
45
  export { Select } from './chunk-ZH3SPBVB.js';
46
- export { Text } from './chunk-5RLP77KK.js';
47
46
  export { Kanban, useKanban } from './chunk-O6E2WC3J.js';
48
47
  export { Kbd } from './chunk-TJJ63UJV.js';
49
48
  export { MagicWand } from './chunk-ZYVWKYPO.js';
@@ -61,7 +60,7 @@ export { MobileMenu, useMobileMenu } from './chunk-P7F32HIH.js';
61
60
  export { FileBrowser, FileBrowserNewFolder, useFileBrowser, validateFolderName } from './chunk-TQFQUNV3.js';
62
61
  export { FileUpload, useFileUpload } from './chunk-32HCJ5GD.js';
63
62
  export { Grid } from './chunk-TM3RTWKI.js';
64
- export { Heading } from './chunk-6GWOB2Z4.js';
63
+ import './chunk-CFH6CJQG.js';
65
64
  export { ImageViewer } from './chunk-MUCXXYDN.js';
66
65
  export { IndexList } from './chunk-UKUNWGL5.js';
67
66
  export { InputTag, contentEditableAdapter, controlledAdapter, inputAdapter, textareaAdapter } from './chunk-Q7O5TLVU.js';
@@ -100,7 +99,9 @@ export { sanitizeHref, sanitizeHtml } from './chunk-XJXQG34J.js';
100
99
  export { Calendar } from './chunk-NTMHP7FS.js';
101
100
  import './chunk-NMXCQOHV.js';
102
101
  export { Callout } from './chunk-ZXZJYVWP.js';
103
- export { Card } from './chunk-ZIDBI6JX.js';
102
+ export { Card } from './chunk-CF2U25LM.js';
103
+ export { Text } from './chunk-5RLP77KK.js';
104
+ export { Heading } from './chunk-CESGP5AF.js';
104
105
  export { Carousel, useCarousel } from './chunk-RFLPFQFF.js';
105
106
  export { Accordion, useAccordion } from './chunk-LYHQ4VBR.js';
106
107
  export { AccordionPanel, AccordionPanelContent, AccordionPanelSection, AccordionPanelTrigger, useAccordionPanel, useAccordionSection } from './chunk-I3RPL3GE.js';
@@ -1,11 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkFEUAZW3X_cjs = require('./chunk-FEUAZW3X.cjs');
3
+ var chunkSCGE6DCE_cjs = require('./chunk-SCGE6DCE.cjs');
4
4
  require('./chunk-B5KK7NYP.cjs');
5
5
  require('./chunk-VUKIFFWK.cjs');
6
6
  require('./chunk-LHNC42J3.cjs');
7
7
  require('./chunk-FXP4JLGU.cjs');
8
- require('./chunk-XLFGWNW4.cjs');
9
8
  require('./chunk-V6VFSX6V.cjs');
10
9
  require('./chunk-7EZBMGEE.cjs');
11
10
  require('./chunk-XKDW6B7X.cjs');
@@ -18,6 +17,7 @@ require('./chunk-XCZZVRBY.cjs');
18
17
  require('./chunk-QKFOJKVE.cjs');
19
18
  require('./chunk-BFKCVSNK.cjs');
20
19
  require('./chunk-LCNHEYIM.cjs');
20
+ require('./chunk-XLFGWNW4.cjs');
21
21
  require('./chunk-J2DI6RMR.cjs');
22
22
  require('./chunk-KJ22KE56.cjs');
23
23
  require('./chunk-L3V3BYVS.cjs');
@@ -31,47 +31,47 @@ require('./chunk-ZU5Q77OT.cjs');
31
31
 
32
32
  Object.defineProperty(exports, "JsonEditor", {
33
33
  enumerable: true,
34
- get: function () { return chunkFEUAZW3X_cjs.JsonEditor; }
34
+ get: function () { return chunkSCGE6DCE_cjs.JsonEditor; }
35
35
  });
36
36
  Object.defineProperty(exports, "applyJsonEdit", {
37
37
  enumerable: true,
38
- get: function () { return chunkFEUAZW3X_cjs.applyJsonEdit; }
38
+ get: function () { return chunkSCGE6DCE_cjs.applyJsonEdit; }
39
39
  });
40
40
  Object.defineProperty(exports, "describeEdit", {
41
41
  enumerable: true,
42
- get: function () { return chunkFEUAZW3X_cjs.describeEdit; }
42
+ get: function () { return chunkSCGE6DCE_cjs.describeEdit; }
43
43
  });
44
44
  Object.defineProperty(exports, "findJsonConflicts", {
45
45
  enumerable: true,
46
- get: function () { return chunkFEUAZW3X_cjs.findJsonConflicts; }
46
+ get: function () { return chunkSCGE6DCE_cjs.findJsonConflicts; }
47
47
  });
48
48
  Object.defineProperty(exports, "getAtPath", {
49
49
  enumerable: true,
50
- get: function () { return chunkFEUAZW3X_cjs.getAtPath; }
50
+ get: function () { return chunkSCGE6DCE_cjs.getAtPath; }
51
51
  });
52
52
  Object.defineProperty(exports, "inferType", {
53
53
  enumerable: true,
54
- get: function () { return chunkFEUAZW3X_cjs.inferType; }
54
+ get: function () { return chunkSCGE6DCE_cjs.inferType; }
55
55
  });
56
56
  Object.defineProperty(exports, "parseKeyMap", {
57
57
  enumerable: true,
58
- get: function () { return chunkFEUAZW3X_cjs.parseKeyMap; }
58
+ get: function () { return chunkSCGE6DCE_cjs.parseKeyMap; }
59
59
  });
60
60
  Object.defineProperty(exports, "parsePath", {
61
61
  enumerable: true,
62
- get: function () { return chunkFEUAZW3X_cjs.parsePath; }
62
+ get: function () { return chunkSCGE6DCE_cjs.parsePath; }
63
63
  });
64
64
  Object.defineProperty(exports, "pathToString", {
65
65
  enumerable: true,
66
- get: function () { return chunkFEUAZW3X_cjs.pathToString; }
66
+ get: function () { return chunkSCGE6DCE_cjs.pathToString; }
67
67
  });
68
68
  Object.defineProperty(exports, "resolveKeyRule", {
69
69
  enumerable: true,
70
- get: function () { return chunkFEUAZW3X_cjs.resolveKeyRule; }
70
+ get: function () { return chunkSCGE6DCE_cjs.resolveKeyRule; }
71
71
  });
72
72
  Object.defineProperty(exports, "typeMatches", {
73
73
  enumerable: true,
74
- get: function () { return chunkFEUAZW3X_cjs.typeMatches; }
74
+ get: function () { return chunkSCGE6DCE_cjs.typeMatches; }
75
75
  });
76
76
  //# sourceMappingURL=json-editor.cjs.map
77
77
  //# sourceMappingURL=json-editor.cjs.map
@@ -1,9 +1,8 @@
1
- export { JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-2HGYDDIQ.js';
1
+ export { JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches } from './chunk-ASCATIDJ.js';
2
2
  import './chunk-6ZDXG5VC.js';
3
3
  import './chunk-L2FPIFMN.js';
4
4
  import './chunk-L5KKMJ2Q.js';
5
5
  import './chunk-ZH3SPBVB.js';
6
- import './chunk-5RLP77KK.js';
7
6
  import './chunk-DEFGT75G.js';
8
7
  import './chunk-PWEZCMIY.js';
9
8
  import './chunk-KKWNKBKR.js';
@@ -16,6 +15,7 @@ import './chunk-45BBNJQD.js';
16
15
  import './chunk-IVRYSSM7.js';
17
16
  import './chunk-XJXQG34J.js';
18
17
  import './chunk-ZXZJYVWP.js';
18
+ import './chunk-5RLP77KK.js';
19
19
  import './chunk-MQ6VGG62.js';
20
20
  import './chunk-OL53XYHF.js';
21
21
  import './chunk-NRXK42LO.js';
package/docs/Card.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Card
2
2
 
3
- A container component with optional header, body, and footer sections. Uses `Object.assign` to expose compound sub-components.
3
+ A container with optional media, header, body and footer sections. `Object.assign` exposes the sub-components as compound members (`Card.Header`, `Card.Bleed`, …).
4
4
 
5
5
  ## Import
6
6
 
@@ -16,53 +16,203 @@ import { Card } from "@particle-academy/react-fancy";
16
16
  </Card>
17
17
  ```
18
18
 
19
+ ## Padding sits on the children, not the card
20
+
21
+ This is the one thing worth knowing before anything else, because most of the
22
+ rest follows from it. `padding` compiles to `[&>*]:px-4 [&>*]:py-3` — an inset
23
+ on every **direct child** of the card, not on the card itself.
24
+
25
+ That is why a full-bleed child (`Card.Media`, `Card.Bleed`) can opt out with
26
+ `!px-0` instead of having to undo padding already baked into the frame, and why
27
+ there is no `gap` prop: each child carries its own `py-*`, so two adjacent
28
+ sections already have twice that between their content.
29
+
30
+ It also means anything that must line up with the content's edge — an inset
31
+ divider, a bleed — is derived from the **padding step**, never from `size`.
32
+ `size` only picks the default step; `padding` overrides it.
33
+
19
34
  ## Card Props
20
35
 
21
36
  | Prop | Type | Default | Description |
22
37
  |------|------|---------|-------------|
23
- | variant | `"outlined" \| "elevated" \| "flat"` | `"outlined"` | Visual variant |
24
- | padding | `"none" \| "sm" \| "md" \| "lg"` | `"md"` | Padding applied to child sections |
38
+ | variant | `"outlined" \| "elevated" \| "flat" \| "muted" \| "soft"` | `"outlined"` | Surface treatment. `outlined` is untinted with a border; `elevated` adds `shadow-md`; `soft` → `flat` → `muted` is a ramp of increasingly strong tints, all borderless |
39
+ | size | `"xs" \| "sm" \| "md" \| "lg"` | `"md"` | Scales padding and corner radius together, and is inherited by `Card.Media` and `Card.Bleed` |
40
+ | padding | `"none" \| "xs" \| "sm" \| "md" \| "lg"` | the step `size` implies | The inset applied to every direct child. Pass it to override `size`, including `"none"` |
41
+ | sections | `"divided" \| "plain" \| "banded"` | `"divided"` | How `Card.Header` / `Card.Footer` are set apart: a hairline rule, nothing, or a tinted band |
42
+ | dividerInset | `boolean` | `false` | With `sections="divided"`, stop the rules at the content's edge instead of running them across the card |
43
+ | highlight | `boolean` | `false` | A 1px hairline just inside the top edge — white at 70% in light mode, white at 10% in dark. Reads on a tinted or elevated surface; invisible on an untinted white one |
44
+ | interactive | `boolean` | `false` | Card is a link or a grid tile: hover lift, border and shadow response, and `overflow-hidden` so a `Card.Media` is clipped to the rounded corners |
25
45
 
26
46
  Also extends all native `<div>` HTML attributes.
27
47
 
48
+ `sections`, `size`, `padding` and `dividerInset` are passed down through context,
49
+ so the sub-components never need them repeated.
50
+
28
51
  ## Sub-Components
29
52
 
30
- ### Card.Header
53
+ ### Card.Media
54
+
55
+ The fixed-ratio media region at the top of a card: a thumbnail, gradient or
56
+ solid swatch, with slots pinned to its corners. Opts out of the card's padding,
57
+ and rounds its top corners to match the card's `size`.
58
+
59
+ | Prop | Type | Default | Description |
60
+ |------|------|---------|-------------|
61
+ | src | `string` | - | Image URL. Omit for a pure colour or gradient tile |
62
+ | alt | `string` | `""` | Alt text for the image |
63
+ | ratio | `string` | `"16/9"` | CSS `aspect-ratio`. Ignored when `height` is set |
64
+ | height | `number \| string` | - | Fixed height instead of an aspect ratio |
65
+ | background | `string` | - | Any CSS background value. Shows **under** the image — while it loads, and permanently if it never arrives, so a missing thumbnail degrades to a colour rather than a hole |
66
+ | objectPosition | `string` | `"center"` | `object-position` for the image |
67
+ | loading | `"lazy" \| "eager"` | `"lazy"` | Image loading strategy |
68
+ | topLeft / topRight / bottomLeft / bottomRight | `ReactNode` | - | Slots pinned to the media's corners — a number chip, a status pill |
69
+
70
+ ### Card.Header / Card.Footer
71
+
72
+ The same component with the rule on opposite edges. Either can be composed from
73
+ props, or given `children` for full control.
74
+
75
+ | Prop | Type | Default | Description |
76
+ |------|------|---------|-------------|
77
+ | heading | `ReactNode` | - | The title. Rendered through `<Heading>` and tagged `data-react-fancy-card-heading` |
78
+ | headingLevel | `"h1"…"h6"` | `"h3"` | Which heading element to render |
79
+ | description | `ReactNode` | - | Supporting line under the heading. Rendered through a muted `<Text>`, tagged `data-react-fancy-card-description` |
80
+ | actions | `ReactNode` | - | Controls pushed to the far end, vertically centred on the heading. Tagged `data-react-fancy-card-actions` |
81
+ | size | `"xs" \| "sm" \| "md" \| "lg"` | `"md"` | **Only used with no `Card` above** — a standalone section has no card to inherit a size from |
82
+ | children | `ReactNode` | - | Full control. **Wins over** `heading` / `description` / `actions` rather than rendering alongside them |
31
83
 
32
- Renders a section with a bottom border. Accepts all `<div>` HTML attributes.
84
+ Both work **standalone**, outside a `Card`, as a section heading above one. A
85
+ standalone section pads itself and draws no rule — there is no card whose edge
86
+ it could be dividing.
33
87
 
34
88
  ### Card.Body
35
89
 
36
- Renders a plain content section. Accepts all `<div>` HTML attributes.
90
+ A plain content section. Carries no classes of its own: the card pads it through
91
+ `[&>*]`. Accepts all `<div>` HTML attributes.
37
92
 
38
- ### Card.Footer
93
+ ### Card.Bleed
39
94
 
40
- Renders a section with a top border. Accepts all `<div>` HTML attributes.
95
+ Runs content out to the card's edges — an image, a table, a chart strip.
96
+
97
+ | Prop | Type | Default | Description |
98
+ |------|------|---------|-------------|
99
+ | edges | `"x" \| "top" \| "bottom" \| "all"` | `"x"` | Which edges to reach. `"x"` is the sides only, which is what an inline image or table wants |
100
+
101
+ Two cases, handled automatically:
102
+
103
+ - **Inside a `Card.Header` / `Card.Body` / `Card.Footer`** — the padding is on
104
+ that section, so the bleed escapes it with a negative margin.
105
+ - **As a direct child of `Card`** — the bleed *is* the padded element, so it
106
+ zeroes its own padding instead. A negative margin here would pull the content
107
+ clean outside the card.
108
+
109
+ `edges` cancels the padding of **the element the bleed sits in**, which is the
110
+ card's edge only when the bleed is actually at that edge. `edges="top"` on a
111
+ bleed halfway down a body pulls it up over the preceding content instead — use
112
+ `"top"` when the bleed is the first thing in the card, `"bottom"` when it is the
113
+ last, and `"x"` everywhere in between.
114
+
115
+ Corners are rounded only where the content meets the card, so a mid-body strip
116
+ stays square while one at the top follows the card's radius.
41
117
 
42
118
  ## Examples
43
119
 
44
- ### Full card with sections
120
+ ### Full card with a composed header
121
+
122
+ No layout wrapper from the caller — `heading` / `description` / `actions` lay
123
+ themselves out.
45
124
 
46
125
  ```tsx
47
- <Card variant="elevated" padding="lg">
48
- <Card.Header>
49
- <h3 className="font-semibold">Settings</h3>
50
- </Card.Header>
126
+ <Card variant="elevated" size="lg">
127
+ <Card.Header
128
+ heading="Billing"
129
+ description="Cards, invoices and receipts"
130
+ actions={<Button size="sm">Edit</Button>}
131
+ />
51
132
  <Card.Body>
52
- <p>Configure your preferences below.</p>
133
+ <Text>Configure your preferences below.</Text>
53
134
  </Card.Body>
54
- <Card.Footer>
55
- <button>Save</button>
56
- </Card.Footer>
135
+ <Card.Footer actions={<Button>Save</Button>} />
57
136
  </Card>
58
137
  ```
59
138
 
60
- ### Flat card without header
139
+ ### A media card
61
140
 
62
141
  ```tsx
63
- <Card variant="flat">
142
+ <Card interactive>
143
+ <Card.Media
144
+ src="/covers/atlas.jpg"
145
+ alt="Atlas"
146
+ background="linear-gradient(135deg,#6366f1,#8b5cf6)"
147
+ topRight={<Badge>new</Badge>}
148
+ />
149
+ <Card.Header heading="Atlas" description="Updated 2 days ago" />
150
+ </Card>
151
+ ```
152
+
153
+ `background` is not decoration: it shows while the image loads and stays if the
154
+ image never arrives.
155
+
156
+ ### Seamless sections
157
+
158
+ ```tsx
159
+ <Card sections="plain">
160
+ <Card.Header heading="No rules" />
161
+ <Card.Body>…</Card.Body>
162
+ </Card>
163
+ ```
164
+
165
+ `"banded"` tints the header and footer instead; `dividerInset` keeps the rules
166
+ but stops them at the content's edge.
167
+
168
+ ### A full-bleed table
169
+
170
+ ```tsx
171
+ <Card>
172
+ <Card.Header heading="Invoices" />
64
173
  <Card.Body>
65
- <p>A simple flat card.</p>
174
+ <Card.Bleed>
175
+ <Table data={invoices} />
176
+ </Card.Bleed>
66
177
  </Card.Body>
67
178
  </Card>
68
179
  ```
180
+
181
+ ### A heading above a card
182
+
183
+ ```tsx
184
+ <Card.Header heading="Team" description="4 members" actions={<Button size="sm">Invite</Button>} />
185
+ <Card>
186
+ <Card.Body>…</Card.Body>
187
+ </Card>
188
+ ```
189
+
190
+ ### An escape hatch
191
+
192
+ `children` wins over the composition props, so an unusual header is still a
193
+ `Card.Header`:
194
+
195
+ ```tsx
196
+ <Card>
197
+ <Card.Header>
198
+ <Profile name="Ada" role="Owner" />
199
+ </Card.Header>
200
+ <Card.Body>…</Card.Body>
201
+ </Card>
202
+ ```
203
+
204
+ ## Data attributes
205
+
206
+ | Selector | Element |
207
+ |----------|---------|
208
+ | `[data-react-fancy-card]` | the card |
209
+ | `[data-react-fancy-card-media]` | `Card.Media` |
210
+ | `[data-react-fancy-card-header]` | `Card.Header` |
211
+ | `[data-react-fancy-card-body]` | `Card.Body` |
212
+ | `[data-react-fancy-card-footer]` | `Card.Footer` |
213
+ | `[data-react-fancy-card-bleed]` | `Card.Bleed` |
214
+ | `[data-react-fancy-card-heading]` | the `heading` a section rendered |
215
+ | `[data-react-fancy-card-description]` | the `description` a section rendered |
216
+ | `[data-react-fancy-card-actions]` | the `actions` a section rendered |
217
+
218
+ See [STYLE.md](../STYLE.md) for theming through these.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@particle-academy/react-fancy",
3
- "version": "5.29.1",
3
+ "version": "5.30.0",
4
4
  "description": "React UI component library for Human+ UX — controlled, agent-bridgeable primitives",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,50 +0,0 @@
1
- import * as react from 'react';
2
- import { HTMLAttributes, ReactNode } from 'react';
3
-
4
- interface CardProps extends HTMLAttributes<HTMLDivElement> {
5
- variant?: "outlined" | "elevated" | "flat";
6
- padding?: "none" | "sm" | "md" | "lg";
7
- /**
8
- * Card is a link or a grid tile: adds the hover lift + border/shadow
9
- * response, and clips children to the rounded corners so a `Card.Media`
10
- * sits flush.
11
- */
12
- interactive?: boolean;
13
- }
14
- interface CardMediaProps extends HTMLAttributes<HTMLDivElement> {
15
- /** Image URL. Omit for a pure colour/gradient tile. */
16
- src?: string;
17
- alt?: string;
18
- /** CSS `aspect-ratio`. Default `"16/9"`. Ignored when `height` is set. */
19
- ratio?: string;
20
- /** Fixed height instead of an aspect ratio. */
21
- height?: number | string;
22
- /**
23
- * Shown UNDER the image — while it loads, and permanently if it never
24
- * arrives. Any CSS background value, so a gradient works.
25
- */
26
- background?: string;
27
- /** `object-position` for the image. Default `"center"`. */
28
- objectPosition?: string;
29
- loading?: "lazy" | "eager";
30
- /** Slots pinned to the media's corners — a number chip, a status pill. */
31
- topLeft?: ReactNode;
32
- topRight?: ReactNode;
33
- bottomLeft?: ReactNode;
34
- bottomRight?: ReactNode;
35
- }
36
- interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
37
- }
38
- interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
39
- }
40
- interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
41
- }
42
-
43
- declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>> & {
44
- Media: react.ForwardRefExoticComponent<CardMediaProps & react.RefAttributes<HTMLDivElement>>;
45
- Header: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
46
- Body: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
47
- Footer: react.ForwardRefExoticComponent<CardFooterProps & react.RefAttributes<HTMLDivElement>>;
48
- };
49
-
50
- export { type CardHeaderProps as C, type CardBodyProps as a, type CardFooterProps as b, type CardMediaProps as c, Card as d, type CardProps as e };
@@ -1,50 +0,0 @@
1
- import * as react from 'react';
2
- import { HTMLAttributes, ReactNode } from 'react';
3
-
4
- interface CardProps extends HTMLAttributes<HTMLDivElement> {
5
- variant?: "outlined" | "elevated" | "flat";
6
- padding?: "none" | "sm" | "md" | "lg";
7
- /**
8
- * Card is a link or a grid tile: adds the hover lift + border/shadow
9
- * response, and clips children to the rounded corners so a `Card.Media`
10
- * sits flush.
11
- */
12
- interactive?: boolean;
13
- }
14
- interface CardMediaProps extends HTMLAttributes<HTMLDivElement> {
15
- /** Image URL. Omit for a pure colour/gradient tile. */
16
- src?: string;
17
- alt?: string;
18
- /** CSS `aspect-ratio`. Default `"16/9"`. Ignored when `height` is set. */
19
- ratio?: string;
20
- /** Fixed height instead of an aspect ratio. */
21
- height?: number | string;
22
- /**
23
- * Shown UNDER the image — while it loads, and permanently if it never
24
- * arrives. Any CSS background value, so a gradient works.
25
- */
26
- background?: string;
27
- /** `object-position` for the image. Default `"center"`. */
28
- objectPosition?: string;
29
- loading?: "lazy" | "eager";
30
- /** Slots pinned to the media's corners — a number chip, a status pill. */
31
- topLeft?: ReactNode;
32
- topRight?: ReactNode;
33
- bottomLeft?: ReactNode;
34
- bottomRight?: ReactNode;
35
- }
36
- interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
37
- }
38
- interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
39
- }
40
- interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
41
- }
42
-
43
- declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>> & {
44
- Media: react.ForwardRefExoticComponent<CardMediaProps & react.RefAttributes<HTMLDivElement>>;
45
- Header: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
46
- Body: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
47
- Footer: react.ForwardRefExoticComponent<CardFooterProps & react.RefAttributes<HTMLDivElement>>;
48
- };
49
-
50
- export { type CardHeaderProps as C, type CardBodyProps as a, type CardFooterProps as b, type CardMediaProps as c, Card as d, type CardProps as e };