UNPKG

@playbooks/ui

Version:

An interface library for Playbooks.

624 lines (623 loc) 19.8 kB
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 };