beesoft-components 0.2.4 → 0.2.8

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/build/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
- import React, { useState, useRef, useEffect, createContext, useContext, useReducer } from 'react';
2
+ import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle, createContext, useContext, useReducer } from 'react';
3
3
  import ReactDOM from 'react-dom';
4
4
 
5
5
  /*! *****************************************************************************
@@ -2751,20 +2751,21 @@ var formatDistanceLocale = {
2751
2751
  other: 'almost {{count}} years'
2752
2752
  }
2753
2753
  };
2754
- function formatDistance(token, count, options) {
2755
- options = options || {};
2754
+
2755
+ var formatDistance = function (token, count, options) {
2756
2756
  var result;
2757
+ var tokenValue = formatDistanceLocale[token];
2757
2758
 
2758
- if (typeof formatDistanceLocale[token] === 'string') {
2759
- result = formatDistanceLocale[token];
2759
+ if (typeof tokenValue === 'string') {
2760
+ result = tokenValue;
2760
2761
  } else if (count === 1) {
2761
- result = formatDistanceLocale[token].one;
2762
+ result = tokenValue.one;
2762
2763
  } else {
2763
- result = formatDistanceLocale[token].other.replace('{{count}}', count);
2764
+ result = tokenValue.other.replace('{{count}}', count.toString());
2764
2765
  }
2765
2766
 
2766
- if (options.addSuffix) {
2767
- if (options.comparison > 0) {
2767
+ if (options !== null && options !== void 0 && options.addSuffix) {
2768
+ if (options.comparison && options.comparison > 0) {
2768
2769
  return 'in ' + result;
2769
2770
  } else {
2770
2771
  return result + ' ago';
@@ -2772,11 +2773,12 @@ function formatDistance(token, count, options) {
2772
2773
  }
2773
2774
 
2774
2775
  return result;
2775
- }
2776
+ };
2776
2777
 
2777
2778
  function buildFormatLongFn(args) {
2778
- return function (dirtyOptions) {
2779
- var options = dirtyOptions || {};
2779
+ return function () {
2780
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2781
+ // TODO: Remove String()
2780
2782
  var width = options.width ? String(options.width) : args.defaultWidth;
2781
2783
  var format = args.formats[width] || args.formats[args.defaultWidth];
2782
2784
  return format;
@@ -2824,9 +2826,10 @@ var formatRelativeLocale = {
2824
2826
  nextWeek: "eeee 'at' p",
2825
2827
  other: 'P'
2826
2828
  };
2827
- function formatRelative(token, _date, _baseDate, _options) {
2829
+
2830
+ var formatRelative = function (token, _date, _baseDate, _options) {
2828
2831
  return formatRelativeLocale[token];
2829
- }
2832
+ };
2830
2833
 
2831
2834
  function buildLocalizeFn(args) {
2832
2835
  return function (dirtyIndex, dirtyOptions) {
@@ -2846,7 +2849,8 @@ function buildLocalizeFn(args) {
2846
2849
  valuesArray = args.values[_width] || args.values[_defaultWidth];
2847
2850
  }
2848
2851
 
2849
- var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;
2852
+ var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challange you to try to remove it!
2853
+
2850
2854
  return valuesArray[index];
2851
2855
  };
2852
2856
  }
@@ -2859,12 +2863,12 @@ var eraValues = {
2859
2863
  var quarterValues = {
2860
2864
  narrow: ['1', '2', '3', '4'],
2861
2865
  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
2862
- wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.
2863
- // If you are making a new locale based on this one, check if the same is true for the language you're working on.
2864
- // Generally, formatted dates should look like they are in the middle of a sentence,
2865
- // e.g. in Spanish language the weekdays and months should be in the lowercase.
2866
+ wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']
2867
+ }; // Note: in English, the names of days of the week and months are capitalized.
2868
+ // If you are making a new locale based on this one, check if the same is true for the language you're working on.
2869
+ // Generally, formatted dates should look like they are in the middle of a sentence,
2870
+ // e.g. in Spanish language the weekdays and months should be in the lowercase.
2866
2871
 
2867
- };
2868
2872
  var monthValues = {
2869
2873
  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
2870
2874
  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
@@ -2941,16 +2945,13 @@ var formattingDayPeriodValues = {
2941
2945
  }
2942
2946
  };
2943
2947
 
2944
- function ordinalNumber(dirtyNumber, _dirtyOptions) {
2948
+ var ordinalNumber = function (dirtyNumber, _options) {
2945
2949
  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,
2946
2950
  // if they are different for different grammatical genders,
2947
- // use `options.unit`:
2951
+ // use `options.unit`.
2948
2952
  //
2949
- // var options = dirtyOptions || {}
2950
- // var unit = String(options.unit)
2951
- //
2952
- // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
2953
- // 'day', 'hour', 'minute', 'second'
2953
+ // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
2954
+ // 'day', 'hour', 'minute', 'second'.
2954
2955
 
2955
2956
  var rem100 = number % 100;
2956
2957
 
@@ -2968,7 +2969,7 @@ function ordinalNumber(dirtyNumber, _dirtyOptions) {
2968
2969
  }
2969
2970
 
2970
2971
  return number + 'th';
2971
- }
2972
+ };
2972
2973
 
2973
2974
  var localize = {
2974
2975
  ordinalNumber: ordinalNumber,
@@ -2980,7 +2981,7 @@ var localize = {
2980
2981
  values: quarterValues,
2981
2982
  defaultWidth: 'wide',
2982
2983
  argumentCallback: function (quarter) {
2983
- return Number(quarter) - 1;
2984
+ return quarter - 1;
2984
2985
  }
2985
2986
  }),
2986
2987
  month: buildLocalizeFn({
@@ -2999,36 +3000,9 @@ var localize = {
2999
3000
  })
3000
3001
  };
3001
3002
 
3002
- function buildMatchPatternFn(args) {
3003
- return function (dirtyString, dirtyOptions) {
3004
- var string = String(dirtyString);
3005
- var options = dirtyOptions || {};
3006
- var matchResult = string.match(args.matchPattern);
3007
-
3008
- if (!matchResult) {
3009
- return null;
3010
- }
3011
-
3012
- var matchedString = matchResult[0];
3013
- var parseResult = string.match(args.parsePattern);
3014
-
3015
- if (!parseResult) {
3016
- return null;
3017
- }
3018
-
3019
- var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
3020
- value = options.valueCallback ? options.valueCallback(value) : value;
3021
- return {
3022
- value: value,
3023
- rest: string.slice(matchedString.length)
3024
- };
3025
- };
3026
- }
3027
-
3028
3003
  function buildMatchFn(args) {
3029
- return function (dirtyString, dirtyOptions) {
3030
- var string = String(dirtyString);
3031
- var options = dirtyOptions || {};
3004
+ return function (string) {
3005
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3032
3006
  var width = options.width;
3033
3007
  var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
3034
3008
  var matchResult = string.match(matchPattern);
@@ -3039,23 +3013,18 @@ function buildMatchFn(args) {
3039
3013
 
3040
3014
  var matchedString = matchResult[0];
3041
3015
  var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
3016
+ var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {
3017
+ return pattern.test(matchedString);
3018
+ }) : findKey(parsePatterns, function (pattern) {
3019
+ return pattern.test(matchedString);
3020
+ });
3042
3021
  var value;
3043
-
3044
- if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {
3045
- value = findIndex(parsePatterns, function (pattern) {
3046
- return pattern.test(matchedString);
3047
- });
3048
- } else {
3049
- value = findKey(parsePatterns, function (pattern) {
3050
- return pattern.test(matchedString);
3051
- });
3052
- }
3053
-
3054
- value = args.valueCallback ? args.valueCallback(value) : value;
3022
+ value = args.valueCallback ? args.valueCallback(key) : key;
3055
3023
  value = options.valueCallback ? options.valueCallback(value) : value;
3024
+ var rest = string.slice(matchedString.length);
3056
3025
  return {
3057
3026
  value: value,
3058
- rest: string.slice(matchedString.length)
3027
+ rest: rest
3059
3028
  };
3060
3029
  };
3061
3030
  }
@@ -3066,6 +3035,8 @@ function findKey(object, predicate) {
3066
3035
  return key;
3067
3036
  }
3068
3037
  }
3038
+
3039
+ return undefined;
3069
3040
  }
3070
3041
 
3071
3042
  function findIndex(array, predicate) {
@@ -3074,6 +3045,26 @@ function findIndex(array, predicate) {
3074
3045
  return key;
3075
3046
  }
3076
3047
  }
3048
+
3049
+ return undefined;
3050
+ }
3051
+
3052
+ function buildMatchPatternFn(args) {
3053
+ return function (string) {
3054
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3055
+ var matchResult = string.match(args.matchPattern);
3056
+ if (!matchResult) return null;
3057
+ var matchedString = matchResult[0];
3058
+ var parseResult = string.match(args.parsePattern);
3059
+ if (!parseResult) return null;
3060
+ var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
3061
+ value = options.valueCallback ? options.valueCallback(value) : value;
3062
+ var rest = string.slice(matchedString.length);
3063
+ return {
3064
+ value: value,
3065
+ rest: rest
3066
+ };
3067
+ };
3077
3068
  }
3078
3069
 
3079
3070
  var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
@@ -3181,7 +3172,6 @@ var match = {
3181
3172
  * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}
3182
3173
  * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}
3183
3174
  */
