@activecollab/components 1.0.375 → 1.0.377

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.
Files changed (33) hide show
  1. package/dist/cjs/components/EditableHours/EditableHours.js +4 -4
  2. package/dist/cjs/components/EditableHours/EditableHours.js.map +1 -1
  3. package/dist/cjs/components/Icons/collection/Shield.js +48 -0
  4. package/dist/cjs/components/Icons/collection/Shield.js.map +1 -0
  5. package/dist/cjs/components/Icons/collection/index.js +7 -0
  6. package/dist/cjs/components/Icons/collection/index.js.map +1 -1
  7. package/dist/cjs/utils/validation.js +6 -2
  8. package/dist/cjs/utils/validation.js.map +1 -1
  9. package/dist/cjs/utils/validation.test.js +61 -0
  10. package/dist/cjs/utils/validation.test.js.map +1 -0
  11. package/dist/esm/components/EditableHours/EditableHours.js +4 -4
  12. package/dist/esm/components/EditableHours/EditableHours.js.map +1 -1
  13. package/dist/esm/components/Icons/collection/Shield.d.ts +23 -0
  14. package/dist/esm/components/Icons/collection/Shield.d.ts.map +1 -0
  15. package/dist/esm/components/Icons/collection/Shield.js +41 -0
  16. package/dist/esm/components/Icons/collection/Shield.js.map +1 -0
  17. package/dist/esm/components/Icons/collection/index.d.ts +1 -0
  18. package/dist/esm/components/Icons/collection/index.d.ts.map +1 -1
  19. package/dist/esm/components/Icons/collection/index.js +1 -0
  20. package/dist/esm/components/Icons/collection/index.js.map +1 -1
  21. package/dist/esm/utils/validation.d.ts +1 -1
  22. package/dist/esm/utils/validation.d.ts.map +1 -1
  23. package/dist/esm/utils/validation.js +6 -2
  24. package/dist/esm/utils/validation.js.map +1 -1
  25. package/dist/esm/utils/validation.test.d.ts +2 -0
  26. package/dist/esm/utils/validation.test.d.ts.map +1 -0
  27. package/dist/esm/utils/validation.test.js +59 -0
  28. package/dist/esm/utils/validation.test.js.map +1 -0
  29. package/dist/index.js +49 -6
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.min.js +1 -1
  32. package/dist/index.min.js.map +1 -1
  33. package/package.json +1 -1
@@ -133,7 +133,7 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
133
133
  var newMinutesString = newMinutes < 10 ? "0".concat(newMinutes) : newMinutes;
134
134
  var newHoursString = withLeadingZero && newHours < 10 ? "0".concat(newHours) : newHours;
135
135
  var newValue = "".concat(newHoursString, ":").concat(newMinutesString);
