laif-ds 1.0.1 → 1.0.2-app-data-grid.76
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.
- package/dist/CHANGELOG.md +263 -0
- package/dist/_virtual/index7.js +5 -2
- package/dist/_virtual/index8.js +2 -5
- package/dist/agent-docs/adoption-report.json +152 -73
- package/dist/agent-docs/components/AppBottomNav.md +7 -8
- package/dist/agent-docs/components/AppCard.md +25 -21
- package/dist/agent-docs/components/AppDataGrid.md +2602 -0
- package/dist/agent-docs/components/AppEditor.md +18 -13
- package/dist/agent-docs/components/AppSelect.md +50 -0
- package/dist/agent-docs/components/DataTable.md +34 -3
- package/dist/agent-docs/components/DatePicker.md +7 -7
- package/dist/agent-docs/components/FileUploader.md +12 -12
- package/dist/agent-docs/components/GridFilterPanel.md +112 -0
- package/dist/agent-docs/components/SidebarMenuBadge.md +87 -0
- package/dist/agent-docs/components-list.md +44 -0
- package/dist/agent-docs/manifest.json +264 -27
- package/dist/components/design-tokens.js +138 -2
- package/dist/components/ui/app-bottom-nav.js +74 -78
- package/dist/components/ui/app-data-grid/app-data-grid.js +874 -0
- package/dist/components/ui/app-data-grid/engine/use-grid-column-resize.js +110 -0
- package/dist/components/ui/app-data-grid/engine/use-grid-engine.js +598 -0
- package/dist/components/ui/app-data-grid/engine/use-grid-infinite-loader.js +50 -0
- package/dist/components/ui/app-data-grid/engine/use-grid-virtualizer.js +90 -0
- package/dist/components/ui/app-data-grid/grid-aggregate.js +5 -0
- package/dist/components/ui/app-data-grid/grid-column-registry.js +28 -0
- package/dist/components/ui/app-data-grid/grid-columns.js +204 -0
- package/dist/components/ui/app-data-grid/grid-filter-compile.js +33 -0
- package/dist/components/ui/app-data-grid/grid-filter-operators.js +139 -0
- package/dist/components/ui/app-data-grid/grid-grouping.js +104 -0
- package/dist/components/ui/app-data-grid/grid-header-matrix.js +112 -0
- package/dist/components/ui/app-data-grid/grid-i18n.js +207 -0
- package/dist/components/ui/app-data-grid/grid-mount-count.js +8 -0
- package/dist/components/ui/app-data-grid/grid-reducer.js +200 -0
- package/dist/components/ui/app-data-grid/grid-result-scope.js +35 -0
- package/dist/components/ui/app-data-grid/grid-tokens.js +169 -0
- package/dist/components/ui/app-data-grid/grid-view-preset.js +97 -0
- package/dist/components/ui/app-data-grid/parts/grid-actions-row.js +86 -0
- package/dist/components/ui/app-data-grid/parts/grid-cell-text.js +67 -0
- package/dist/components/ui/app-data-grid/parts/grid-column-registry-panel.js +320 -0
- package/dist/components/ui/app-data-grid/parts/grid-density-control.js +88 -0
- package/dist/components/ui/app-data-grid/parts/grid-filter-chips.js +224 -0
- package/dist/components/ui/app-data-grid/parts/grid-filter-editor.js +197 -0
- package/dist/components/ui/app-data-grid/parts/grid-filter-panel.js +386 -0
- package/dist/components/ui/app-data-grid/parts/grid-filter-row.js +273 -0
- package/dist/components/ui/app-data-grid/parts/grid-fullscreen-toggle.js +29 -0
- package/dist/components/ui/app-data-grid/parts/grid-group-row.js +135 -0
- package/dist/components/ui/app-data-grid/parts/grid-header.js +338 -0
- package/dist/components/ui/app-data-grid/parts/grid-pagination-control.js +218 -0
- package/dist/components/ui/app-data-grid/parts/grid-row.js +181 -0
- package/dist/components/ui/app-data-grid/parts/grid-scroll-area.js +186 -0
- package/dist/components/ui/app-data-grid/parts/grid-selection-bar.js +195 -0
- package/dist/components/ui/app-data-grid/parts/grid-status-surface.js +66 -0
- package/dist/components/ui/app-data-grid/parts/grid-table.js +482 -0
- package/dist/components/ui/app-data-grid/parts/grid-toolbar-slots.js +192 -0
- package/dist/components/ui/app-data-grid/use-grid-filters.js +173 -0
- package/dist/components/ui/app-select.js +332 -222
- package/dist/components/ui/button.js +2 -1
- package/dist/components/ui/gantt/components/Chart/Chart.js +1 -1
- package/dist/components/ui/tables/data-cross-table/data-cross-table.js +6 -6
- package/dist/components/ui/tables/data-table/data-table-constants.js +36 -16
- package/dist/components/ui/tables/data-table/data-table-i18n.js +135 -1
- package/dist/css-for-template.css +27 -0
- package/dist/index.d.ts +5711 -76
- package/dist/index.js +473 -406
- package/dist/node_modules/eventemitter3/index2.js +1 -1
- package/dist/styles.css +2 -1
- package/dist/styles.v3.css +1 -1
- package/package.json +25 -7
- /package/dist/agent-docs/components/{truncated-cell.md → TruncatedCell.md} +0 -0
|
@@ -1,23 +1,78 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"generatedAt": "2026-09-22T08:46:36.530Z",
|
|
4
4
|
"package": {
|
|
5
5
|
"name": "laif-ds",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.2-app-data-grid.76"
|
|
7
7
|
},
|
|
8
8
|
"summary": {
|
|
9
|
-
"scannedFiles":
|
|
10
|
-
"deprecatedComponentsCount":
|
|
11
|
-
"deprecatedComponentsUsedCount":
|
|
9
|
+
"scannedFiles": 487,
|
|
10
|
+
"deprecatedComponentsCount": 4,
|
|
11
|
+
"deprecatedComponentsUsedCount": 2,
|
|
12
12
|
"componentsWithoutExamplesCount": 5,
|
|
13
13
|
"componentsWithoutPropsTableCount": 30,
|
|
14
14
|
"repeatedClassPatternsCount": 25,
|
|
15
|
-
"lowAiReadinessComponentsCount":
|
|
15
|
+
"lowAiReadinessComponentsCount": 42,
|
|
16
16
|
"componentsWithoutAccessibilityCoverageCount": 45,
|
|
17
|
-
"componentsWithWeakStateCoverageCount":
|
|
18
|
-
"averageAiReadinessScore": 56.
|
|
17
|
+
"componentsWithWeakStateCoverageCount": 73,
|
|
18
|
+
"averageAiReadinessScore": 56.55
|
|
19
19
|
},
|
|
20
|
-
"deprecatedUsage": [
|
|
20
|
+
"deprecatedUsage": [
|
|
21
|
+
{
|
|
22
|
+
"component": "DataTable",
|
|
23
|
+
"replacement": "AppDataGrid",
|
|
24
|
+
"totalOccurrences": 12,
|
|
25
|
+
"usages": [
|
|
26
|
+
{
|
|
27
|
+
"file": "src/components/design-tokens.ts",
|
|
28
|
+
"occurrences": 2
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"file": "src/components/ui/app-data-grid/parts/grid-scroll-area.tsx",
|
|
32
|
+
"occurrences": 2
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"file": "src/components/ui/tables/data-table/data-table.tsx",
|
|
36
|
+
"occurrences": 2
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"file": "src/components/ui/app-data-grid/app-data-grid.tsx",
|
|
40
|
+
"occurrences": 1
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"file": "src/components/ui/app-data-grid/app-data-grid.types.ts",
|
|
44
|
+
"occurrences": 1
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"file": "src/components/ui/app-data-grid/grid-filter-operators.ts",
|
|
48
|
+
"occurrences": 1
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"file": "src/components/ui/app-data-grid/grid-i18n.ts",
|
|
52
|
+
"occurrences": 1
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"file": "src/components/ui/app-select.tsx",
|
|
56
|
+
"occurrences": 1
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"file": "src/components/ui/tables/data-table/data-table.utils.ts",
|
|
60
|
+
"occurrences": 1
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"component": "SidebarMenuBadge",
|
|
66
|
+
"replacement": "NavItem.badge",
|
|
67
|
+
"totalOccurrences": 4,
|
|
68
|
+
"usages": [
|
|
69
|
+
{
|
|
70
|
+
"file": "src/components/ui/sidebar.tsx",
|
|
71
|
+
"occurrences": 4
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
],
|
|
21
76
|
"documentationGaps": {
|
|
22
77
|
"componentsWithoutExamples": [
|
|
23
78
|
"AppMultipleSelectDropdown",
|
|
@@ -136,6 +191,7 @@
|
|
|
136
191
|
"FilePreviewer",
|
|
137
192
|
"Form",
|
|
138
193
|
"GanttChart",
|
|
194
|
+
"GridFilterPanel",
|
|
139
195
|
"HoverCard",
|
|
140
196
|
"Icon",
|
|
141
197
|
"Input",
|
|
@@ -161,6 +217,7 @@
|
|
|
161
217
|
"Sheet",
|
|
162
218
|
"ShikiHighlighter",
|
|
163
219
|
"Sidebar",
|
|
220
|
+
"SidebarMenuBadge",
|
|
164
221
|
"Skeleton",
|
|
165
222
|
"Slider",
|
|
166
223
|
"Sonner",
|
|
@@ -317,6 +374,10 @@
|
|
|
317
374
|
"name": "SecurePdfViewer",
|
|
318
375
|
"score": 40
|
|
319
376
|
},
|
|
377
|
+
{
|
|
378
|
+
"name": "SidebarMenuBadge",
|
|
379
|
+
"score": 40
|
|
380
|
+
},
|
|
320
381
|
{
|
|
321
382
|
"name": "Toggle",
|
|
322
383
|
"score": 40
|
|
@@ -351,13 +412,16 @@
|
|
|
351
412
|
"repeatedClassNames": [
|
|
352
413
|
{
|
|
353
414
|
"className": "flex items-center gap-2",
|
|
354
|
-
"occurrences":
|
|
415
|
+
"occurrences": 41,
|
|
355
416
|
"files": [
|
|
356
417
|
"src/components/stories/app-checkbox.stories.tsx",
|
|
418
|
+
"src/components/stories/app-data-grid-completa.stories.tsx",
|
|
419
|
+
"src/components/stories/app-data-grid-confronto.stories.tsx",
|
|
357
420
|
"src/components/stories/app-dialog.stories.tsx",
|
|
358
421
|
"src/components/stories/app-radio-group.stories.tsx",
|
|
359
422
|
"src/components/stories/app-select.stories.tsx",
|
|
360
423
|
"src/components/stories/app-tooltip.stories.tsx",
|
|
424
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
361
425
|
"src/components/stories/badge.stories.tsx",
|
|
362
426
|
"src/components/stories/button.stories.tsx",
|
|
363
427
|
"src/components/stories/data-table-docs.stories.tsx",
|
|
@@ -446,6 +510,36 @@
|
|
|
446
510
|
"src/components/stories/switch.stories.tsx"
|
|
447
511
|
]
|
|
448
512
|
},
|
|
513
|
+
{
|
|
514
|
+
"className": "text-sm font-semibold",
|
|
515
|
+
"occurrences": 14,
|
|
516
|
+
"files": [
|
|
517
|
+
"src/components/stories/app-bottom-nav.stories.tsx",
|
|
518
|
+
"src/components/stories/app-data-grid-confronto.stories.tsx",
|
|
519
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
520
|
+
"src/components/stories/collapsible.stories.tsx",
|
|
521
|
+
"src/components/stories/data-table-utils-example.stories.tsx",
|
|
522
|
+
"src/components/stories/truncated-cell.stories.tsx",
|
|
523
|
+
"src/components/ui/weekly-calendar/appointment-card.tsx"
|
|
524
|
+
]
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
"className": "text-d-muted-foreground",
|
|
528
|
+
"occurrences": 14,
|
|
529
|
+
"files": [
|
|
530
|
+
"src/components/stories/app-data-grid-completa.stories.tsx",
|
|
531
|
+
"src/components/stories/app-data-grid-preset.stories.tsx",
|
|
532
|
+
"src/components/stories/app-dialog.stories.tsx",
|
|
533
|
+
"src/components/stories/app-time-picker.stories.tsx",
|
|
534
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
535
|
+
"src/components/ui/app-data-grid/parts/grid-toolbar-slots.tsx",
|
|
536
|
+
"src/components/ui/app-form.tsx",
|
|
537
|
+
"src/components/ui/app-multiple-select-dropdown.tsx",
|
|
538
|
+
"src/components/ui/app-select.tsx",
|
|
539
|
+
"src/components/ui/date-picker.tsx",
|
|
540
|
+
"src/components/ui/weekly-calendar/calendar-header.tsx"
|
|
541
|
+
]
|
|
542
|
+
},
|
|
449
543
|
{
|
|
450
544
|
"className": "border-d-border bg-d-muted rounded-lg border p-4",
|
|
451
545
|
"occurrences": 14,
|
|
@@ -468,6 +562,21 @@
|
|
|
468
562
|
"src/components/stories/sidebar.stories.tsx"
|
|
469
563
|
]
|
|
470
564
|
},
|
|
565
|
+
{
|
|
566
|
+
"className": "text-d-muted-foreground text-xs",
|
|
567
|
+
"occurrences": 11,
|
|
568
|
+
"files": [
|
|
569
|
+
"src/components/editor/plugins/mention-plugin.tsx",
|
|
570
|
+
"src/components/stories/app-card.stories.tsx",
|
|
571
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
572
|
+
"src/components/stories/button.stories.tsx",
|
|
573
|
+
"src/components/stories/input.stories.tsx",
|
|
574
|
+
"src/components/ui/app-data-grid/parts/grid-filter-editor.tsx",
|
|
575
|
+
"src/components/ui/tables/data-cross-table/cell-editor-dialog.tsx",
|
|
576
|
+
"src/components/ui/tables/data-cross-table/data-cross-table.tsx",
|
|
577
|
+
"src/components/ui/tables/data-cross-table/editable-input.tsx"
|
|
578
|
+
]
|
|
579
|
+
},
|
|
471
580
|
{
|
|
472
581
|
"className": "flex w-[550px] flex-col gap-6",
|
|
473
582
|
"occurrences": 10,
|
|
@@ -476,6 +585,14 @@
|
|
|
476
585
|
"src/components/stories/app-radio-group.stories.tsx"
|
|
477
586
|
]
|
|
478
587
|
},
|
|
588
|
+
{
|
|
589
|
+
"className": "text-d-foreground text-xs",
|
|
590
|
+
"occurrences": 9,
|
|
591
|
+
"files": [
|
|
592
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
593
|
+
"src/components/ui/app-select.tsx"
|
|
594
|
+
]
|
|
595
|
+
},
|
|
479
596
|
{
|
|
480
597
|
"className": "text-d-muted-foreground max-w-prose text-sm",
|
|
481
598
|
"occurrences": 9,
|
|
@@ -492,16 +609,14 @@
|
|
|
492
609
|
]
|
|
493
610
|
},
|
|
494
611
|
{
|
|
495
|
-
"className": "text-
|
|
612
|
+
"className": "text-lg font-semibold",
|
|
496
613
|
"occurrences": 8,
|
|
497
614
|
"files": [
|
|
498
|
-
"src/components/
|
|
499
|
-
"src/components/stories/app-
|
|
500
|
-
"src/components/stories/
|
|
501
|
-
"src/components/stories/
|
|
502
|
-
"src/components/
|
|
503
|
-
"src/components/ui/tables/data-cross-table/data-cross-table.tsx",
|
|
504
|
-
"src/components/ui/tables/data-cross-table/editable-input.tsx"
|
|
615
|
+
"src/components/stories/app-data-grid-confronto.stories.tsx",
|
|
616
|
+
"src/components/stories/app-kanban.stories.tsx",
|
|
617
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
618
|
+
"src/components/stories/changelog.stories.tsx",
|
|
619
|
+
"src/components/stories/playground.stories.tsx"
|
|
505
620
|
]
|
|
506
621
|
},
|
|
507
622
|
{
|
|
@@ -538,78 +653,42 @@
|
|
|
538
653
|
]
|
|
539
654
|
},
|
|
540
655
|
{
|
|
541
|
-
"className": "
|
|
656
|
+
"className": "flex items-center gap-1",
|
|
542
657
|
"occurrences": 7,
|
|
543
658
|
"files": [
|
|
544
|
-
"src/components/
|
|
545
|
-
"src/components/stories/app-
|
|
546
|
-
"src/components/
|
|
547
|
-
"src/components/ui/app-
|
|
548
|
-
"src/components/ui/app-
|
|
549
|
-
"src/components/ui/
|
|
550
|
-
"src/components/ui/weekly-calendar/calendar-header.tsx"
|
|
551
|
-
]
|
|
552
|
-
},
|
|
553
|
-
{
|
|
554
|
-
"className": "bg-muted/50 rounded p-4 text-sm",
|
|
555
|
-
"occurrences": 7,
|
|
556
|
-
"files": [
|
|
557
|
-
"src/components/stories/app-select.stories.tsx"
|
|
659
|
+
"src/components/editor/plugins/toolbar/history-toolbar-plugin.tsx",
|
|
660
|
+
"src/components/stories/app-select.stories.tsx",
|
|
661
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
662
|
+
"src/components/ui/app-data-grid/parts/grid-group-row.tsx",
|
|
663
|
+
"src/components/ui/app-kanban.tsx",
|
|
664
|
+
"src/components/ui/calendar.tsx"
|
|
558
665
|
]
|
|
559
666
|
},
|
|
560
667
|
{
|
|
561
|
-
"className": "
|
|
668
|
+
"className": "min-w-0 flex-1 truncate",
|
|
562
669
|
"occurrences": 7,
|
|
563
670
|
"files": [
|
|
564
|
-
"src/components/stories/
|
|
671
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
672
|
+
"src/components/ui/app-select.tsx",
|
|
673
|
+
"src/components/ui/app-sidebar.tsx"
|
|
565
674
|
]
|
|
566
675
|
},
|
|
567
676
|
{
|
|
568
|
-
"className": "
|
|
677
|
+
"className": "flex flex-wrap gap-2",
|
|
569
678
|
"occurrences": 7,
|
|
570
679
|
"files": [
|
|
571
|
-
"src/components/stories/
|
|
572
|
-
"src/components/stories/
|
|
680
|
+
"src/components/stories/app-card.stories.tsx",
|
|
681
|
+
"src/components/stories/app-data-grid-filtri-custom.stories.tsx",
|
|
682
|
+
"src/components/stories/AppDataGrid.mockup.stories.tsx",
|
|
683
|
+
"src/components/stories/file-preview.stories.tsx",
|
|
684
|
+
"src/components/stories/toaster.stories.tsx"
|
|
573
685
|
]
|
|
574
686
|
},
|
|
575
687
|
{
|
|
576
|
-
"className": "
|
|
688
|
+
"className": "bg-muted/50 rounded p-4 text-sm",
|
|
577
689
|
"occurrences": 7,
|
|
578
690
|
"files": [
|
|
579
|
-
"src/components/stories/
|
|
580
|
-
"src/components/stories/spinner.stories.tsx"
|
|
581
|
-
]
|
|
582
|
-
},
|
|
583
|
-
{
|
|
584
|
-
"className": "flex items-center gap-1 font-normal",
|
|
585
|
-
"occurrences": 6,
|
|
586
|
-
"files": [
|
|
587
|
-
"src/components/editor/plugins/toolbar/block-format/format-bulleted-list.tsx",
|
|
588
|
-
"src/components/editor/plugins/toolbar/block-format/format-check-list.tsx",
|
|
589
|
-
"src/components/editor/plugins/toolbar/block-format/format-heading.tsx",
|
|
590
|
-
"src/components/editor/plugins/toolbar/block-format/format-numbered-list.tsx",
|
|
591
|
-
"src/components/editor/plugins/toolbar/block-format/format-paragraph.tsx",
|
|
592
|
-
"src/components/editor/plugins/toolbar/block-format/format-quote.tsx"
|
|
593
|
-
]
|
|
594
|
-
},
|
|
595
|
-
{
|
|
596
|
-
"className": "text-sm font-semibold",
|
|
597
|
-
"occurrences": 6,
|
|
598
|
-
"files": [
|
|
599
|
-
"src/components/stories/app-bottom-nav.stories.tsx",
|
|
600
|
-
"src/components/stories/collapsible.stories.tsx",
|
|
601
|
-
"src/components/stories/data-table-utils-example.stories.tsx",
|
|
602
|
-
"src/components/stories/truncated-cell.stories.tsx",
|
|
603
|
-
"src/components/ui/weekly-calendar/appointment-card.tsx"
|
|
604
|
-
]
|
|
605
|
-
},
|
|
606
|
-
{
|
|
607
|
-
"className": "text-lg font-semibold",
|
|
608
|
-
"occurrences": 6,
|
|
609
|
-
"files": [
|
|
610
|
-
"src/components/stories/app-kanban.stories.tsx",
|
|
611
|
-
"src/components/stories/changelog.stories.tsx",
|
|
612
|
-
"src/components/stories/playground.stories.tsx"
|
|
691
|
+
"src/components/stories/app-select.stories.tsx"
|
|
613
692
|
]
|
|
614
693
|
}
|
|
615
694
|
]
|
|
@@ -231,14 +231,13 @@ claymorphism theme, while the dock around it is a fixed `rounded-t-lg`.
|
|
|
231
231
|
- **Parent whose child is current** (any `subItems[].isActive`) → the cell is a
|
|
232
232
|
`<button>`, marked, **without** `aria-current`: a button is not a page, it is a
|
|
233
233
|
disclosure. So the app only has to mark the leaf.
|
|
234
|
-
- **Nothing in the bar owns the route** →
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
page you are on
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
and none of them is the current one.
|
|
234
|
+
- **Nothing in the bar owns the route** → **no cell is marked**, Menu included.
|
|
235
|
+
The bar renders entirely neutral, exactly as it always has with
|
|
236
|
+
`showMenu={false}`. The Menu cell is a disclosure, not a destination: the pill
|
|
237
|
+
means "this is the page you are on", and handing it to a button that opens a
|
|
238
|
+
panel says that about something which is not a page. A route outside the bar's
|
|
239
|
+
five destinations is a real state, and the honest way to render it is no pill
|
|
240
|
+
at all.
|
|
242
241
|
- Two active items is an app bug: the first in order wins and one warning is
|
|
243
242
|
logged.
|
|
244
243
|
|
|
@@ -10,24 +10,24 @@ Enhanced card component built on top of the base Card component. Provides a simp
|
|
|
10
10
|
|
|
11
11
|
### AppCardProps
|
|
12
12
|
|
|
13
|
-
| Prop | Type
|
|
14
|
-
| ------------------ |
|
|
15
|
-
| `title` | `string \| React.ReactNode`
|
|
16
|
-
| `description` | `string \| React.ReactNode`
|
|
17
|
-
| `header` | `React.ReactNode`
|
|
18
|
-
| `body` | `React.ReactNode`
|
|
19
|
-
| `children` | `React.ReactNode`
|
|
20
|
-
| `actions` | `React.ReactNode`
|
|
21
|
-
| `footer` | `React.ReactNode`
|
|
22
|
-
| `variant` | `AppCardVariant`
|
|
23
|
-
| `size` | `"sm" \| "default" \| "lg" \| "none"`
|
|
24
|
-
| `isLoading` | `boolean`
|
|
25
|
-
| `showHeaderBorder` | `boolean`
|
|
26
|
-
| `showFooterBorder` | `boolean`
|
|
27
|
-
| `className` | `string`
|
|
28
|
-
| `headerClassName` | `string`
|
|
29
|
-
| `bodyClassName` | `string`
|
|
30
|
-
| `footerClassName` | `string`
|
|
13
|
+
| Prop | Type | Default | Description |
|
|
14
|
+
| ------------------ | ------------------------------------- | ----------- | ------------------------------------------------------------ |
|
|
15
|
+
| `title` | `string \| React.ReactNode` | `undefined` | Card title displayed in the header. |
|
|
16
|
+
| `description` | `string \| React.ReactNode` | `undefined` | Card description displayed below the title. |
|
|
17
|
+
| `header` | `React.ReactNode` | `undefined` | Custom header content; overrides `title` and `description`. |
|
|
18
|
+
| `body` | `React.ReactNode` | `undefined` | Main content rendered inside CardContent. |
|
|
19
|
+
| `children` | `React.ReactNode` | `undefined` | Fallback body content when `body` is not provided. |
|
|
20
|
+
| `actions` | `React.ReactNode` | `undefined` | Right-aligned action elements inside the header. |
|
|
21
|
+
| `footer` | `React.ReactNode` | `undefined` | Footer content (typically action buttons). |
|
|
22
|
+
| `variant` | `AppCardVariant` | `"default"` | Visual variant of the card (see table below). |
|
|
23
|
+
| `size` | `"sm" \| "default" \| "lg" \| "none"` | `undefined` | Controls internal padding via the base Card component. |
|
|
24
|
+
| `isLoading` | `boolean` | `false` | When true, renders skeleton placeholders instead of content. |
|
|
25
|
+
| `showHeaderBorder` | `boolean` | `false` | Displays a border between the header and body sections. |
|
|
26
|
+
| `showFooterBorder` | `boolean` | `false` | Displays a border between the body and footer sections. |
|
|
27
|
+
| `className` | `string` | `undefined` | Additional classes for the card container. |
|
|
28
|
+
| `headerClassName` | `string` | `undefined` | Additional classes for the header section. |
|
|
29
|
+
| `bodyClassName` | `string` | `undefined` | Additional classes for the body section. |
|
|
30
|
+
| `footerClassName` | `string` | `undefined` | Additional classes for the footer section. |
|
|
31
31
|
|
|
32
32
|
### Variant Reference
|
|
33
33
|
|
|
@@ -203,13 +203,17 @@ export function NestedCards() {
|
|
|
203
203
|
<div className="flex flex-col gap-3">
|
|
204
204
|
<AppCard
|
|
205
205
|
title="Nested Item A"
|
|
206
|
-
body={
|
|
206
|
+
body={
|
|
207
|
+
<p className="text-sm">Flat cards have no border or shadow.</p>
|
|
208
|
+
}
|
|
207
209
|
variant="flat"
|
|
208
210
|
size="sm"
|
|
209
211
|
/>
|
|
210
212
|
<AppCard
|
|
211
213
|
title="Nested Item B"
|
|
212
|
-
body={
|
|
214
|
+
body={
|
|
215
|
+
<p className="text-sm">Good for secondary content regions.</p>
|
|
216
|
+
}
|
|
213
217
|
variant="flat"
|
|
214
218
|
size="sm"
|
|
215
219
|
/>
|
|
@@ -228,7 +232,7 @@ import { AppCard } from "laif-ds";
|
|
|
228
232
|
|
|
229
233
|
export function SizeVariants() {
|
|
230
234
|
return (
|
|
231
|
-
<div className="flex flex-col gap-6
|
|
235
|
+
<div className="flex w-[400px] flex-col gap-6">
|
|
232
236
|
<AppCard
|
|
233
237
|
size="sm"
|
|
234
238
|
title="Size: Small"
|