@playbooks/ui
Version:
An interface library for Playbooks.
624 lines (623 loc) • 19.8 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import React__default, { useEffect } from "react";
import { accentBtn, accentLink, accordion, accordionBody, accordionBodyWrapper, accordionProps, accordionText, accordionTitle, accordionToggle, alert, alertActions, alertBody, alertIcon, alertText, alertTitle, animation, article, aside, avatar, avatarActions, avatarBadge, avatarBody, avatarImg, avatarText, avatarTitle, badge, banner, bannerActions, bannerBody, bannerIcon, bannerText, bannerTitle, blockquote, body, borderBtn, borderLink, breadcrumbBtn, breadcrumbItem, breadcrumbLink, breadcrumbs, btn, btnGroup, btnWrapper, caption, card, cardActions, cardBody, cardFooter, cardHeader, cardIcon, cardImg, cardPretitle, cardSubtitle, cardText, cardTitle, checkbox, checkboxInput, checkboxText, checkboxTitle, cloudProps, code, col, command, computeAvatarSize, computeBadgeSize, computeBtnSize, computeCol, computeCol2xl, computeColLg, computeColMd, computeColSm, computeColSpan, computeColXl, computeContainer, computeGrid, computeHeroSize, computeInputSize, computeModalSize, computeSectionSize, computeSlideAnimation, computeTagImgSize, computeTagSize, computeThumbnailSize, computeToastAnimation, computeTooltipAnimation, container, div, draftBadge, drop, dropBtn, dropHeader, dropItem, dropLink, dropList, dropMenu, dropSubtitle, dropTitle, dropToggle, errorBadge, feedback, feedbackActions, feedbackBody, feedbackHeader, feedbackIcon, feedbackPretitle, feedbackText, feedbackTitle, figure, finishedBadge, footer, footerBody, footerBtn, footerFooter, footerHeader, footerItem, footerLink, footerList, footerText, footerTitle, form, formCheckbox, formDivInput, formFileInput, formGroup, formInput, formLabel, formOtp, formOtpInput, formSelect, formText, gradientBgColor, gradientSpan, grid, h1, h2, h3, h4, h5, h6, header, headerActions, headerSubtitle, headerText, headerTitle, hero, heroActions, heroBg, heroBody, heroIcon, heroImg, heroPretitle, heroSubtitle, heroText, heroTitle, hr, html, iFrame, icon, img, inputAppend, inputGroup, inputPrepend, li, link, linkWrapper, listGroup, listItem, main, menu, menuBackdrop, menuBlock, menuBtn, menuItem, menuLink, menuList, menuMenu, menuSubtitle, menuTitle, menuWrapper, metaCardProps, metaProps, modal, modalBackdrop, modalBody, modalFooter, modalHeader, modalLoader, modalSubtitle, modalTitle, modalWrapper, nav, navBody, navBtn, navHeader, navItem, navLink, navList, navTitle, navbar, navbarBrand, navbarList, otp, otpInput, outlineBadge, p, pageLoader, pagination, paginationBtn, pendingBadge, pre, prefooter, prefooterActions, prefooterBody, prefooterPretitle, prefooterSubtitle, prefooterText, prefooterTitle, primaryBtn, primaryLink, progress, progressBar, radialProgressBar, radio, radioInput, radioText, radioTitle, rangeSlider, rangeSliderThumb, rangeSliderTrack, route, section, sectionActions, sectionBody, sectionFooter, sectionHeader, sectionHr, sectionLinkProps, sectionLoader, sectionPretitle, sectionSubtitle, sectionText, sectionTitle, slide, slideBackdrop, slideBody, slideFooter, slideHeader, slideTitle, slideWrapper, small, span, spinner, successBadge, switchBackdrop, switchBase, switchGroup, switchInner, switchLabel, switchToggle, tab, tabBtn, tabLink, tabPane, tabPanes, tabSelect, tabWrapper, table, tableBody, tableData, tableHead, tableHeader, tableHeaderRow, tableRow, tabs, tag, tagActions, tagBody, tagImg, tags, textBtn, textLink, toast, toastBody, toastHeader, toastIcon, toastText, toastTitle, toastWrapper, tooltip, tooltipArrow, tooltipInner, ul, warningBadge, wrappedIcon } from "./theme.es.js";
var accounting = { exports: {} };
/*!
* accounting.js v0.4.1
* Copyright 2014 Open Exchange Rates
*
* Freely distributable under the MIT license.
* Portions of accounting.js are inspired or borrowed from underscore.js
*
* Full details and documentation:
* http://openexchangerates.github.io/accounting.js/
*/
var hasRequiredAccounting;
function requireAccounting() {
if (hasRequiredAccounting) return accounting.exports;
hasRequiredAccounting = 1;
(function(module, exports) {
(function(root, undefined$1) {
var lib = {};
lib.version = "0.4.1";
lib.settings = {
currency: {
symbol: "$",
// default currency symbol is '$'
format: "%s%v",
// controls output: %s = symbol, %v = value (can be object, see docs)
decimal: ".",
// decimal point separator
thousand: ",",
// thousands separator
precision: 2,
// decimal places
grouping: 3
// digit grouping (not implemented yet)
},
number: {
precision: 0,
// default precision on numbers is 0
grouping: 3,
// digit grouping (not implemented yet)
thousand: ",",
decimal: "."
}
};
var nativeMap = Array.prototype.map, nativeIsArray = Array.isArray, toString = Object.prototype.toString;
function isString(obj) {
return !!(obj === "" || obj && obj.charCodeAt && obj.substr);
}
function isArray(obj) {
return nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === "[object Array]";
}
function isObject(obj) {
return obj && toString.call(obj) === "[object Object]";
}
function defaults(object, defs) {
var key;
object = object || {};
defs = defs || {};
for (key in defs) {
if (defs.hasOwnProperty(key)) {
if (object[key] == null) object[key] = defs[key];
}
}
return object;
}
function map(obj, iterator, context) {
var results = [], i, j;
if (!obj) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
for (i = 0, j = obj.length; i < j; i++) {
results[i] = iterator.call(context, obj[i], i, obj);
}
return results;
}
function checkPrecision(val, base) {
val = Math.round(Math.abs(val));
return isNaN(val) ? base : val;
}
function checkCurrencyFormat(format) {
var defaults2 = lib.settings.currency.format;
if (typeof format === "function") format = format();
if (isString(format) && format.match("%v")) {
return {
pos: format,
neg: format.replace("-", "").replace("%v", "-%v"),
zero: format
};
} else if (!format || !format.pos || !format.pos.match("%v")) {
return !isString(defaults2) ? defaults2 : lib.settings.currency.format = {
pos: defaults2,
neg: defaults2.replace("%v", "-%v"),
zero: defaults2
};
}
return format;
}
var unformat = lib.unformat = lib.parse = function(value, decimal) {
if (isArray(value)) {
return map(value, function(val) {
return unformat(val, decimal);
});
}
value = value || 0;
if (typeof value === "number") return value;
decimal = decimal || lib.settings.number.decimal;
var regex = new RegExp("[^0-9-" + decimal + "]", ["g"]), unformatted = parseFloat(
("" + value).replace(/\((.*)\)/, "-$1").replace(regex, "").replace(decimal, ".")
// make sure decimal point is standard
);
return !isNaN(unformatted) ? unformatted : 0;
};
var toFixed = lib.toFixed = function(value, precision) {
precision = checkPrecision(precision, lib.settings.number.precision);
var power = Math.pow(10, precision);
return (Math.round(lib.unformat(value) * power) / power).toFixed(precision);
};
var formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {
if (isArray(number)) {
return map(number, function(val) {
return formatNumber(val, precision, thousand, decimal);
});
}
number = unformat(number);
var opts = defaults(
isObject(precision) ? precision : {
precision,
thousand,
decimal
},
lib.settings.number
), usePrecision = checkPrecision(opts.precision), negative = number < 0 ? "-" : "", base = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + "", mod = base.length > 3 ? base.length % 3 : 0;
return negative + (mod ? base.substr(0, mod) + opts.thousand : "") + base.substr(mod).replace(/(\d{3})(?=\d)/g, "$1" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split(".")[1] : "");
};
var formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {
if (isArray(number)) {
return map(number, function(val) {
return formatMoney(val, symbol, precision, thousand, decimal, format);
});
}
number = unformat(number);
var opts = defaults(
isObject(symbol) ? symbol : {
symbol,
precision,
thousand,
decimal,
format
},
lib.settings.currency
), formats = checkCurrencyFormat(opts.format), useFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;
return useFormat.replace("%s", opts.symbol).replace("%v", formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));
};
lib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {
if (!list) return [];
var opts = defaults(
isObject(symbol) ? symbol : {
symbol,
precision,
thousand,
decimal,
format
},
lib.settings.currency
), formats = checkCurrencyFormat(opts.format), padAfterSymbol = formats.pos.indexOf("%s") < formats.pos.indexOf("%v") ? true : false, maxLength = 0, formatted = map(list, function(val, i) {
if (isArray(val)) {
return lib.formatColumn(val, opts);
} else {
val = unformat(val);
var useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero, fVal = useFormat.replace("%s", opts.symbol).replace("%v", formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));
if (fVal.length > maxLength) maxLength = fVal.length;
return fVal;
}
});
return map(formatted, function(val, i) {
if (isString(val) && val.length < maxLength) {
return padAfterSymbol ? val.replace(opts.symbol, opts.symbol + new Array(maxLength - val.length + 1).join(" ")) : new Array(maxLength - val.length + 1).join(" ") + val;
}
return val;
});
};
{
if (module.exports) {
exports = module.exports = lib;
}
exports.accounting = lib;
}
})();
})(accounting, accounting.exports);
return accounting.exports;
}
requireAccounting();
var dist = {};
var abbreviateNumber = {};
var _const = {};
var hasRequired_const;
function require_const() {
if (hasRequired_const) return _const;
hasRequired_const = 1;
Object.defineProperty(_const, "__esModule", { value: true });
_const.defaultSymbols = ["", "k", "M", "G", "T", "P", "E"];
return _const;
}
var hasRequiredAbbreviateNumber;
function requireAbbreviateNumber() {
if (hasRequiredAbbreviateNumber) return abbreviateNumber;
hasRequiredAbbreviateNumber = 1;
Object.defineProperty(abbreviateNumber, "__esModule", { value: true });
var const_1 = require_const();
var defaultOptions = {
padding: true,
symbols: const_1.defaultSymbols
};
function abbreviateNumber$1(num, digit, options) {
if (digit === void 0) {
digit = 1;
}
if (Array.isArray(options)) {
options = { symbols: options };
}
var _a = Object.assign({}, defaultOptions, options), symbols = _a.symbols, padding = _a.padding;
var sign = Math.sign(num) >= 0;
num = Math.abs(num);
var tier = Math.log10(num) / 3 | 0;
if (tier == 0)
return (!sign ? "-" : "") + num.toString();
var suffix = symbols[tier];
if (!suffix)
throw new RangeError();
var scale = Math.pow(10, tier * 3);
var scaled = num / scale;
var rounded = scaled.toFixed(digit);
if (!padding) {
rounded = String(Number(rounded));
}
return (!sign ? "-" : "") + rounded + suffix;
}
abbreviateNumber.abbreviateNumber = abbreviateNumber$1;
return abbreviateNumber;
}
var unabbreviateNumber = {};
var utils = {};
var hasRequiredUtils;
function requireUtils() {
if (hasRequiredUtils) return utils;
hasRequiredUtils = 1;
Object.defineProperty(utils, "__esModule", { value: true });
utils.symbolPow = function(index) {
if (index === void 0) {
index = 0;
}
return Math.pow(10, index * 3);
};
return utils;
}
var hasRequiredUnabbreviateNumber;
function requireUnabbreviateNumber() {
if (hasRequiredUnabbreviateNumber) return unabbreviateNumber;
hasRequiredUnabbreviateNumber = 1;
Object.defineProperty(unabbreviateNumber, "__esModule", { value: true });
var const_1 = require_const();
var utils_1 = requireUtils();
function unabbreviateNumber$1(num, symbols) {
if (symbols === void 0) {
symbols = const_1.defaultSymbols;
}
var numberPattern = "[+-]?([0-9]*[.])?[0-9]+";
var symbolPattern = "" + symbols.join("|");
var pattern = "^(" + numberPattern + ")(" + symbolPattern + ")$";
var regex = new RegExp(pattern);
var match = num.match(pattern) || [];
if (regex.test(num) && match.length > 3) {
var symbol = match[3];
var symbolValue = utils_1.symbolPow(symbols.indexOf(symbol));
var pureNum = Number(match[1]);
return pureNum * symbolValue;
} else {
throw Error("This is not a valid input");
}
}
unabbreviateNumber.unabbreviateNumber = unabbreviateNumber$1;
return unabbreviateNumber;
}
var hasRequiredDist;
function requireDist() {
if (hasRequiredDist) return dist;
hasRequiredDist = 1;
(function(exports) {
function __export(m) {
for (var p2 in m) if (!exports.hasOwnProperty(p2)) exports[p2] = m[p2];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(requireAbbreviateNumber());
__export(requireUnabbreviateNumber());
})(dist);
return dist;
}
requireDist();
const capitalize = (data = "") => {
return data.charAt(0).toUpperCase() + data.slice(1);
};
const defaultTheme = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
accentBtn,
accentLink,
accordion,
accordionBody,
accordionBodyWrapper,
accordionProps,
accordionText,
accordionTitle,
accordionToggle,
alert,
alertActions,
alertBody,
alertIcon,
alertText,
alertTitle,
animation,
article,
aside,
avatar,
avatarActions,
avatarBadge,
avatarBody,
avatarImg,
avatarText,
avatarTitle,
badge,
banner,
bannerActions,
bannerBody,
bannerIcon,
bannerText,
bannerTitle,
blockquote,
body,
borderBtn,
borderLink,
breadcrumbBtn,
breadcrumbItem,
breadcrumbLink,
breadcrumbs,
btn,
btnGroup,
btnWrapper,
caption,
card,
cardActions,
cardBody,
cardFooter,
cardHeader,
cardIcon,
cardImg,
cardPretitle,
cardSubtitle,
cardText,
cardTitle,
checkbox,
checkboxInput,
checkboxText,
checkboxTitle,
cloudProps,
code,
col,
command,
computeAvatarSize,
computeBadgeSize,
computeBtnSize,
computeCol,
computeCol2xl,
computeColLg,
computeColMd,
computeColSm,
computeColSpan,
computeColXl,
computeContainer,
computeGrid,
computeHeroSize,
computeInputSize,
computeModalSize,
computeSectionSize,
computeSlideAnimation,
computeTagImgSize,
computeTagSize,
computeThumbnailSize,
computeToastAnimation,
computeTooltipAnimation,
container,
div,
draftBadge,
drop,
dropBtn,
dropHeader,
dropItem,
dropLink,
dropList,
dropMenu,
dropSubtitle,
dropTitle,
dropToggle,
errorBadge,
feedback,
feedbackActions,
feedbackBody,
feedbackHeader,
feedbackIcon,
feedbackPretitle,
feedbackText,
feedbackTitle,
figure,
finishedBadge,
footer,
footerBody,
footerBtn,
footerFooter,
footerHeader,
footerItem,
footerLink,
footerList,
footerText,
footerTitle,
form,
formCheckbox,
formDivInput,
formFileInput,
formGroup,
formInput,
formLabel,
formOtp,
formOtpInput,
formSelect,
formText,
gradientBgColor,
gradientSpan,
grid,
h1,
h2,
h3,
h4,
h5,
h6,
header,
headerActions,
headerSubtitle,
headerText,
headerTitle,
hero,
heroActions,
heroBg,
heroBody,
heroIcon,
heroImg,
heroPretitle,
heroSubtitle,
heroText,
heroTitle,
hr,
html,
iFrame,
icon,
img,
inputAppend,
inputGroup,
inputPrepend,
li,
link,
linkWrapper,
listGroup,
listItem,
main,
menu,
menuBackdrop,
menuBlock,
menuBtn,
menuItem,
menuLink,
menuList,
menuMenu,
menuSubtitle,
menuTitle,
menuWrapper,
metaCardProps,
metaProps,
modal,
modalBackdrop,
modalBody,
modalFooter,
modalHeader,
modalLoader,
modalSubtitle,
modalTitle,
modalWrapper,
nav,
navBody,
navBtn,
navHeader,
navItem,
navLink,
navList,
navTitle,
navbar,
navbarBrand,
navbarList,
otp,
otpInput,
outlineBadge,
p,
pageLoader,
pagination,
paginationBtn,
pendingBadge,
pre,
prefooter,
prefooterActions,
prefooterBody,
prefooterPretitle,
prefooterSubtitle,
prefooterText,
prefooterTitle,
primaryBtn,
primaryLink,
progress,
progressBar,
radialProgressBar,
radio,
radioInput,
radioText,
radioTitle,
rangeSlider,
rangeSliderThumb,
rangeSliderTrack,
route,
section,
sectionActions,
sectionBody,
sectionFooter,
sectionHeader,
sectionHr,
sectionLinkProps,
sectionLoader,
sectionPretitle,
sectionSubtitle,
sectionText,
sectionTitle,
slide,
slideBackdrop,
slideBody,
slideFooter,
slideHeader,
slideTitle,
slideWrapper,
small,
span,
spinner,
successBadge,
switchBackdrop,
switchBase,
switchGroup,
switchInner,
switchLabel,
switchToggle,
tab,
tabBtn,
tabLink,
tabPane,
tabPanes,
tabSelect,
tabWrapper,
table,
tableBody,
tableData,
tableHead,
tableHeader,
tableHeaderRow,
tableRow,
tabs,
tag,
tagActions,
tagBody,
tagImg,
tags,
textBtn,
textLink,
toast,
toastBody,
toastHeader,
toastIcon,
toastText,
toastTitle,
toastWrapper,
tooltip,
tooltipArrow,
tooltipInner,
ul,
warningBadge,
wrappedIcon
}, Symbol.toStringTag, { value: "Module" }));
const UIContext = React__default.createContext(null);
const UIProvider = ({ components, contexts, fonts, seo, theme, children }) => {
const router = contexts.useRouter();
const computedTheme = theme || defaultTheme;
const paths = router?.asPath?.split("?")[0].split("/") || [];
const formattedPaths = paths.map((path) => path.split("-").map((v) => capitalize(v)));
const joinedPaths = formattedPaths.map((path) => path.join(" "));
const title = seo?.title + joinedPaths.join(" | ");
const url = seo?.baseUrl + router?.asPath?.split("?")[0];
const computedSeo = { ...seo, title, url };
useEffect(() => {
const body2 = document.querySelector("body");
if (fonts?.length > 0) fonts.map((font) => body2.classList?.add(font.variable));
}, [fonts]);
return /* @__PURE__ */ jsx(UIContext.Provider, { value: { components, seo: computedSeo, theme: computedTheme }, children });
};
const useUI = () => {
return React__default.useContext(UIContext);
};
export {
UIContext,
UIProvider,
useUI
};