@telus-uds/components-base 1.71.0 → 1.73.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 (115) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/lib/Box/Box.js +17 -6
  3. package/lib/ColourToggle/ColourBubble.js +135 -0
  4. package/lib/ColourToggle/ColourToggle.js +101 -0
  5. package/lib/ColourToggle/index.js +10 -0
  6. package/lib/FlexGrid/Col/Col.js +42 -19
  7. package/lib/FlexGrid/FlexGrid.js +40 -17
  8. package/lib/FlexGrid/Row/Row.js +45 -22
  9. package/lib/Listbox/ListboxGroup.js +7 -1
  10. package/lib/Modal/ModalContent.js +4 -6
  11. package/lib/MultiSelectFilter/MultiSelectFilter.js +1 -0
  12. package/lib/Notification/Notification.js +13 -5
  13. package/lib/OrderedList/Item.js +180 -0
  14. package/lib/OrderedList/ItemBase.js +54 -0
  15. package/lib/OrderedList/OrderedList.js +71 -0
  16. package/lib/OrderedList/OrderedListBase.js +47 -0
  17. package/lib/OrderedList/index.js +10 -0
  18. package/lib/Responsive/Responsive.js +24 -14
  19. package/lib/Responsive/ResponsiveProp.js +46 -0
  20. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +72 -0
  21. package/lib/ThemeProvider/ThemeProvider.js +5 -2
  22. package/lib/ThemeProvider/index.js +9 -1
  23. package/lib/ThemeProvider/useResponsiveThemeTokens.js +89 -0
  24. package/lib/Typography/Typography.js +48 -22
  25. package/lib/index.js +16 -0
  26. package/lib/server.js +40 -0
  27. package/lib/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +56 -0
  28. package/lib/utils/ssr-media-query/create-stylesheet/index.android.js +10 -0
  29. package/lib/utils/ssr-media-query/create-stylesheet/index.ios.js +10 -0
  30. package/lib/utils/ssr-media-query/create-stylesheet/index.js +44 -0
  31. package/lib/utils/ssr-media-query/utils/create-media-query-styles.js +39 -6
  32. package/lib-module/Box/Box.js +17 -6
  33. package/lib-module/ColourToggle/ColourBubble.js +125 -0
  34. package/lib-module/ColourToggle/ColourToggle.js +92 -0
  35. package/lib-module/ColourToggle/index.js +2 -0
  36. package/lib-module/FlexGrid/Col/Col.js +42 -19
  37. package/lib-module/FlexGrid/FlexGrid.js +40 -17
  38. package/lib-module/FlexGrid/Row/Row.js +45 -22
  39. package/lib-module/Listbox/ListboxGroup.js +7 -1
  40. package/lib-module/Modal/ModalContent.js +4 -6
  41. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +1 -0
  42. package/lib-module/Notification/Notification.js +13 -5
  43. package/lib-module/OrderedList/Item.js +171 -0
  44. package/lib-module/OrderedList/ItemBase.js +43 -0
  45. package/lib-module/OrderedList/OrderedList.js +61 -0
  46. package/lib-module/OrderedList/OrderedListBase.js +36 -0
  47. package/lib-module/OrderedList/index.js +2 -0
  48. package/lib-module/Responsive/Responsive.js +24 -15
  49. package/lib-module/Responsive/ResponsiveProp.js +39 -0
  50. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +64 -0
  51. package/lib-module/ThemeProvider/ThemeProvider.js +5 -2
  52. package/lib-module/ThemeProvider/index.js +1 -0
  53. package/lib-module/ThemeProvider/useResponsiveThemeTokens.js +81 -0
  54. package/lib-module/Typography/Typography.js +50 -24
  55. package/lib-module/index.js +2 -0
  56. package/lib-module/server.js +4 -0
  57. package/lib-module/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +48 -0
  58. package/lib-module/utils/ssr-media-query/create-stylesheet/index.android.js +2 -0
  59. package/lib-module/utils/ssr-media-query/create-stylesheet/index.ios.js +2 -0
  60. package/lib-module/utils/ssr-media-query/create-stylesheet/index.js +36 -0
  61. package/lib-module/utils/ssr-media-query/utils/create-media-query-styles.js +36 -6
  62. package/package.json +13 -2
  63. package/src/Box/Box.jsx +35 -17
  64. package/src/ColourToggle/ColourBubble.jsx +111 -0
  65. package/src/ColourToggle/ColourToggle.jsx +83 -0
  66. package/src/ColourToggle/index.js +3 -0
  67. package/src/FlexGrid/Col/Col.jsx +42 -13
  68. package/src/FlexGrid/FlexGrid.jsx +40 -11
  69. package/src/FlexGrid/Row/Row.jsx +40 -16
  70. package/src/Listbox/ListboxGroup.jsx +9 -2
  71. package/src/Modal/ModalContent.jsx +4 -6
  72. package/src/MultiSelectFilter/MultiSelectFilter.jsx +2 -0
  73. package/src/Notification/Notification.jsx +15 -3
  74. package/src/OrderedList/Item.jsx +152 -0
  75. package/src/OrderedList/ItemBase.jsx +43 -0
  76. package/src/OrderedList/OrderedList.jsx +61 -0
  77. package/src/OrderedList/OrderedListBase.jsx +33 -0
  78. package/src/OrderedList/index.js +3 -0
  79. package/src/Responsive/Responsive.jsx +24 -11
  80. package/src/Responsive/ResponsiveProp.jsx +33 -0
  81. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +58 -0
  82. package/src/ThemeProvider/ThemeProvider.jsx +5 -2
  83. package/src/ThemeProvider/index.js +1 -0
  84. package/src/ThemeProvider/useResponsiveThemeTokens.js +85 -0
  85. package/src/Typography/Typography.jsx +72 -24
  86. package/src/index.js +2 -0
  87. package/src/server.js +4 -0
  88. package/src/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +41 -0
  89. package/src/utils/ssr-media-query/create-stylesheet/index.android.js +3 -0
  90. package/src/utils/ssr-media-query/create-stylesheet/index.ios.js +3 -0
  91. package/src/utils/ssr-media-query/create-stylesheet/index.js +33 -0
  92. package/src/utils/ssr-media-query/utils/create-media-query-styles.js +21 -6
  93. package/types/Badge.d.ts +28 -0
  94. package/types/Box.d.ts +52 -0
  95. package/types/ChevronLink.d.ts +47 -0
  96. package/types/Common.d.ts +106 -0
  97. package/types/Divider.d.ts +19 -0
  98. package/types/ExpandCollapse.d.ts +65 -0
  99. package/types/HorizontalScrollButton.d.ts +16 -0
  100. package/types/Icon.d.ts +21 -0
  101. package/types/Link.d.ts +48 -0
  102. package/types/List.d.ts +48 -0
  103. package/types/Search.d.ts +38 -0
  104. package/types/Select.d.ts +57 -0
  105. package/types/Spacer.d.ts +5 -0
  106. package/types/StackView.d.ts +28 -0
  107. package/types/Tabs.d.ts +46 -0
  108. package/types/TextButton.d.ts +11 -0
  109. package/types/ToggleSwitch.d.ts +54 -0
  110. package/types/ToolTip.d.ts +40 -0
  111. package/types/Typography.d.ts +39 -0
  112. package/types/index.d.ts +62 -0
  113. package/lib/utils/ssr-media-query/create-stylesheet.js +0 -76
  114. package/lib-module/utils/ssr-media-query/create-stylesheet.js +0 -68
  115. package/src/utils/ssr-media-query/create-stylesheet.js +0 -61
