@ornikar/kitt-universal 4.4.0 → 4.5.0

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 (52) hide show
  1. package/dist/definitions/Button/AnimatedButtonPressable.web.d.ts +1 -1
  2. package/dist/definitions/forms/DatePicker/DatePicker.d.ts +30 -0
  3. package/dist/definitions/forms/DatePicker/DatePicker.d.ts.map +1 -0
  4. package/dist/definitions/forms/DatePicker/DatePickerInputPart.d.ts +11 -0
  5. package/dist/definitions/forms/DatePicker/DatePickerInputPart.d.ts.map +1 -0
  6. package/dist/definitions/forms/DatePicker/ModalPlatformDateTimePicker.d.ts +11 -0
  7. package/dist/definitions/forms/DatePicker/ModalPlatformDateTimePicker.d.ts.map +1 -0
  8. package/dist/definitions/forms/DatePicker/PlatformDateTimePicker.d.ts +14 -0
  9. package/dist/definitions/forms/DatePicker/PlatformDateTimePicker.d.ts.map +1 -0
  10. package/dist/definitions/forms/InputTag/InputTag.d.ts +10 -0
  11. package/dist/definitions/forms/InputTag/InputTag.d.ts.map +1 -0
  12. package/dist/definitions/forms/InputText/InputTextContainer.web.d.ts +1 -1
  13. package/dist/definitions/index.d.ts +4 -0
  14. package/dist/definitions/index.d.ts.map +1 -1
  15. package/dist/definitions/themes/default.d.ts +2 -0
  16. package/dist/definitions/themes/default.d.ts.map +1 -1
  17. package/dist/definitions/themes/late-ocean/datePicker.d.ts +11 -0
  18. package/dist/definitions/themes/late-ocean/datePicker.d.ts.map +1 -0
  19. package/dist/definitions/themes/late-ocean/forms.d.ts +2 -0
  20. package/dist/definitions/themes/late-ocean/forms.d.ts.map +1 -1
  21. package/dist/definitions/themes/late-ocean/input.d.ts +1 -0
  22. package/dist/definitions/themes/late-ocean/input.d.ts.map +1 -1
  23. package/dist/definitions/themes/late-ocean/inputTag.d.ts +14 -0
  24. package/dist/definitions/themes/late-ocean/inputTag.d.ts.map +1 -0
  25. package/dist/index-browser-all.es.android.js +1135 -773
  26. package/dist/index-browser-all.es.android.js.map +1 -1
  27. package/dist/index-browser-all.es.ios.js +1135 -773
  28. package/dist/index-browser-all.es.ios.js.map +1 -1
  29. package/dist/index-browser-all.es.js +1275 -913
  30. package/dist/index-browser-all.es.js.map +1 -1
  31. package/dist/index-browser-all.es.web.js +855 -490
  32. package/dist/index-browser-all.es.web.js.map +1 -1
  33. package/dist/index-node-14.17.cjs.js +1097 -763
  34. package/dist/index-node-14.17.cjs.js.map +1 -1
  35. package/dist/index-node-14.17.cjs.web.css +1 -1
  36. package/dist/index-node-14.17.cjs.web.js +874 -543
  37. package/dist/index-node-14.17.cjs.web.js.map +1 -1
  38. package/dist/linaria-themes-browser-all.es.android.js +33 -1
  39. package/dist/linaria-themes-browser-all.es.android.js.map +1 -1
  40. package/dist/linaria-themes-browser-all.es.ios.js +33 -1
  41. package/dist/linaria-themes-browser-all.es.ios.js.map +1 -1
  42. package/dist/linaria-themes-browser-all.es.js +33 -1
  43. package/dist/linaria-themes-browser-all.es.js.map +1 -1
  44. package/dist/linaria-themes-browser-all.es.web.js +33 -1
  45. package/dist/linaria-themes-browser-all.es.web.js.map +1 -1
  46. package/dist/linaria-themes-node-14.17.cjs.js +33 -1
  47. package/dist/linaria-themes-node-14.17.cjs.js.map +1 -1
  48. package/dist/linaria-themes-node-14.17.cjs.web.js +33 -1
  49. package/dist/linaria-themes-node-14.17.cjs.web.js.map +1 -1
  50. package/dist/styles.css +1 -1
  51. package/dist/tsbuildinfo +1 -1
  52. package/package.json +2 -2
@@ -9,6 +9,8 @@ const react = require('react');
9
9
  const react$1 = require('@linaria/react');
10
10
  const jsxRuntime = require('react/jsx-runtime');
11
11
  const twemojiParser = require('twemoji-parser');
12
+ const reactIntl = require('react-intl');
13
+ const DateTimePicker = require('@react-native-community/datetimepicker');
12
14
  const reactNativeSafeAreaContext = require('react-native-safe-area-context');
13
15
  const reactDom = require('@floating-ui/react-dom');
14
16
  const addons = require('@storybook/addons');
@@ -16,6 +18,7 @@ const addons = require('@storybook/addons');
16
18
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e['default'] : e; }
17
19
 
18
20
  const styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
21
+ const DateTimePicker__default = /*#__PURE__*/_interopDefaultLegacy(DateTimePicker);
19
22
 
20
23
  // type $Without<T, K extends keyof any> = T extends any ? Pick<T, Exclude<keyof T, K>> : never;
21
24
  // type $DeepPartial<T> = { [P in keyof T]?: $DeepPartial<T[P]> };
@@ -51,7 +54,7 @@ function SpinningIcon({
51
54
  });
52
55
  }
53
56
 
54
- const IconContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
57
+ const IconContainer$1 = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
55
58
  displayName: "Icon__IconContainer",
56
59
  componentId: "kitt-universal__sc-usm0ol-0"
