kwikid-components-react
Version:
KwikID's Component Library in React
395 lines (389 loc) • 11.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Sizes = exports.Shapes = exports.Default = exports.CustomStyles = exports.Contained = void 0;
var _react = _interopRequireDefault(require("react"));
var _Loader = _interopRequireDefault(require("./Loader"));
var _Loader2 = require("./Loader.constants");
var _Loader3 = require("./Loader.defaults");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* The Loader component indicates a loading state, providing visual feedback to users during
* asynchronous operations such as data fetching or processing.
*
* ## Usage
*
* ```jsx
* import { KwikUILoader } from 'react-kwikui';
*
* // Fullscreen variant with loading text
* <KwikUILoader
* loading={true}
* loadingText="Fetching data..."
* variant="fullscreen"
* />
*
* // Contained variant inside a parent component
* <div style={{ position: 'relative', minHeight: '200px' }}>
* <KwikUILoader
* loading={true}
* variant="contained"
* />
* </div>
* ```
*/
var _default = exports.default = {
title: "KwikUI/Feedback/Loader",
component: _Loader.default,
parameters: {
componentSubtitle: "Visual indicator for loading states",
docs: {
description: {
component: "The Loader component provides visual feedback to users during processes that take time, such as data fetching or form submission."
}
},
a11y: {
config: {
rules: [{
id: "aria-valid",
enabled: true
}]
}
}
},
argTypes: {
variant: {
control: "radio",
options: _Loader2.KWIKUI_LOADER__VARIANT__OPTIONS,
description: "The variant of the loader (fullscreen or contained)",
table: {
type: {
summary: "string"
},
defaultValue: {
summary: _Loader3.KWIKUI_LOADER__DEFAULTS.variant
}
}
},
shape: {
control: "radio",
options: _Loader2.KWIKUI_LOADER__SHAPE__OPTIONS,
description: "The shape of the loader",
table: {
type: {
summary: "string"
},
defaultValue: {
summary: _Loader3.KWIKUI_LOADER__DEFAULTS.shape
}
}
},
size: {
control: "radio",
options: _Loader2.KWIKUI_LOADER__SIZE__OPTIONS,
description: "The size of the loader",
table: {
type: {
summary: "string"
},
defaultValue: {
summary: _Loader3.KWIKUI_LOADER__DEFAULTS.size
}
}
},
loading: {
control: "boolean",
description: "Controls whether the loader is displayed",
table: {
type: {
summary: "boolean"
},
defaultValue: {
summary: _Loader3.KWIKUI_LOADER__DEFAULTS.loading
}
}
},
loadingText: {
control: "text",
description: "Text displayed alongside the loader",
table: {
type: {
summary: "string"
},
defaultValue: {
summary: _Loader3.KWIKUI_LOADER__DEFAULTS.loadingText
}
}
},
id: {
control: "text",
description: "The ID of the loader element",
table: {
type: {
summary: "string"
},
defaultValue: {
summary: _Loader3.KWIKUI_LOADER__DEFAULTS.id
}
}
},
customStyles: {
control: "object",
description: "Custom styles to apply to different parts of the loader",
table: {
type: {
summary: "object"
},
defaultValue: {
summary: "{ container: {}, wrapper: {}, animation: {}, text: {} }"
}
}
}
}
};
/**
* Template for rendering the Loader component
*/
const Template = _ref => {
let args = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_Loader.default, args);
};
/**
* Default loader implementation
*/
const Default = exports.Default = Template.bind({});
Default.args = _objectSpread(_objectSpread({}, _Loader3.KWIKUI_LOADER__DEFAULTS), {}, {
loading: true // Override default to show the loader in Storybook
});
Default.parameters = {
docs: {
description: {
story: "Default loader with fullscreen variant and medium size."
}
}
};
/**
* Contained loader example
*/
const Contained = () => {
return /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
border: "1px dashed #ccc",
padding: "20px",
height: "200px"
}
}, /*#__PURE__*/_react.default.createElement("p", null, "Parent container content"), /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
variant: "contained",
loadingText: "Loading content..."
}));
};
exports.Contained = Contained;
Contained.parameters = {
docs: {
description: {
story: "Contained variant that overlays only its parent container instead of the entire screen."
},
controls: {
disable: true
}
}
};
/**
* Different loader sizes
*/
const Sizes = () => {
return /*#__PURE__*/_react.default.createElement("div", {
style: {
display: "flex",
flexDirection: "column",
gap: "2rem"
}
}, /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "80px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "xxs",
variant: "contained",
loadingText: "XXS"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "80px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "xs",
variant: "contained",
loadingText: "XS"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "80px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "s",
variant: "contained",
loadingText: "S"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "80px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "m",
variant: "contained",
loadingText: "M"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "100px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "l",
variant: "contained",
loadingText: "L"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "120px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "xl",
variant: "contained",
loadingText: "XL"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "150px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
size: "xxl",
variant: "contained",
loadingText: "XXL"
})));
};
exports.Sizes = Sizes;
Sizes.parameters = {
docs: {
description: {
story: "Loaders are available in multiple sizes to fit different contexts in your UI."
},
controls: {
disable: true
}
}
};
/**
* Different loader shapes
*/
const Shapes = () => {
return /*#__PURE__*/_react.default.createElement("div", {
style: {
display: "flex",
flexDirection: "column",
gap: "2rem"
}
}, /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "100px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
shape: "curved",
variant: "contained",
loadingText: "Curved"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "100px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
shape: "rectangle",
variant: "contained",
loadingText: "Rectangle"
})), /*#__PURE__*/_react.default.createElement("div", {
style: {
position: "relative",
height: "100px",
border: "1px dashed #ccc"
}
}, /*#__PURE__*/_react.default.createElement(_Loader.default, {
loading: true,
shape: "rounded",
variant: "contained",
loadingText: "Rounded"
})));
};
exports.Shapes = Shapes;
Shapes.parameters = {
docs: {
description: {
story: "Loaders can have different shapes to match your UI design language."
},
controls: {
disable: true
}
}
};
/**
* Custom styled loader
*/
const CustomStyles = exports.CustomStyles = Template.bind({});
CustomStyles.args = _objectSpread(_objectSpread({}, _Loader3.KWIKUI_LOADER__DEFAULTS), {}, {
loading: true,
loadingText: "Custom Styled Loader",
variant: "contained",
customStyles: {
container: {
backgroundColor: "rgba(25, 118, 210, 0.1)"
},
wrapper: {
padding: "20px"
},
animation: {
borderColor: "#1976d2",
borderTopColor: "transparent"
},
text: {
color: "#1976d2",
fontSize: "16px",
fontWeight: "bold"
}
}
});
CustomStyles.parameters = {
docs: {
description: {
story: "Loaders can be customized with custom styles for the container, wrapper, animation, and text elements."
}
}
};