@@ -5,9 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var _exportNames = {
7
7
  useTheme: true,
8
- useSetTheme: true
8
+ useSetTheme: true,
9
+ useResponsiveThemeTokens: true
9
10
  };
10
11
  exports.default = void 0;
12
+ Object.defineProperty(exports, "useResponsiveThemeTokens", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _useResponsiveThemeTokens.default;
16
+ }
17
+ });
11
18
  Object.defineProperty(exports, "useSetTheme", {
12
19
  enumerable: true,
13
20
  get: function () {
@@ -23,6 +30,7 @@ Object.defineProperty(exports, "useTheme", {
23
30
  var _ThemeProvider = _interopRequireDefault(require("./ThemeProvider"));
24
31
  var _useTheme = _interopRequireDefault(require("./useTheme"));
25
32
  var _useSetTheme = _interopRequireDefault(require("./useSetTheme"));
33
+ var _useResponsiveThemeTokens = _interopRequireDefault(require("./useResponsiveThemeTokens"));
26
34
  var _useThemeTokens = require("./useThemeTokens");
27
35
  Object.keys(_useThemeTokens).forEach(function (key) {
28
36
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _systemConstants = require("@telus-uds/system-constants");
8
+ var _useTheme = _interopRequireDefault(require("./useTheme"));
9
+ var _utils = require("./utils");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const getResponsiveThemeTokens = function (_ref, tokensProp) {
12
+ let {
13
+ rules = [],
14
+ tokens: defaultThemeTokens = {}
15
+ } = _ref;
16
+ let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
17
+ let states = arguments.length > 3 ? arguments[3] : undefined;
18
+ const appearances = (0, _utils.mergeAppearances)(variants, states);
19
+ const tokensByViewport = Object.fromEntries(_systemConstants.viewports.keys.map(viewport => [viewport, {
20
+ ...defaultThemeTokens
21
+ }]));
22
+
23
+ // Go through each rule and collect them for the corresponding viewport if they apply
24
+ rules.forEach(rule => {
25
+ if (doesRuleApply(rule, appearances)) {
26
+ // If the rule does not have a viewport specified, we collect it in all viewports
27
+ let targetViewports = rule.if.viewport || _systemConstants.viewports.keys;
28
+ if (!Array.isArray(targetViewports)) {
29
+ targetViewports = [targetViewports];
30
+ }
31
+ targetViewports.forEach(viewport => {
32
+ tokensByViewport[viewport] = {
33
+ ...tokensByViewport[viewport],
34
+ ...rule.tokens
35
+ };
36
+ });
37
+ }
38
+ });
39
+ Object.keys(tokensByViewport).forEach(viewport => {
40
+ tokensByViewport[viewport] = (0, _utils.resolveThemeTokens)(tokensByViewport[viewport], appearances, tokensProp);
41
+ });
42
+ return tokensByViewport;
43
+ };
44
+ const doesRuleApply = (rule, appearances) => Object.entries(rule.if).every(condition => doesConditionApply(condition, appearances));
45
+ const doesConditionApply = (_ref2, appearances) => {
46
+ let [key, value] = _ref2;
47
+ if (key === 'viewport') {
48
+ return true;
49
+ }
50
+ // use null rather than undefined so we can serialise the value in themes
51
+ const appearanceValue = appearances[key] ?? null;
52
+ return Array.isArray(value) ? value.includes(appearanceValue) : value === appearanceValue;
53
+ };
54
+
55
+ /**
56
+ * @typedef {import('../utils/props/tokens.js').TokensSet} TokensSet
57
+ * @typedef {import('../utils/props/tokens.js').TokensProp} TokensProp
58
+ * @typedef {import('../utils/props/variantProp').AppearanceSet} AppearanceSet
59
+ *
60
+ * Returns a complete set of tokens for a component for each viewport based on which of the
61
+ * component's theme rules apply to the current set of theme appearances.
62
+ * Pass the returned output to createMediaQueryStyles to generate media query styles for use inside
63
+ * the media query stylesheet from './utils/ssr-media-query'.
64
+ *
65
+ * @typedef {Object} ResponsiveObject
66
+ * @property {TokensSet} xs
67
+ * @property {TokensSet} sm
68
+ * @property {TokensSet} md
69
+ * @property {TokensSet} lg
70
+ * @property {TokensSet} xl
71
+ *
72
+ * @param { string } componentName
73
+ * @param { TokensProp } tokens
74
+ * @param { AppearanceSet } variants
75
+ * @param { AppearanceSet } states
76
+ * @returns { ResponsiveObject }
77
+ */
78
+
79
+ const useResponsiveThemeTokens = function (componentName) {
80
+ let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
81
+ let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
82
+ let states = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
83
+ const theme = (0, _useTheme.default)();
84
+ const componentTheme = (0, _utils.getComponentTheme)(theme, componentName);
85
+ const themeTokens = getResponsiveThemeTokens(componentTheme, tokens, variants, states);
86
+ return themeTokens;
87
+ };
88
+ var _default = useResponsiveThemeTokens;
89
+ exports.default = _default;
@@ -9,9 +9,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
10
10
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
11
11
  var _ThemeProvider = require("../ThemeProvider");
12
- var _ViewportProvider = require("../ViewportProvider");
13
12
  var _utils = require("../ThemeProvider/utils");
14
13
  var _utils2 = require("../utils");
14
+ var _ViewportProvider = require("../ViewportProvider");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -29,7 +29,8 @@ const selectTextStyles = (_ref, themeOptions) => {
29
29
  fontName,
30
30
  textAlign,
31
31
  textTransform,
32
- letterSpacing
32
+ letterSpacing,
33
+ textDecorationLine
33
34
  } = _ref;
34
35
  return (0, _utils.applyTextStyles)({
35
36
  fontWeight,
@@ -40,7 +41,8 @@ const selectTextStyles = (_ref, themeOptions) => {
40
41
  themeOptions,
41
42
  textAlign,
42
43
  textTransform,
43
- letterSpacing
44
+ letterSpacing,
45
+ textDecorationLine
44
46
  });
45
47
  };
46
48
 
@@ -60,23 +62,48 @@ const Typography = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
60
62
  ...rest
61
63
  } = _ref2;
62
64
  const viewport = (0, _ViewportProvider.useViewport)();
63
- const {
64
- superScriptFontSize,
65
- ...themeTokens
66
- } = (0, _ThemeProvider.useThemeTokens)('Typography', tokens, variant, {
67
- viewport
68
- });
69
65
  const {
70
66
  themeOptions
71
67
  } = (0, _ThemeProvider.useTheme)();
68
+ const {
69
+ enableMediaQueryStyleSheet
70
+ } = themeOptions;
71
+ const useTokens = enableMediaQueryStyleSheet ? _ThemeProvider.useResponsiveThemeTokens : _ThemeProvider.useThemeTokens;
72
+ const themeTokens = useTokens('Typography', tokens, variant);
73
+ const maxFontSizeMultiplier = enableMediaQueryStyleSheet ? (0, _utils2.getMaxFontMultiplier)(themeTokens[viewport]) : (0, _utils2.getMaxFontMultiplier)(themeTokens);
74
+ const textDecorationLine = strikeThrough ? 'line-through' : 'none';
75
+ let textStyles;
76
+ let mediaIds;
77
+ if (enableMediaQueryStyleSheet) {
78
+ const transformedThemeTokens = Object.entries(themeTokens).reduce((acc, _ref3) => {
79
+ let [vp, viewportTokens] = _ref3;
80
+ acc[vp] = selectTextStyles({
81
+ textAlign: align,
82
+ textDecorationLine,
83
+ ...viewportTokens
84
+ }, themeOptions);
85
+ return acc;
86
+ }, {});
87
+ const mediaQueryStyles = (0, _utils2.createMediaQueryStyles)(transformedThemeTokens);
88
+ const {
89
+ ids,
90
+ styles
91
+ } = _utils2.StyleSheet.create({
92
+ text: mediaQueryStyles
93
+ });
94
+ textStyles = styles.text;
95
+ mediaIds = ids.text;
96
+ } else {
97
+ textStyles = selectTextStyles({
98
+ textAlign: align,
99
+ textDecorationLine,
100
+ ...themeTokens
101
+ }, themeOptions);
102
+ }
72
103
  const resolvedTextProps = {
73
104
  ...selectTextProps(rest),
74
- style: selectTextStyles(align ? {
75
- ...themeTokens,
76
- textAlign: align
77
- } : themeTokens, themeOptions),
78
105
  dataSet,
79
- maxFontSizeMultiplier: (0, _utils2.getMaxFontMultiplier)(themeTokens)
106
+ maxFontSizeMultiplier
80
107
  };
81
108
  const containerProps = {
82
109
  accessibilityRole,
@@ -87,7 +114,7 @@ const Typography = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
87
114
  if (typeof child === 'object' && ((child === null || child === void 0 ? void 0 : child.type) === 'sub' || (child === null || child === void 0 ? void 0 : child.type) === 'sup')) {
88
115
  var _child$props;
89
116
  const childStyles = (child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.style) || {};
90
- const supFontSize = childStyles.fontSize ?? superScriptFontSize;
117
+ const supFontSize = childStyles.fontSize ?? themeTokens.superScriptFontSize;
91
118
  const sanitizedChild = /*#__PURE__*/_react.default.cloneElement(child, {
92
119
  style: {
93
120
  ...childStyles,
@@ -107,19 +134,15 @@ const Typography = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
107
134
  }
108
135
  return resetTagStyling(children);
109
136
  };
110
- const textDecorationLine = strikeThrough ? 'line-through' : 'none';
111
- const textStyles = resolvedTextProps.style ? {
112
- ...resolvedTextProps.style,
113
- textDecorationLine
114
- } : {
115
- textDecorationLine
116
- };
117
137
  return block ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
118
138
  ref: ref,
119
139
  ...containerProps,
120
140
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
121
141
  ...resolvedTextProps,
122
142
  style: textStyles,
143
+ dataSet: mediaIds && {
144
+ media: mediaIds
145
+ },
123
146
  children: sanitizeChildren(children)
124
147
  })
125
148
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
@@ -127,6 +150,9 @@ const Typography = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
127
150
  ...containerProps,
128
151
  ...resolvedTextProps,
129
152
  style: textStyles,
153
+ dataSet: mediaIds && {
154
+ media: mediaIds
155
+ },
130
156
  children: sanitizeChildren(children)
131
157
  });
132
158
  });
package/lib/index.js CHANGED
@@ -15,6 +15,7 @@ var _exportNames = {
15
15
  Checkbox: true,
16
16
  CheckboxCard: true,
17
17
  CheckboxCardGroup: true,
18
+ ColourToggle: true,
18
19
  Divider: true,
19
20
  ExpandCollapse: true,
20
21
  Accordion: true,
@@ -32,6 +33,7 @@ var _exportNames = {
32
33
  Modal: true,
33
34
  MultiSelectFilter: true,
34
35
  Notification: true,
36
+ OrderedList: true,
35
37
  Pagination: true,
36
38
  Progress: true,
37
39
  QuickLinks: true,
@@ -144,6 +146,12 @@ Object.defineProperty(exports, "CheckboxCardGroup", {
144
146
  return _CheckboxCardGroup.default;
145
147
  }
146
148
  });
149
+ Object.defineProperty(exports, "ColourToggle", {
150
+ enumerable: true,
151
+ get: function () {
152
+ return _ColourToggle.default;
153
+ }
154
+ });
147
155
  Object.defineProperty(exports, "Divider", {
148
156
  enumerable: true,
149
157
  get: function () {
@@ -246,6 +254,12 @@ Object.defineProperty(exports, "Notification", {
246
254
  return _Notification.default;
247
255
  }
248
256
  });
257
+ Object.defineProperty(exports, "OrderedList", {
258
+ enumerable: true,
259
+ get: function () {
260
+ return _OrderedList.default;
261
+ }
262
+ });
249
263
  Object.defineProperty(exports, "Pagination", {
250
264
  enumerable: true,
251
265
  get: function () {
@@ -519,6 +533,7 @@ Object.keys(_Checkbox).forEach(function (key) {
519
533
  });
520
534
  var _CheckboxCard = _interopRequireDefault(require("./CheckboxCard"));
521
535
  var _CheckboxCardGroup = _interopRequireDefault(require("./CheckboxCardGroup"));
536
+ var _ColourToggle = _interopRequireDefault(require("./ColourToggle"));
522
537
  var _Divider = _interopRequireDefault(require("./Divider"));
523
538
  var _ExpandCollapse = _interopRequireWildcard(require("./ExpandCollapse"));
524
539
  var _Feedback = _interopRequireDefault(require("./Feedback"));
@@ -567,6 +582,7 @@ var _List = _interopRequireWildcard(require("./List"));
567
582
  var _Modal = _interopRequireDefault(require("./Modal"));
568
583
  var _MultiSelectFilter = _interopRequireDefault(require("./MultiSelectFilter"));
569
584
  var _Notification = _interopRequireDefault(require("./Notification"));
585
+ var _OrderedList = _interopRequireDefault(require("./OrderedList"));
570
586
  var _Pagination = _interopRequireDefault(require("./Pagination"));
571
587
  var _Progress = _interopRequireDefault(require("./Progress"));
572
588
  var _QuickLinks = _interopRequireDefault(require("./QuickLinks"));
package/lib/server.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "getComponentTheme", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _themeTokens.getComponentTheme;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "getThemeTokens", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _themeTokens.getThemeTokens;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "getTokensPropType", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _tokens.getTokensPropType;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "htmlAttrs", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _htmlAttrs.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "selectSystemProps", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _selectSystemProps.default;
34
+ }
35
+ });
36
+ var _selectSystemProps = _interopRequireDefault(require("./utils/props/selectSystemProps"));
37
+ var _tokens = require("./utils/props/tokens");
38
+ var _htmlAttrs = _interopRequireDefault(require("./utils/htmlAttrs"));
39
+ var _themeTokens = require("./ThemeProvider/utils/theme-tokens");
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _cssMediaquery = _interopRequireDefault(require("css-mediaquery"));
8
+ var _Dimensions = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Dimensions"));
9
+ var _common = require("../utils/common");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const createStyleSheet = stylesWithQuery => {
12
+ if (!stylesWithQuery) return {
13
+ ids: {},
14
+ styles: {},
15
+ fullStyles: {}
16
+ };
17
+ let cleanStyles;
18
+ const ids = {};
19
+ Object.keys(stylesWithQuery).forEach(key => {
20
+ if (!(stylesWithQuery !== null && stylesWithQuery !== void 0 && stylesWithQuery[key])) return;
21
+ const mediaQueriesAndPseudoClasses = Object.keys(stylesWithQuery[key]).filter(_common.isMediaOrPseudo);
22
+ cleanStyles = JSON.parse(JSON.stringify(stylesWithQuery));
23
+ mediaQueriesAndPseudoClasses.forEach(str => {
24
+ if ((0, _common.isMedia)(str)) {
25
+ const mqStr = str.replace('@media', '');
26
+ const {
27
+ width,
28
+ height
29
+ } = _Dimensions.default.get('window');
30
+ const isMatchingMediaQuery = _cssMediaquery.default.match(mqStr, {
31
+ width,
32
+ height,
33
+ orientation: width > height ? 'landscape' : 'portrait',
34
+ 'aspect-ratio': width / height
35
+ });
36
+ if (isMatchingMediaQuery) {
37
+ cleanStyles = {
38
+ ...cleanStyles,
39
+ [key]: {
40
+ ...cleanStyles[key],
41
+ ...stylesWithQuery[key][str]
42
+ }
43
+ };
44
+ }
45
+ }
46
+ delete cleanStyles[key][str];
47
+ });
48
+ });
49
+ return {
50
+ ids,
51
+ styles: cleanStyles,
52
+ fullStyles: stylesWithQuery
53
+ };
54
+ };
55
+ var _default = createStyleSheet;
56
+ exports.default = _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _createStylesheetMobile = _interopRequireDefault(require("./create-stylesheet-mobile"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ var _default = _createStylesheetMobile.default;
10
+ exports.default = _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _createStylesheetMobile = _interopRequireDefault(require("./create-stylesheet-mobile"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ var _default = _createStylesheetMobile.default;
10
+ exports.default = _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _inject = require("../utils/inject");
8
+ var _createDeclarationBlock = _interopRequireDefault(require("../utils/create-declaration-block"));
9
+ var _hash = _interopRequireDefault(require("../hash"));
10
+ var _common = require("../utils/common");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const createStyleSheet = stylesWithQuery => {
13
+ if (!stylesWithQuery) return {
14
+ ids: {},
15
+ styles: {},
16
+ fullStyles: {}
17
+ };
18
+ let cleanStyles;
19
+ let ids = {};
20
+ Object.keys(stylesWithQuery).forEach(key => {
21
+ if (!(stylesWithQuery !== null && stylesWithQuery !== void 0 && stylesWithQuery[key])) return;
22
+ const mediaQueriesAndPseudoClasses = Object.keys(stylesWithQuery[key]).filter(_common.isMediaOrPseudo);
23
+ cleanStyles = (0, _common.deepClone)(stylesWithQuery);
24
+ mediaQueriesAndPseudoClasses.forEach(query => {
25
+ var _ids;
26
+ const css = (0, _createDeclarationBlock.default)(stylesWithQuery[key][query]);
27
+ const stringHash = `rnmq-${(0, _hash.default)(`${key}${query}${css}`)}`;
28
+ const rule = (0, _common.createCssRule)(query, stringHash, css);
29
+ (0, _inject.addCss)(`${stringHash}`, rule);
30
+ delete cleanStyles[key][query];
31
+ ids = {
32
+ ...ids,
33
+ [key]: `${(_ids = ids) !== null && _ids !== void 0 && _ids[key] ? `${ids[key]} ` : ''}${stringHash}`
34
+ };
35
+ });
36
+ });
37
+ return {
38
+ ids,
39
+ styles: cleanStyles,
40
+ fullStyles: stylesWithQuery
41
+ };
42
+ };
43
+ var _default = createStyleSheet;
44
+ exports.default = _default;
@@ -5,20 +5,53 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _systemConstants = require("@telus-uds/system-constants");
8
+ const inherit = _ref => {
9
+ let {
10
+ xs,
11
+ sm = xs,
12
+ md = sm,
13
+ lg = md,
14
+ xl = lg
15
+ } = _ref;
16
+ return {
17
+ xs,
18
+ sm,
19
+ md,
20
+ lg,
21
+ xl
22
+ };
23
+ };
24
+
8
25
  /**
9
26
  * @typedef { Object } CssStyles
10
- * @typedef { Record<"xs" | "sm" | "md" | "lg" | "xl", CssStyles> } ViewportStyles
27
+ */
28
+
29
+ /**
30
+ * @typedef { Object } ViewportStyles
31
+ * @property { CssStyles } xs - The CSS styles for the "xs" viewport (required).
32
+ * @property { CssStyles } [sm] - Optional styles for the "sm" viewport. Inherits from "xs" if not specified.
33
+ * @property { CssStyles } [md] - Optional styles for the "md" viewport. Inherits from "sm" if not specified.
34
+ * @property { CssStyles } [lg] - Optional styles for the "lg" viewport. Inherits from "md" if not specified.
35
+ * @property { CssStyles } [xl] - Optional styles for the "xl" viewport. Inherits from "lg" if not specified.
36
+ */
37
+
38
+ /**
11
39
  * @typedef { Record<String, CssStyles> } MediaQueryStyles
12
40
  */
41
+
13
42
  /**
14
43
  * Generates media query styles based on specified viewport styles.
15
- * @param {ViewportStyles} viewportStyles
16
- * @returns { MediaQueryStyles }
44
+ * @param { Object } viewportStyles - The styles for different viewports.
45
+ * @param { boolean } [shouldInherit=true] - Flag indicating whether to inherit styles.
46
+ * @returns { Object } - The media query styles.
17
47
  */
48
+
18
49
  function createMediaQueryStyles(viewportStyles) {
19
- const viewportsArray = Object.keys(viewportStyles);
20
- const mediaQueries = Object.entries(viewportStyles).reduce((acc, _ref) => {
21
- let [viewport, styles] = _ref;
50
+ let shouldInherit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
51
+ const effectiveStyles = shouldInherit ? inherit(viewportStyles) : viewportStyles;
52
+ const viewportsArray = _systemConstants.viewports.keys;
53
+ const mediaQueries = Object.entries(effectiveStyles).reduce((acc, _ref2) => {
54
+ let [viewport, styles] = _ref2;
22
55
  const minWidth = _systemConstants.viewports.map.get(viewport);
23
56
  const nextViewport = viewportsArray[viewportsArray.indexOf(viewport) + 1];
24
57
  const maxWidth = _systemConstants.viewports.map.get(nextViewport);
@@ -2,6 +2,7 @@ import React, { forwardRef } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import View from "react-native-web/dist/exports/View";
4
4
  import ScrollView from "react-native-web/dist/exports/ScrollView";
5
+ import Platform from "react-native-web/dist/exports/Platform";
5
6
  import { useThemeTokens } from '../ThemeProvider';
6
7
  import { a11yProps, getA11yPropsFromHtmlTag, getTokensPropType, layoutTags, selectSystemProps, spacingProps, useSpacingScale, variantProp, viewProps } from '../utils';
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -14,7 +15,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
14
15
  * @typedef {import('../utils/props/spacingProps.js').SpacingOptions} SpacingOptions
15
16
  */
16
17
 
17
- const selectBoxStyles = _ref => {
18
+ const selectBoxStyles = (_ref, customGradient) => {
18
19
  let {
19
20
  backgroundColor,
20
21
  gradient,
@@ -40,7 +41,11 @@ const selectBoxStyles = _ref => {
40
41
  angle,
41
42
  stops: [stopOne, stopTwo]
42
43
  } = gradient;
43
- styles.backgroundImage = `linear-gradient(${angle}deg, ${stopOne.color}, 75% , ${stopTwo.color})`;
44
+ if (Platform.OS === 'web') {
45
+ styles.backgroundImage = `linear-gradient(${angle}deg, ${stopOne.color}, 75%, ${stopTwo.color})`;
46
+ } else if (customGradient && Platform.OS !== 'web') {
47
+ styles.colors = [stopOne.color, stopTwo.color];
48
+ }
44
49
  }
45
50
  const paddings = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'];
46
51
  // Only set on styles if token provided because we spread this object after the spacing scale values
@@ -135,6 +140,7 @@ const Box = /*#__PURE__*/forwardRef((_ref2, ref) => {
135
140
  accessibilityRole,
136
141
  testID,
137
142
  dataSet,
143
+ customGradient,
138
144
  ...rest
139
145
  } = _ref2;
140
146
  const props = {
@@ -149,8 +155,9 @@ const Box = /*#__PURE__*/forwardRef((_ref2, ref) => {
149
155
  paddingRight: useSpacingScale(right),
150
156
  paddingTop: useSpacingScale(top),
151
157
  paddingBottom: useSpacingScale(bottom),
152
- ...selectBoxStyles(themeTokens)
158
+ ...selectBoxStyles(themeTokens, customGradient)
153
159
  };
160
+ const childrenToRender = typeof customGradient === 'function' ? customGradient(styles.colors, styles)(children) : children;
154
161
  if (scroll) {
155
162
  const scrollProps = typeof scroll === 'object' ? scroll : {};
156
163
  scrollProps.contentContainerStyle = [styles, scrollProps.contentContainerStyle];
@@ -160,7 +167,7 @@ const Box = /*#__PURE__*/forwardRef((_ref2, ref) => {
160
167
  testID: testID,
161
168
  dataSet: dataSet,
162
169
  ref: ref,
163
- children: children
170
+ children: childrenToRender
164
171
  });
165
172
  }
166
173
  return /*#__PURE__*/_jsx(View, {
@@ -169,7 +176,7 @@ const Box = /*#__PURE__*/forwardRef((_ref2, ref) => {
169
176
  testID: testID,
170
177
  dataSet: dataSet,
171
178
  ref: ref,
172
- children: children
179
+ children: childrenToRender
173
180
  });
174
181
  });
175
182
  Box.displayName = 'Box';
@@ -253,6 +260,10 @@ Box.propTypes = {
253
260
  /**
254
261
  * Box accepts any content as children.
255
262
  */
256
- children: PropTypes.node.isRequired
263
+ children: PropTypes.node.isRequired,
264
+ /**
265
+ Use this prop if need to add a custom gradient for mobile
266
+ */
267
+ customGradient: PropTypes.func
257
268
  };
258
269
  export default Box;