57
60
  })(["color:", ";width:", "px;height:", "px;align-self:", ";"], ({
@@ -73,7 +76,7 @@ function Icon({
73
76
  const clonedIcon = /*#__PURE__*/react.cloneElement(icon, {
74
77
  color
75
78
  });
76
- return /*#__PURE__*/jsxRuntime.jsx(IconContainer, {
79
+ return /*#__PURE__*/jsxRuntime.jsx(IconContainer$1, {
77
80
  align: align,
78
81
  size: size,
79
82
  color: color,
@@ -1029,6 +1032,18 @@ const checkbox = {
1029
1032
  markColor: colors.uiBackgroundLight
1030
1033
  };
1031
1034
 
1035
+ const datePicker = {
1036
+ day: {
1037
+ minWidth: 64
1038
+ },
1039
+ month: {
1040
+ minWidth: 64
1041
+ },
1042
+ year: {
1043
+ minWidth: 82
1044
+ }
1045
+ };
1046
+
1032
1047
  const calcLineHeight = (fontSize, lineHeightMultiplier) => Math.round(fontSize * lineHeightMultiplier);
1033
1048
  const createTypographyTypeConfig = (lineHeightMultiplier, baseAndSmallFontSize, mediumAndWideFontSize) => ({
1034
1049
  baseAndSmall: {
@@ -1136,6 +1151,7 @@ const inputStatesStyle = {
1136
1151
  }
1137
1152
  };
1138
1153
  const input = {
1154
+ minHeight: 40,
1139
1155
  color: {
1140
1156
  selection: colors.primary,
1141
1157
  placeholder: typography.colors['black-light']
@@ -1162,6 +1178,23 @@ const inputField = {
1162
1178
  iconMarginLeft: 6
1163
1179
  };
1164
1180
 
1181
+ const inputTag = {
1182
+ success: {
1183
+ backgroundColor: colors.success,
1184
+ labelColor: colors.uiBackgroundLight
1185
+ },
1186
+ danger: {
1187
+ backgroundColor: colors.danger,
1188
+ labelColor: colors.uiBackgroundLight
1189
+ },
1190
+ default: {
1191
+ backgroundColor: lateOceanColorPalette.black50,
1192
+ labelColor: colors.black
1193
+ },
1194
+ borderRadius: 10,
1195
+ iconSize: 13.5
1196
+ };
1197
+
1165
1198
  const radio = {
1166
1199
  size: 18,
1167
1200
  unchecked: {
@@ -1185,11 +1218,13 @@ const textArea = {
1185
1218
  };
1186
1219
 
1187
1220
  const forms = {
1221
+ datePicker,
1188
1222
  input,
1189
1223
  radio,
1190
1224
  inputField,
1191
1225
  textArea,
1192
- checkbox
1226
+ checkbox,
1227
+ inputTag
1193
1228
  };
1194
1229
 
1195
1230
  const fullScreenModal = {
@@ -1478,6 +1513,17 @@ function Checkbox({
1478
1513
  });
1479
1514
  }
1480
1515
 
1516
+ function getInputUIState({
1517
+ isFocused,
1518
+ isDisabled,
1519
+ formState
1520
+ }) {
1521
+ if (isDisabled) return 'disabled';
1522
+ if (isFocused) return 'focus';
1523
+ if (formState === 'invalid') return 'invalid';
1524
+ return 'default';
1525
+ }
1526
+
1481
1527
  const styledTextInputMixin = /*#__PURE__*/styled.css(["background-color:", ";border-width:", "px;border-radius:", "px;border-color:", ";font-size:", ";color:", ";font-family:", ";"], ({
1482
1528
  theme,
1483
1529
  $state
@@ -1500,208 +1546,746 @@ const styledTextInputMixin = /*#__PURE__*/styled.css(["background-color:", ";bor
1500
1546
  theme
1501
1547
  }) => theme.kitt.typography.types.bodies.fontFamily.regular);
1502
1548
 
1503
- function getInputUIState({
1504
- isFocused,
1505
- isDisabled,
1506
- formState
1507
- }) {
1508
- if (isDisabled) return 'disabled';
1509
- if (isFocused) return 'focus';
1510
- if (formState === 'invalid') return 'invalid';
1511
- return 'default';
1512
- }
1513
-
1514
- const InputTextContainer = withTheme( /*#__PURE__*/react$1.styled("div")({
1515
- name: "InputTextContainer",
1516
- class: "i1encr9g",
1517
- vars: {
1518
- "i1encr9g-0": [({
1519
- $isDisabled
1520
- }) => $isDisabled ? 'not-allowed' : 'inherit'],
1521
- "i1encr9g-1": [({
1522
- theme
1523
- }) => {
1524
- const {
1525
- property,
1526
- duration,
1527
- timingFunction
1528
- } = theme.kitt.forms.input.transition;
1529
- return `${property} ${duration} ${timingFunction}`;
1530
- }],
1531
- "i1encr9g-2": [({
1532
- theme,
1533
- $isDisabled
1534
- }) => {
1535
- if ($isDisabled) return theme.kitt.forms.input.states.disabled.borderColor;
1536
- return theme.kitt.forms.input.states.hover.borderColor;
1537
- }],
1538
- "i1encr9g-3": [({
1539
- theme,
1540
- $isDisabled
1541
- }) => {
1542
- if ($isDisabled) return theme.kitt.forms.input.states.disabled.borderColor;
1543
- return theme.kitt.forms.input.states.focus.borderColor;
1544
- }]
1545
- }
1546
- }));
1547
-
1548
- const StyledTextInput = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.TextInput).withConfig({
1549
- displayName: "InputText__StyledTextInput",
1550
- componentId: "kitt-universal__sc-uke279-0"
1551
- })(["", " padding:", ";line-height:", ";width:100%;min-height:", "px;"], styledTextInputMixin, ({
1549
+ const StyledTypographyText = /*#__PURE__*/styled__default(Typography.Text).withConfig({
1550
+ displayName: "DatePickerInputPart__StyledTypographyText",
1551
+ componentId: "kitt-universal__sc-11fmlmi-0"
1552
+ })(["text-align:center;"]);
1553
+ const ViewInput = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1554
+ displayName: "DatePickerInputPart__ViewInput",
1555
+ componentId: "kitt-universal__sc-11fmlmi-1"
1556
+ })(["", " padding:", ";min-height:", "px;min-width:", ";"], styledTextInputMixin, ({
1557
+ theme
1558
+ }) => theme.kitt.forms.input.padding.default, ({
1559
+ theme
1560
+ }) => theme.kitt.forms.input.minHeight, ({
1552
1561
  theme,
1553
- multiline
1562
+ $partName
1554
1563
  }) => {
1555
- if (!multiline && "web" === 'ios') {
1556
- return theme.kitt.forms.input.padding.iOSSingleLine;
1564
+ if (!$partName) {
1565
+ return undefined;
1557
1566
  }
1558
1567
 
1559
- return theme.kitt.forms.input.padding.default;
1560
- }, ({
1561
- theme,
1562
- multiline
1563
- }) => {
1564
- if (!multiline && "web" === 'ios') return 0;
1565
- const typeConfigKey = getTypographyTypeConfigKey(theme);
1566
- return `${theme.kitt.typography.types.bodies.configs.body[typeConfigKey].lineHeight}px`;
1567
- }, ({
1568
- $minHeight
1569
- }) => $minHeight);
1570
- const RightInputContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1571
- displayName: "InputText__RightInputContainer",
1572
- componentId: "kitt-universal__sc-uke279-1"
1573
- })(["position:absolute;right:0;top:0;bottom:0;justify-content:center;padding:10px;"]);
1574
- const InputText = /*#__PURE__*/react.forwardRef(({
1575
- id,
1576
- right,
1577
- minHeight = 0,
1578
- state: formState,
1579
- internalForceState,
1580
- disabled = false,
1581
- autoCorrect = true,
1582
- textContentType = 'none',
1583
- autoCompleteType = 'off',
1584
- keyboardType = 'default',
1585
- onFocus,
1586
- onBlur,
1587
- ...props
1588
- }, ref) => {
1589
- const theme = /*#__PURE__*/styled.useTheme();
1590
- const [isFocused, setIsFocused] = react.useState(false);
1591
- const state = internalForceState || getInputUIState({
1592
- isFocused,
1593
- isDisabled: disabled,
1594
- formState
1595
- });
1596
- return /*#__PURE__*/jsxRuntime.jsxs(InputTextContainer, {
1597
- $isDisabled: disabled,
1598
- children: [/*#__PURE__*/jsxRuntime.jsx(StyledTextInput, {
1599
- ref: ref,
1600
- nativeID: id,
1601
- editable: !disabled,
1602
- keyboardType: keyboardType,
1603
- autoCompleteType: autoCompleteType,
1604
- autoCorrect: autoCorrect,
1605
- $minHeight: minHeight,
1606
- textContentType: textContentType,
1607
- placeholderTextColor: theme.kitt.forms.input.color.placeholder,
1608
- selectionColor: theme.kitt.forms.input.color.selection,
1609
- ...props,
1610
- $state: state,
1611
- onFocus: e => {
1612
- setIsFocused(true);
1613
- if (onFocus) onFocus(e);
1614
- },
1615
- onBlur: e => {
1616
- setIsFocused(false);
1617
- if (onBlur) onBlur(e);
1618
- }
1619
- }), right ? /*#__PURE__*/jsxRuntime.jsx(RightInputContainer, {
1620
- children: right
1621
- }) : null]
1622
- });
1568
+ return `${theme.kitt.forms.datePicker[$partName].minWidth}px`;
1623
1569
  });
1624
-
1625
- function InputEmail(props) {
1626
- return /*#__PURE__*/jsxRuntime.jsx(InputText, {
1627
- autoCompleteType: "email",
1628
- keyboardType: "email-address",
1629
- textContentType: "emailAddress",
1630
- ...props
1570
+ function DatePickerInputPart({
1571
+ $state,
1572
+ placeholder,
1573
+ value,
1574
+ partName,
1575
+ disabled
1576
+ }) {
1577
+ return /*#__PURE__*/jsxRuntime.jsx(ViewInput, {
1578
+ $state: $state,
1579
+ $partName: partName,
1580
+ children: placeholder || value ? /*#__PURE__*/jsxRuntime.jsx(StyledTypographyText, {
1581
+ color: !value || disabled ? 'black-light' : undefined,
1582
+ children: value || placeholder
1583
+ }) : null
1631
1584
  });
1632
1585
  }
1633
1586
 
1634
- const getColorFromState = state => {
1635
- switch (state) {
1636
- case 'invalid':
1637
- return 'danger';
1638
-
1639
- case 'valid':
1640
- default:
1641
- return 'black-light';
1642
- }
1643
- };
1587
+ // Don't use styled.Pressable here - babel-plugin-styled-components-react-native-web only supports tagged templates
1588
+ const OverlayPressable = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.Pressable).withConfig({
1589
+ displayName: "Overlay__OverlayPressable",
1590
+ componentId: "kitt-universal__sc-1cz1gbr-0"
1591
+ })(({
1592
+ theme
1593
+ }) => ({ ...BabelPluginStyledComponentsReactNative.StyleSheet.absoluteFillObject,
1594
+ backgroundColor: theme.kitt.colors.overlay.dark
1595
+ }));
1596
+ function Overlay({
1597
+ onPress
1598
+ }) {
1599
+ return /*#__PURE__*/jsxRuntime.jsx(OverlayPressable, {
1600
+ accessibilityRole: "none",
1601
+ onPress: onPress,
1602
+ children: /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.View, {})
1603
+ });
1604
+ }
1644
1605
 
1645
- function InputFeedback({
1646
- state,
1647
- testID,
1606
+ const BodyView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1607
+ displayName: "Body__BodyView",
1608
+ componentId: "kitt-universal__sc-17fwpo4-0"
1609
+ })(["padding:", "px ", "px;"], ({
1610
+ theme
1611
+ }) => theme.kitt.spacing * 6, ({
1612
+ theme
1613
+ }) => theme.kitt.spacing * 4);
1614
+ function ModalBody({
1648
1615
  children
1649
1616
  }) {
1650
- return /*#__PURE__*/jsxRuntime.jsx(Typography.Text, {
1651
- base: "body-small",
1652
- color: getColorFromState(state),
1653
- testID: testID,
1654
- children: children
1617
+ return /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.ScrollView, {
1618
+ children: /*#__PURE__*/jsxRuntime.jsx(BodyView, {
1619
+ children: children
1620
+ })
1655
1621
  });
1656
1622
  }
1657
1623
 
1658
- const FieldContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1659
- displayName: "InputField__FieldContainer",
1660
- componentId: "kitt-universal__sc-13fkixs-0"
1661
- })(["padding:5px 0 10px;"]);
1662
- const FeedbackContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1663
- displayName: "InputField__FeedbackContainer",
1664
- componentId: "kitt-universal__sc-13fkixs-1"
1665
- })(["", ";"], ({
1666
- theme
1667
- }) => theme.responsive.ifWindowSizeMatches({
1668
- minWidth: KittBreakpoints.SMALL
1669
- }, 'padding-top: 10px', 'padding-top: 5px'));
1670
- const FieldLabelContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1671
- displayName: "InputField__FieldLabelContainer",
1672
- componentId: "kitt-universal__sc-13fkixs-2"
1673
- })(["flex-direction:row;align-items:center;padding-bottom:", "px;"], ({
1624
+ const FooterView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1625
+ displayName: "Footer__FooterView",
1626
+ componentId: "kitt-universal__sc-1ujq2dc-0"
1627
+ })(["flex:0 0 auto;padding:", "px;border-top-width:1px;border-top-color:", ";"], ({
1674
1628
  theme
1675
- }) => theme.kitt.forms.inputField.labelContainerPaddingBottom);
1676
- const LabelContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1677
- displayName: "InputField__LabelContainer",
1678
- componentId: "kitt-universal__sc-13fkixs-3"
1679
- })(["margin-right:", "px;"], ({
1629
+ }) => theme.kitt.spacing * 4, ({
1680
1630
  theme
1681
- }) => theme.kitt.forms.inputField.iconMarginLeft);
1682
- function InputField({
1683
- label,
1684
- labelFeedback,
1685
- input,
1686
- feedback
1631
+ }) => theme.kitt.colors.separator);
1632
+ function ModalFooter({
1633
+ children
1687
1634
  }) {
1688
- return /*#__PURE__*/jsxRuntime.jsxs(FieldContainer, {
1689
- children: [label ? /*#__PURE__*/jsxRuntime.jsxs(FieldLabelContainer, {
1690
- children: [/*#__PURE__*/jsxRuntime.jsx(LabelContainer, {
1691
- children: label
1692
- }), labelFeedback]
1693
- }) : null, input, feedback ? /*#__PURE__*/jsxRuntime.jsx(FeedbackContainer, {
1694
- children: feedback
1695
- }) : null]
1635
+ return /*#__PURE__*/jsxRuntime.jsx(FooterView, {
1636
+ children: children
1696
1637
  });
1697
1638
  }
1698
1639
 
1699
- function getIconColor(state, disabled) {
1700
- if (disabled) return 'black-light';
1701
-
1702
- switch (state) {
1703
- case 'invalid':
1704
- return 'danger';
1640
+ function StyleWebWrapper({
1641
+ as,
1642
+ children,
1643
+ ...props
1644
+ }) {
1645
+ // as or default to div. If as is undefined, T is div but typescript is not sure
1646
+ return /*#__PURE__*/jsxRuntime.jsx(as || 'div', { ...props,
1647
+ children: children
1648
+ });
1649
+ }
1650
+
1651
+ const PressableIconButtonWebWrapper = withTheme( /*#__PURE__*/react$1.styled("div")({
1652
+ name: "PressableIconButtonWebWrapper",
1653
+ class: "p1nlccvg",
1654
+ vars: {
1655
+ "p1nlccvg-0": [({
1656
+ theme,
1657
+ $isDisabled
1658
+ }) => $isDisabled ? 1 : theme.kitt.iconButton.scale.base.hover],
1659
+ "p1nlccvg-2": [({
1660
+ theme,
1661
+ $isDisabled
1662
+ }) => $isDisabled ? 1 : theme.kitt.iconButton.scale.medium.hover],
1663
+ "p1nlccvg-3": [({
1664
+ theme,
1665
+ $isDisabled
1666
+ }) => $isDisabled ? 1 : theme.kitt.iconButton.scale.base.active],
1667
+ "p1nlccvg-4": [({
1668
+ theme,
1669
+ $isWhite,
1670
+ $isDisabled
1671
+ }) => {
1672
+ if ($isDisabled) return theme.kitt.iconButton.disabled.backgroundColor;
1673
+ const {
1674
+ white,
1675
+ default: defaultIconButton
1676
+ } = theme.kitt.iconButton;
1677
+ if ($isWhite) return white.pressedBackgroundColor;
1678
+ return defaultIconButton.pressedBackgroundColor;
1679
+ }]
1680
+ }
1681
+ }));
1682
+ const StyledPressableIconButton = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.Pressable).withConfig({
1683
+ displayName: "PressableIconButton__StyledPressableIconButton",
1684
+ componentId: "kitt-universal__sc-1m6jo3s-0"
1685
+ })(["border-radius:", "px;width:", "px;height:", "px;align-items:center;justify-content:center;position:relative;background-color:transparent;", ";"], ({
1686
+ theme
1687
+ }) => theme.kitt.iconButton.borderRadius, ({
1688
+ theme
1689
+ }) => theme.kitt.iconButton.width, ({
1690
+ theme
1691
+ }) => theme.kitt.iconButton.height, ({
1692
+ theme,
1693
+ disabled
1694
+ }) => {
1695
+ const {
1696
+ iconButton
1697
+ } = theme.kitt;
1698
+ const {
1699
+ transition
1700
+ } = iconButton;
1701
+
1702
+ if (disabled) {
1703
+ return `
1704
+ background-color: ${iconButton.disabled.backgroundColor};
1705
+ `;
1706
+ }
1707
+
1708
+ return `
1709
+ transition: ${transition.property} ${transition.duration} ${transition.timingFunction};
1710
+ `;
1711
+ });
1712
+ function PressableIconButton({
1713
+ color,
1714
+ disabled,
1715
+ ...props
1716
+ }) {
1717
+ return /*#__PURE__*/jsxRuntime.jsx(StyleWebWrapper, {
1718
+ as: PressableIconButtonWebWrapper,
1719
+ $isWhite: color === 'white',
1720
+ $isDisabled: Boolean(disabled),
1721
+ children: /*#__PURE__*/jsxRuntime.jsx(StyledPressableIconButton, { ...props,
1722
+ disabled: disabled
1723
+ })
1724
+ });
1725
+ }
1726
+
1727
+ function PressableAnimatedContainer({
1728
+ children,
1729
+ color,
1730
+ disabled,
1731
+ onPress
1732
+ }) {
1733
+ return /*#__PURE__*/jsxRuntime.jsx(PressableIconButton, {
1734
+ accessibilityRole: "button",
1735
+ color: color,
1736
+ disabled: disabled,
1737
+ onPress: onPress,
1738
+ children: children
1739
+ });
1740
+ }
1741
+
1742
+ const IconButtonContentBorder = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1743
+ displayName: "IconButton__IconButtonContentBorder",
1744
+ componentId: "kitt-universal__sc-swelbf-0"
1745
+ })(["border:", ";border-color:", ";width:", "px;height:", "px;align-items:center;justify-content:center;border-radius:", "px;"], ({
1746
+ theme
1747
+ }) => `${theme.kitt.iconButton.borderWidth}px solid`, ({
1748
+ theme,
1749
+ disabled
1750
+ }) => disabled ? theme.kitt.iconButton.disabled.borderColor : theme.kitt.iconButton.borderColor, ({
1751
+ theme
1752
+ }) => theme.kitt.iconButton.width - theme.kitt.iconButton.borderWidth, ({
1753
+ theme
1754
+ }) => theme.kitt.iconButton.height - theme.kitt.iconButton.borderWidth, ({
1755
+ theme
1756
+ }) => theme.kitt.iconButton.borderRadius);
1757
+
1758
+ function IconButtonContent({
1759
+ disabled,
1760
+ color,
1761
+ icon
1762
+ }) {
1763
+ return /*#__PURE__*/jsxRuntime.jsx(IconButtonContentBorder, {
1764
+ disabled: disabled,
1765
+ children: /*#__PURE__*/jsxRuntime.jsx(TypographyIcon, {
1766
+ color: disabled ? 'black-light' : color,
1767
+ icon: icon
1768
+ })
1769
+ });
1770
+ }
1771
+
1772
+ function IconButton({
1773
+ icon,
1774
+ color,
1775
+ disabled,
1776
+ testID,
1777
+ accessibilityLabel,
1778
+ accessibilityRole,
1779
+ onPress
1780
+ }) {
1781
+ return /*#__PURE__*/jsxRuntime.jsx(PressableAnimatedContainer, {
1782
+ color: color,
1783
+ disabled: disabled,
1784
+ testID: testID,
1785
+ accessibilityLabel: accessibilityLabel,
1786
+ accessibilityRole: accessibilityRole,
1787
+ onPress: onPress,
1788
+ children: /*#__PURE__*/jsxRuntime.jsx(IconButtonContent, {
1789
+ disabled: disabled,
1790
+ color: color,
1791
+ icon: icon
1792
+ })
1793
+ });
1794
+ }
1795
+
1796
+ const OnCloseContext = /*#__PURE__*/react.createContext(() => {});
1797
+
1798
+ const HeaderView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1799
+ displayName: "Header__HeaderView",
1800
+ componentId: "kitt-universal__sc-1iwabch-0"
1801
+ })(["position:relative;padding:", "px;display:flex;flex:0 0 auto;flex-direction:row;justify-content:space-between;align-items:center;border-bottom-width:1px;border-bottom-color:", ";min-height:57px;"], ({
1802
+ theme
1803
+ }) => theme.kitt.spacing * 2, ({
1804
+ theme
1805
+ }) => theme.kitt.colors.separator);
1806
+ const LeftIconView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1807
+ displayName: "Header__LeftIconView",
1808
+ componentId: "kitt-universal__sc-1iwabch-1"
1809
+ })(["align-self:flex-start;margin-right:", "px;"], ({
1810
+ theme
1811
+ }) => theme.kitt.spacing * 2);
1812
+ const RightIconView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1813
+ displayName: "Header__RightIconView",
1814
+ componentId: "kitt-universal__sc-1iwabch-2"
1815
+ })(["align-self:flex-start;margin-left:", "px;"], ({
1816
+ theme
1817
+ }) => theme.kitt.spacing * 2);
1818
+ const TitleView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1819
+ displayName: "Header__TitleView",
1820
+ componentId: "kitt-universal__sc-1iwabch-3"
1821
+ })(["padding-left:", "px;flex-shrink:1;"], ({
1822
+ theme,
1823
+ isIconLeft
1824
+ }) => isIconLeft ? 0 : theme.kitt.spacing * 2);
1825
+ function ModalHeader({
1826
+ left,
1827
+ right,
1828
+ children
1829
+ }) {
1830
+ const onClose = react.useContext(OnCloseContext);
1831
+ const isIconLeft = !!left;
1832
+ return /*#__PURE__*/jsxRuntime.jsxs(HeaderView, {
1833
+ children: [isIconLeft && /*#__PURE__*/jsxRuntime.jsx(LeftIconView, {
1834
+ children: left
1835
+ }), /*#__PURE__*/jsxRuntime.jsx(TitleView, {
1836
+ isIconLeft: isIconLeft,
1837
+ children: children
1838
+ }), right !== undefined ? right : /*#__PURE__*/jsxRuntime.jsx(RightIconView, {
1839
+ children: /*#__PURE__*/jsxRuntime.jsx(IconButton, {
1840
+ icon: /*#__PURE__*/jsxRuntime.jsx(kittIcons.XIcon, {}),
1841
+ onPress: onClose
1842
+ })
1843
+ })]
1844
+ });
1845
+ }
1846
+
1847
+ const ModalView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1848
+ displayName: "Modal__ModalView",
1849
+ componentId: "kitt-universal__sc-1xy2w5u-0"
1850
+ })(["top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:", "px ", "px;"], ({
1851
+ theme
1852
+ }) => theme.kitt.spacing * 20, ({
1853
+ theme
1854
+ }) => theme.kitt.spacing * 4);
1855
+ const ContentView$1 = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1856
+ displayName: "Modal__ContentView",
1857
+ componentId: "kitt-universal__sc-1xy2w5u-1"
1858
+ })(["position:relative;display:flex;flex-direction:column;max-height:100%;max-width:540px;height:auto;width:100%;border-radius:", "px;background-color:", ";"], ({
1859
+ theme
1860
+ }) => theme.kitt.card.borderRadius, ({
1861
+ theme
1862
+ }) => theme.kitt.colors.uiBackgroundLight);
1863
+ function Modal({
1864
+ visible,
1865
+ children,
1866
+ onClose,
1867
+ onEntered,
1868
+ onExited
1869
+ }) {
1870
+ return /*#__PURE__*/jsxRuntime.jsx(OnCloseContext.Provider, {
1871
+ value: onClose,
1872
+ children: /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.Modal, {
1873
+ transparent: true,
1874
+ animationType: "fade",
1875
+ visible: visible,
1876
+ onShow: onEntered,
1877
+ onDismiss: onExited,
1878
+ onRequestClose: onClose,
1879
+ children: /*#__PURE__*/jsxRuntime.jsxs(ModalView, {
1880
+ children: [/*#__PURE__*/jsxRuntime.jsx(Overlay, {
1881
+ onPress: onClose
1882
+ }), /*#__PURE__*/jsxRuntime.jsx(ContentView$1, {
1883
+ children: children
1884
+ })]
1885
+ })
1886
+ })
1887
+ });
1888
+ }
1889
+ Modal.Header = ModalHeader;
1890
+ Modal.Body = ModalBody;
1891
+ Modal.Footer = ModalFooter;
1892
+
1893
+ function getDatePickerDisplayMode() {
1894
+ return 'default';
1895
+ }
1896
+
1897
+ function PlatformDateTimePicker({
1898
+ value,
1899
+ defaultDate = new Date(),
1900
+ maximumDate,
1901
+ minimuDate,
1902
+ testID,
1903
+ onChange
1904
+ }) {
1905
+ const displayMode = getDatePickerDisplayMode();
1906
+ const iosProps = {};
1907
+ return /*#__PURE__*/jsxRuntime.jsx(DateTimePicker__default, {
1908
+ is24Hour: true,
1909
+ testID: testID,
1910
+ value: value || defaultDate,
1911
+ mode: "date",
1912
+ maximumDate: maximumDate,
1913
+ minimumDate: minimuDate,
1914
+ display: displayMode,
1915
+ ...iosProps,
1916
+ onChange: (_event, date) => onChange(date)
1917
+ });
1918
+ }
1919
+
1920
+ function ModalTitle({
1921
+ children
1922
+ }) {
1923
+ return /*#__PURE__*/jsxRuntime.jsx(Modal.Header, {
1924
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography.Text, {
1925
+ base: "body",
1926
+ variant: "bold",
1927
+ children: children
1928
+ })
1929
+ });
1930
+ }
1931
+
1932
+ function ModalPlatformDateTimePicker({
1933
+ title,
1934
+ isVisible,
1935
+ value,
1936
+ validateButtonLabel,
1937
+ onClose,
1938
+ onChange,
1939
+ ...props
1940
+ }) {
1941
+ const [currentValue, setCurrentValue] = react.useState(value); // Prevent unsynced value between the modal and its parent state
1942
+
1943
+ return /*#__PURE__*/jsxRuntime.jsx(Modal, {
1944
+ visible: Boolean(isVisible),
1945
+ onClose: () => {
1946
+ setCurrentValue(value);
1947
+ onClose();
1948
+ },
1949
+ children: isVisible ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1950
+ children: [title ? /*#__PURE__*/jsxRuntime.jsx(ModalTitle, {
1951
+ children: title
1952
+ }) : null, /*#__PURE__*/jsxRuntime.jsx(Modal.Body, {
1953
+ children: /*#__PURE__*/jsxRuntime.jsx(PlatformDateTimePicker, { ...props,
1954
+ value: currentValue,
1955
+ onChange: newDate => {
1956
+ setCurrentValue(prev => {
1957
+ return newDate || prev;
1958
+ });
1959
+ }
1960
+ })
1961
+ }), /*#__PURE__*/jsxRuntime.jsx(Modal.Footer, {
1962
+ children: /*#__PURE__*/jsxRuntime.jsx(Button, {
1963
+ stretch: true,
1964
+ type: "primary",
1965
+ onPress: () => {
1966
+ onChange(currentValue);
1967
+ },
1968
+ children: validateButtonLabel ? /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.Text, {
1969
+ children: validateButtonLabel
1970
+ }) : /*#__PURE__*/jsxRuntime.jsx(reactIntl.FormattedMessage, {
1971
+ id: "kitt-universal.ModalDateTimePicker.confirm"
1972
+ })
1973
+ })
1974
+ })]
1975
+ }) : null
1976
+ });
1977
+ }
1978
+
1979
+ function prefixWithZero(value) {
1980
+ return `${value}`.padStart(2, '0');
1981
+ }
1982
+
1983
+ const PartContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
1984
+ displayName: "DatePicker__PartContainer",
1985
+ componentId: "kitt-universal__sc-ebllsn-0"
1986
+ })(["margin-right:", ";", ";"], ({
1987
+ theme,
1988
+ $isLast
1989
+ }) => !$isLast ? `${theme.kitt.spacing * 2}px` : 0, ({
1990
+ $isStretch
1991
+ }) => $isStretch ? styled.css(["flex:0.33;flex-grow:1;"]) : undefined);
1992
+ const DatePickerPressable = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.Pressable).withConfig({
1993
+ displayName: "DatePicker__DatePickerPressable",
1994
+ componentId: "kitt-universal__sc-ebllsn-1"
1995
+ })(["display:flex;flex-direction:row;", ";"], ({
1996
+ $isStretch
1997
+ }) => {
1998
+ if ($isStretch) {
1999
+ return styled.css(["width:100%;"]);
2000
+ }
2001
+
2002
+ return styled.css(["align-self:baseline;"]);
2003
+ });
2004
+ function DatePicker({
2005
+ value,
2006
+ id,
2007
+ disabled,
2008
+ placeholder,
2009
+ state,
2010
+ internalForceState,
2011
+ testID,
2012
+ stretch,
2013
+ pickerDefaultDate,
2014
+ pickerUITestID,
2015
+ pickerUITitle,
2016
+ pickerUIValidateButtonLabel,
2017
+ onChange,
2018
+ onFocus,
2019
+ onBlur
2020
+ }) {
2021
+ const [isPickerUIVisible, setIsPickerUIVisible] = react.useState(false);
2022
+ const [isFocused, setIsFocused] = react.useState(false);
2023
+ const [currentValue, setCurrentValue] = react.useState(value);
2024
+
2025
+ const handleModalClose = () => {
2026
+ if (onBlur) onBlur();
2027
+ setIsPickerUIVisible(false);
2028
+ setIsFocused(false);
2029
+ };
2030
+
2031
+ const handleChange = newDate => {
2032
+ setCurrentValue(newDate);
2033
+ onChange(newDate);
2034
+ handleModalClose();
2035
+ };
2036
+
2037
+ const currentState = internalForceState || getInputUIState({
2038
+ isFocused,
2039
+ isDisabled: Boolean(disabled),
2040
+ formState: state
2041
+ });
2042
+ const sharedPickerProps = {
2043
+ testID: pickerUITestID,
2044
+ value: currentValue,
2045
+ onChange: handleChange
2046
+ };
2047
+ const sharedPartProps = {
2048
+ disabled,
2049
+ $state: currentState,
2050
+ defaultDate: pickerDefaultDate
2051
+ };
2052
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2053
+ children: [/*#__PURE__*/jsxRuntime.jsxs(DatePickerPressable, {
2054
+ $isStretch: stretch,
2055
+ nativeID: id,
2056
+ disabled: disabled,
2057
+ testID: testID,
2058
+ onPress: () => {
2059
+ if (onFocus) onFocus();
2060
+ setIsPickerUIVisible(true);
2061
+ setIsFocused(true);
2062
+ },
2063
+ children: [/*#__PURE__*/jsxRuntime.jsx(PartContainer, {
2064
+ $isStretch: stretch,
2065
+ children: /*#__PURE__*/jsxRuntime.jsx(DatePickerInputPart, { ...sharedPartProps,
2066
+ partName: "day",
2067
+ value: currentValue ? prefixWithZero(currentValue.getDate()) : undefined,
2068
+ placeholder: placeholder?.day
2069
+ })
2070
+ }), /*#__PURE__*/jsxRuntime.jsx(PartContainer, {
2071
+ $isStretch: stretch,
2072
+ children: /*#__PURE__*/jsxRuntime.jsx(DatePickerInputPart, { ...sharedPartProps,
2073
+ partName: "month",
2074
+ value: currentValue ? prefixWithZero(currentValue.getMonth() + 1) : undefined,
2075
+ placeholder: placeholder?.month
2076
+ })
2077
+ }), /*#__PURE__*/jsxRuntime.jsx(PartContainer, {
2078
+ $isLast: true,
2079
+ $isStretch: stretch,
2080
+ children: /*#__PURE__*/jsxRuntime.jsx(DatePickerInputPart, { ...sharedPartProps,
2081
+ partName: "year",
2082
+ value: currentValue?.getFullYear(),
2083
+ placeholder: placeholder?.year
2084
+ })
2085
+ })]
2086
+ }), /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2087
+ children: [null, /*#__PURE__*/jsxRuntime.jsx(ModalPlatformDateTimePicker, { ...sharedPickerProps,
2088
+ isVisible: isPickerUIVisible,
2089
+ title: pickerUITitle,
2090
+ validateButtonLabel: pickerUIValidateButtonLabel,
2091
+ onClose: handleModalClose,
2092
+ onChange: handleChange
2093
+ })]
2094
+ })]
2095
+ });
2096
+ }
2097
+
2098
+ const InputTextContainer = withTheme( /*#__PURE__*/react$1.styled("div")({
2099
+ name: "InputTextContainer",
2100
+ class: "i1encr9g",
2101
+ vars: {
2102
+ "i1encr9g-0": [({
2103
+ $isDisabled
2104
+ }) => $isDisabled ? 'not-allowed' : 'inherit'],
2105
+ "i1encr9g-1": [({
2106
+ theme
2107
+ }) => {
2108
+ const {
2109
+ property,
2110
+ duration,
2111
+ timingFunction
2112
+ } = theme.kitt.forms.input.transition;
2113
+ return `${property} ${duration} ${timingFunction}`;
2114
+ }],
2115
+ "i1encr9g-2": [({
2116
+ theme,
2117
+ $isDisabled
2118
+ }) => {
2119
+ if ($isDisabled) return theme.kitt.forms.input.states.disabled.borderColor;
2120
+ return theme.kitt.forms.input.states.hover.borderColor;
2121
+ }],
2122
+ "i1encr9g-3": [({
2123
+ theme,
2124
+ $isDisabled
2125
+ }) => {
2126
+ if ($isDisabled) return theme.kitt.forms.input.states.disabled.borderColor;
2127
+ return theme.kitt.forms.input.states.focus.borderColor;
2128
+ }]
2129
+ }
2130
+ }));
2131
+
2132
+ const StyledTextInput = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.TextInput).withConfig({
2133
+ displayName: "InputText__StyledTextInput",
2134
+ componentId: "kitt-universal__sc-uke279-0"
2135
+ })(["", " padding:", ";line-height:", ";width:100%;min-height:", "px;"], styledTextInputMixin, ({
2136
+ theme,
2137
+ multiline
2138
+ }) => {
2139
+ if (!multiline && "web" === 'ios') {
2140
+ return theme.kitt.forms.input.padding.iOSSingleLine;
2141
+ }
2142
+
2143
+ return theme.kitt.forms.input.padding.default;
2144
+ }, ({
2145
+ theme,
2146
+ multiline
2147
+ }) => {
2148
+ if (!multiline && "web" === 'ios') return 0;
2149
+ const typeConfigKey = getTypographyTypeConfigKey(theme);
2150
+ return `${theme.kitt.typography.types.bodies.configs.body[typeConfigKey].lineHeight}px`;
2151
+ }, ({
2152
+ $minHeight
2153
+ }) => $minHeight);
2154
+ const RightInputContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2155
+ displayName: "InputText__RightInputContainer",
2156
+ componentId: "kitt-universal__sc-uke279-1"
2157
+ })(["position:absolute;right:0;top:0;bottom:0;justify-content:center;padding:10px;"]);
2158
+ const InputText = /*#__PURE__*/react.forwardRef(({
2159
+ id,
2160
+ right,
2161
+ minHeight = 0,
2162
+ state: formState,
2163
+ internalForceState,
2164
+ disabled = false,
2165
+ autoCorrect = true,
2166
+ textContentType = 'none',
2167
+ autoCompleteType = 'off',
2168
+ keyboardType = 'default',
2169
+ onFocus,
2170
+ onBlur,
2171
+ ...props
2172
+ }, ref) => {
2173
+ const theme = /*#__PURE__*/styled.useTheme();
2174
+ const [isFocused, setIsFocused] = react.useState(false);
2175
+ const state = internalForceState || getInputUIState({
2176
+ isFocused,
2177
+ isDisabled: disabled,
2178
+ formState
2179
+ });
2180
+ return /*#__PURE__*/jsxRuntime.jsxs(InputTextContainer, {
2181
+ $isDisabled: disabled,
2182
+ children: [/*#__PURE__*/jsxRuntime.jsx(StyledTextInput, {
2183
+ ref: ref,
2184
+ nativeID: id,
2185
+ editable: !disabled,
2186
+ keyboardType: keyboardType,
2187
+ autoCompleteType: autoCompleteType,
2188
+ autoCorrect: autoCorrect,
2189
+ $minHeight: minHeight,
2190
+ textContentType: textContentType,
2191
+ placeholderTextColor: theme.kitt.forms.input.color.placeholder,
2192
+ selectionColor: theme.kitt.forms.input.color.selection,
2193
+ ...props,
2194
+ $state: state,
2195
+ onFocus: e => {
2196
+ setIsFocused(true);
2197
+ if (onFocus) onFocus(e);
2198
+ },
2199
+ onBlur: e => {
2200
+ setIsFocused(false);
2201
+ if (onBlur) onBlur(e);
2202
+ }
2203
+ }), right ? /*#__PURE__*/jsxRuntime.jsx(RightInputContainer, {
2204
+ children: right
2205
+ }) : null]
2206
+ });
2207
+ });
2208
+
2209
+ function InputEmail(props) {
2210
+ return /*#__PURE__*/jsxRuntime.jsx(InputText, {
2211
+ autoCompleteType: "email",
2212
+ keyboardType: "email-address",
2213
+ textContentType: "emailAddress",
2214
+ ...props
2215
+ });
2216
+ }
2217
+
2218
+ const getColorFromState = state => {
2219
+ switch (state) {
2220
+ case 'invalid':
2221
+ return 'danger';
2222
+
2223
+ case 'valid':
2224
+ default:
2225
+ return 'black-light';
2226
+ }
2227
+ };
2228
+
2229
+ function InputFeedback({
2230
+ state,
2231
+ testID,
2232
+ children
2233
+ }) {
2234
+ return /*#__PURE__*/jsxRuntime.jsx(Typography.Text, {
2235
+ base: "body-small",
2236
+ color: getColorFromState(state),
2237
+ testID: testID,
2238
+ children: children
2239
+ });
2240
+ }
2241
+
2242
+ const FieldContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2243
+ displayName: "InputField__FieldContainer",
2244
+ componentId: "kitt-universal__sc-13fkixs-0"
2245
+ })(["padding:5px 0 10px;"]);
2246
+ const FeedbackContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2247
+ displayName: "InputField__FeedbackContainer",
2248
+ componentId: "kitt-universal__sc-13fkixs-1"
2249
+ })(["", ";"], ({
2250
+ theme
2251
+ }) => theme.responsive.ifWindowSizeMatches({
2252
+ minWidth: KittBreakpoints.SMALL
2253
+ }, 'padding-top: 10px', 'padding-top: 5px'));
2254
+ const FieldLabelContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2255
+ displayName: "InputField__FieldLabelContainer",
2256
+ componentId: "kitt-universal__sc-13fkixs-2"
2257
+ })(["flex-direction:row;align-items:center;padding-bottom:", "px;"], ({
2258
+ theme
2259
+ }) => theme.kitt.forms.inputField.labelContainerPaddingBottom);
2260
+ const LabelContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2261
+ displayName: "InputField__LabelContainer",
2262
+ componentId: "kitt-universal__sc-13fkixs-3"
2263
+ })(["margin-right:", "px;"], ({
2264
+ theme
2265
+ }) => theme.kitt.forms.inputField.iconMarginLeft);
2266
+ function InputField({
2267
+ label,
2268
+ labelFeedback,
2269
+ input,
2270
+ feedback
2271
+ }) {
2272
+ return /*#__PURE__*/jsxRuntime.jsxs(FieldContainer, {
2273
+ children: [label ? /*#__PURE__*/jsxRuntime.jsxs(FieldLabelContainer, {
2274
+ children: [/*#__PURE__*/jsxRuntime.jsx(LabelContainer, {
2275
+ children: label
2276
+ }), labelFeedback]
2277
+ }) : null, input, feedback ? /*#__PURE__*/jsxRuntime.jsx(FeedbackContainer, {
2278
+ children: feedback
2279
+ }) : null]
2280
+ });
2281
+ }
2282
+
2283
+ function getIconColor(state, disabled) {
2284
+ if (disabled) return 'black-light';
2285
+
2286
+ switch (state) {
2287
+ case 'invalid':
2288
+ return 'danger';
1705
2289
 
1706
2290
  case 'valid':
1707
2291
  return 'success';
@@ -1760,6 +2344,58 @@ function InputPhone(props) {
1760
2344
  });
1761
2345
  }