136
- if (validation(newValue)) {
136
+ if (validation(newValue, withLeadingZero)) {
137
137
  setCurrentValue(newValue);
138
138
  requestAnimationFrame(function () {
139
139
  var _inputRef$current;
@@ -201,18 +201,18 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
201
201
  return;
202
202
  }
203
203
  var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
204
- if (!validation(newValue)) {
204
+ if (!validation(newValue, withLeadingZero)) {
205
205
  e.preventDefault();
206
206
  return;
207
207
  }
208
208
  } else {
209
209
  var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
210
- if (!validation(_newValue)) {
210
+ if (!validation(_newValue, withLeadingZero)) {
211
211
  e.preventDefault();
212
212
  return;
213
213
  }
214
214
  }
215
- }, [handleIncrementDecrement, onCancel, validation]);
215
+ }, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
216
216
  var handleChange = (0, _react.useCallback)(function (e) {
217
217
  setCurrentValue(e.target.value);
218
218
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","validateTimeInput","incrementOnlySelected","minuteIncrement","rest","inputRef","useRef","handleRef","useForkRef","useState","undefined","decimalToHours","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","useEffect","_value","handleBlur","useCallback","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","classNames","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","validateTimeInput","incrementOnlySelected","minuteIncrement","rest","inputRef","useRef","handleRef","useForkRef","useState","undefined","decimalToHours","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","useEffect","_value","handleBlur","useCallback","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","classNames","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation, withLeadingZero]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
10
+ /**
11
+ * @component ShieldIcon
12
+ * @description
13
+ *
14
+ * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.
15
+ * The Icon component is
16
+ * customizable, allowing for variations in size, color, and style to fit the needs of the application.
17
+ *
18
+ *
19
+ * @example
20
+ * return (
21
+ * <ShieldIcon className="mr-2" />
22
+ * )
23
+ *
24
+ * @see
25
+ * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
26
+ * @see
27
+ * https://design.activecollab.com/docs/foundations/icons
28
+ */
29
+ var ShieldIcon = /*#__PURE__*/_react.default.forwardRef(function (props, svgRef) {
30
+ return /*#__PURE__*/_react.default.createElement("svg", _extends({
31
+ width: 24,
32
+ height: 24,
33
+ viewBox: "0 0 24 24",
34
+ xmlns: "http://www.w3.org/2000/svg",
35
+ "data-testid": "ShieldIcon",
36
+ fill: "var(--color-theme-600)",
37
+ focusable: false,
38
+ ref: svgRef
39
+ }, props), /*#__PURE__*/_react.default.createElement("path", {
40
+ fillRule: "evenodd",
41
+ clipRule: "evenodd",
42
+ d: "M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z"
43
+ }));
44
+ });
45
+ ShieldIcon.displayName = "ShieldIcon";
46
+ var _default = ShieldIcon;
47
+ exports.default = _default;
48
+ //# sourceMappingURL=Shield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shield.js","names":["ShieldIcon","React","forwardRef","props","svgRef","displayName"],"sources":["../../../../../src/components/Icons/collection/Shield.tsx"],"sourcesContent":["import React from \"react\";\n\n/**\n * @component ShieldIcon\n * @description\n *\n * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.\n * The Icon component is\n * customizable, allowing for variations in size, color, and style to fit the needs of the application.\n *\n *\n * @example\n * return (\n * <ShieldIcon className=\"mr-2\" />\n * )\n *\n * @see\n * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons\n * @see\n * https://design.activecollab.com/docs/foundations/icons\n */\nconst ShieldIcon = React.forwardRef(\n (props: React.SVGProps<SVGSVGElement>, svgRef?: React.Ref<SVGSVGElement>) => (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"ShieldIcon\"\n fill=\"var(--color-theme-600)\"\n focusable={false}\n ref={svgRef}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z\"\n />\n </svg>\n )\n);\nShieldIcon.displayName = \"ShieldIcon\";\nexport default ShieldIcon;\n"],"mappings":";;;;;;AAAA;AAA0B;AAAA;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,UAAU,gBAAGC,cAAK,CAACC,UAAU,CACjC,UAACC,KAAoC,EAAEC,MAAiC;EAAA,oBACtE;IACE,KAAK,EAAE,EAAG;IACV,MAAM,EAAE,EAAG;IACX,OAAO,EAAC,WAAW;IACnB,KAAK,EAAC,4BAA4B;IAClC,eAAY,YAAY;IACxB,IAAI,EAAC,wBAAwB;IAC7B,SAAS,EAAE,KAAM;IACjB,GAAG,EAAEA;EAAO,GACRD,KAAK,gBAET;IACE,QAAQ,EAAC,SAAS;IAClB,QAAQ,EAAC,SAAS;IAClB,CAAC,EAAC;EAAslB,EACxlB,CACE;AAAA,CACP,CACF;AACDH,UAAU,CAACK,WAAW,GAAG,YAAY;AAAC,eACvBL,UAAU;AAAA"}
@@ -897,6 +897,12 @@ Object.defineProperty(exports, "SettingsIcon", {
897
897
  return _Settings.default;
898
898
  }
899
899
  });
900
+ Object.defineProperty(exports, "ShieldIcon", {
901
+ enumerable: true,
902
+ get: function get() {
903
+ return _Shield.default;
904
+ }
905
+ });
900
906
  Object.defineProperty(exports, "SortGeneralIcon", {
901
907
  enumerable: true,
902
908
  get: function get() {
@@ -1178,6 +1184,7 @@ var _Search = _interopRequireDefault(require("./Search"));
1178
1184
  var _SendBlank = _interopRequireDefault(require("./SendBlank"));
1179
1185
  var _SendFilled = _interopRequireDefault(require("./SendFilled"));
1180
1186
  var _Settings = _interopRequireDefault(require("./Settings"));
1187
+ var _Shield = _interopRequireDefault(require("./Shield"));
1181
1188
  var _SortGeneral = _interopRequireDefault(require("./SortGeneral"));
1182
1189
  var _SortIcon = _interopRequireDefault(require("./SortIcon"));
1183
1190
  var _StarOutline = _interopRequireDefault(require("./StarOutline"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/Icons/collection/index.tsx"],"sourcesContent":["export { default as AccessLogIcon } from \"./AccessLog\";\nexport { default as ActivityIcon } from \"./Activity\";\nexport { default as AddCrossTinyIcon } from \"./AddCrossTiny\";\nexport { default as AddCrossIcon } from \"./AddCross\";\nexport { default as ArchiveIcon } from \"./Archive\";\nexport { default as ArrowBackMobileIcon } from \"./ArrowBackMobile\";\nexport { default as ArrowCollapseMultipleIcon } from \"./ArrowCollapseMultiple\";\nexport { default as ArrowDownLongIcon } from \"./ArrowDownLong\";\nexport { default as ArrowDownIcon } from \"./ArrowDown\";\nexport { default as ArrowExpandeMultipleIcon } from \"./ArrowExpandeMultiple\";\nexport { default as ArrowLeftBoxIcon } from \"./ArrowLeftBox\";\nexport { default as ArrowLeftIcon } from \"./ArrowLeft\";\nexport { default as ArrowRefreshIcon } from \"./ArrowRefresh\";\nexport { default as ArrowRightIcon } from \"./ArrowRight\";\nexport { default as ArrowUpLongIcon } from \"./ArrowUpLong\";\nexport { default as ArrowUpIcon } from \"./ArrowUp\";\nexport { default as AssignIcon } from \"./Assign\";\nexport { default as AttachmentIcon } from \"./Attachment\";\nexport { default as BellOffSmallIcon } from \"./BellOffSmall\";\nexport { default as BellOffIcon } from \"./BellOff\";\nexport { default as BillingIcon } from \"./Billing\";\nexport { default as BudgetAlertIcon } from \"./BudgetAlert\";\nexport { default as CalendarAddXIcon } from \"./CalendarAddX\";\nexport { default as CalendarIcon } from \"./Calendar\";\nexport { default as CancelCrossIcon } from \"./CancelCross\";\nexport { default as CaretLeftIcon } from \"./CaretLeft\";\nexport { default as CaretRightIcon } from \"./CaretRight\";\nexport { default as ChatIcon } from \"./Chat\";\nexport { default as CheckIcon } from \"./Check\";\nexport { default as CheckboxBlankTogglerIcon } from \"./CheckboxBlankToggler\";\nexport { default as CheckboxCircleArrowIcon } from \"./CheckboxCircleArrow\";\nexport { default as CheckboxIcon } from \"./Checkbox\";\nexport { default as ChecklistSmallIcon } from \"./ChecklistSmall\";\nexport { default as ChecklistIcon } from \"./Checklist\";\nexport { default as CircleMultipleIcon } from \"./CircleMultiple\";\nexport { default as ClockAddIcon } from \"./ClockAdd\";\nexport { default as ClockSmallIcon } from \"./ClockSmall\";\nexport { default as ClockStopwatchSmallIcon } from \"./ClockStopwatchSmall\";\nexport { default as ClockStopwatchIcon } from \"./ClockStopwatch\";\nexport { default as ClockIcon } from \"./Clock\";\nexport { default as CloseSmallIcon } from \"./CloseSmall\";\nexport { default as CloseIcon } from \"./Close\";\nexport { default as CollapsIcon } from \"./CollapsIcon\";\nexport { default as CollapseAllIcon } from \"./CollapseAll\";\nexport { default as CollapseExpandSingleIcon } from \"./CollapseExpandSingle\";\nexport { default as CompanyIcon } from \"./Company\";\nexport { default as ComputerIcon } from \"./Computer\";\nexport { default as CopyIcon } from \"./Copy\";\nexport { default as CrownBlankIcon } from \"./CrownBlank\";\nexport { default as CrownSelectedIcon } from \"./CrownSelected\";\nexport { default as DependencySmallIcon } from \"./DependencySmall\";\nexport { default as DependencyIcon } from \"./Dependency\";\nexport { default as DiscussionAddIcon } from \"./DiscussionAdd\";\nexport { default as DiscussionIcon } from \"./Discussion\";\nexport { default as DollarCheckmarkSmallIcon } from \"./DollarCheckmarkSmall\";\nexport { default as DollarCheckmarkIcon } from \"./DollarCheckmark\";\nexport { default as DollarClockSmallIcon } from \"./DollarClockSmall\";\nexport { default as DollarClockIcon } from \"./DollarClock\";\nexport { default as DollarDocumentIcon } from \"./DollarDocument\";\nexport { default as DollarOffSmallIcon } from \"./DollarOffSmall\";\nexport { default as DollarOffIcon } from \"./DollarOff\";\nexport { default as DollarSmallIcon } from \"./DollarSmall\";\nexport { default as DollarIcon } from \"./Dollar\";\nexport { default as DownloadIcon } from \"./Download\";\nexport { default as DriveIcon } from \"./Drive\";\nexport { default as DropboxIcon } from \"./Dropbox\";\nexport { default as DuplicateIcon } from \"./Duplicate\";\nexport { default as EditMultipleIcon } from \"./EditMultiple\";\nexport { default as EditIcon } from \"./Edit\";\nexport { default as EmojiIcon } from \"./Emoji\";\nexport { default as EstimatePlusIcon } from \"./EstimatePlus\";\nexport { default as EstimatesIcon } from \"./Estimates\";\nexport { default as ExpandAllIcon } from \"./ExpandAll\";\nexport { default as ExpenseAddIcon } from \"./ExpenseAdd\";\nexport { default as EyeOffSmallIcon } from \"./EyeOffSmall\";\nexport { default as EyeOffIcon } from \"./EyeOff\";\nexport { default as EyeSmallIcon } from \"./EyeSmall\";\nexport { default as EyeIcon } from \"./Eye\";\nexport { default as FilterIcon } from \"./Filter\";\nexport { default as FolderMoveIcon } from \"./FolderMove\";\nexport { default as FolderOutlineIcon } from \"./FolderOutline\";\nexport { default as GiftIcon } from \"./Gift\";\nexport { default as HashtagIcon } from \"./Hashtag\";\nexport { default as HelpIcon } from \"./Help\";\nexport { default as ImageIcon } from \"./Image\";\nexport { default as InfoSmallIcon } from \"./InfoSmall\";\nexport { default as InfoIcon } from \"./Info\";\nexport { default as InsertLinkIcon } from \"./InsertLink\";\nexport { default as IntegrationsIcon } from \"./Integrations\";\nexport { default as InvoicesIcon } from \"./Invoices\";\nexport { default as LabelsIcon } from \"./Labels\";\nexport { default as LockSmallIcon } from \"./LockSmall\";\nexport { default as LockIcon } from \"./Lock\";\nexport { default as MarkerIcon } from \"./Marker\";\nexport { default as MessageAddIcon } from \"./MessageAdd\";\nexport { default as MessageEmptyIcon } from \"./MessageEmpty\";\nexport { default as MessageSmallIcon } from \"./MessageSmall\";\nexport { default as MessageSolidIcon } from \"./MessageSolid\";\nexport { default as MessageIcon } from \"./Message\";\nexport { default as MinusIcon } from \"./Minus\";\nexport { default as MoveTriggerIcon } from \"./MoveTrigger\";\nexport { default as MoveIcon } from \"./Move\";\nexport { default as MyWorkIcon } from \"./MyWork\";\nexport { default as NoteAddIcon } from \"./NoteAdd\";\nexport { default as NoteIcon } from \"./Note\";\nexport { default as NotebookIcon } from \"./Notebook\";\nexport { default as NotificationBellIcon } from \"./NotificationBell\";\nexport { default as OpenExpandedIcon } from \"./OpenExpanded\";\nexport { default as OpenSheetIcon } from \"./OpenSheet\";\nexport { default as OrderFirstIcon } from \"./OrderFirst\";\nexport { default as PaidSmallIcon } from \"./PaidSmall\";\nexport { default as PauseCircleOutlineIcon } from \"./PauseCircleOutline\";\nexport { default as PauseIcon } from \"./PauseIcon\";\nexport { default as PauseSmallIcon } from \"./PauseSmall\";\nexport { default as PencilSmallIcon } from \"./PencilSmall\";\nexport { default as PencilIcon } from \"./Pencil\";\nexport { default as PendingPaymentSmallIcon } from \"./PendingPaymentSmall\";\nexport { default as PeopleIcon } from \"./People\";\nexport { default as PersonCircleOffIcon } from \"./PersonCircleOff\";\nexport { default as PersonCircleIcon } from \"./PersonCircle\";\nexport { default as PersonPlusIcon } from \"./PersonPlus\";\nexport { default as PersonIcon } from \"./Person\";\nexport { default as PinIcon } from \"./Pin\";\nexport { default as PlayCircleOutlineIcon } from \"./PlayCircleOutline\";\nexport { default as PlayIcon } from \"./PlayIcon\";\nexport { default as PlaySmallIcon } from \"./PlaySmall\";\nexport { default as PriorityLowIcon } from \"./PriorityLow\";\nexport { default as ProjectAddIcon } from \"./ProjectAdd\";\nexport { default as ProjectSearchIcon } from \"./ProjectSearch\";\nexport { default as ProjectStarIcon } from \"./ProjectStar\";\nexport { default as ProjectTemplateAddIcon } from \"./ProjectTemplateAdd\";\nexport { default as ProjectTemplateConvertIcon } from \"./ProjectTemplateConvert\";\nexport { default as ProjectTemplateIcon } from \"./ProjectTemplate\";\nexport { default as ProjectsIcon } from \"./Projects\";\nexport { default as RadioBlankIcon } from \"./RadioBlank\";\nexport { default as RadioButtonIcon } from \"./RadioButton\";\nexport { default as RearangeIcon } from \"./Rearange\";\nexport { default as RearrangeSmallIcon } from \"./RearrangeSmall\";\nexport { default as RecurringCheckmarkSmallIcon } from \"./RecurringCheckmarkSmall\";\nexport { default as RecurringCheckmarkIcon } from \"./RecurringCheckmark\";\nexport { default as RecurringSmallIcon } from \"./RecurringSmall\";\nexport { default as ReportTimeIcon } from \"./ReportTime\";\nexport { default as ReportsIcon } from \"./Reports\";\nexport { default as RocketIcon } from \"./Rocket\";\nexport { default as SearchLargeIcon } from \"./SearchLarge\";\nexport { default as SearchIcon } from \"./Search\";\nexport { default as SendBlankIcon } from \"./SendBlank\";\nexport { default as SendFilledIcon } from \"./SendFilled\";\nexport { default as SettingsIcon } from \"./Settings\";\nexport { default as SortGeneralIcon } from \"./SortGeneral\";\nexport { default as SortIcon } from \"./SortIcon\";\nexport { default as StarOutlineIcon } from \"./StarOutline\";\nexport { default as StarIcon } from \"./Star\";\nexport { default as StopwatchIcon } from \"./Stopwatch\";\nexport { default as SystemSettingsIcon } from \"./SystemSettings\";\nexport { default as TaskAddIcon } from \"./TaskAdd\";\nexport { default as TaskListAddIcon } from \"./TaskListAdd\";\nexport { default as TaskListCompleteIcon } from \"./TaskListComplete\";\nexport { default as TaskListIcon } from \"./TaskList\";\nexport { default as ThumbUpOutlineIcon } from \"./ThumbUpOutline\";\nexport { default as TrashIcon } from \"./Trash\";\nexport { default as TreeDotsIcon } from \"./TreeDots\";\nexport { default as UploadIcon } from \"./Upload\";\nexport { default as ViewGridIcon } from \"./ViewGrid\";\nexport { default as ViewListIcon } from \"./ViewList\";\nexport { default as ViewTimelineIcon } from \"./ViewTimeline\";\nexport { default as VolumeHighIcon } from \"./VolumeHigh\";\nexport { default as WarningTriangleSmallIcon } from \"./WarningTriangleSmall\";\nexport { default as WarningTriangleIcon } from \"./WarningTriangle\";\nexport { default as WarningIcon } from \"./Warning\";\nexport { default as WorkloadIcon } from \"./Workload\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqD"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/Icons/collection/index.tsx"],"sourcesContent":["export { default as AccessLogIcon } from \"./AccessLog\";\nexport { default as ActivityIcon } from \"./Activity\";\nexport { default as AddCrossTinyIcon } from \"./AddCrossTiny\";\nexport { default as AddCrossIcon } from \"./AddCross\";\nexport { default as ArchiveIcon } from \"./Archive\";\nexport { default as ArrowBackMobileIcon } from \"./ArrowBackMobile\";\nexport { default as ArrowCollapseMultipleIcon } from \"./ArrowCollapseMultiple\";\nexport { default as ArrowDownLongIcon } from \"./ArrowDownLong\";\nexport { default as ArrowDownIcon } from \"./ArrowDown\";\nexport { default as ArrowExpandeMultipleIcon } from \"./ArrowExpandeMultiple\";\nexport { default as ArrowLeftBoxIcon } from \"./ArrowLeftBox\";\nexport { default as ArrowLeftIcon } from \"./ArrowLeft\";\nexport { default as ArrowRefreshIcon } from \"./ArrowRefresh\";\nexport { default as ArrowRightIcon } from \"./ArrowRight\";\nexport { default as ArrowUpLongIcon } from \"./ArrowUpLong\";\nexport { default as ArrowUpIcon } from \"./ArrowUp\";\nexport { default as AssignIcon } from \"./Assign\";\nexport { default as AttachmentIcon } from \"./Attachment\";\nexport { default as BellOffSmallIcon } from \"./BellOffSmall\";\nexport { default as BellOffIcon } from \"./BellOff\";\nexport { default as BillingIcon } from \"./Billing\";\nexport { default as BudgetAlertIcon } from \"./BudgetAlert\";\nexport { default as CalendarAddXIcon } from \"./CalendarAddX\";\nexport { default as CalendarIcon } from \"./Calendar\";\nexport { default as CancelCrossIcon } from \"./CancelCross\";\nexport { default as CaretLeftIcon } from \"./CaretLeft\";\nexport { default as CaretRightIcon } from \"./CaretRight\";\nexport { default as ChatIcon } from \"./Chat\";\nexport { default as CheckIcon } from \"./Check\";\nexport { default as CheckboxBlankTogglerIcon } from \"./CheckboxBlankToggler\";\nexport { default as CheckboxCircleArrowIcon } from \"./CheckboxCircleArrow\";\nexport { default as CheckboxIcon } from \"./Checkbox\";\nexport { default as ChecklistSmallIcon } from \"./ChecklistSmall\";\nexport { default as ChecklistIcon } from \"./Checklist\";\nexport { default as CircleMultipleIcon } from \"./CircleMultiple\";\nexport { default as ClockAddIcon } from \"./ClockAdd\";\nexport { default as ClockSmallIcon } from \"./ClockSmall\";\nexport { default as ClockStopwatchSmallIcon } from \"./ClockStopwatchSmall\";\nexport { default as ClockStopwatchIcon } from \"./ClockStopwatch\";\nexport { default as ClockIcon } from \"./Clock\";\nexport { default as CloseSmallIcon } from \"./CloseSmall\";\nexport { default as CloseIcon } from \"./Close\";\nexport { default as CollapsIcon } from \"./CollapsIcon\";\nexport { default as CollapseAllIcon } from \"./CollapseAll\";\nexport { default as CollapseExpandSingleIcon } from \"./CollapseExpandSingle\";\nexport { default as CompanyIcon } from \"./Company\";\nexport { default as ComputerIcon } from \"./Computer\";\nexport { default as CopyIcon } from \"./Copy\";\nexport { default as CrownBlankIcon } from \"./CrownBlank\";\nexport { default as CrownSelectedIcon } from \"./CrownSelected\";\nexport { default as DependencySmallIcon } from \"./DependencySmall\";\nexport { default as DependencyIcon } from \"./Dependency\";\nexport { default as DiscussionAddIcon } from \"./DiscussionAdd\";\nexport { default as DiscussionIcon } from \"./Discussion\";\nexport { default as DollarCheckmarkSmallIcon } from \"./DollarCheckmarkSmall\";\nexport { default as DollarCheckmarkIcon } from \"./DollarCheckmark\";\nexport { default as DollarClockSmallIcon } from \"./DollarClockSmall\";\nexport { default as DollarClockIcon } from \"./DollarClock\";\nexport { default as DollarDocumentIcon } from \"./DollarDocument\";\nexport { default as DollarOffSmallIcon } from \"./DollarOffSmall\";\nexport { default as DollarOffIcon } from \"./DollarOff\";\nexport { default as DollarSmallIcon } from \"./DollarSmall\";\nexport { default as DollarIcon } from \"./Dollar\";\nexport { default as DownloadIcon } from \"./Download\";\nexport { default as DriveIcon } from \"./Drive\";\nexport { default as DropboxIcon } from \"./Dropbox\";\nexport { default as DuplicateIcon } from \"./Duplicate\";\nexport { default as EditMultipleIcon } from \"./EditMultiple\";\nexport { default as EditIcon } from \"./Edit\";\nexport { default as EmojiIcon } from \"./Emoji\";\nexport { default as EstimatePlusIcon } from \"./EstimatePlus\";\nexport { default as EstimatesIcon } from \"./Estimates\";\nexport { default as ExpandAllIcon } from \"./ExpandAll\";\nexport { default as ExpenseAddIcon } from \"./ExpenseAdd\";\nexport { default as EyeOffSmallIcon } from \"./EyeOffSmall\";\nexport { default as EyeOffIcon } from \"./EyeOff\";\nexport { default as EyeSmallIcon } from \"./EyeSmall\";\nexport { default as EyeIcon } from \"./Eye\";\nexport { default as FilterIcon } from \"./Filter\";\nexport { default as FolderMoveIcon } from \"./FolderMove\";\nexport { default as FolderOutlineIcon } from \"./FolderOutline\";\nexport { default as GiftIcon } from \"./Gift\";\nexport { default as HashtagIcon } from \"./Hashtag\";\nexport { default as HelpIcon } from \"./Help\";\nexport { default as ImageIcon } from \"./Image\";\nexport { default as InfoSmallIcon } from \"./InfoSmall\";\nexport { default as InfoIcon } from \"./Info\";\nexport { default as InsertLinkIcon } from \"./InsertLink\";\nexport { default as IntegrationsIcon } from \"./Integrations\";\nexport { default as InvoicesIcon } from \"./Invoices\";\nexport { default as LabelsIcon } from \"./Labels\";\nexport { default as LockSmallIcon } from \"./LockSmall\";\nexport { default as LockIcon } from \"./Lock\";\nexport { default as MarkerIcon } from \"./Marker\";\nexport { default as MessageAddIcon } from \"./MessageAdd\";\nexport { default as MessageEmptyIcon } from \"./MessageEmpty\";\nexport { default as MessageSmallIcon } from \"./MessageSmall\";\nexport { default as MessageSolidIcon } from \"./MessageSolid\";\nexport { default as MessageIcon } from \"./Message\";\nexport { default as MinusIcon } from \"./Minus\";\nexport { default as MoveTriggerIcon } from \"./MoveTrigger\";\nexport { default as MoveIcon } from \"./Move\";\nexport { default as MyWorkIcon } from \"./MyWork\";\nexport { default as NoteAddIcon } from \"./NoteAdd\";\nexport { default as NoteIcon } from \"./Note\";\nexport { default as NotebookIcon } from \"./Notebook\";\nexport { default as NotificationBellIcon } from \"./NotificationBell\";\nexport { default as OpenExpandedIcon } from \"./OpenExpanded\";\nexport { default as OpenSheetIcon } from \"./OpenSheet\";\nexport { default as OrderFirstIcon } from \"./OrderFirst\";\nexport { default as PaidSmallIcon } from \"./PaidSmall\";\nexport { default as PauseCircleOutlineIcon } from \"./PauseCircleOutline\";\nexport { default as PauseIcon } from \"./PauseIcon\";\nexport { default as PauseSmallIcon } from \"./PauseSmall\";\nexport { default as PencilSmallIcon } from \"./PencilSmall\";\nexport { default as PencilIcon } from \"./Pencil\";\nexport { default as PendingPaymentSmallIcon } from \"./PendingPaymentSmall\";\nexport { default as PeopleIcon } from \"./People\";\nexport { default as PersonCircleOffIcon } from \"./PersonCircleOff\";\nexport { default as PersonCircleIcon } from \"./PersonCircle\";\nexport { default as PersonPlusIcon } from \"./PersonPlus\";\nexport { default as PersonIcon } from \"./Person\";\nexport { default as PinIcon } from \"./Pin\";\nexport { default as PlayCircleOutlineIcon } from \"./PlayCircleOutline\";\nexport { default as PlayIcon } from \"./PlayIcon\";\nexport { default as PlaySmallIcon } from \"./PlaySmall\";\nexport { default as PriorityLowIcon } from \"./PriorityLow\";\nexport { default as ProjectAddIcon } from \"./ProjectAdd\";\nexport { default as ProjectSearchIcon } from \"./ProjectSearch\";\nexport { default as ProjectStarIcon } from \"./ProjectStar\";\nexport { default as ProjectTemplateAddIcon } from \"./ProjectTemplateAdd\";\nexport { default as ProjectTemplateConvertIcon } from \"./ProjectTemplateConvert\";\nexport { default as ProjectTemplateIcon } from \"./ProjectTemplate\";\nexport { default as ProjectsIcon } from \"./Projects\";\nexport { default as RadioBlankIcon } from \"./RadioBlank\";\nexport { default as RadioButtonIcon } from \"./RadioButton\";\nexport { default as RearangeIcon } from \"./Rearange\";\nexport { default as RearrangeSmallIcon } from \"./RearrangeSmall\";\nexport { default as RecurringCheckmarkSmallIcon } from \"./RecurringCheckmarkSmall\";\nexport { default as RecurringCheckmarkIcon } from \"./RecurringCheckmark\";\nexport { default as RecurringSmallIcon } from \"./RecurringSmall\";\nexport { default as ReportTimeIcon } from \"./ReportTime\";\nexport { default as ReportsIcon } from \"./Reports\";\nexport { default as RocketIcon } from \"./Rocket\";\nexport { default as SearchLargeIcon } from \"./SearchLarge\";\nexport { default as SearchIcon } from \"./Search\";\nexport { default as SendBlankIcon } from \"./SendBlank\";\nexport { default as SendFilledIcon } from \"./SendFilled\";\nexport { default as SettingsIcon } from \"./Settings\";\nexport { default as ShieldIcon } from \"./Shield\";\nexport { default as SortGeneralIcon } from \"./SortGeneral\";\nexport { default as SortIcon } from \"./SortIcon\";\nexport { default as StarOutlineIcon } from \"./StarOutline\";\nexport { default as StarIcon } from \"./Star\";\nexport { default as StopwatchIcon } from \"./Stopwatch\";\nexport { default as SystemSettingsIcon } from \"./SystemSettings\";\nexport { default as TaskAddIcon } from \"./TaskAdd\";\nexport { default as TaskListAddIcon } from \"./TaskListAdd\";\nexport { default as TaskListCompleteIcon } from \"./TaskListComplete\";\nexport { default as TaskListIcon } from \"./TaskList\";\nexport { default as ThumbUpOutlineIcon } from \"./ThumbUpOutline\";\nexport { default as TrashIcon } from \"./Trash\";\nexport { default as TreeDotsIcon } from \"./TreeDots\";\nexport { default as UploadIcon } from \"./Upload\";\nexport { default as ViewGridIcon } from \"./ViewGrid\";\nexport { default as ViewListIcon } from \"./ViewList\";\nexport { default as ViewTimelineIcon } from \"./ViewTimeline\";\nexport { default as VolumeHighIcon } from \"./VolumeHigh\";\nexport { default as WarningTriangleSmallIcon } from \"./WarningTriangleSmall\";\nexport { default as WarningTriangleIcon } from \"./WarningTriangle\";\nexport { default as WarningIcon } from \"./Warning\";\nexport { default as WorkloadIcon } from \"./Workload\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqD"}
@@ -8,8 +8,12 @@ var validateStopwatchTime = function validateStopwatchTime(value) {
8
8
  return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
9
9
  };
10
10
  exports.validateStopwatchTime = validateStopwatchTime;
11
- var validateTimeInput = function validateTimeInput(value) {
12
- return /^([0-9]+)?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
11
+ var validateTimeInput = function validateTimeInput(value, withLeadingZero) {
12
+ if (withLeadingZero) {
13
+ return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
14
+ } else {
15
+ return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
16
+ }
13
17
  };
14
18
  exports.validateTimeInput = validateTimeInput;
15
19
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string) => {\n return /^([0-9]+)?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAAC;AAEK,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAK;EAClD,OAAO,0EAA0E,CAACC,IAAI,CACpFD,KAAK,CACN;AACH,CAAC;AAAC"}
1
+ {"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput","withLeadingZero"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n }\n};\n"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAAC;AAEK,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,4FAA4F,CAACF,IAAI,CACtGD,KAAK,CACN;EACH,CAAC,MAAM;IACL,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;EACH;AACF,CAAC;AAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ var _validation = require("./validation");
4
+ describe("validateTimeInput", function () {
5
+ it("should work", function () {
6
+ expect((0, _validation.validateTimeInput)("0000:45", true)).toBeFalsy();
7
+ expect((0, _validation.validateTimeInput)("0000.45", true)).toBeFalsy();
8
+ expect((0, _validation.validateTimeInput)("0000,45", true)).toBeFalsy();
9
+ expect((0, _validation.validateTimeInput)("10000,45", true)).toBeTruthy();
10
+ expect((0, _validation.validateTimeInput)("1000", true)).toBeTruthy();
11
+ expect((0, _validation.validateTimeInput)("00:45", true)).toBeTruthy();
12
+ expect((0, _validation.validateTimeInput)("00,45", true)).toBeTruthy();
13
+ expect((0, _validation.validateTimeInput)("00.45", true)).toBeTruthy();
14
+ expect((0, _validation.validateTimeInput)("00.", true)).toBeTruthy();
15
+ expect((0, _validation.validateTimeInput)("0", true)).toBeTruthy();
16
+ expect((0, _validation.validateTimeInput)(".5", true)).toBeTruthy();
17
+ expect((0, _validation.validateTimeInput)(",55", true)).toBeTruthy();
18
+ expect((0, _validation.validateTimeInput)(",55", false)).toBeTruthy();
19
+ expect((0, _validation.validateTimeInput)(".55", false)).toBeTruthy();
20
+ expect((0, _validation.validateTimeInput)("00:45", false)).toBeFalsy();
21
+ expect((0, _validation.validateTimeInput)("00.45", false)).toBeFalsy();
22
+ expect((0, _validation.validateTimeInput)("00,45", false)).toBeFalsy();
23
+ expect((0, _validation.validateTimeInput)("0:45", false)).toBeTruthy();
24
+ expect((0, _validation.validateTimeInput)("0,45", false)).toBeTruthy();
25
+ expect((0, _validation.validateTimeInput)("0.45", false)).toBeTruthy();
26
+ expect((0, _validation.validateTimeInput)("00.", false)).toBeFalsy();
27
+ expect((0, _validation.validateTimeInput)("00", false)).toBeFalsy();
28
+ expect((0, _validation.validateTimeInput)("0", false)).toBeTruthy();
29
+ expect((0, _validation.validateTimeInput)("1:45", false)).toBeTruthy();
30
+ expect((0, _validation.validateTimeInput)("1:6", false)).toBeFalsy();
31
+ expect((0, _validation.validateTimeInput)("11:6", true)).toBeFalsy();
32
+ expect((0, _validation.validateTimeInput)("11:555", false)).toBeFalsy();
33
+ });
34
+ });
35
+ describe("validateStopwatchTime", function () {
36
+ it("should work", function () {
37
+ expect((0, _validation.validateStopwatchTime)("0000:45")).toBeFalsy();
38
+ expect((0, _validation.validateStopwatchTime)("0000.45")).toBeFalsy();
39
+ expect((0, _validation.validateStopwatchTime)("0000,45")).toBeFalsy();
40
+ expect((0, _validation.validateStopwatchTime)("10000,45")).toBeFalsy();
41
+ expect((0, _validation.validateStopwatchTime)("1000")).toBeFalsy();
42
+ expect((0, _validation.validateStopwatchTime)("00:45")).toBeTruthy();
43
+ expect((0, _validation.validateStopwatchTime)("00,45")).toBeTruthy();
44
+ expect((0, _validation.validateStopwatchTime)("00.45")).toBeTruthy();
45
+ expect((0, _validation.validateStopwatchTime)("00.")).toBeTruthy();
46
+ expect((0, _validation.validateStopwatchTime)("0")).toBeTruthy();
47
+ expect((0, _validation.validateStopwatchTime)(".5")).toBeTruthy();
48
+ expect((0, _validation.validateStopwatchTime)(",55")).toBeTruthy();
49
+ expect((0, _validation.validateStopwatchTime)(",55")).toBeTruthy();
50
+ expect((0, _validation.validateStopwatchTime)(".55")).toBeTruthy();
51
+ expect((0, _validation.validateStopwatchTime)("0:45")).toBeTruthy();
52
+ expect((0, _validation.validateStopwatchTime)("0,45")).toBeTruthy();
53
+ expect((0, _validation.validateStopwatchTime)("0.45")).toBeTruthy();
54
+ expect((0, _validation.validateStopwatchTime)("0")).toBeTruthy();
55
+ expect((0, _validation.validateStopwatchTime)("1:45")).toBeTruthy();
56
+ expect((0, _validation.validateStopwatchTime)("1:6")).toBeFalsy();
57
+ expect((0, _validation.validateStopwatchTime)("11:6")).toBeFalsy();
58
+ expect((0, _validation.validateStopwatchTime)("11:555")).toBeFalsy();
59
+ });
60
+ });
61
+ //# sourceMappingURL=validation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.js","names":["describe","it","expect","validateTimeInput","toBeFalsy","toBeTruthy","validateStopwatchTime"],"sources":["../../../src/utils/validation.test.ts"],"sourcesContent":["import { validateStopwatchTime, validateTimeInput } from \"./validation\";\n\ndescribe(\"validateTimeInput\", () => {\n it(\"should work\", () => {\n expect(validateTimeInput(\"0000:45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000.45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000,45\", true)).toBeFalsy();\n expect(validateTimeInput(\"10000,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"1000\", true)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.\", true)).toBeTruthy();\n expect(validateTimeInput(\"0\", true)).toBeTruthy();\n expect(validateTimeInput(\".5\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", false)).toBeTruthy();\n expect(validateTimeInput(\".55\", false)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00.45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00,45\", false)).toBeFalsy();\n expect(validateTimeInput(\"0:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0,45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0.45\", false)).toBeTruthy();\n expect(validateTimeInput(\"00.\", false)).toBeFalsy();\n expect(validateTimeInput(\"00\", false)).toBeFalsy();\n expect(validateTimeInput(\"0\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:6\", false)).toBeFalsy();\n expect(validateTimeInput(\"11:6\", true)).toBeFalsy();\n expect(validateTimeInput(\"11:555\", false)).toBeFalsy();\n });\n});\n\ndescribe(\"validateStopwatchTime\", () => {\n it(\"should work\", () => {\n expect(validateStopwatchTime(\"0000:45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000.45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"10000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"1000\")).toBeFalsy();\n expect(validateStopwatchTime(\"00:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\".5\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\".55\")).toBeTruthy();\n expect(validateStopwatchTime(\"0:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:555\")).toBeFalsy();\n });\n});\n"],"mappings":"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"}
@@ -110,7 +110,7 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
110
110
  var newMinutesString = newMinutes < 10 ? "0" + newMinutes : newMinutes;
111
111
  var newHoursString = withLeadingZero && newHours < 10 ? "0" + newHours : newHours;
112
112
  var newValue = newHoursString + ":" + newMinutesString;
113
- if (validation(newValue)) {
113
+ if (validation(newValue, withLeadingZero)) {
114
114
  setCurrentValue(newValue);
115
115
  requestAnimationFrame(function () {
116
116
  var _inputRef$current;
@@ -178,18 +178,18 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
178
178
  return;
179
179
  }
180
180
  var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
181
- if (!validation(newValue)) {
181
+ if (!validation(newValue, withLeadingZero)) {
182
182
  e.preventDefault();
183
183
  return;
184
184
  }
185
185
  } else {
186
186
  var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
187
- if (!validation(_newValue)) {
187
+ if (!validation(_newValue, withLeadingZero)) {
188
188
  e.preventDefault();
189
189
  return;
190
190
  }
191
191
  }
192
- }, [handleIncrementDecrement, onCancel, validation]);
192
+ }, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
193
193
  var handleChange = useCallback(function (e) {
194
194
  setCurrentValue(e.target.value);
195
195
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","validateTimeInput","EditableHours","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","rest","inputRef","handleRef","undefined","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","_value","handleBlur","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","validateTimeInput","EditableHours","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","rest","inputRef","handleRef","undefined","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","_value","handleBlur","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation, withLeadingZero]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ /**
3
+ * @component ShieldIcon
4
+ * @description
5
+ *
6
+ * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.
7
+ * The Icon component is
8
+ * customizable, allowing for variations in size, color, and style to fit the needs of the application.
9
+ *
10
+ *
11
+ * @example
12
+ * return (
13
+ * <ShieldIcon className="mr-2" />
14
+ * )
15
+ *
16
+ * @see
17
+ * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
18
+ * @see
19
+ * https://design.activecollab.com/docs/foundations/icons
20
+ */
21
+ declare const ShieldIcon: React.ForwardRefExoticComponent<Pick<React.SVGProps<SVGSVGElement>, "string" | "style" | "clipPath" | "filter" | "mask" | "path" | "key" | "css" | "name" | "type" | "className" | "id" | "lang" | "tabIndex" | "role" | "color" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "tw" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "height" | "max" | "media" | "method" | "min" | "target" | "width" | "crossOrigin" | "accentHeight" | "accumulate" | "additive" | "alignmentBaseline" | "allowReorder" | "amplitude" | "arabicForm" | "ascent" | "attributeName" | "attributeType" | "autoReverse" | "azimuth" | "baseFrequency" | "baselineShift" | "baseProfile" | "bbox" | "begin" | "bias" | "by" | "calcMode" | "capHeight" | "clip" | "clipPathUnits" | "clipRule" | "colorInterpolation" | "colorInterpolationFilters" | "colorProfile" | "colorRendering" | "contentScriptType" | "contentStyleType" | "cursor" | "cx" | "cy" | "d" | "decelerate" | "descent" | "diffuseConstant" | "direction" | "display" | "divisor" | "dominantBaseline" | "dur" | "dx" | "dy" | "edgeMode" | "elevation" | "enableBackground" | "end" | "exponent" | "externalResourcesRequired" | "fill" | "fillOpacity" | "fillRule" | "filterRes" | "filterUnits" | "floodColor" | "floodOpacity" | "focusable" | "fontFamily" | "fontSize" | "fontSizeAdjust" | "fontStretch" | "fontStyle" | "fontVariant" | "fontWeight" | "format" | "from" | "fx" | "fy" | "g1" | "g2" | "glyphName" | "glyphOrientationHorizontal" | "glyphOrientationVertical" | "glyphRef" | "gradientTransform" | "gradientUnits" | "horizAdvX" | "horizOriginX" | "href" | "imageRendering" | "in2" | "in" | "intercept" | "k1" | "k2" | "k3" | "k4" | "k" | "kernelMatrix" | "kernelUnitLength" | "kerning" | "keyPoints" | "keySplines" | "keyTimes" | "lengthAdjust" | "letterSpacing" | "lightingColor" | "limitingConeAngle" | "local" | "markerEnd" | "markerHeight" | "markerMid" | "markerStart" | "markerUnits" | "markerWidth" | "maskContentUnits" | "maskUnits" | "mode" | "numOctaves" | "offset" | "opacity" | "operator" | "order" | "orient" | "orientation" | "origin" | "overflow" | "overlinePosition" | "overlineThickness" | "paintOrder" | "panose1" | "pathLength" | "patternContentUnits" | "patternTransform" | "patternUnits" | "pointerEvents" | "points" | "pointsAtX" | "pointsAtY" | "pointsAtZ" | "preserveAlpha" | "preserveAspectRatio" | "primitiveUnits" | "r" | "radius" | "refX" | "refY" | "renderingIntent" | "repeatCount" | "repeatDur" | "requiredExtensions" | "requiredFeatures" | "restart" | "result" | "rotate" | "rx" | "ry" | "scale" | "seed" | "shapeRendering" | "slope" | "spacing" | "specularConstant" | "specularExponent" | "speed" | "spreadMethod" | "startOffset" | "stdDeviation" | "stemh" | "stemv" | "stitchTiles" | "stopColor" | "stopOpacity" | "strikethroughPosition" | "strikethroughThickness" | "stroke" | "strokeDasharray" | "strokeDashoffset" | "strokeLinecap" | "strokeLinejoin" | "strokeMiterlimit" | "strokeOpacity" | "strokeWidth" | "surfaceScale" | "systemLanguage" | "tableValues" | "targetX" | "targetY" | "textAnchor" | "textDecoration" | "textLength" | "textRendering" | "to" | "transform" | "u1" | "u2" | "underlinePosition" | "underlineThickness" | "unicode" | "unicodeBidi" | "unicodeRange" | "unitsPerEm" | "vAlphabetic" | "values" | "vectorEffect" | "version" | "vertAdvY" | "vertOriginX" | "vertOriginY" | "vHanging" | "vIdeographic" | "viewBox" | "viewTarget" | "visibility" | "vMathematical" | "widths" | "wordSpacing" | "writingMode" | "x1" | "x2" | "x" | "xChannelSelector" | "xHeight" | "xlinkActuate" | "xlinkArcrole" | "xlinkHref" | "xlinkRole" | "xlinkShow" | "xlinkTitle" | "xlinkType" | "xmlBase" | "xmlLang" | "xmlns" | "xmlnsXlink" | "xmlSpace" | "y1" | "y2" | "y" | "yChannelSelector" | "z" | "zoomAndPan"> & React.RefAttributes<SVGSVGElement>>;
22
+ export default ShieldIcon;
23
+ //# sourceMappingURL=Shield.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shield.d.ts","sourceRoot":"","sources":["../../../../../src/components/Icons/collection/Shield.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,UAAU,qlPAoBf,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,41 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React from "react";
3
+
4
+ /**
5
+ * @component ShieldIcon
6
+ * @description
7
+ *
8
+ * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.
9
+ * The Icon component is
10
+ * customizable, allowing for variations in size, color, and style to fit the needs of the application.
11
+ *
12
+ *
13
+ * @example
14
+ * return (
15
+ * <ShieldIcon className="mr-2" />
16
+ * )
17
+ *
18
+ * @see
19
+ * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
20
+ * @see
21
+ * https://design.activecollab.com/docs/foundations/icons
22
+ */
23
+ var ShieldIcon = /*#__PURE__*/React.forwardRef(function (props, svgRef) {
24
+ return /*#__PURE__*/React.createElement("svg", _extends({
25
+ width: 24,
26
+ height: 24,
27
+ viewBox: "0 0 24 24",
28
+ xmlns: "http://www.w3.org/2000/svg",
29
+ "data-testid": "ShieldIcon",
30
+ fill: "var(--color-theme-600)",
31
+ focusable: false,
32
+ ref: svgRef
33
+ }, props), /*#__PURE__*/React.createElement("path", {
34
+ fillRule: "evenodd",
35
+ clipRule: "evenodd",
36
+ d: "M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z"
37
+ }));
38
+ });
39
+ ShieldIcon.displayName = "ShieldIcon";
40
+ export default ShieldIcon;
41
+ //# sourceMappingURL=Shield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shield.js","names":["React","ShieldIcon","forwardRef","props","svgRef","displayName"],"sources":["../../../../../src/components/Icons/collection/Shield.tsx"],"sourcesContent":["import React from \"react\";\n\n/**\n * @component ShieldIcon\n * @description\n *\n * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.\n * The Icon component is\n * customizable, allowing for variations in size, color, and style to fit the needs of the application.\n *\n *\n * @example\n * return (\n * <ShieldIcon className=\"mr-2\" />\n * )\n *\n * @see\n * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons\n * @see\n * https://design.activecollab.com/docs/foundations/icons\n */\nconst ShieldIcon = React.forwardRef(\n (props: React.SVGProps<SVGSVGElement>, svgRef?: React.Ref<SVGSVGElement>) => (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"ShieldIcon\"\n fill=\"var(--color-theme-600)\"\n focusable={false}\n ref={svgRef}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z\"\n />\n </svg>\n )\n);\nShieldIcon.displayName = \"ShieldIcon\";\nexport default ShieldIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,UAAU,gBAAGD,KAAK,CAACE,UAAU,CACjC,UAACC,KAAoC,EAAEC,MAAiC;EAAA,oBACtE;IACE,KAAK,EAAE,EAAG;IACV,MAAM,EAAE,EAAG;IACX,OAAO,EAAC,WAAW;IACnB,KAAK,EAAC,4BAA4B;IAClC,eAAY,YAAY;IACxB,IAAI,EAAC,wBAAwB;IAC7B,SAAS,EAAE,KAAM;IACjB,GAAG,EAAEA;EAAO,GACRD,KAAK,gBAET;IACE,QAAQ,EAAC,SAAS;IAClB,QAAQ,EAAC,SAAS;IAClB,CAAC,EAAC;EAAslB,EACxlB,CACE;AAAA,CACP,CACF;AACDF,UAAU,CAACI,WAAW,GAAG,YAAY;AACrC,eAAeJ,UAAU"}