@bbki.ng/components 1.5.9 → 1.5.10

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/index.d.ts CHANGED
@@ -116,14 +116,25 @@ declare const Table: {
116
116
  declare enum SkeletonColor {
117
117
  BLUE = "blue",
118
118
  RED = "red",
119
- GRAY = "gray"
119
+ GRAY = "gray",
120
+ BLACK = "black"
120
121
  }
121
- declare type SkeletonProps = {
122
+ interface SkeletonProps {
122
123
  width?: number;
123
124
  height?: number;
124
125
  bgColor?: SkeletonColor;
125
- };
126
- declare const Skeleton: (props: SkeletonProps) => JSX.Element;
126
+ }
127
+ interface ArticleSkeletonProps extends SkeletonProps {
128
+ titleLength: number;
129
+ descriptionLength?: number;
130
+ children?: any;
131
+ }
132
+ interface LinkListSkeletonProps extends ArticleSkeletonProps {
133
+ linksLength: number[];
134
+ }
135
+ declare const Skeleton: (props: SkeletonProps) => JSX.Element;
136
+ declare const ArticleSkeleton: (props: ArticleSkeletonProps) => JSX.Element;
137
+ declare const LinkListSkeleton: (props: LinkListSkeletonProps) => JSX.Element;
127
138
 
128
139
  interface ImagePreviewerProps {
129
140
  className?: string;
@@ -182,4 +193,4 @@ interface LinkListProps extends Omit<listProps, "itemRenderer" | "items"> {
182
193
  }
183
194
  declare const LinkList: (props: LinkListProps) => JSX.Element;
184
195
 
185
- export { Article, ArticleProps, BLinkDotProps, BlinkDot, Breadcrumb, BreadcrumbProps, Button, ButtonProps, ButtonType, DropImage, ImageDropProps, ImagePreviewerProps, Link, LinkColor, LinkList, LinkListProps, LinkProps, List, Logo, LogoProps, Nav, NavProps, Page, Panel, PanelProps, PathObj, PopConfirm, PopConfirmProps, Skeleton, SkeletonColor, SkeletonProps, Table, TableProps, Tag, TagProps, Tags, ThreeColLayout, TitledList, TitledListProps, listProps, threeColLayoutProps };
196
+ export { Article, ArticleProps, ArticleSkeleton, ArticleSkeletonProps, BLinkDotProps, BlinkDot, Breadcrumb, BreadcrumbProps, Button, ButtonProps, ButtonType, DropImage, ImageDropProps, ImagePreviewerProps, Link, LinkColor, LinkList, LinkListProps, LinkListSkeleton, LinkListSkeletonProps, LinkProps, List, Logo, LogoProps, Nav, NavProps, Page, Panel, PanelProps, PathObj, PopConfirm, PopConfirmProps, Skeleton, SkeletonColor, SkeletonProps, Table, TableProps, Tag, TagProps, Tags, ThreeColLayout, TitledList, TitledListProps, listProps, threeColLayoutProps };
package/dist/index.js CHANGED
@@ -59,6 +59,7 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
59
59
  var src_exports = {};
60
60
  __export(src_exports, {
61
61
  Article: () => Article,
62
+ ArticleSkeleton: () => ArticleSkeleton,
62
63
  BlinkDot: () => BlinkDot,
63
64
  Breadcrumb: () => Breadcrumb,
64
65
  Button: () => Button,
@@ -67,6 +68,7 @@ __export(src_exports, {
67
68
  Link: () => Link,
68
69
  LinkColor: () => LinkColor,
69
70
  LinkList: () => LinkList,
71
+ LinkListSkeleton: () => LinkListSkeleton,
70
72
  List: () => List,
71
73
  Logo: () => Logo,
72
74
  Nav: () => Nav,
@@ -336,31 +338,105 @@ Table.HCell = (props) => /* @__PURE__ */ import_react10.default.createElement("t
336
338
  Table.Cell = (props) => /* @__PURE__ */ import_react10.default.createElement("td", __spreadValues({}, props), props.children);
337
339
 
338
340
  // src/skeleton/Seleton.tsx
341
+ var import_classnames6 = __toESM(require("classnames"));
342
+ var import_react12 = __toESM(require("react"));
343
+
344
+ // src/list/list.tsx
339
345
  var import_classnames5 = __toESM(require("classnames"));
340
346
  var import_react11 = __toESM(require("react"));
347
+ var List = (props) => {
348
+ const { items, itemRenderer, className, horizontal, compact } = props;
349
+ const spaceCls = compact ? "" : horizontal ? "mr-3" : "mb-4";
350
+ return /* @__PURE__ */ import_react11.default.createElement("ul", {
351
+ className: (0, import_classnames5.default)(className, "list-style-none", {
352
+ flex: horizontal,
353
+ "align-center": horizontal
354
+ })
355
+ }, items.map((item, index) => {
356
+ return /* @__PURE__ */ import_react11.default.createElement("li", {
357
+ key: item.id || index,
358
+ className: (0, import_classnames5.default)(spaceCls, "flex-shrink-0")
359
+ }, itemRenderer(item, index));
360
+ }));
361
+ };
362
+ var TitledList = (props) => {
363
+ const _a = props, { title, description } = _a, rest = __objRest(_a, ["title", "description"]);
364
+ if (!title) {
365
+ return /* @__PURE__ */ import_react11.default.createElement(List, __spreadValues({}, rest));
366
+ }
367
+ return /* @__PURE__ */ import_react11.default.createElement(Article, {
368
+ title,
369
+ description
370
+ }, /* @__PURE__ */ import_react11.default.createElement(List, __spreadValues({}, rest)));
371
+ };
372
+ var LinkList = (props) => {
373
+ const _a = props, { title, description, links } = _a, rest = __objRest(_a, ["title", "description", "links"]);
374
+ const renderLink = ({ name, to }) => {
375
+ return /* @__PURE__ */ import_react11.default.createElement(Link, {
376
+ to,
377
+ key: name
378
+ }, name);
379
+ };
380
+ return /* @__PURE__ */ import_react11.default.createElement(TitledList, __spreadValues({
381
+ title,
382
+ description,
383
+ items: links,
384
+ itemRenderer: renderLink
385
+ }, rest));
386
+ };
387
+
388
+ // src/skeleton/Seleton.tsx
341
389
  var SkeletonColor = /* @__PURE__ */ ((SkeletonColor2) => {
342
390
  SkeletonColor2["BLUE"] = "blue";
343
391
  SkeletonColor2["RED"] = "red";
344
392
  SkeletonColor2["GRAY"] = "gray";
393
+ SkeletonColor2["BLACK"] = "black";
345
394
  return SkeletonColor2;
346
395
  })(SkeletonColor || {});
347
396
  var COLOR_MAPPING2 = {
348
397
  ["blue" /* BLUE */]: "bg-blue-100",
349
398
  ["red" /* RED */]: "bg-red-100",
350
- ["gray" /* GRAY */]: "bg-gray-100"
399
+ ["gray" /* GRAY */]: "bg-gray-100",
400
+ ["black" /* BLACK */]: "bg-gray-200"
351
401
  };
352
402
  var Skeleton = (props) => {
353
403
  const { bgColor = "gray" /* GRAY */, width = 26, height = 24 } = props;
354
- return /* @__PURE__ */ import_react11.default.createElement("div", {
355
- className: (0, import_classnames5.default)(COLOR_MAPPING2[bgColor], "animate-pulse", "rounded"),
404
+ return /* @__PURE__ */ import_react12.default.createElement("div", {
405
+ className: (0, import_classnames6.default)(COLOR_MAPPING2[bgColor], "animate-pulse", "rounded"),
356
406
  style: { width, height }
357
407
  });
358
408
  };
409
+ var ArticleSkeleton = (props) => {
410
+ const { children, titleLength, descriptionLength } = props;
411
+ return /* @__PURE__ */ import_react12.default.createElement(Article, {
412
+ title: /* @__PURE__ */ import_react12.default.createElement(Skeleton, {
413
+ width: 36 * titleLength,
414
+ height: 36,
415
+ bgColor: "black" /* BLACK */
416
+ }),
417
+ description: descriptionLength && /* @__PURE__ */ import_react12.default.createElement(Skeleton, {
418
+ width: 16 * descriptionLength
419
+ })
420
+ }, children);
421
+ };
422
+ var LinkListSkeleton = (props) => {
423
+ const _a = props, { linksLength } = _a, rest = __objRest(_a, ["linksLength"]);
424
+ const renderSkeleton = (length) => {
425
+ return /* @__PURE__ */ import_react12.default.createElement(Skeleton, {
426
+ width: length * 16,
427
+ bgColor: "blue" /* BLUE */
428
+ });
429
+ };
430
+ return /* @__PURE__ */ import_react12.default.createElement(ArticleSkeleton, __spreadValues({}, rest), /* @__PURE__ */ import_react12.default.createElement(List, {
431
+ items: linksLength,
432
+ itemRenderer: renderSkeleton
433
+ }));
434
+ };
359
435
 
360
436
  // src/drop-image/DropImage.tsx
361
- var import_classnames6 = __toESM(require("classnames"));
362
- var import_react13 = __toESM(require("react"));
363
- var import_react14 = require("react");
437
+ var import_classnames7 = __toESM(require("classnames"));
438
+ var import_react14 = __toESM(require("react"));
439
+ var import_react15 = require("react");
364
440
 
365
441
  // src/drop-image/utils.ts
366
442
  var wait = (d) => new Promise((r) => setTimeout(r, d));
@@ -368,12 +444,12 @@ var noop = () => {
368
444
  };
369
445
 
370
446
  // src/drop-image/useDropImage.ts
371
- var import_react12 = require("react");
447
+ var import_react13 = require("react");
372
448
  var useDropImage = (params) => {
373
- const [isDragOver, setIsDragOver] = (0, import_react12.useState)(false);
374
- const [imageSrc, setImageSrc] = (0, import_react12.useState)("");
375
- const [imageSize, setImageSize] = (0, import_react12.useState)({ width: 0, height: 0 });
376
- const imageFile = (0, import_react12.useRef)(null);
449
+ const [isDragOver, setIsDragOver] = (0, import_react13.useState)(false);
450
+ const [imageSrc, setImageSrc] = (0, import_react13.useState)("");
451
+ const [imageSize, setImageSize] = (0, import_react13.useState)({ width: 0, height: 0 });
452
+ const imageFile = (0, import_react13.useRef)(null);
377
453
  const {
378
454
  portraitImageWidth = 384,
379
455
  landscapeImageWidth = 500,
@@ -405,15 +481,15 @@ var useDropImage = (params) => {
405
481
  setImageSrc("");
406
482
  }
407
483
  };
408
- const handleDragOver = (0, import_react12.useCallback)((ev) => {
484
+ const handleDragOver = (0, import_react13.useCallback)((ev) => {
409
485
  ev.preventDefault();
410
486
  setIsDragOver(true);
411
487
  ev.dataTransfer.dropEffect = "move";
412
488
  }, []);
413
- const handleDragLeave = (0, import_react12.useCallback)(() => {
489
+ const handleDragLeave = (0, import_react13.useCallback)(() => {
414
490
  setIsDragOver(false);
415
491
  }, []);
416
- const handleDrop = (0, import_react12.useCallback)((ev) => {
492
+ const handleDrop = (0, import_react13.useCallback)((ev) => {
417
493
  ev.preventDefault();
418
494
  setIsDragOver(false);
419
495
  const file = ev.dataTransfer.files[0];
@@ -443,7 +519,7 @@ var useDropImage = (params) => {
443
519
  }
444
520
  img.onload = updateFunc;
445
521
  };
446
- const imageRef = (0, import_react12.useCallback)((input) => {
522
+ const imageRef = (0, import_react13.useCallback)((input) => {
447
523
  if (!input) {
448
524
  return;
449
525
  }
@@ -470,8 +546,8 @@ var ImagePreviewer = (props) => {
470
546
  imageSrc,
471
547
  className
472
548
  } = props;
473
- return /* @__PURE__ */ import_react13.default.createElement("img", {
474
- className: (0, import_classnames6.default)(className, "max-w-[100%]", "h-[auto]", "duration-300", "transition-opacity", "opacity-100", {
549
+ return /* @__PURE__ */ import_react14.default.createElement("img", {
550
+ className: (0, import_classnames7.default)(className, "max-w-[100%]", "h-[auto]", "duration-300", "transition-opacity", "opacity-100", {
475
551
  "opacity-0": !showImagePreviewer,
476
552
  "!m-0": !showImagePreviewer,
477
553
  "!p-0": !showImagePreviewer
@@ -492,9 +568,9 @@ var GhostDropImage = (props) => {
492
568
  children,
493
569
  placeholder
494
570
  } = props;
495
- const [coverVisible, setCoverVisible] = (0, import_react14.useState)(false);
496
- const [imageVisible, setImageVisible] = (0, import_react14.useState)(false);
497
- const handleDocDragEnter = (0, import_react13.useCallback)(() => {
571
+ const [coverVisible, setCoverVisible] = (0, import_react15.useState)(false);
572
+ const [imageVisible, setImageVisible] = (0, import_react15.useState)(false);
573
+ const handleDocDragEnter = (0, import_react14.useCallback)(() => {
498
574
  setCoverVisible(true);
499
575
  }, []);
500
576
  const {
@@ -519,19 +595,19 @@ var GhostDropImage = (props) => {
519
595
  reset();
520
596
  }
521
597
  });
522
- (0, import_react13.useEffect)(() => {
598
+ (0, import_react14.useEffect)(() => {
523
599
  document.addEventListener("dragenter", handleDocDragEnter);
524
600
  return () => {
525
601
  document.removeEventListener("dragenter", handleDocDragEnter);
526
602
  };
527
603
  }, []);
528
- const coverCls = (0, import_classnames6.default)("fixed", "top-0", "left-0", "h-full", "w-full", {
604
+ const coverCls = (0, import_classnames7.default)("fixed", "top-0", "left-0", "h-full", "w-full", {
529
605
  "lqip-blur": coverVisible,
530
606
  "z-[999]": coverVisible,
531
607
  block: coverVisible,
532
608
  hidden: !coverVisible
533
609
  });
534
- return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, /* @__PURE__ */ import_react13.default.createElement("div", {
610
+ return /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement("div", {
535
611
  className: coverCls,
536
612
  onDragLeave: () => {
537
613
  handleDragLeave();
@@ -544,7 +620,7 @@ var GhostDropImage = (props) => {
544
620
  imageRef,
545
621
  imageSize,
546
622
  imageSrc
547
- }) : /* @__PURE__ */ import_react13.default.createElement(ImagePreviewer, {
623
+ }) : /* @__PURE__ */ import_react14.default.createElement(ImagePreviewer, {
548
624
  className,
549
625
  visible: imageVisible,
550
626
  imageRef,
@@ -570,9 +646,9 @@ var DropImage = (props) => {
570
646
  }
571
647
  } = props;
572
648
  if (ghost) {
573
- return /* @__PURE__ */ import_react13.default.createElement(GhostDropImage, __spreadValues({}, props));
649
+ return /* @__PURE__ */ import_react14.default.createElement(GhostDropImage, __spreadValues({}, props));
574
650
  }
575
- const [showImagePreviewer, setShowImagePreviewer] = (0, import_react14.useState)(false);
651
+ const [showImagePreviewer, setShowImagePreviewer] = (0, import_react15.useState)(false);
576
652
  const {
577
653
  handleDragLeave,
578
654
  handleDragOver,
@@ -601,8 +677,8 @@ var DropImage = (props) => {
601
677
  height: imageSize.height || dropAreaStyle.height
602
678
  });
603
679
  };
604
- return /* @__PURE__ */ import_react13.default.createElement("div", {
605
- className: (0, import_classnames6.default)(className, "transition-all items-center justify-center flex duration-200 ease-in-out", {
680
+ return /* @__PURE__ */ import_react14.default.createElement("div", {
681
+ className: (0, import_classnames7.default)(className, "transition-all items-center justify-center flex duration-200 ease-in-out", {
606
682
  "shadow-input": !imageSrc,
607
683
  "shadow-empty": imageSrc
608
684
  }),
@@ -615,7 +691,7 @@ var DropImage = (props) => {
615
691
  imageRef,
616
692
  imageSize,
617
693
  imageSrc
618
- }) : /* @__PURE__ */ import_react13.default.createElement(ImagePreviewer, {
694
+ }) : /* @__PURE__ */ import_react14.default.createElement(ImagePreviewer, {
619
695
  visible: showImagePreviewer,
620
696
  imageRef,
621
697
  imageSrc,
@@ -624,83 +700,40 @@ var DropImage = (props) => {
624
700
  };
625
701
 
626
702
  // src/blink-dot/BlinkDot.tsx
627
- var import_classnames7 = __toESM(require("classnames"));
628
- var import_react15 = __toESM(require("react"));
703
+ var import_classnames8 = __toESM(require("classnames"));
704
+ var import_react16 = __toESM(require("react"));
629
705
  var BlinkDot = (props) => {
630
706
  const { className } = props;
631
- return /* @__PURE__ */ import_react15.default.createElement("span", {
632
- className: (0, import_classnames7.default)("inline-flex h-1 w-1 justify-center items-center relative", className)
633
- }, /* @__PURE__ */ import_react15.default.createElement("span", {
707
+ return /* @__PURE__ */ import_react16.default.createElement("span", {
708
+ className: (0, import_classnames8.default)("inline-flex h-1 w-1 justify-center items-center relative", className)
709
+ }, /* @__PURE__ */ import_react16.default.createElement("span", {
634
710
  className: "animate-ping-fast absolute inline-flex h-full w-full rounded-full bg-red-600"
635
711
  }));
636
712
  };
637
713
 
638
714
  // src/layout/layout.tsx
639
- var import_classnames8 = __toESM(require("classnames"));
640
- var import_react16 = __toESM(require("react"));
715
+ var import_classnames9 = __toESM(require("classnames"));
716
+ var import_react17 = __toESM(require("react"));
641
717
  var ThreeColLayout = (props) => {
642
718
  const { leftRenderer, middleRenderer, rightRenderer } = props;
643
- const colCls = (0, import_classnames8.default)("max-h-full overflow-auto md:block py-64");
644
- return /* @__PURE__ */ import_react16.default.createElement("div", {
719
+ const colCls = (0, import_classnames9.default)("max-h-full overflow-auto md:block py-64");
720
+ return /* @__PURE__ */ import_react17.default.createElement("div", {
645
721
  className: "grid grid-cols-1 xl:grid-cols-3 gap-4 h-full w-full"
646
- }, /* @__PURE__ */ import_react16.default.createElement("div", {
647
- className: (0, import_classnames8.default)("hidden", colCls)
648
- }, leftRenderer && leftRenderer()), /* @__PURE__ */ import_react16.default.createElement("div", {
649
- className: (0, import_classnames8.default)(colCls, "sm:px-128 xl:px-0 no-scrollbar", "relative", {
722
+ }, /* @__PURE__ */ import_react17.default.createElement("div", {
723
+ className: (0, import_classnames9.default)("hidden", colCls)
724
+ }, leftRenderer && leftRenderer()), /* @__PURE__ */ import_react17.default.createElement("div", {
725
+ className: (0, import_classnames9.default)(colCls, "sm:px-128 xl:px-0 no-scrollbar", "relative", {
650
726
  hidden: !middleRenderer
651
727
  })
652
- }, middleRenderer && middleRenderer()), /* @__PURE__ */ import_react16.default.createElement("div", {
653
- className: (0, import_classnames8.default)("hidden", colCls)
728
+ }, middleRenderer && middleRenderer()), /* @__PURE__ */ import_react17.default.createElement("div", {
729
+ className: (0, import_classnames9.default)("hidden", colCls)
654
730
  }, rightRenderer && rightRenderer()));
655
731
  };
656
-
657
- // src/list/list.tsx
658
- var import_classnames9 = __toESM(require("classnames"));
659
- var import_react17 = __toESM(require("react"));
660
- var List = (props) => {
661
- const { items, itemRenderer, className, horizontal, compact } = props;
662
- const spaceCls = compact ? "" : horizontal ? "mr-3" : "mb-4";
663
- return /* @__PURE__ */ import_react17.default.createElement("ul", {
664
- className: (0, import_classnames9.default)(className, "list-style-none", {
665
- flex: horizontal,
666
- "align-center": horizontal
667
- })
668
- }, items.map((item, index) => {
669
- return /* @__PURE__ */ import_react17.default.createElement("li", {
670
- key: item.id || index,
671
- className: (0, import_classnames9.default)(spaceCls, "flex-shrink-0")
672
- }, itemRenderer(item, index));
673
- }));
674
- };
675
- var TitledList = (props) => {
676
- const _a = props, { title, description } = _a, rest = __objRest(_a, ["title", "description"]);
677
- if (!title) {
678
- return /* @__PURE__ */ import_react17.default.createElement(List, __spreadValues({}, rest));
679
- }
680
- return /* @__PURE__ */ import_react17.default.createElement(Article, {
681
- title,
682
- description
683
- }, /* @__PURE__ */ import_react17.default.createElement(List, __spreadValues({}, rest)));
684
- };
685
- var LinkList = (props) => {
686
- const _a = props, { title, description, links } = _a, rest = __objRest(_a, ["title", "description", "links"]);
687
- const renderLink = ({ name, to }) => {
688
- return /* @__PURE__ */ import_react17.default.createElement(Link, {
689
- to,
690
- key: name
691
- }, name);
692
- };
693
- return /* @__PURE__ */ import_react17.default.createElement(TitledList, __spreadValues({
694
- title,
695
- description,
696
- items: links,
697
- itemRenderer: renderLink
698
- }, rest));
699
- };
700
732
  module.exports = __toCommonJS(src_exports);
701
733
  // Annotate the CommonJS export names for ESM import in node:
702
734
  0 && (module.exports = {
703
735
  Article,
736
+ ArticleSkeleton,
704
737
  BlinkDot,
705
738
  Breadcrumb,
706
739
  Button,
@@ -709,6 +742,7 @@ module.exports = __toCommonJS(src_exports);
709
742
  Link,
710
743
  LinkColor,
711
744
  LinkList,
745
+ LinkListSkeleton,
712
746
  List,
713
747
  Logo,
714
748
  Nav,
package/dist/index.mjs CHANGED
@@ -285,29 +285,103 @@ Table.Cell = (props) => /* @__PURE__ */ React11.createElement("td", __spreadValu
285
285
 
286
286
  // src/skeleton/Seleton.tsx
287
287
  import classNames5 from "classnames";
288
+ import React13 from "react";
289
+
290
+ // src/list/list.tsx
291
+ import cls from "classnames";
288
292
  import React12 from "react";
293
+ var List = (props) => {
294
+ const { items, itemRenderer, className, horizontal, compact } = props;
295
+ const spaceCls = compact ? "" : horizontal ? "mr-3" : "mb-4";
296
+ return /* @__PURE__ */ React12.createElement("ul", {
297
+ className: cls(className, "list-style-none", {
298
+ flex: horizontal,
299
+ "align-center": horizontal
300
+ })
301
+ }, items.map((item, index) => {
302
+ return /* @__PURE__ */ React12.createElement("li", {
303
+ key: item.id || index,
304
+ className: cls(spaceCls, "flex-shrink-0")
305
+ }, itemRenderer(item, index));
306
+ }));
307
+ };
308
+ var TitledList = (props) => {
309
+ const _a = props, { title, description } = _a, rest = __objRest(_a, ["title", "description"]);
310
+ if (!title) {
311
+ return /* @__PURE__ */ React12.createElement(List, __spreadValues({}, rest));
312
+ }
313
+ return /* @__PURE__ */ React12.createElement(Article, {
314
+ title,
315
+ description
316
+ }, /* @__PURE__ */ React12.createElement(List, __spreadValues({}, rest)));
317
+ };
318
+ var LinkList = (props) => {
319
+ const _a = props, { title, description, links } = _a, rest = __objRest(_a, ["title", "description", "links"]);
320
+ const renderLink = ({ name, to }) => {
321
+ return /* @__PURE__ */ React12.createElement(Link, {
322
+ to,
323
+ key: name
324
+ }, name);
325
+ };
326
+ return /* @__PURE__ */ React12.createElement(TitledList, __spreadValues({
327
+ title,
328
+ description,
329
+ items: links,
330
+ itemRenderer: renderLink
331
+ }, rest));
332
+ };
333
+
334
+ // src/skeleton/Seleton.tsx
289
335
  var SkeletonColor = /* @__PURE__ */ ((SkeletonColor2) => {
290
336
  SkeletonColor2["BLUE"] = "blue";
291
337
  SkeletonColor2["RED"] = "red";
292
338
  SkeletonColor2["GRAY"] = "gray";
339
+ SkeletonColor2["BLACK"] = "black";
293
340
  return SkeletonColor2;
294
341
  })(SkeletonColor || {});
295
342
  var COLOR_MAPPING2 = {
296
343
  ["blue" /* BLUE */]: "bg-blue-100",
297
344
  ["red" /* RED */]: "bg-red-100",
298
- ["gray" /* GRAY */]: "bg-gray-100"
345
+ ["gray" /* GRAY */]: "bg-gray-100",
346
+ ["black" /* BLACK */]: "bg-gray-200"
299
347
  };
300
348
  var Skeleton = (props) => {
301
349
  const { bgColor = "gray" /* GRAY */, width = 26, height = 24 } = props;
302
- return /* @__PURE__ */ React12.createElement("div", {
350
+ return /* @__PURE__ */ React13.createElement("div", {
303
351
  className: classNames5(COLOR_MAPPING2[bgColor], "animate-pulse", "rounded"),
304
352
  style: { width, height }
305
353
  });
306
354
  };
355
+ var ArticleSkeleton = (props) => {
356
+ const { children, titleLength, descriptionLength } = props;
357
+ return /* @__PURE__ */ React13.createElement(Article, {
358
+ title: /* @__PURE__ */ React13.createElement(Skeleton, {
359
+ width: 36 * titleLength,
360
+ height: 36,
361
+ bgColor: "black" /* BLACK */
362
+ }),
363
+ description: descriptionLength && /* @__PURE__ */ React13.createElement(Skeleton, {
364
+ width: 16 * descriptionLength
365
+ })
366
+ }, children);
367
+ };
368
+ var LinkListSkeleton = (props) => {
369
+ const _a = props, { linksLength } = _a, rest = __objRest(_a, ["linksLength"]);
370
+ const renderSkeleton = (length) => {
371
+ return /* @__PURE__ */ React13.createElement(Skeleton, {
372
+ width: length * 16,
373
+ bgColor: "blue" /* BLUE */
374
+ });
375
+ };
376
+ return /* @__PURE__ */ React13.createElement(ArticleSkeleton, __spreadValues({}, rest), /* @__PURE__ */ React13.createElement(List, {
377
+ items: linksLength,
378
+ itemRenderer: renderSkeleton
379
+ }));
380
+ };
307
381
 
308
382
  // src/drop-image/DropImage.tsx
309
- import cls from "classnames";
310
- import React13, {
383
+ import cls2 from "classnames";
384
+ import React14, {
311
385
  useEffect as useEffect2,
312
386
  useCallback as useCallback2
313
387
  } from "react";
@@ -421,8 +495,8 @@ var ImagePreviewer = (props) => {
421
495
  imageSrc,
422
496
  className
423
497
  } = props;
424
- return /* @__PURE__ */ React13.createElement("img", {
425
- className: cls(className, "max-w-[100%]", "h-[auto]", "duration-300", "transition-opacity", "opacity-100", {
498
+ return /* @__PURE__ */ React14.createElement("img", {
499
+ className: cls2(className, "max-w-[100%]", "h-[auto]", "duration-300", "transition-opacity", "opacity-100", {
426
500
  "opacity-0": !showImagePreviewer,
427
501
  "!m-0": !showImagePreviewer,
428
502
  "!p-0": !showImagePreviewer
@@ -476,13 +550,13 @@ var GhostDropImage = (props) => {
476
550
  document.removeEventListener("dragenter", handleDocDragEnter);
477
551
  };
478
552
  }, []);
479
- const coverCls = cls("fixed", "top-0", "left-0", "h-full", "w-full", {
553
+ const coverCls = cls2("fixed", "top-0", "left-0", "h-full", "w-full", {
480
554
  "lqip-blur": coverVisible,
481
555
  "z-[999]": coverVisible,
482
556
  block: coverVisible,
483
557
  hidden: !coverVisible
484
558
  });
485
- return /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement("div", {
559
+ return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement("div", {
486
560
  className: coverCls,
487
561
  onDragLeave: () => {
488
562
  handleDragLeave();
@@ -495,7 +569,7 @@ var GhostDropImage = (props) => {
495
569
  imageRef,
496
570
  imageSize,
497
571
  imageSrc
498
- }) : /* @__PURE__ */ React13.createElement(ImagePreviewer, {
572
+ }) : /* @__PURE__ */ React14.createElement(ImagePreviewer, {
499
573
  className,
500
574
  visible: imageVisible,
501
575
  imageRef,
@@ -521,7 +595,7 @@ var DropImage = (props) => {
521
595
  }
522
596
  } = props;
523
597
  if (ghost) {
524
- return /* @__PURE__ */ React13.createElement(GhostDropImage, __spreadValues({}, props));
598
+ return /* @__PURE__ */ React14.createElement(GhostDropImage, __spreadValues({}, props));
525
599
  }
526
600
  const [showImagePreviewer, setShowImagePreviewer] = useState3(false);
527
601
  const {
@@ -552,8 +626,8 @@ var DropImage = (props) => {
552
626
  height: imageSize.height || dropAreaStyle.height
553
627
  });
554
628
  };
555
- return /* @__PURE__ */ React13.createElement("div", {
556
- className: cls(className, "transition-all items-center justify-center flex duration-200 ease-in-out", {
629
+ return /* @__PURE__ */ React14.createElement("div", {
630
+ className: cls2(className, "transition-all items-center justify-center flex duration-200 ease-in-out", {
557
631
  "shadow-input": !imageSrc,
558
632
  "shadow-empty": imageSrc
559
633
  }),
@@ -566,7 +640,7 @@ var DropImage = (props) => {
566
640
  imageRef,
567
641
  imageSize,
568
642
  imageSrc
569
- }) : /* @__PURE__ */ React13.createElement(ImagePreviewer, {
643
+ }) : /* @__PURE__ */ React14.createElement(ImagePreviewer, {
570
644
  visible: showImagePreviewer,
571
645
  imageRef,
572
646
  imageSrc,
@@ -576,80 +650,37 @@ var DropImage = (props) => {
576
650
 
577
651
  // src/blink-dot/BlinkDot.tsx
578
652
  import classNames6 from "classnames";
579
- import React14 from "react";
653
+ import React15 from "react";
580
654
  var BlinkDot = (props) => {
581
655
  const { className } = props;
582
- return /* @__PURE__ */ React14.createElement("span", {
656
+ return /* @__PURE__ */ React15.createElement("span", {
583
657
  className: classNames6("inline-flex h-1 w-1 justify-center items-center relative", className)
584
- }, /* @__PURE__ */ React14.createElement("span", {
658
+ }, /* @__PURE__ */ React15.createElement("span", {
585
659
  className: "animate-ping-fast absolute inline-flex h-full w-full rounded-full bg-red-600"
586
660
  }));
587
661
  };
588
662
 
589
663
  // src/layout/layout.tsx
590
- import cls2 from "classnames";
591
- import React15 from "react";
664
+ import cls3 from "classnames";
665
+ import React16 from "react";
592
666
  var ThreeColLayout = (props) => {
593
667
  const { leftRenderer, middleRenderer, rightRenderer } = props;
594
- const colCls = cls2("max-h-full overflow-auto md:block py-64");
595
- return /* @__PURE__ */ React15.createElement("div", {
668
+ const colCls = cls3("max-h-full overflow-auto md:block py-64");
669
+ return /* @__PURE__ */ React16.createElement("div", {
596
670
  className: "grid grid-cols-1 xl:grid-cols-3 gap-4 h-full w-full"
597
- }, /* @__PURE__ */ React15.createElement("div", {
598
- className: cls2("hidden", colCls)
599
- }, leftRenderer && leftRenderer()), /* @__PURE__ */ React15.createElement("div", {
600
- className: cls2(colCls, "sm:px-128 xl:px-0 no-scrollbar", "relative", {
671
+ }, /* @__PURE__ */ React16.createElement("div", {
672
+ className: cls3("hidden", colCls)
673
+ }, leftRenderer && leftRenderer()), /* @__PURE__ */ React16.createElement("div", {
674
+ className: cls3(colCls, "sm:px-128 xl:px-0 no-scrollbar", "relative", {
601
675
  hidden: !middleRenderer
602
676
  })
603
- }, middleRenderer && middleRenderer()), /* @__PURE__ */ React15.createElement("div", {
604
- className: cls2("hidden", colCls)
677
+ }, middleRenderer && middleRenderer()), /* @__PURE__ */ React16.createElement("div", {
678
+ className: cls3("hidden", colCls)
605
679
  }, rightRenderer && rightRenderer()));
606
680
  };
607
-
608
- // src/list/list.tsx
609
- import cls3 from "classnames";
610
- import React16 from "react";
611
- var List = (props) => {
612
- const { items, itemRenderer, className, horizontal, compact } = props;
613
- const spaceCls = compact ? "" : horizontal ? "mr-3" : "mb-4";
614
- return /* @__PURE__ */ React16.createElement("ul", {
615
- className: cls3(className, "list-style-none", {
616
- flex: horizontal,
617
- "align-center": horizontal
618
- })
619
- }, items.map((item, index) => {
620
- return /* @__PURE__ */ React16.createElement("li", {
621
- key: item.id || index,
622
- className: cls3(spaceCls, "flex-shrink-0")
623
- }, itemRenderer(item, index));
624
- }));
625
- };
626
- var TitledList = (props) => {
627
- const _a = props, { title, description } = _a, rest = __objRest(_a, ["title", "description"]);
628
- if (!title) {
629
- return /* @__PURE__ */ React16.createElement(List, __spreadValues({}, rest));
630
- }
631
- return /* @__PURE__ */ React16.createElement(Article, {
632
- title,
633
- description
634
- }, /* @__PURE__ */ React16.createElement(List, __spreadValues({}, rest)));
635
- };
636
- var LinkList = (props) => {
637
- const _a = props, { title, description, links } = _a, rest = __objRest(_a, ["title", "description", "links"]);
638
- const renderLink = ({ name, to }) => {
639
- return /* @__PURE__ */ React16.createElement(Link, {
640
- to,
641
- key: name
642
- }, name);
643
- };
644
- return /* @__PURE__ */ React16.createElement(TitledList, __spreadValues({
645
- title,
646
- description,
647
- items: links,
648
- itemRenderer: renderLink
649
- }, rest));
650
- };
651
681
  export {
652
682
  Article,
683
+ ArticleSkeleton,
653
684
  BlinkDot,
654
685
  Breadcrumb,
655
686
  Button,
@@ -658,6 +689,7 @@ export {
658
689
  Link,
659
690
  LinkColor,
660
691
  LinkList,
692
+ LinkListSkeleton,
661
693
  List,
662
694
  Logo,
663
695
  Nav,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bbki.ng/components",
3
- "version": "1.5.9",
3
+ "version": "1.5.10",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",