1762
2346
 
2347
+ const getTypographyColor = type => type ? 'white' : 'black';
2348
+
2349
+ const InputTagContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2350
+ displayName: "InputTag__InputTagContainer",
2351
+ componentId: "kitt-universal__sc-1511dsf-0"
2352
+ })(["align-items:center;justify-content:center;flex-direction:row;align-self:flex-start;overflow:hidden;padding-horizontal:", "px;background-color:", ";border-radius:", "px;"], ({
2353
+ theme
2354
+ }) => theme.kitt.spacing * 2, ({
2355
+ theme,
2356
+ type
2357
+ }) => {
2358
+ if (type === 'success') {
2359
+ return theme.kitt.forms.inputTag.success.backgroundColor;
2360
+ }
2361
+
2362
+ if (type === 'danger') {
2363
+ return theme.kitt.forms.inputTag.danger.backgroundColor;
2364
+ }
2365
+
2366
+ return theme.kitt.forms.inputTag.default.backgroundColor;
2367
+ }, ({
2368
+ theme
2369
+ }) => theme.kitt.forms.inputTag.borderRadius);
2370
+ const IconContainer = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2371
+ displayName: "InputTag__IconContainer",
2372
+ componentId: "kitt-universal__sc-1511dsf-1"
2373
+ })(["margin-right:", "px;"], ({
2374
+ theme
2375
+ }) => theme.kitt.spacing);
2376
+ function InputTag({
2377
+ children,
2378
+ type,
2379
+ icon
2380
+ }) {
2381
+ const typographyColor = getTypographyColor(type);
2382
+ const theme = useKittTheme();
2383
+ return /*#__PURE__*/jsxRuntime.jsxs(InputTagContainer, {
2384
+ type: type,
2385
+ children: [icon && /*#__PURE__*/jsxRuntime.jsx(IconContainer, {
2386
+ children: /*#__PURE__*/jsxRuntime.jsx(TypographyIcon, {
2387
+ icon: icon,
2388
+ size: theme.kitt.forms.inputTag.iconSize,
2389
+ color: typographyColor
2390
+ })
2391
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography.Text, {
2392
+ base: "body-small",
2393
+ color: typographyColor,
2394
+ children: children
2395
+ })]
2396
+ });
2397
+ }
2398
+
1763
2399
  function Label({
1764
2400
  htmlFor,
1765
2401
  children
@@ -1956,223 +2592,67 @@ const HeaderContent = /*#__PURE__*/styled__default(BabelPluginStyledComponentsRe
1956
2592
  return `margin-right: ${deltaMargin}px;`;
1957
2593
  }
1958
2594
 
1959
- return `margin-left: ${deltaMargin}px;`;
1960
- });
1961
- function FullScreenModalHeader({
1962
- children,
1963
- right,
1964
- left
1965
- }) {
1966
- const {
1967
- top
1968
- } = reactNativeSafeAreaContext.useSafeAreaInsets();
1969
- const dimensions = BabelPluginStyledComponentsReactNative.useWindowDimensions();
1970
- const [leftWidth, setLeftWidth] = react.useState(0);
1971
- const [rightWidth, setRightWidth] = react.useState(0);
1972
-
1973
- const handleLayoutChange = (event, side) => {
1974
- // Prevents react to nullify event on rerenders
1975
- event.persist();
1976
-
1977
- if (side === 'left') {
1978
- setLeftWidth(event.nativeEvent.layout.width);
1979
- return;
1980
- }
1981
-
1982
- setRightWidth(event.nativeEvent.layout.width);
1983
- };
1984
-
1985
- return /*#__PURE__*/jsxRuntime.jsxs(Header, {
1986
- insetTop: top,
1987
- children: [left ? /*#__PURE__*/jsxRuntime.jsx(SideContainer, {
1988
- onLayout: e => handleLayoutChange(e, 'left'),
1989
- children: left
1990
- }) : null, /*#__PURE__*/jsxRuntime.jsx(HeaderContent, {
1991
- windowWidth: dimensions.width,
1992
- leftWidth: leftWidth,
1993
- rightWidth: rightWidth,
1994
- children: children
1995
- }), right ? /*#__PURE__*/jsxRuntime.jsx(SideContainer, {
1996
- side: "right",
1997
- onLayout: e => handleLayoutChange(e, 'right'),
1998
- children: right
1999
- }) : null]
2000
- });
2001
- }
2002
-
2003
- const Container$1 = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2004
- displayName: "FullScreenModal__Container",
2005
- componentId: "kitt-universal__sc-11qpbe3-0"
2006
- })(["flex:1;background-color:", ";"], ({
2007
- theme
2008
- }) => theme.kitt.colors.uiBackground);
2009
- function FullScreenModal({
2010
- children
2011
- }) {
2012
- return /*#__PURE__*/jsxRuntime.jsx(Container$1, {
2013
- children: children
2014
- });
2015
- }
2016
- FullScreenModal.Header = FullScreenModalHeader;
2017
- FullScreenModal.Body = FullScreenModalBody;
2018
-
2019
- function StyleWebWrapper({
2020
- as,
2021
- children,
2022
- ...props
2023
- }) {
2024
- // as or default to div. If as is undefined, T is div but typescript is not sure
2025
- return /*#__PURE__*/jsxRuntime.jsx(as || 'div', { ...props,
2026
- children: children
2027
- });
2028
- }
2029
-
2030
- const PressableIconButtonWebWrapper = withTheme( /*#__PURE__*/react$1.styled("div")({
2031
- name: "PressableIconButtonWebWrapper",
2032
- class: "p1nlccvg",
2033
- vars: {
2034
- "p1nlccvg-0": [({
2035
- theme,
2036
- $isDisabled
2037
- }) => $isDisabled ? 1 : theme.kitt.iconButton.scale.base.hover],
2038
- "p1nlccvg-2": [({
2039
- theme,
2040
- $isDisabled
2041
- }) => $isDisabled ? 1 : theme.kitt.iconButton.scale.medium.hover],
2042
- "p1nlccvg-3": [({
2043
- theme,
2044
- $isDisabled
2045
- }) => $isDisabled ? 1 : theme.kitt.iconButton.scale.base.active],
2046
- "p1nlccvg-4": [({
2047
- theme,
2048
- $isWhite,
2049
- $isDisabled
2050
- }) => {
2051
- if ($isDisabled) return theme.kitt.iconButton.disabled.backgroundColor;
2052
- const {
2053
- white,
2054
- default: defaultIconButton
2055
- } = theme.kitt.iconButton;
2056
- if ($isWhite) return white.pressedBackgroundColor;
2057
- return defaultIconButton.pressedBackgroundColor;
2058
- }]
2059
- }
2060
- }));
2061
- const StyledPressableIconButton = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.Pressable).withConfig({
2062
- displayName: "PressableIconButton__StyledPressableIconButton",
2063
- componentId: "kitt-universal__sc-1m6jo3s-0"
2064
- })(["border-radius:", "px;width:", "px;height:", "px;align-items:center;justify-content:center;position:relative;background-color:transparent;", ";"], ({
2065
- theme
2066
- }) => theme.kitt.iconButton.borderRadius, ({
2067
- theme
2068
- }) => theme.kitt.iconButton.width, ({
2069
- theme
2070
- }) => theme.kitt.iconButton.height, ({
2071
- theme,
2072
- disabled
2073
- }) => {
2074
- const {
2075
- iconButton
2076
- } = theme.kitt;
2077
- const {
2078
- transition
2079
- } = iconButton;
2080
-
2081
- if (disabled) {
2082
- return `
2083
- background-color: ${iconButton.disabled.backgroundColor};
2084
- `;
2085
- }
2086
-
2087
- return `
2088
- transition: ${transition.property} ${transition.duration} ${transition.timingFunction};
2089
- `;
2090
- });
2091
- function PressableIconButton({
2092
- color,
2093
- disabled,
2094
- ...props
2095
- }) {
2096
- return /*#__PURE__*/jsxRuntime.jsx(StyleWebWrapper, {
2097
- as: PressableIconButtonWebWrapper,
2098
- $isWhite: color === 'white',
2099
- $isDisabled: Boolean(disabled),
2100
- children: /*#__PURE__*/jsxRuntime.jsx(StyledPressableIconButton, { ...props,
2101
- disabled: disabled
2102
- })
2103
- });
2104
- }
2105
-
2106
- function PressableAnimatedContainer({
2595
+ return `margin-left: ${deltaMargin}px;`;
2596
+ });
2597
+ function FullScreenModalHeader({
2107
2598
  children,
2108
- color,
2109
- disabled,
2110
- onPress
2599
+ right,
2600
+ left
2111
2601
  }) {
2112
- return /*#__PURE__*/jsxRuntime.jsx(PressableIconButton, {
2113
- accessibilityRole: "button",
2114
- color: color,
2115
- disabled: disabled,
2116
- onPress: onPress,
2117
- children: children
2118
- });
2119
- }
2602
+ const {
2603
+ top
2604
+ } = reactNativeSafeAreaContext.useSafeAreaInsets();
2605
+ const dimensions = BabelPluginStyledComponentsReactNative.useWindowDimensions();
2606
+ const [leftWidth, setLeftWidth] = react.useState(0);
2607
+ const [rightWidth, setRightWidth] = react.useState(0);
2120
2608
 