3184
-
3185
3175
  var locale = {
3186
3176
  code: 'en-US',
3187
3177
  formatDistance: formatDistance,
@@ -3336,7 +3326,7 @@ function assign(target, dirtyObject) {
3336
3326
  dirtyObject = dirtyObject || {};
3337
3327
 
3338
3328
  for (var property in dirtyObject) {
3339
- if (dirtyObject.hasOwnProperty(property)) {
3329
+ if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {
3340
3330
  target[property] = dirtyObject[property];
3341
3331
  }
3342
3332
  }
@@ -5304,28 +5294,28 @@ var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
5304
5294
  * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |
5305
5295
  * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |
5306
5296
  * | | | EEEEE | M, T, W, T, F, S, S | |
5307
- * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |
5297
+ * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |
5308
5298
  * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |
5309
5299
  * | | | io | 1st, 2nd, ..., 7th | 5 |
5310
5300
  * | | | ii | 01, 02, ..., 07 | 5 |
5311
5301
  * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |
5312
5302
  * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |
5313
5303
  * | | | iiiii | M, T, W, T, F, S, S | 5 |
5314
- * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |
5304
+ * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |
5315
5305
  * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |
5316
5306
  * | | | eo | 2nd, 3rd, ..., 1st | 5 |
5317
5307
  * | | | ee | 02, 03, ..., 01 | |
5318
5308
  * | | | eee | Mon, Tue, Wed, ..., Sun | |
5319
5309
  * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |
5320
5310
  * | | | eeeee | M, T, W, T, F, S, S | |
5321
- * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |
5311
+ * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |
5322
5312
  * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |
5323
5313
  * | | | co | 2nd, 3rd, ..., 1st | 5 |
5324
5314
  * | | | cc | 02, 03, ..., 01 | |
5325
5315
  * | | | ccc | Mon, Tue, Wed, ..., Sun | |
5326
5316
  * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |
5327
5317
  * | | | ccccc | M, T, W, T, F, S, S | |
5328
- * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |
5318
+ * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |
5329
5319
  * | AM, PM | 80 | a..aaa | AM, PM | |
5330
5320
  * | | | aaaa | a.m., p.m. | 2 |
5331
5321
  * | | | aaaaa | a, p | |
@@ -5564,9 +5554,9 @@ function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOpti
5564
5554
  var subFnOptions = {
5565
5555
  firstWeekContainsDate: firstWeekContainsDate,
5566
5556
  weekStartsOn: weekStartsOn,
5567
- locale: locale$1 // If timezone isn't specified, it will be set to the system timezone
5557
+ locale: locale$1
5558
+ }; // If timezone isn't specified, it will be set to the system timezone
5568
5559
 
5569
- };
5570
5560
  var setters = [{
5571
5561
  priority: TIMEZONE_UNIT_PRIORITY,
5572
5562
  subPriority: -1,
@@ -6019,12 +6009,6 @@ function validateTimezone(_hours, minutes) {
6019
6009
  return minutes >= 0 && minutes <= 59;
6020
6010
  }
6021
6011
 
6022
- function getElementByClassNameRecursive(element, className) {
6023
- if (typeof element.className === 'string' && element.className.includes(className)) {
6024
- return element;
6025
- }
6026
- return element.parentElement ? getElementByClassNameRecursive(element.parentElement, className) : element;
6027
- }
6028
6012
  function getBrowserLanguage() {
6029
6013
  return window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
6030
6014
  }
@@ -6130,6 +6114,9 @@ function bindDocumentClickListener(element, callback, otherElements) {
6130
6114
  document.addEventListener('mousedown', clickListener);
6131
6115
  return clickListener;
6132
6116
  }
6117
+ function unbindDocumentClickListener(clickListener) {
6118
+ document.removeEventListener('mousedown', clickListener);
6119
+ }
6133
6120
 
6134
6121
  function _objectWithoutPropertiesLoose(source, excluded) {
6135
6122
  if (source == null) return {};
@@ -6892,7 +6879,6 @@ function OverlayPanel(_a) {
6892
6879
  setZIndex(100);
6893
6880
  };
6894
6881
  var onEntered = function () {
6895
- var _a;
6896
6882
  if (!panelRef.current)
6897
6883
  return;
6898
6884
  if (shown) {
@@ -6909,16 +6895,18 @@ function OverlayPanel(_a) {
6909
6895
  return panelRef.current && !isEventWithinTarget(event, panelRef.current) && setVisibility(false);
6910
6896
  };
6911
6897
  if (scrollerPanelRef.current) {
6912
- (_a = scrollerPanelRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('scroll', scrollListenerRef.current);
6898
+ scrollerPanelRef.current.addEventListener('scroll', scrollListenerRef.current);
6913
6899
  }
6914
6900
  }
6915
6901
  };
6916
6902
  var onExit = function () {
6917
- var _a;
6918
- if (listenerRef.current && scrollListenerRef.current) {
6919
- (_a = scrollerPanelRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('scroll', scrollListenerRef.current);
6903
+ if (scrollerPanelRef.current && scrollListenerRef.current) {
6904
+ scrollerPanelRef.current.removeEventListener('scroll', scrollListenerRef.current);
6920
6905
  scrollListenerRef.current = undefined;
6921
6906
  }
6907
+ if (listenerRef.current) {
6908
+ unbindDocumentClickListener(listenerRef.current);
6909
+ }
6922
6910
  };
6923
6911
  var onExited = function () {
6924
6912
  setZIndex(-1);
@@ -7513,8 +7501,9 @@ function debounce(func, wait, options) {
7513
7501
 
7514
7502
  var debounce_1 = debounce;
7515
7503
 
7516
- function ContentEditableInput(_a) {
7517
- var value = _a.value, _b = _a.readOnly, readOnly = _b === void 0 ? false : _b, _c = _a.debounceTime, debounceTime = _c === void 0 ? 500 : _c, _d = _a.fillContainer, fillContainer = _d === void 0 ? true : _d, leftElement = _a.leftElement, rightElement = _a.rightElement, className = _a.className, leftElementClassName = _a.leftElementClassName, rightElementClassName = _a.rightElementClassName, onFocus = _a.onFocus, onInput = _a.onInput, onLeftElementClick = _a.onLeftElementClick, onRightElementClick = _a.onRightElementClick;
7504
+ function ContentEditableInput(props, ref) {
7505
+ var value = props.value, _a = props.readOnly, readOnly = _a === void 0 ? false : _a, _b = props.debounceTime, debounceTime = _b === void 0 ? 500 : _b, _c = props.fillContainer, fillContainer = _c === void 0 ? true : _c, leftElement = props.leftElement, rightElement = props.rightElement, className = props.className, leftElementClassName = props.leftElementClassName, rightElementClassName = props.rightElementClassName, onFocus = props.onFocus, onInput = props.onInput, onElementCreate = props.onElementCreate, onLeftElementClick = props.onLeftElementClick, onRightElementClick = props.onRightElementClick;
7506
+ var inputRef = useRef(null);
7518
7507
  var onLeftElementClicked = function (event) {
7519
7508
  if (onLeftElementClick) {
7520
7509
  onLeftElementClick(event);
@@ -7535,13 +7524,26 @@ function ContentEditableInput(_a) {
7535
7524
  onInput(event);
7536
7525
  }
7537
7526
  }, debounceTime);
7527
+ var onElementCreated = function (element) {
7528
+ if (element && onElementCreate) {
7529
+ onElementCreate(element);
7530
+ }
7531
+ };
7532
+ var focus = function () {
7533
+ var _a;
7534
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
7535
+ };
7536
+ useImperativeHandle(ref, function () { return ({
7537
+ focus: focus,
7538
+ }); });
7538
7539
  var classNames = classnames({ 'w-full ': fillContainer }, 'flex flex-row shadow-sm border border-solid border-gray-300 dark:border-white dark:bg-gray-900 dark:text-white rounded-md p-2', className);
7539
7540
  var leftElementClasses = classnames('flex-shrink', { 'mr-2': leftElement }, leftElementClassName);
7540
7541
  var rightElementClasses = classnames('flex-shrink', { 'ml-2': rightElement }, rightElementClassName);
7541
- return (jsxs("div", __assign({ className: classNames }, { children: [jsx("div", __assign({ className: leftElementClasses, onClick: onLeftElementClicked }, { children: leftElement }), void 0),
7542
- jsx("div", __assign({ className: "flex-grow focus:outline-none", contentEditable: !readOnly, suppressContentEditableWarning: true, onFocus: onFocused, onInput: onInputChanged }, { children: value }), void 0),
7542
+ return (jsxs("div", __assign({ className: classNames, ref: function (element) { return onElementCreated(element); } }, { children: [jsx("div", __assign({ className: leftElementClasses, onClick: onLeftElementClicked }, { children: leftElement }), void 0),
7543
+ jsx("div", __assign({ ref: inputRef, className: "flex-grow focus:outline-none", contentEditable: !readOnly, suppressContentEditableWarning: true, onFocus: onFocused, onInput: onInputChanged }, { children: value }), void 0),
7543
7544
  jsx("div", __assign({ className: rightElementClasses, onClick: onRightElementClicked }, { children: rightElement }), void 0)] }), void 0));
7544
7545
  }
7546
+ var ContentEditableInput$1 = forwardRef(ContentEditableInput);
7545
7547
 
7546
7548
  var DateTimeContext = createContext(undefined);
7547
7549
 
@@ -7641,31 +7643,6 @@ function subMonths(dirtyDate, dirtyAmount) {
7641
7643
  return addMonths(dirtyDate, -amount);
7642
7644
  }
7643
7645
 
7644
- function useKeyDown(keyCode) {
7645
- var _a = useState(false), keyDown = _a[0], setKeyDown = _a[1];
7646
- var downHandler = function (_a) {
7647
- var key = _a.key;
7648
- if (key === keyCode) {
7649
- setKeyDown(true);
7650
- }
7651
- };
7652
- var upHandler = function (_a) {
7653
- var key = _a.key;
7654
- if (key === keyCode) {
7655
- setKeyDown(false);
7656
- }
7657
- };
7658
- useEffect(function () {
7659
- window.addEventListener('keydown', downHandler);
7660
- window.addEventListener('keyup', upHandler);
7661
- return function () {
7662
- window.removeEventListener('keydown', downHandler);
7663
- window.removeEventListener('keyup', upHandler);
7664
- };
7665
- }, []);
7666
- return keyDown;
7667
- }
7668
-
7669
7646
  /**
7670
7647
  * @name addDays
7671
7648
  * @category Day Helpers
@@ -7707,6 +7684,36 @@ function addDays(dirtyDate, dirtyAmount) {
7707
7684
  return date;
7708
7685
  }
7709
7686
 
7687
+ /**
7688
+ * @name startOfDay
7689
+ * @category Day Helpers
7690
+ * @summary Return the start of a day for the given date.
7691
+ *
7692
+ * @description
7693
+ * Return the start of a day for the given date.
7694
+ * The result will be in the local timezone.
7695
+ *
7696
+ * ### v2.0.0 breaking changes:
7697
+ *
7698
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
7699
+ *
7700
+ * @param {Date|Number} date - the original date
7701
+ * @returns {Date} the start of a day
7702
+ * @throws {TypeError} 1 argument required
7703
+ *
7704
+ * @example
7705
+ * // The start of a day for 2 September 2014 11:55:00:
7706
+ * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
7707
+ * //=> Tue Sep 02 2014 00:00:00
7708
+ */
7709
+
7710
+ function startOfDay(dirtyDate) {
7711
+ requiredArgs(1, arguments);
7712
+ var date = toDate(dirtyDate);
7713
+ date.setHours(0, 0, 0, 0);
7714
+ return date;
7715
+ }
7716
+
7710
7717
  /**
7711
7718
  * @name addYears
7712
7719
  * @category Year Helpers
@@ -7736,6 +7743,36 @@ function addYears(dirtyDate, dirtyAmount) {
7736
7743
  return addMonths(dirtyDate, amount * 12);
7737
7744
  }
7738
7745
 
7746
+ /**
7747
+ * @name isSameDay
7748
+ * @category Day Helpers
7749
+ * @summary Are the given dates in the same day?
7750
+ *
7751
+ * @description
7752
+ * Are the given dates in the same day?
7753
+ *
7754
+ * ### v2.0.0 breaking changes:
7755
+ *
7756
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
7757
+ *
7758
+ * @param {Date|Number} dateLeft - the first date to check
7759
+ * @param {Date|Number} dateRight - the second date to check
7760
+ * @returns {Boolean} the dates are in the same day
7761
+ * @throws {TypeError} 2 arguments required
7762
+ *
7763
+ * @example
7764
+ * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?
7765
+ * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))
7766
+ * //=> true
7767
+ */
7768
+
7769
+ function isSameDay(dirtyDateLeft, dirtyDateRight) {
7770
+ requiredArgs(2, arguments);
7771
+ var dateLeftStartOfDay = startOfDay(dirtyDateLeft);
7772
+ var dateRightStartOfDay = startOfDay(dirtyDateRight);
7773
+ return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();
7774
+ }
7775
+
7739
7776
  /**
7740
7777
  * @name eachDayOfInterval
7741
7778
  * @category Interval Helpers
@@ -7871,7 +7908,7 @@ function startOfMonth(dirtyDate) {
7871
7908
  *
7872
7909
  * @example
7873
7910
  * // Each year between 6 February 2014 and 10 August 2017:
7874
- * var result = eachYearOfInterval({
7911
+ * const result = eachYearOfInterval({
7875
7912
  * start: new Date(2014, 1, 6),
7876
7913
  * end: new Date(2017, 7, 10)
7877
7914
  * })
@@ -8030,7 +8067,37 @@ function subDays(dirtyDate, dirtyAmount) {
8030
8067
  return addDays(dirtyDate, -amount);
8031
8068
  }
8032
8069
 
8033
- var baseMap = [7, 6, 5, 4, 3, 2, 1];
8070
+ /**
8071
+ * @name isToday
8072
+ * @category Day Helpers
8073
+ * @summary Is the given date today?
8074
+ * @pure false
8075
+ *
8076
+ * @description
8077
+ * Is the given date today?
8078
+ *
8079
+ * > ⚠️ Please note that this function is not present in the FP submodule as
8080
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
8081
+ *
8082
+ * ### v2.0.0 breaking changes:
8083
+ *
8084
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
8085
+ *
8086
+ * @param {Date|Number} date - the date to check
8087
+ * @returns {Boolean} the date is today
8088
+ * @throws {TypeError} 1 argument required
8089
+ *
8090
+ * @example
8091
+ * // If today is 6 October 2014, is 6 October 14:00:00 today?
8092
+ * var result = isToday(new Date(2014, 9, 6, 14, 0))
8093
+ * //=> true
8094
+ */
8095
+
8096
+ function isToday(dirtyDate) {
8097
+ requiredArgs(1, arguments);
8098
+ return isSameDay(dirtyDate, Date.now());
8099
+ }
8100
+
8034
8101
  /**
8035
8102
  * @name nextDay
8036
8103
  * @category Weekday Helpers
@@ -8057,18 +8124,9 @@ var baseMap = [7, 6, 5, 4, 3, 2, 1];
8057
8124
 
8058
8125
  function nextDay(date, day) {
8059
8126
  requiredArgs(2, arguments);
8060
- var map = genMap(day);
8061
- return addDays(toDate(date), map[getDay(toDate(date))]);
8062
- }
8063
-
8064
- function genMap(daysToMove) {
8065
- if (daysToMove === 0) {
8066
- return baseMap;
8067
- } else {
8068
- var mapStart = baseMap.slice(-daysToMove);
8069
- var mapEnd = baseMap.slice(0, baseMap.length - daysToMove);
8070
- return mapStart.concat(mapEnd);
8071
- }
8127
+ var delta = day - getDay(date);
8128
+ if (delta <= 0) delta += 7;
8129
+ return addDays(date, delta);
8072
8130
  }
8073
8131
 
8074
8132
  /**
@@ -8175,6 +8233,32 @@ function subYears(dirtyDate, dirtyAmount) {
8175
8233
  return addYears(dirtyDate, -amount);
8176
8234
  }
8177
8235
 
8236
+ function useKeyDown(keyCode) {
8237
+ var _a = useState(false), keyDown = _a[0], setKeyDown = _a[1];
8238
+ var keyCodes = typeof keyCode === 'string' ? [keyCode] : keyCode;
8239
+ var downHandler = function (_a) {
8240
+ var key = _a.key;
8241
+ if (keyCodes.includes(key)) {
8242
+ setKeyDown(true);
8243
+ }
8244
+ };
8245
+ var upHandler = function (_a) {
8246
+ var key = _a.key;
8247
+ if (keyCodes.includes(key)) {
8248
+ setKeyDown(false);
8249
+ }
8250
+ };
8251
+ useEffect(function () {
8252
+ window.addEventListener('keydown', downHandler);
8253
+ window.addEventListener('keyup', upHandler);
8254
+ return function () {
8255
+ window.removeEventListener('keydown', downHandler);
8256
+ window.removeEventListener('keyup', upHandler);
8257
+ };
8258
+ }, []);
8259
+ return keyDown;
8260
+ }
8261
+
8178
8262
  function getMonthMatrix(matrixDate, locale, loadOtherMonths) {
8179
8263
  var _a, _b;
8180
8264
  if (loadOtherMonths === void 0) { loadOtherMonths = true; }
@@ -8314,6 +8398,14 @@ function loadLocale(localeToLoad) {
8314
8398
  .catch(function (error) { return reject(error); });
8315
8399
  });
8316
8400
  }
8401
+ function createDefaultColors() {
8402
+ return {
8403
+ inputBgColor: 'bg-white',
8404
+ readOnlyInputBgColor: 'bg-gray-200',
8405
+ selectedDateColor: 'bg-blue-100',
8406
+ todayDateColor: 'bg-green-100',
8407
+ };
8408
+ }
8317
8409
 
8318
8410
  var DateSelectionType;
8319
8411
  (function (DateSelectionType) {
@@ -8344,6 +8436,7 @@ var CalendarIconPosition;
8344
8436
  (function (CalendarIconPosition) {
8345
8437
  CalendarIconPosition[CalendarIconPosition["Right"] = 0] = "Right";
8346
8438
  CalendarIconPosition[CalendarIconPosition["Left"] = 1] = "Left";
8439
+ CalendarIconPosition[CalendarIconPosition["None"] = 2] = "None";
8347
8440
  })(CalendarIconPosition || (CalendarIconPosition = {}));
8348
8441
 
8349
8442
  var DateTimeActionType;
@@ -8408,7 +8501,7 @@ function DateTimeCalendar(_a) {
8408
8501
  var selectedDateRef = useRef();
8409
8502
  var _f = useState(), selectedStartComparison = _f[0], setSelectedStartComparison = _f[1];
8410
8503
  var _g = useState(), selectedEndComparison = _g[0], setSelectedEndComparison = _g[1];
8411
- var isShiftDown = useKeyDown('Shift');
8504
+ var isShiftDown = useKeyDown(['Meta', 'Control']);
8412
8505
  var context = useContext(DateTimeContext);
8413
8506
  var viewTemplate = context.calendarTemplate;
8414
8507
  var loadLocaleObject = function () { return __awaiter(_this, void 0, void 0, function () {
@@ -8515,24 +8608,27 @@ function DateTimeCalendar(_a) {
8515
8608
  return (jsx(TemplateOutlet, __assign({ props: templateProps, template: template }, { children: jsxs("div", __assign({ className: "grid grid-cols-7 gap-3 bc-dt-day-row" }, { children: [(_b = weekDaysRef.current) === null || _b === void 0 ? void 0 : _b.map(function (day, index) { return (jsx("div", __assign({ className: "text-center font-bold bc-dt-day-cell" }, { children: day }), index)); }),
8516
8609
  monthMatrix === null || monthMatrix === void 0 ? void 0 : monthMatrix.map(function (row, rIndex) {
8517
8610
  return row.map(function (column, cIndex) {
8518
- var _a, _b;
8611
+ var _a;
8612
+ var _b, _c;
8519
8613
  var isSelectable = column.dayValue !== null && (selectableDate === undefined || selectableDate(column.dayValue));
8520
- var dayStyles = classnames('text-center py-1', {
8521
- 'text-gray-400': !column.isCurrent,
8522
- 'bg-blue-100 dark:bg-white dark:text-black rounded-full': column &&
8614
+ var dayStyles = classnames('text-center py-1', (_a = {
8615
+ 'text-gray-400': !column.isCurrent
8616
+ },
8617
+ _a[(context.colors.selectedDateColor || 'bg-blue-100') + " dark:bg-white dark:text-black rounded-full"] = column &&
8523
8618
  column.dayValue &&
8524
8619
  ((selectedDateRef.current && isSelectedDate(column.dayValue)) ||
8525
8620
  (selectedStartComparison && selectedEndComparison && isInSelectedDateRange(column.dayValue))),
8526
- 'cursor-pointer': isSelectable,
8527
- 'text-red-300 cursor-not-allowed': !isSelectable,
8528
- }, 'bc-dt-date-cell');
8621
+ _a['cursor-pointer'] = isSelectable,
8622
+ _a['text-red-300 cursor-not-allowed'] = !isSelectable,
8623
+ _a[(context.colors.todayDateColor || 'bg-green-100') + " dark:text-black rounded-full"] = column.dayValue && isToday(column.dayValue) && !isSelectedDate(column.dayValue),
8624
+ _a), 'bc-dt-date-cell');
8529
8625
  return (jsx("div", __assign({ className: dayStyles, onClick: function () {
8530
8626
  return column &&
8531
8627
  column.dayValue &&
8532
8628
  isSelectable &&
8533
8629
  (isValidDate === undefined || isValidDate(column.dayValue)) &&
8534
8630
  onDateClicked(column.dayValue);
8535
- } }, { children: (_a = column.dayValue) === null || _a === void 0 ? void 0 : _a.getDate().toLocaleString((_b = loadedLocale.current) === null || _b === void 0 ? void 0 : _b.code) }), rIndex.toString() + cIndex.toString()));
8631
+ } }, { children: (_b = column.dayValue) === null || _b === void 0 ? void 0 : _b.getDate().toLocaleString((_c = loadedLocale.current) === null || _c === void 0 ? void 0 : _c.code) }), rIndex.toString() + cIndex.toString()));
8536
8632
  });
8537
8633
  })] }), void 0) }), void 0));
8538
8634
  }
@@ -8791,14 +8887,16 @@ function DateTimeYearSelector(_a) {
8791
8887
  }
8792
8888
 
8793
8889
  function DateTime(_a) {
8794
- var value = _a.value, _b = _a.readOnly, readOnly = _b === void 0 ? false : _b, label = _a.label, _c = _a.useDefaultDateValue, useDefaultDateValue = _c === void 0 ? false : _c, locale = _a.locale, _d = _a.dateSelection, dateSelection = _d === void 0 ? DateSelectionType.DateTime : _d, dateFormat = _a.dateFormat, timeConstraints = _a.timeConstraints, icon = _a.icon, _e = _a.iconPosition, iconPosition = _e === void 0 ? CalendarIconPosition.Right : _e, selectableDate = _a.selectableDate, isValidDate = _a.isValidDate, onChange = _a.onChange, calendarTemplate = _a.calendarTemplate, dateScrollerTemplate = _a.dateScrollerTemplate, inputTemplate = _a.inputTemplate;
8795
- var _f = useState(false), selectorOpen = _f[0], setSelectorOpen = _f[1];
8796
- var _g = useState(), dropDownTarget = _g[0], setDropDownTarget = _g[1];
8890
+ var value = _a.value, _b = _a.readOnly, readOnly = _b === void 0 ? false : _b, label = _a.label, _c = _a.useDefaultDateValue, useDefaultDateValue = _c === void 0 ? false : _c, locale = _a.locale, _d = _a.dateSelection, dateSelection = _d === void 0 ? DateSelectionType.DateTime : _d, dateFormat = _a.dateFormat, timeConstraints = _a.timeConstraints, icon = _a.icon, _e = _a.iconPosition, iconPosition = _e === void 0 ? CalendarIconPosition.Right : _e, inputElement = _a.inputElement, _f = _a.colors, colors = _f === void 0 ? createDefaultColors() : _f, selectableDate = _a.selectableDate, isValidDate = _a.isValidDate, onChange = _a.onChange, calendarTemplate = _a.calendarTemplate, dateScrollerTemplate = _a.dateScrollerTemplate, inputTemplate = _a.inputTemplate;
8891
+ var _g = useState(false), selectorOpen = _g[0], setSelectorOpen = _g[1];
8892
+ var _h = useState(), dropDownTarget = _h[0], setDropDownTarget = _h[1];
8797
8893
  var language = useRef(locale || getBrowserLanguage());
8798
8894
  var loadedLocale = useRef();
8895
+ var inputElementRef = useRef();
8799
8896
  var contextProps = {
8800
8897
  calendarTemplate: calendarTemplate,
8801
8898
  dateScrollerTemplate: dateScrollerTemplate,
8899
+ colors: colors,
8802
8900
  };
8803
8901
  useEffect(function () {
8804
8902
  if (language.current) {
@@ -8819,6 +8917,11 @@ function DateTime(_a) {
8819
8917
  });
8820
8918
  }
8821
8919
  }, [value, loadedLocale.current]);
8920
+ useEffect(function () {
8921
+ if (inputElement) {
8922
+ inputElementRef.current = inputElement;
8923
+ }
8924
+ }, [inputElement]);
8822
8925
  var loadLocaleObject = function (localeToLoad) {
8823
8926
  loadLocale(localeToLoad)
8824
8927
  .then(function (locale) {
@@ -8887,9 +8990,9 @@ function DateTime(_a) {
8887
8990
  selectedDateChanged: false,
8888
8991
  dateInitialized: false,
8889
8992
  };
8890
- var _h = useReducer(reducer, initialState), state = _h[0], dispatcher = _h[1];
8993
+ var _j = useReducer(reducer, initialState), state = _j[0], dispatcher = _j[1];
8891
8994
  var onFocus = function (event) {
8892
- setDropDownElement(event);
8995
+ setDropDownElement();
8893
8996
  setSelectorOpen(true);
8894
8997
  };
8895
8998
  var onInput = function (event) {
@@ -8906,13 +9009,17 @@ function DateTime(_a) {
8906
9009
  }
8907
9010
  };
8908
9011
  var onCalendarClick = function (event) {
8909
- setDropDownElement(event);
9012
+ setDropDownElement();
8910
9013
  setSelectorOpen(!selectorOpen);
8911
9014
  };
9015
+ var onInputElementCreated = function (element) {
9016
+ if (!inputElementRef.current) {
9017
+ inputElementRef.current = element;
9018
+ }
9019
+ };
8912
9020
  var setDropDownElement = function (event) {
8913
- if (!dropDownTarget) {
8914
- var parentElement = getElementByClassNameRecursive(event.target, 'parent-element');
8915
- setDropDownTarget(parentElement);
9021
+ if (!dropDownTarget && inputElementRef.current) {
9022
+ setDropDownTarget(inputElementRef.current);
8916
9023
  }
8917
9024
  };
8918
9025
  var onDateTimeHidden = function () {
@@ -9000,17 +9107,19 @@ function DateTime(_a) {
9000
9107
  };
9001
9108
  var canShowDateSelectors = dateSelection === DateSelectionType.DateTime || dateSelection === DateSelectionType.DateOnly;
9002
9109
  var canShowTimeSelector = dateSelection === DateSelectionType.DateTime || dateSelection === DateSelectionType.TimeOnly;
9003
- var inputProps = iconPosition === CalendarIconPosition.Right
9004
- ? {
9005
- rightElement: icon || jsx(FontAwesomeIcon, { icon: ['far', 'calendar-alt'] }, void 0),
9006
- rightElementClassName: !readOnly ? 'cursor-pointer' : undefined,
9007
- onRightElementClick: !readOnly ? onCalendarClick : undefined,
9008
- }
9009
- : {
9010
- leftElement: icon || jsx(FontAwesomeIcon, { icon: ['far', 'calendar-alt'] }, void 0),
9011
- leftElementClassName: !readOnly ? 'cursor-pointer' : undefined,
9012
- onLeftElementClick: !readOnly ? onCalendarClick : undefined,
9013
- };
9110
+ var inputProps = iconPosition === CalendarIconPosition.None
9111
+ ? {}
9112
+ : iconPosition === CalendarIconPosition.Right
9113
+ ? {
9114
+ rightElement: icon || jsx(FontAwesomeIcon, { icon: ['far', 'calendar-alt'] }, void 0),
9115
+ rightElementClassName: !readOnly ? 'cursor-pointer' : undefined,
9116
+ onRightElementClick: !readOnly ? onCalendarClick : undefined,
9117
+ }
9118
+ : {
9119
+ leftElement: icon || jsx(FontAwesomeIcon, { icon: ['far', 'calendar-alt'] }, void 0),
9120
+ leftElementClassName: !readOnly ? 'cursor-pointer' : undefined,
9121
+ onLeftElementClick: !readOnly ? onCalendarClick : undefined,
9122
+ };
9014
9123
  var inputTemplateProps = {
9015
9124
  label: label,
9016
9125
  readOnly: readOnly,
@@ -9025,7 +9134,7 @@ function DateTime(_a) {
9025
9134
  var defaultTemplate = function (props, children) { return (jsx(Fragment$1, { children: children }, void 0)); };
9026
9135
  var template = inputTemplate || defaultTemplate;
9027
9136
  return (jsx(DateTimeContext.Provider, __assign({ value: contextProps }, { children: jsxs("div", __assign({ className: "bc-date-time" }, { children: [jsxs(TemplateOutlet, __assign({ props: inputTemplateProps, template: template }, { children: [label && jsx("label", __assign({ className: "dark:text-white bc-dt-label" }, { children: label }), void 0),
9028
- jsx(ContentEditableInput, __assign({ value: getValue(), readOnly: readOnly, className: "parent-element text-left" + (readOnly ? ' bg-gray-200' : ' bg-white') + " dark:bg-black bc-dt-input", onFocus: onFocus, onInput: onInput }, inputProps), void 0)] }), void 0),
9137
+ jsx(ContentEditableInput$1, __assign({ value: getValue(), readOnly: readOnly, className: "text-left " + (readOnly ? (colors === null || colors === void 0 ? void 0 : colors.readOnlyInputBgColor) || 'bg-gray-200' : (colors === null || colors === void 0 ? void 0 : colors.inputBgColor) || 'bg-white') + " dark:bg-black " + (colors === null || colors === void 0 ? void 0 : colors.inputBorderColor) + " bc-dt-input", onFocus: onFocus, onInput: onInput, onElementCreate: onInputElementCreated }, inputProps), void 0)] }), void 0),
9029
9138
  jsx(OverlayPanel, __assign({ visible: selectorOpen, target: dropDownTarget, shouldTargetCloseOverlay: false, shouldScrollCloseOverlay: true, hidden: onDateTimeHidden }, { children: jsxs(Fragment$1, { children: [state.currentSelector === DateTimeActionType.DaySelector &&
9030
9139
  canShowDateSelectors &&
9031
9140
  state.dateInitialized &&
@@ -9072,7 +9181,7 @@ function styleInject(css, ref) {
9072
9181
  }
9073
9182
  }
9074
9183
 
9075
- var css_248z = "/*! tailwindcss v2.1.2 | MIT License | https://tailwindcss.com */\n\n/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\nhtml {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n\t\tsystem-ui,\n\t\t-apple-system, /* Firefox supports this but not yet `system-ui` */\n\t\t'Segoe UI',\n\t\tRoboto,\n\t\tHelvetica,\n\t\tArial,\n\t\tsans-serif,\n\t\t'Apple Color Emoji',\n\t\t'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n\t\tui-monospace,\n\t\tSFMono-Regular,\n\t\tConsolas,\n\t\t'Liberation Mono',\n\t\tMenlo,\n\t\tmonospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background-color: transparent;\n background-image: none;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n\nbody {\n font-family: inherit;\n line-height: inherit;\n}\n\n/**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like <details> where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\nhr {\n border-top-width: 1px;\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\nimg {\n border-style: solid;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::-webkit-input-placeholder, textarea::-webkit-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton {\n cursor: pointer;\n}\n\ntable {\n border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/**\n * Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block;\n vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their intrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgba(229, 231, 235, var(--tw-bg-opacity));\n}\n\n.bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgba(17, 24, 39, var(--tw-bg-opacity));\n}\n\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(219, 234, 254, var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(209, 213, 219, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:bg-black {\n --tw-bg-opacity: 1;\n background-color: rgba(0, 0, 0, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:bg-white {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgba(17, 24, 39, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:hover\\:bg-white:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.border-black {\n --tw-border-opacity: 1;\n border-color: rgba(0, 0, 0, var(--tw-border-opacity));\n}\n\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgba(209, 213, 219, var(--tw-border-opacity));\n}\n\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgba(156, 163, 175, var(--tw-border-opacity));\n}\n\n.border-gray-500 {\n --tw-border-opacity: 1;\n border-color: rgba(107, 114, 128, var(--tw-border-opacity));\n}\n\n.dark .dark\\:border-white {\n --tw-border-opacity: 1;\n border-color: rgba(255, 255, 255, var(--tw-border-opacity));\n}\n\n.rounded-md {\n border-radius: 0.375rem;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.border-solid {\n border-style: solid;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.flex {\n display: -webkit-flex;\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.flex-row {\n -webkit-flex-direction: row;\n flex-direction: row;\n}\n\n.flex-col {\n -webkit-flex-direction: column;\n flex-direction: column;\n}\n\n.justify-center {\n -webkit-justify-content: center;\n justify-content: center;\n}\n\n.flex-grow {\n -webkit-flex-grow: 1;\n flex-grow: 1;\n}\n\n.flex-shrink {\n -webkit-flex-shrink: 1;\n flex-shrink: 1;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.mr-2 {\n margin-right: 0.5rem;\n}\n\n.ml-2 {\n margin-left: 0.5rem;\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.overflow-scroll {\n overflow: scroll;\n}\n\n.p-2 {\n padding: 0.5rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n.pr-4 {\n padding-right: 1rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pb-8 {\n padding-bottom: 2rem;\n}\n\n.static {\n position: static;\n}\n\n.absolute {\n position: absolute;\n}\n\n* {\n --tw-shadow: 0 0 #0000;\n}\n\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n* {\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgba(59, 130, 246, 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n}\n\n.text-center {\n text-align: center;\n}\n\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgba(156, 163, 175, var(--tw-text-opacity));\n}\n\n.text-red-300 {\n --tw-text-opacity: 1;\n color: rgba(252, 165, 165, var(--tw-text-opacity));\n}\n\n.dark .dark\\:text-black {\n --tw-text-opacity: 1;\n color: rgba(0, 0, 0, var(--tw-text-opacity));\n}\n\n.dark .dark\\:text-white {\n --tw-text-opacity: 1;\n color: rgba(255, 255, 255, var(--tw-text-opacity));\n}\n\n.dark .dark\\:hover\\:text-black:hover {\n --tw-text-opacity: 1;\n color: rgba(0, 0, 0, var(--tw-text-opacity));\n}\n\n.visible {\n visibility: visible;\n}\n\n.w-full {\n width: 100%;\n}\n\n.gap-3 {\n gap: 0.75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n\n.col-span-4 {\n grid-column: span 4 / span 4;\n}\n\n.transition {\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n@-webkit-keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@-webkit-keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@-webkit-keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n@keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n@media (min-width: 640px) {\n}\n\n@media (min-width: 768px) {\n}\n\n@media (min-width: 1024px) {\n}\n\n@media (min-width: 1280px) {\n}\n\n@media (min-width: 1536px) {\n}\n";
9184
+ var css_248z = "/*! tailwindcss v2.1.2 | MIT License | https://tailwindcss.com */\n\n/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\nhtml {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n\t\tsystem-ui,\n\t\t-apple-system, /* Firefox supports this but not yet `system-ui` */\n\t\t'Segoe UI',\n\t\tRoboto,\n\t\tHelvetica,\n\t\tArial,\n\t\tsans-serif,\n\t\t'Apple Color Emoji',\n\t\t'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n\t\tui-monospace,\n\t\tSFMono-Regular,\n\t\tConsolas,\n\t\t'Liberation Mono',\n\t\tMenlo,\n\t\tmonospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background-color: transparent;\n background-image: none;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n\nbody {\n font-family: inherit;\n line-height: inherit;\n}\n\n/**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like <details> where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\nhr {\n border-top-width: 1px;\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\nimg {\n border-style: solid;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::-webkit-input-placeholder, textarea::-webkit-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton {\n cursor: pointer;\n}\n\ntable {\n border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/**\n * Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block;\n vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their intrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgba(229, 231, 235, var(--tw-bg-opacity));\n}\n\n.bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgba(17, 24, 39, var(--tw-bg-opacity));\n}\n\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgba(239, 68, 68, var(--tw-bg-opacity));\n}\n\n.bg-green-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(209, 250, 229, var(--tw-bg-opacity));\n}\n\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(219, 234, 254, var(--tw-bg-opacity));\n}\n\n.bg-blue-200 {\n --tw-bg-opacity: 1;\n background-color: rgba(191, 219, 254, var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(209, 213, 219, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:bg-black {\n --tw-bg-opacity: 1;\n background-color: rgba(0, 0, 0, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:bg-white {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:bg-gray-900 {\n --tw-bg-opacity: 1;\n background-color: rgba(17, 24, 39, var(--tw-bg-opacity));\n}\n\n.dark .dark\\:hover\\:bg-white:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.border-black {\n --tw-border-opacity: 1;\n border-color: rgba(0, 0, 0, var(--tw-border-opacity));\n}\n\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgba(209, 213, 219, var(--tw-border-opacity));\n}\n\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgba(156, 163, 175, var(--tw-border-opacity));\n}\n\n.border-gray-500 {\n --tw-border-opacity: 1;\n border-color: rgba(107, 114, 128, var(--tw-border-opacity));\n}\n\n.dark .dark\\:border-white {\n --tw-border-opacity: 1;\n border-color: rgba(255, 255, 255, var(--tw-border-opacity));\n}\n\n.rounded-md {\n border-radius: 0.375rem;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.border-solid {\n border-style: solid;\n}\n\n.border-none {\n border-style: none;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.flex {\n display: -webkit-flex;\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.flex-row {\n -webkit-flex-direction: row;\n flex-direction: row;\n}\n\n.flex-col {\n -webkit-flex-direction: column;\n flex-direction: column;\n}\n\n.justify-center {\n -webkit-justify-content: center;\n justify-content: center;\n}\n\n.flex-grow {\n -webkit-flex-grow: 1;\n flex-grow: 1;\n}\n\n.flex-shrink {\n -webkit-flex-shrink: 1;\n flex-shrink: 1;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.mr-2 {\n margin-right: 0.5rem;\n}\n\n.ml-2 {\n margin-left: 0.5rem;\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.overflow-scroll {\n overflow: scroll;\n}\n\n.p-2 {\n padding: 0.5rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n.pr-4 {\n padding-right: 1rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pb-8 {\n padding-bottom: 2rem;\n}\n\n.static {\n position: static;\n}\n\n.absolute {\n position: absolute;\n}\n\n* {\n --tw-shadow: 0 0 #0000;\n}\n\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n* {\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgba(59, 130, 246, 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgba(156, 163, 175, var(--tw-text-opacity));\n}\n\n.text-red-300 {\n --tw-text-opacity: 1;\n color: rgba(252, 165, 165, var(--tw-text-opacity));\n}\n\n.dark .dark\\:text-black {\n --tw-text-opacity: 1;\n color: rgba(0, 0, 0, var(--tw-text-opacity));\n}\n\n.dark .dark\\:text-white {\n --tw-text-opacity: 1;\n color: rgba(255, 255, 255, var(--tw-text-opacity));\n}\n\n.dark .dark\\:hover\\:text-black:hover {\n --tw-text-opacity: 1;\n color: rgba(0, 0, 0, var(--tw-text-opacity));\n}\n\n.visible {\n visibility: visible;\n}\n\n.w-full {\n width: 100%;\n}\n\n.gap-3 {\n gap: 0.75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n\n.col-span-4 {\n grid-column: span 4 / span 4;\n}\n\n.transition {\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n@-webkit-keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@-webkit-keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@-webkit-keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n@keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n@media (min-width: 640px) {\n}\n\n@media (min-width: 768px) {\n}\n\n@media (min-width: 1024px) {\n}\n\n@media (min-width: 1280px) {\n}\n\n@media (min-width: 1536px) {\n}\n";
9076
9185
  styleInject(css_248z);
9077
9186
 
9078
9187
  /*!