@homebound/beam 2.175.2 → 2.176.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.
@@ -54,6 +54,12 @@ const ourReset = (0, react_1.css) `
54
54
  transform: rotate(360deg);
55
55
  }
56
56
  }
57
+
58
+ @keyframes pulse {
59
+ 50% {
60
+ opacity: 0.6;
61
+ }
62
+ }
57
63
  `;
58
64
  // Copy/pasted from TW which uses this as their base reset.
59
65
  const modernNormalizeReset = (0, react_1.css) `
@@ -0,0 +1,10 @@
1
+ declare type Sizes = "sm" | "md" | "lg";
2
+ export declare type LoadingSkeletonProps = {
3
+ rows?: number;
4
+ columns?: number;
5
+ size?: Sizes;
6
+ randomizeWidths?: boolean;
7
+ contrast?: boolean;
8
+ };
9
+ export declare function LoadingSkeleton({ rows, columns, size, randomizeWidths, contrast, }: LoadingSkeletonProps): import("@emotion/react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoadingSkeleton = void 0;
4
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
+ const Css_1 = require("../Css");
6
+ function LoadingSkeleton({ rows = 1, columns = 1, size = "md", randomizeWidths = false, contrast = false, }) {
7
+ const cellArray = [...Array(columns)];
8
+ const rowArray = [...Array(rows)];
9
+ const rowHeight = sizeToPixels[size];
10
+ const rowCells = (rowNumber) => {
11
+ const flexGrowForCell = randomizeWidths ? getRandomizedFlexBasisByRowIndex(rowNumber) : 1;
12
+ return cellArray.map((_, i) => ((0, jsx_runtime_1.jsx)("div", { css: Css_1.Css.br4
13
+ .add("animation", "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite")
14
+ .add("flexGrow", flexGrowForCell)
15
+ .bgGray300.if(contrast).bgGray700.$ }, `row-${rowNumber}-cell-${i}`)));
16
+ };
17
+ return ((0, jsx_runtime_1.jsx)("div", Object.assign({ "aria-label": "Loading" }, { children: rowArray.map((_, i) => ((0, jsx_runtime_1.jsx)("div", Object.assign({ css: Css_1.Css.df.childGap1.mb1.hPx(rowHeight).$ }, { children: rowCells(i) }), `row-${i}`))) }), void 0));
18
+ }
19
+ exports.LoadingSkeleton = LoadingSkeleton;
20
+ /** Create the illusion of random widths by cycling through a list of widths that look nice in order */
21
+ function getRandomizedFlexBasisByRowIndex(rowIndex) {
22
+ const randomizedFlexBasisValues = [0.65, 0.8, 0.75, 0.9, 0.8, 0.85, 0.8, 0.95];
23
+ const valueIndex = rowIndex % randomizedFlexBasisValues.length;
24
+ return randomizedFlexBasisValues[valueIndex];
25
+ }
26
+ const sizeToPixels = {
27
+ sm: 16,
28
+ md: 24,
29
+ lg: 32,
30
+ };
@@ -17,6 +17,7 @@ export * from "./Icon";
17
17
  export * from "./IconButton";
18
18
  export * from "./Layout";
19
19
  export * from "./Loader";
20
+ export * from "./LoadingSkeleton";
20
21
  export * from "./Modal";
21
22
  export * from "./Modal/useModal";
22
23
  export { NavLink } from "./NavLink";
@@ -31,6 +31,7 @@ __exportStar(require("./Icon"), exports);
31
31
  __exportStar(require("./IconButton"), exports);
32
32
  __exportStar(require("./Layout"), exports);
33
33
  __exportStar(require("./Loader"), exports);
34
+ __exportStar(require("./LoadingSkeleton"), exports);
34
35
  __exportStar(require("./Modal"), exports);
35
36
  __exportStar(require("./Modal/useModal"), exports);
36
37
  var NavLink_1 = require("./NavLink");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homebound/beam",
3
- "version": "2.175.2",
3
+ "version": "2.176.0",
4
4
  "author": "Homebound",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",