2121
- const IconButtonContentBorder = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2122
- displayName: "IconButton__IconButtonContentBorder",
2123
- componentId: "kitt-universal__sc-swelbf-0"
2124
- })(["border:", ";border-color:", ";width:", "px;height:", "px;align-items:center;justify-content:center;border-radius:", "px;"], ({
2125
- theme
2126
- }) => `${theme.kitt.iconButton.borderWidth}px solid`, ({
2127
- theme,
2128
- disabled
2129
- }) => disabled ? theme.kitt.iconButton.disabled.borderColor : theme.kitt.iconButton.borderColor, ({
2130
- theme
2131
- }) => theme.kitt.iconButton.width - theme.kitt.iconButton.borderWidth, ({
2132
- theme
2133
- }) => theme.kitt.iconButton.height - theme.kitt.iconButton.borderWidth, ({
2134
- theme
2135
- }) => theme.kitt.iconButton.borderRadius);
2609
+ const handleLayoutChange = (event, side) => {
2610
+ // Prevents react to nullify event on rerenders
2611
+ event.persist();
2136
2612
 
2137
- function IconButtonContent({
2138
- disabled,
2139
- color,
2140
- icon
2141
- }) {
2142
- return /*#__PURE__*/jsxRuntime.jsx(IconButtonContentBorder, {
2143
- disabled: disabled,
2144
- children: /*#__PURE__*/jsxRuntime.jsx(TypographyIcon, {
2145
- color: disabled ? 'black-light' : color,
2146
- icon: icon
2147
- })
2613
+ if (side === 'left') {
2614
+ setLeftWidth(event.nativeEvent.layout.width);
2615
+ return;
2616
+ }
2617
+
2618
+ setRightWidth(event.nativeEvent.layout.width);
2619
+ };
2620
+
2621
+ return /*#__PURE__*/jsxRuntime.jsxs(Header, {
2622
+ insetTop: top,
2623
+ children: [left ? /*#__PURE__*/jsxRuntime.jsx(SideContainer, {
2624
+ onLayout: e => handleLayoutChange(e, 'left'),
2625
+ children: left
2626
+ }) : null, /*#__PURE__*/jsxRuntime.jsx(HeaderContent, {
2627
+ windowWidth: dimensions.width,
2628
+ leftWidth: leftWidth,
2629
+ rightWidth: rightWidth,
2630
+ children: children
2631
+ }), right ? /*#__PURE__*/jsxRuntime.jsx(SideContainer, {
2632
+ side: "right",
2633
+ onLayout: e => handleLayoutChange(e, 'right'),
2634
+ children: right
2635
+ }) : null]
2148
2636
  });
2149
2637
  }
2150
2638
 
2151
- function IconButton({
2152
- icon,
2153
- color,
2154
- disabled,
2155
- testID,
2156
- accessibilityLabel,
2157
- accessibilityRole,
2158
- onPress
2639
+ const Container$1 = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2640
+ displayName: "FullScreenModal__Container",
2641
+ componentId: "kitt-universal__sc-11qpbe3-0"
2642
+ })(["flex:1;background-color:", ";"], ({
2643
+ theme
2644
+ }) => theme.kitt.colors.uiBackground);
2645
+ function FullScreenModal({
2646
+ children
2159
2647
  }) {
2160
- return /*#__PURE__*/jsxRuntime.jsx(PressableAnimatedContainer, {
2161
- color: color,
2162
- disabled: disabled,
2163
- testID: testID,
2164
- accessibilityLabel: accessibilityLabel,
2165
- accessibilityRole: accessibilityRole,
2166
- onPress: onPress,
2167
- children: /*#__PURE__*/jsxRuntime.jsx(IconButtonContent, {
2168
- disabled: disabled,
2169
- color: color,
2170
- icon: icon
2171
- })
2648
+ return /*#__PURE__*/jsxRuntime.jsx(Container$1, {
2649
+ children: children
2172
2650
  });
2173
2651
  }
2652
+ FullScreenModal.Header = FullScreenModalHeader;
2653
+ FullScreenModal.Body = FullScreenModalBody;
2174
2654
 
2175
- const ContentView$1 = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2655
+ const ContentView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2176
2656
  displayName: "ListItemContent__ContentView",
2177
2657
  componentId: "kitt-universal__sc-57q0u9-0"
2178
2658
  })(["flex:1 0 0%;align-self:center;"]);
@@ -2180,7 +2660,7 @@ function ListItemContent({
2180
2660
  children,
2181
2661
  ...rest
2182
2662
  }) {
2183
- return /*#__PURE__*/jsxRuntime.jsx(ContentView$1, { ...rest,
2663
+ return /*#__PURE__*/jsxRuntime.jsx(ContentView, { ...rest,
2184
2664
  children: children
2185
2665
  });
2186
2666
  }
@@ -2503,157 +2983,6 @@ function Message({
2503
2983
  });
2504
2984
  }
2505
2985
 
2506
- // Don't use styled.Pressable here - babel-plugin-styled-components-react-native-web only supports tagged templates
2507
- const OverlayPressable = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.Pressable).withConfig({
2508
- displayName: "Overlay__OverlayPressable",
2509
- componentId: "kitt-universal__sc-1cz1gbr-0"
2510
- })(({
2511
- theme
2512
- }) => ({ ...BabelPluginStyledComponentsReactNative.StyleSheet.absoluteFillObject,
2513
- backgroundColor: theme.kitt.colors.overlay.dark
2514
- }));
2515
- function Overlay({
2516
- onPress
2517
- }) {
2518
- return /*#__PURE__*/jsxRuntime.jsx(OverlayPressable, {
2519
- accessibilityRole: "none",
2520
- onPress: onPress,
2521
- children: /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.View, {})
2522
- });
2523
- }
2524
-
2525
- const BodyView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2526
- displayName: "Body__BodyView",
2527
- componentId: "kitt-universal__sc-17fwpo4-0"
2528
- })(["padding:", "px ", "px;"], ({
2529
- theme
2530
- }) => theme.kitt.spacing * 6, ({
2531
- theme
2532
- }) => theme.kitt.spacing * 4);
2533
- function ModalBody({
2534
- children
2535
- }) {
2536
- return /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.ScrollView, {
2537
- children: /*#__PURE__*/jsxRuntime.jsx(BodyView, {
2538
- children: children
2539
- })
2540
- });
2541
- }
2542
-
2543
- const FooterView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2544
- displayName: "Footer__FooterView",
2545
- componentId: "kitt-universal__sc-1ujq2dc-0"
2546
- })(["flex:0 0 auto;padding:", "px;border-top-width:1px;border-top-color:", ";"], ({
2547
- theme
2548
- }) => theme.kitt.spacing * 4, ({
2549
- theme
2550
- }) => theme.kitt.colors.separator);
2551
- function ModalFooter({
2552
- children
2553
- }) {
2554
- return /*#__PURE__*/jsxRuntime.jsx(FooterView, {
2555
- children: children
2556
- });
2557
- }
2558
-
2559
- const OnCloseContext = /*#__PURE__*/react.createContext(() => {});
2560
-
2561
- const HeaderView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2562
- displayName: "Header__HeaderView",
2563
- componentId: "kitt-universal__sc-1iwabch-0"
2564
- })(["position:relative;padding:", "px;display:flex;flex:0 0 auto;flex-direction:row;justify-content:space-between;align-items:center;border-bottom-width:1px;border-bottom-color:", ";min-height:57px;"], ({
2565
- theme
2566
- }) => theme.kitt.spacing * 2, ({
2567
- theme
2568
- }) => theme.kitt.colors.separator);
2569
- const LeftIconView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2570
- displayName: "Header__LeftIconView",
2571
- componentId: "kitt-universal__sc-1iwabch-1"
2572
- })(["align-self:flex-start;margin-right:", "px;"], ({
2573
- theme
2574
- }) => theme.kitt.spacing * 2);
2575
- const RightIconView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2576
- displayName: "Header__RightIconView",
2577
- componentId: "kitt-universal__sc-1iwabch-2"
2578
- })(["align-self:flex-start;margin-left:", "px;"], ({
2579
- theme
2580
- }) => theme.kitt.spacing * 2);
2581
- const TitleView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2582
- displayName: "Header__TitleView",
2583
- componentId: "kitt-universal__sc-1iwabch-3"
2584
- })(["padding-left:", "px;flex-shrink:1;"], ({
2585
- theme,
2586
- isIconLeft
2587
- }) => isIconLeft ? 0 : theme.kitt.spacing * 2);
2588
- function ModalHeader({
2589
- left,
2590
- right,
2591
- children
2592
- }) {
2593
- const onClose = react.useContext(OnCloseContext);
2594
- const isIconLeft = !!left;
2595
- return /*#__PURE__*/jsxRuntime.jsxs(HeaderView, {
2596
- children: [isIconLeft && /*#__PURE__*/jsxRuntime.jsx(LeftIconView, {
2597
- children: left
2598
- }), /*#__PURE__*/jsxRuntime.jsx(TitleView, {
2599
- isIconLeft: isIconLeft,
2600
- children: children
2601
- }), right !== undefined ? right : /*#__PURE__*/jsxRuntime.jsx(RightIconView, {
2602
- children: /*#__PURE__*/jsxRuntime.jsx(Button, {
2603
- type: "subtle-dark",
2604
- icon: /*#__PURE__*/jsxRuntime.jsx(kittIcons.XIcon, {}),
2605
- onPress: onClose
2606
- })
2607
- })]
2608
- });
2609
- }
2610
-
2611
- const ModalView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2612
- displayName: "Modal__ModalView",
2613
- componentId: "kitt-universal__sc-1xy2w5u-0"
2614
- })(["top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:", "px ", "px;"], ({
2615
- theme
2616
- }) => theme.kitt.spacing * 20, ({
2617
- theme
2618
- }) => theme.kitt.spacing * 4);
2619
- const ContentView = /*#__PURE__*/styled__default(BabelPluginStyledComponentsReactNative.View).withConfig({
2620
- displayName: "Modal__ContentView",
2621
- componentId: "kitt-universal__sc-1xy2w5u-1"
2622
- })(["position:relative;display:flex;flex-direction:column;max-height:100%;max-width:540px;height:auto;width:100%;border-radius:", "px;background-color:", ";"], ({
2623
- theme
2624
- }) => theme.kitt.card.borderRadius, ({
2625
- theme
2626
- }) => theme.kitt.colors.uiBackgroundLight);
2627
- function Modal({
2628
- visible,
2629
- children,
2630
- onClose,
2631
- onEntered,
2632
- onExited
2633
- }) {
2634
- return /*#__PURE__*/jsxRuntime.jsx(OnCloseContext.Provider, {
2635
- value: onClose,
2636
- children: /*#__PURE__*/jsxRuntime.jsx(BabelPluginStyledComponentsReactNative.Modal, {
2637
- transparent: true,
2638
- animationType: "fade",
2639
- visible: visible,
2640
- onShow: onEntered,
2641
- onDismiss: onExited,
2642
- onRequestClose: onClose,
2643
- children: /*#__PURE__*/jsxRuntime.jsxs(ModalView, {
2644
- children: [/*#__PURE__*/jsxRuntime.jsx(Overlay, {
2645
- onPress: onClose
2646
- }), /*#__PURE__*/jsxRuntime.jsx(ContentView, {
2647
- children: children
2648
- })]
2649
- })
2650
- })
2651
- });
2652
- }
2653
- Modal.Header = ModalHeader;
2654
- Modal.Body = ModalBody;
2655
- Modal.Footer = ModalFooter;
2656
-
2657
2986
  function Notification({
2658
2987
  type,
2659
2988
  children,
@@ -3477,6 +3806,7 @@ exports.Avatar = Avatar;
3477
3806
  exports.Button = Button;
3478
3807
  exports.Card = Card;
3479
3808
  exports.Checkbox = Checkbox;
3809
+ exports.DatePicker = DatePicker;
3480
3810
  exports.Emoji = Emoji;
3481
3811
  exports.ExternalLink = ExternalLink;
3482
3812
  exports.Flex = Flex;
@@ -3490,6 +3820,7 @@ exports.InputIcon = InputIcon;
3490
3820
  exports.InputPassword = InputPassword;
3491
3821
  exports.InputPhone = InputPhone;
3492
3822
  exports.InputPressable = InputPressable;
3823
+ exports.InputTag = InputTag;
3493
3824
  exports.InputText = InputText;
3494
3825
  exports.KittBreakpoints = KittBreakpoints;
3495
3826
  exports.KittBreakpointsMax = KittBreakpointsMax;