@telus-uds/components-base 0.0.2-prerelease.6 → 0.0.2-prerelease.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ultra.cache.json +1 -1
- package/CHANGELOG.md +20 -0
- package/__fixtures__/testTheme.js +424 -37
- package/__tests__/Button/ButtonBase.test.jsx +2 -31
- package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
- package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
- package/__tests__/List/List.test.jsx +60 -0
- package/__tests__/Radio/Radio.test.jsx +87 -0
- package/__tests__/Select/Select.test.jsx +93 -0
- package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
- package/__tests__/Tags/Tags.test.jsx +328 -0
- package/__tests__/TextInput/TextArea.test.jsx +34 -0
- package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +20 -46
- package/jest.config.js +3 -1
- package/lib/Button/Button.js +10 -3
- package/lib/Button/ButtonBase.js +73 -59
- package/lib/Button/ButtonGroup.js +11 -27
- package/lib/Button/ButtonLink.js +5 -0
- package/lib/Checkbox/Checkbox.js +308 -0
- package/lib/Checkbox/CheckboxInput.native.js +6 -0
- package/lib/Checkbox/CheckboxInput.web.js +57 -0
- package/lib/Checkbox/index.js +2 -0
- package/lib/Feedback/Feedback.js +20 -3
- package/lib/Icon/Icon.js +8 -5
- package/lib/Icon/IconText.js +72 -0
- package/lib/Icon/index.js +2 -1
- package/lib/InputSupports/InputSupports.js +90 -0
- package/lib/InputSupports/index.js +2 -0
- package/lib/InputSupports/propTypes.js +55 -0
- package/lib/Link/ChevronLink.js +23 -20
- package/lib/Link/InlinePressable.native.js +78 -0
- package/lib/Link/InlinePressable.web.js +32 -0
- package/lib/Link/Link.js +11 -10
- package/lib/Link/LinkBase.js +62 -123
- package/lib/Link/TextButton.js +20 -9
- package/lib/Link/index.js +2 -1
- package/lib/List/List.js +52 -0
- package/lib/List/ListItem.js +207 -0
- package/lib/List/index.js +2 -0
- package/lib/Pagination/PageButton.js +2 -25
- package/lib/Pagination/SideButton.js +27 -37
- package/lib/Radio/Radio.js +291 -0
- package/lib/Radio/RadioInput.native.js +6 -0
- package/lib/Radio/RadioInput.web.js +59 -0
- package/lib/Radio/index.js +2 -0
- package/lib/Select/Group.native.js +14 -0
- package/lib/Select/Group.web.js +18 -0
- package/lib/Select/Item.native.js +9 -0
- package/lib/Select/Item.web.js +15 -0
- package/lib/Select/Picker.native.js +87 -0
- package/lib/Select/Picker.web.js +63 -0
- package/lib/Select/Select.js +272 -0
- package/lib/Select/index.js +6 -0
- package/lib/Skeleton/Skeleton.js +119 -0
- package/lib/Skeleton/index.js +2 -0
- package/lib/Tags/Tags.js +217 -0
- package/lib/Tags/index.js +2 -0
- package/lib/TextInput/TextArea.js +82 -0
- package/lib/TextInput/TextInput.js +23 -304
- package/lib/TextInput/TextInputBase.js +229 -0
- package/lib/TextInput/index.js +2 -1
- package/lib/TextInput/propTypes.js +31 -0
- package/lib/ThemeProvider/useThemeTokens.js +54 -3
- package/lib/ToggleSwitch/ToggleSwitch.js +1 -1
- package/lib/Typography/Typography.js +4 -19
- package/lib/index.js +8 -1
- package/lib/utils/a11y/index.js +1 -0
- package/lib/utils/a11y/textSize.js +33 -0
- package/lib/utils/index.js +3 -0
- package/lib/utils/info/index.js +7 -0
- package/lib/utils/info/platform/index.js +11 -0
- package/lib/utils/info/platform/platform.android.js +1 -0
- package/lib/utils/info/platform/platform.ios.js +1 -0
- package/lib/utils/info/platform/platform.native.js +4 -0
- package/lib/utils/info/platform/platform.web.js +1 -0
- package/lib/utils/info/versions.js +5 -0
- package/lib/utils/pressability.js +92 -0
- package/lib/utils/propTypes.js +78 -17
- package/package.json +5 -4
- package/release-context.json +4 -4
- package/src/Button/Button.jsx +6 -3
- package/src/Button/ButtonBase.jsx +66 -57
- package/src/Button/ButtonGroup.jsx +9 -22
- package/src/Button/ButtonLink.jsx +11 -2
- package/src/Checkbox/Checkbox.jsx +275 -0
- package/src/Checkbox/CheckboxInput.native.jsx +6 -0
- package/src/Checkbox/CheckboxInput.web.jsx +55 -0
- package/src/Checkbox/index.js +3 -0
- package/src/Feedback/Feedback.jsx +13 -4
- package/src/Icon/Icon.jsx +9 -5
- package/src/Icon/IconText.jsx +63 -0
- package/src/Icon/index.js +2 -1
- package/src/InputSupports/InputSupports.jsx +86 -0
- package/src/InputSupports/index.js +3 -0
- package/src/InputSupports/propTypes.js +44 -0
- package/src/Link/ChevronLink.jsx +20 -17
- package/src/Link/InlinePressable.native.jsx +73 -0
- package/src/Link/InlinePressable.web.jsx +37 -0
- package/src/Link/Link.jsx +17 -13
- package/src/Link/LinkBase.jsx +57 -140
- package/src/Link/TextButton.jsx +25 -11
- package/src/Link/index.js +2 -1
- package/src/List/List.jsx +47 -0
- package/src/List/ListItem.jsx +187 -0
- package/src/List/index.js +3 -0
- package/src/Pagination/PageButton.jsx +2 -16
- package/src/Pagination/SideButton.jsx +23 -34
- package/src/Radio/Radio.jsx +270 -0
- package/src/Radio/RadioInput.native.jsx +6 -0
- package/src/Radio/RadioInput.web.jsx +57 -0
- package/src/Radio/index.js +3 -0
- package/src/Select/Group.native.jsx +14 -0
- package/src/Select/Group.web.jsx +15 -0
- package/src/Select/Item.native.jsx +10 -0
- package/src/Select/Item.web.jsx +11 -0
- package/src/Select/Picker.native.jsx +95 -0
- package/src/Select/Picker.web.jsx +67 -0
- package/src/Select/Select.jsx +265 -0
- package/src/Select/index.js +8 -0
- package/src/Skeleton/Skeleton.jsx +101 -0
- package/src/Skeleton/index.js +3 -0
- package/src/Tags/Tags.jsx +206 -0
- package/src/Tags/index.js +3 -0
- package/src/TextInput/TextArea.jsx +78 -0
- package/src/TextInput/TextInput.jsx +17 -284
- package/src/TextInput/TextInputBase.jsx +220 -0
- package/src/TextInput/index.js +2 -1
- package/src/TextInput/propTypes.js +29 -0
- package/src/ThemeProvider/useThemeTokens.js +54 -3
- package/src/ToggleSwitch/ToggleSwitch.jsx +1 -1
- package/src/Typography/Typography.jsx +4 -15
- package/src/index.js +8 -1
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/textSize.js +30 -0
- package/src/utils/index.js +3 -0
- package/src/utils/info/index.js +8 -0
- package/src/utils/info/platform/index.js +11 -0
- package/src/utils/info/platform/platform.android.js +1 -0
- package/src/utils/info/platform/platform.ios.js +1 -0
- package/src/utils/info/platform/platform.native.js +4 -0
- package/src/utils/info/platform/platform.web.js +1 -0
- package/src/utils/info/versions.js +6 -0
- package/src/utils/pressability.js +92 -0
- package/src/utils/propTypes.js +97 -22
- package/stories/Button/Button.stories.jsx +5 -0
- package/stories/Checkbox/Checkbox.stories.jsx +71 -0
- package/stories/Feedback/Feedback.stories.jsx +5 -6
- package/stories/Link/Link.stories.jsx +15 -1
- package/stories/List/List.stories.jsx +117 -0
- package/stories/Radio/Radio.stories.jsx +113 -0
- package/stories/Select/Select.stories.jsx +55 -0
- package/stories/Skeleton/Skeleton.stories.jsx +36 -0
- package/stories/Tags/Tags.stories.jsx +69 -0
- package/stories/TextInput/TextArea.stories.jsx +100 -0
- package/stories/supports.jsx +1 -1
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
buttonAppearances,
|
|
3
|
-
linkAppearances,
|
|
4
|
-
sideNavItemAppearances,
|
|
5
|
-
toggleSwitchAppearances,
|
|
6
|
-
textInputAppearances,
|
|
7
|
-
feedbackAppearances
|
|
8
|
-
} = require('@telus-uds/tools-theme')
|
|
9
|
-
const { appearances: systemAppearances } = require('@telus-uds/system-constants')
|
|
1
|
+
import { appearances } from '@telus-uds/system-themes/schema'
|
|
10
2
|
|
|
11
3
|
// This is a dev-only file so we don't need to make @telus-uds/palette-allium a dependency.
|
|
12
4
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
@@ -16,11 +8,13 @@ const chevronLeft = require('@telus-uds/palette-allium/build/rn/icons/chevron-le
|
|
|
16
8
|
const chevronRight = require('@telus-uds/palette-allium/build/rn/icons/chevron-right.icon.svg')
|
|
17
9
|
.default
|
|
18
10
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
11
|
+
const checkmarkIcon = require('@telus-uds/palette-allium/build/rn/icons/checkmark.icon.svg').default
|
|
12
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
19
13
|
const questionIcon = require('@telus-uds/palette-allium/build/rn/icons/question.icon.svg').default
|
|
20
14
|
|
|
21
15
|
const transparent = 'rgba(0, 0, 0, 0)'
|
|
22
16
|
|
|
23
|
-
|
|
17
|
+
export default {
|
|
24
18
|
metadata: {
|
|
25
19
|
name: 'test'
|
|
26
20
|
},
|
|
@@ -116,7 +110,9 @@ module.exports = {
|
|
|
116
110
|
values: [true],
|
|
117
111
|
type: 'variant'
|
|
118
112
|
},
|
|
119
|
-
|
|
113
|
+
focus: appearances.Button.focus,
|
|
114
|
+
hover: appearances.Button.hover,
|
|
115
|
+
pressed: appearances.Button.pressed
|
|
120
116
|
},
|
|
121
117
|
tokens: {
|
|
122
118
|
borderColor: '#0e6ac8',
|
|
@@ -133,6 +129,7 @@ module.exports = {
|
|
|
133
129
|
color: '#0e6ac8',
|
|
134
130
|
lineHeight: 1.5,
|
|
135
131
|
fontWeight: '600',
|
|
132
|
+
alignSelf: 'flex-start',
|
|
136
133
|
|
|
137
134
|
backgroundColor: '#ffffff',
|
|
138
135
|
opacity: 1,
|
|
@@ -292,10 +289,73 @@ module.exports = {
|
|
|
292
289
|
},
|
|
293
290
|
ButtonGroup: {
|
|
294
291
|
tokens: {
|
|
295
|
-
|
|
296
|
-
direction: 'row'
|
|
292
|
+
space: 2,
|
|
293
|
+
direction: 'row',
|
|
294
|
+
alignItems: 'flex-start',
|
|
295
|
+
justifyContent: 'flex-start',
|
|
296
|
+
flexGrow: 1
|
|
297
297
|
}
|
|
298
298
|
},
|
|
299
|
+
ButtonGroupItem: {
|
|
300
|
+
appearances: {
|
|
301
|
+
focus: appearances.ButtonGroupItem.focus,
|
|
302
|
+
hover: appearances.ButtonGroupItem.hover,
|
|
303
|
+
pressed: appearances.ButtonGroupItem.pressed,
|
|
304
|
+
selected: appearances.ButtonGroupItem.selected
|
|
305
|
+
},
|
|
306
|
+
tokens: {
|
|
307
|
+
borderColor: '#0e6ac8',
|
|
308
|
+
borderWidth: 2,
|
|
309
|
+
borderRadius: 0,
|
|
310
|
+
shadow: null,
|
|
311
|
+
|
|
312
|
+
outerBorderColor: transparent,
|
|
313
|
+
outerBorderWidth: 4,
|
|
314
|
+
outerBorderGap: 2,
|
|
315
|
+
outerBorderRadius: 2,
|
|
316
|
+
|
|
317
|
+
fontSize: 16,
|
|
318
|
+
color: '#0e6ac8',
|
|
319
|
+
lineHeight: 1.5,
|
|
320
|
+
fontWeight: '600',
|
|
321
|
+
alignSelf: 'flex-start',
|
|
322
|
+
|
|
323
|
+
backgroundColor: '#ffffff',
|
|
324
|
+
opacity: 1,
|
|
325
|
+
paddingLeft: 24,
|
|
326
|
+
paddingRight: 24,
|
|
327
|
+
paddingTop: 8,
|
|
328
|
+
paddingBottom: 8,
|
|
329
|
+
|
|
330
|
+
width: null
|
|
331
|
+
},
|
|
332
|
+
rules: [
|
|
333
|
+
{
|
|
334
|
+
if: { focus: true },
|
|
335
|
+
tokens: {
|
|
336
|
+
borderWidth: 4,
|
|
337
|
+
outerBorderColor: '#0e6ac8',
|
|
338
|
+
opacity: 0.5
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
if: { hover: true },
|
|
343
|
+
tokens: {
|
|
344
|
+
borderWidth: 6
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
if: { pressed: true },
|
|
349
|
+
tokens: {
|
|
350
|
+
borderWidth: 8
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
if: { selected: true },
|
|
355
|
+
tokens: { backgroundColor: '#0e6ac8', color: '#ffffff', opacity: 1 }
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
},
|
|
299
359
|
Card: {
|
|
300
360
|
appearances: {
|
|
301
361
|
background: {
|
|
@@ -306,7 +366,7 @@ module.exports = {
|
|
|
306
366
|
values: ['narrow', 'intermediate', 'compact', 'custom'],
|
|
307
367
|
type: 'variant'
|
|
308
368
|
},
|
|
309
|
-
viewport:
|
|
369
|
+
viewport: appearances.system.viewport
|
|
310
370
|
},
|
|
311
371
|
tokens: {
|
|
312
372
|
backgroundColor: '#ffffff',
|
|
@@ -390,6 +450,70 @@ module.exports = {
|
|
|
390
450
|
}
|
|
391
451
|
]
|
|
392
452
|
},
|
|
453
|
+
Checkbox: {
|
|
454
|
+
appearances: {
|
|
455
|
+
error: appearances.Checkbox.error,
|
|
456
|
+
focus: appearances.Checkbox.focus,
|
|
457
|
+
inactive: appearances.Checkbox.inactive
|
|
458
|
+
},
|
|
459
|
+
tokens: {
|
|
460
|
+
containerBackgroundColor: transparent,
|
|
461
|
+
containerMarginBottom: 8,
|
|
462
|
+
feedbackMarginBottom: 0,
|
|
463
|
+
feedbackMarginTop: 2,
|
|
464
|
+
feedbackPosition: 'bottom',
|
|
465
|
+
icon: checkmarkIcon,
|
|
466
|
+
iconBackgroundColor: '#7c53a5',
|
|
467
|
+
iconColor: '#ffffff',
|
|
468
|
+
iconSize: 18,
|
|
469
|
+
inputBackgroundColor: '#ffffff',
|
|
470
|
+
inputBorderColor: '#676e73',
|
|
471
|
+
inputBorderRadius: 4,
|
|
472
|
+
inputBorderWidth: 1,
|
|
473
|
+
inputHeight: 20,
|
|
474
|
+
inputOutlineColor: null,
|
|
475
|
+
inputOutlineWidth: 0,
|
|
476
|
+
inputShadow: {
|
|
477
|
+
color: '#00000044',
|
|
478
|
+
offsetY: 1,
|
|
479
|
+
offsetX: 1,
|
|
480
|
+
spread: 0,
|
|
481
|
+
blur: 1,
|
|
482
|
+
inset: false
|
|
483
|
+
},
|
|
484
|
+
inputWidth: 20,
|
|
485
|
+
labelColor: '#414547',
|
|
486
|
+
labelFontSize: 18,
|
|
487
|
+
labelFontWeight: '500',
|
|
488
|
+
labelLineHeight: 1.5,
|
|
489
|
+
labelMarginLeft: 8
|
|
490
|
+
},
|
|
491
|
+
rules: [
|
|
492
|
+
{
|
|
493
|
+
if: { error: true },
|
|
494
|
+
tokens: {
|
|
495
|
+
inputBorderColor: '#e12339'
|
|
496
|
+
}
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
if: { focus: true },
|
|
500
|
+
tokens: {
|
|
501
|
+
inputBorderColor: '#7c53a5',
|
|
502
|
+
inputBorderWidth: 3
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
if: { inactive: true },
|
|
507
|
+
tokens: {
|
|
508
|
+
inputBorderColor: 'transparent',
|
|
509
|
+
inputBackgroundColor: '#e3e6e8',
|
|
510
|
+
iconBackgroundColor: '#e3e6e8',
|
|
511
|
+
iconColor: 'rgba(103, 110, 115, 1)',
|
|
512
|
+
labelColor: '#676e73'
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
]
|
|
516
|
+
},
|
|
393
517
|
ChevronLink: {
|
|
394
518
|
appearances: {},
|
|
395
519
|
tokens: {
|
|
@@ -504,7 +628,7 @@ module.exports = {
|
|
|
504
628
|
values: [true],
|
|
505
629
|
type: 'variant'
|
|
506
630
|
},
|
|
507
|
-
viewport:
|
|
631
|
+
viewport: appearances.system.viewport
|
|
508
632
|
},
|
|
509
633
|
tokens: {
|
|
510
634
|
fontWeight: '400',
|
|
@@ -735,7 +859,7 @@ module.exports = {
|
|
|
735
859
|
values: [true],
|
|
736
860
|
type: 'state'
|
|
737
861
|
},
|
|
738
|
-
iconPosition:
|
|
862
|
+
iconPosition: appearances.Link.iconPosition
|
|
739
863
|
},
|
|
740
864
|
tokens: {
|
|
741
865
|
color: '#0000ff',
|
|
@@ -753,9 +877,7 @@ module.exports = {
|
|
|
753
877
|
textLineStyle: 'solid',
|
|
754
878
|
|
|
755
879
|
iconSize: 18,
|
|
756
|
-
|
|
757
|
-
iconGapAfter: 4,
|
|
758
|
-
iconScale: 1
|
|
880
|
+
iconSpace: 1
|
|
759
881
|
},
|
|
760
882
|
rules: [
|
|
761
883
|
{
|
|
@@ -777,14 +899,6 @@ module.exports = {
|
|
|
777
899
|
color: '#ff0000',
|
|
778
900
|
textLine: 'none'
|
|
779
901
|
}
|
|
780
|
-
},
|
|
781
|
-
{
|
|
782
|
-
if: { component: 'ChevronLink', iconPosition: 'left' },
|
|
783
|
-
tokens: { icon: chevronLeft }
|
|
784
|
-
},
|
|
785
|
-
{
|
|
786
|
-
if: { component: 'ChevronLink', iconPosition: 'right' },
|
|
787
|
-
tokens: { icon: chevronRight }
|
|
788
902
|
}
|
|
789
903
|
]
|
|
790
904
|
},
|
|
@@ -834,10 +948,71 @@ module.exports = {
|
|
|
834
948
|
}
|
|
835
949
|
]
|
|
836
950
|
},
|
|
951
|
+
Radio: {
|
|
952
|
+
appearances: {
|
|
953
|
+
checked: appearances.Radio.checked,
|
|
954
|
+
error: appearances.Radio.error,
|
|
955
|
+
focus: appearances.Radio.focus,
|
|
956
|
+
hover: appearances.Radio.hover,
|
|
957
|
+
inactive: appearances.Radio.inactive
|
|
958
|
+
},
|
|
959
|
+
tokens: {
|
|
960
|
+
checkedBackgroundColor: '#7c53a5',
|
|
961
|
+
checkedSize: 12,
|
|
962
|
+
containerBackgroundColor: '#ffffff',
|
|
963
|
+
containerBorderRadius: 12,
|
|
964
|
+
containerMarginBottom: 0,
|
|
965
|
+
containerOpacity: 1,
|
|
966
|
+
containerPaddingBottom: 12,
|
|
967
|
+
containerPaddingLeft: 18,
|
|
968
|
+
containerPaddingRight: 18,
|
|
969
|
+
containerPaddingTop: 12,
|
|
970
|
+
containerShadow: null,
|
|
971
|
+
descriptionFontSize: 14,
|
|
972
|
+
descriptionLineHeight: 1.4,
|
|
973
|
+
descriptionMarginLeft: null,
|
|
974
|
+
inputBackgroundColor: '#ffffff',
|
|
975
|
+
inputBorderColor: '#676e73',
|
|
976
|
+
inputBorderWidth: 1,
|
|
977
|
+
inputOutlineColor: null,
|
|
978
|
+
inputOutlineWidth: 0,
|
|
979
|
+
inputSize: 20,
|
|
980
|
+
inputShadow: null,
|
|
981
|
+
labelColor: '#414547',
|
|
982
|
+
labelFontName: '',
|
|
983
|
+
labelFontSize: 18,
|
|
984
|
+
labelFontWeight: '500',
|
|
985
|
+
labelLineHeight: 1.5,
|
|
986
|
+
labelMarginLeft: 8
|
|
987
|
+
},
|
|
988
|
+
rules: [
|
|
989
|
+
{
|
|
990
|
+
if: { error: true },
|
|
991
|
+
tokens: {
|
|
992
|
+
inputBorderColor: '#e12339'
|
|
993
|
+
}
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
if: { focus: true },
|
|
997
|
+
tokens: {
|
|
998
|
+
inputBorderColor: '#7c53a5',
|
|
999
|
+
inputBorderWidth: 3
|
|
1000
|
+
}
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
if: { inactive: true },
|
|
1004
|
+
tokens: {
|
|
1005
|
+
inputBorderColor: 'transparent',
|
|
1006
|
+
inputBackgroundColor: '#e3e6e8',
|
|
1007
|
+
labelColor: '#676e73'
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
]
|
|
1011
|
+
},
|
|
837
1012
|
SideNav: {},
|
|
838
1013
|
SideNavItem: {
|
|
839
1014
|
appearances: {
|
|
840
|
-
|
|
1015
|
+
type: appearances.SideNavItem.type
|
|
841
1016
|
},
|
|
842
1017
|
rules: [
|
|
843
1018
|
{
|
|
@@ -856,11 +1031,11 @@ module.exports = {
|
|
|
856
1031
|
},
|
|
857
1032
|
ToggleSwitch: {
|
|
858
1033
|
appearances: {
|
|
859
|
-
focus:
|
|
860
|
-
hover:
|
|
861
|
-
pressed:
|
|
862
|
-
inactive:
|
|
863
|
-
selected:
|
|
1034
|
+
focus: appearances.ToggleSwitch.focus,
|
|
1035
|
+
hover: appearances.ToggleSwitch.hover,
|
|
1036
|
+
pressed: appearances.ToggleSwitch.pressed,
|
|
1037
|
+
inactive: appearances.ToggleSwitch.inactive,
|
|
1038
|
+
selected: appearances.ToggleSwitch.selected
|
|
864
1039
|
},
|
|
865
1040
|
tokens: {
|
|
866
1041
|
outerBorderColor: '#000000',
|
|
@@ -877,6 +1052,7 @@ module.exports = {
|
|
|
877
1052
|
paddingRight: 2,
|
|
878
1053
|
paddingTop: 2,
|
|
879
1054
|
paddingBottom: 2,
|
|
1055
|
+
alignSelf: 'flex-start',
|
|
880
1056
|
|
|
881
1057
|
trackBorderWidth: 2,
|
|
882
1058
|
trackBorderColor: '#bbbbbb',
|
|
@@ -931,7 +1107,10 @@ module.exports = {
|
|
|
931
1107
|
},
|
|
932
1108
|
TextInput: {
|
|
933
1109
|
appearances: {
|
|
934
|
-
|
|
1110
|
+
validation: appearances.TextInput.validation,
|
|
1111
|
+
focus: appearances.TextInput.focus,
|
|
1112
|
+
hover: appearances.TextInput.hover,
|
|
1113
|
+
inactive: appearances.TextInput.inactive
|
|
935
1114
|
},
|
|
936
1115
|
tokens: {
|
|
937
1116
|
borderRadius: 4,
|
|
@@ -987,7 +1166,7 @@ module.exports = {
|
|
|
987
1166
|
},
|
|
988
1167
|
Feedback: {
|
|
989
1168
|
appearances: {
|
|
990
|
-
|
|
1169
|
+
validation: appearances.Feedback.validation
|
|
991
1170
|
},
|
|
992
1171
|
tokens: {
|
|
993
1172
|
borderColor: '#eee',
|
|
@@ -1001,8 +1180,156 @@ module.exports = {
|
|
|
1001
1180
|
paddingRight: 12
|
|
1002
1181
|
},
|
|
1003
1182
|
rules: [
|
|
1004
|
-
{ if: {
|
|
1005
|
-
{ if: {
|
|
1183
|
+
{ if: { validation: 'success' }, tokens: { color: 'green' } },
|
|
1184
|
+
{ if: { validation: 'error' }, tokens: { color: 'red' } }
|
|
1185
|
+
]
|
|
1186
|
+
},
|
|
1187
|
+
List: {
|
|
1188
|
+
appearances: {
|
|
1189
|
+
size: {
|
|
1190
|
+
values: ['large', 'small'],
|
|
1191
|
+
type: 'variant'
|
|
1192
|
+
},
|
|
1193
|
+
compact: {
|
|
1194
|
+
values: [true],
|
|
1195
|
+
type: 'variant'
|
|
1196
|
+
}
|
|
1197
|
+
},
|
|
1198
|
+
tokens: {
|
|
1199
|
+
interItemMargin: 8,
|
|
1200
|
+
interItemMarginWithDivider: 16,
|
|
1201
|
+
dividerColor: '#666666',
|
|
1202
|
+
dividerSize: 1,
|
|
1203
|
+
itemBulletContainerWidth: 16,
|
|
1204
|
+
itemBulletContainerAlign: 'center',
|
|
1205
|
+
itemBulletWidth: 4,
|
|
1206
|
+
itemBulletHeight: 4,
|
|
1207
|
+
itemBulletColor: '#6666cc',
|
|
1208
|
+
itemIconSize: 16,
|
|
1209
|
+
itemIconColor: '#6666cc',
|
|
1210
|
+
listGutter: 10,
|
|
1211
|
+
itemLineHeight: 1.5
|
|
1212
|
+
},
|
|
1213
|
+
rules: [
|
|
1214
|
+
{
|
|
1215
|
+
if: { size: 'large' },
|
|
1216
|
+
tokens: {
|
|
1217
|
+
itemFontSize: 20,
|
|
1218
|
+
itemLineHeight: 1.6,
|
|
1219
|
+
listGutter: 16
|
|
1220
|
+
}
|
|
1221
|
+
},
|
|
1222
|
+
{
|
|
1223
|
+
if: { size: 'small' },
|
|
1224
|
+
tokens: {
|
|
1225
|
+
itemFontSize: 14,
|
|
1226
|
+
itemLineHeight: 1.42857142857,
|
|
1227
|
+
listGutter: 10
|
|
1228
|
+
}
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
if: { compact: true },
|
|
1232
|
+
tokens: {
|
|
1233
|
+
itemLineHeight: 1.25
|
|
1234
|
+
}
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
if: { compact: true, size: 'small' },
|
|
1238
|
+
tokens: {
|
|
1239
|
+
itemLineHeight: 1.14285714286
|
|
1240
|
+
}
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
if: { compact: true, size: 'large' },
|
|
1244
|
+
tokens: {
|
|
1245
|
+
itemLineHeight: 1.2
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
]
|
|
1249
|
+
},
|
|
1250
|
+
Tags: {
|
|
1251
|
+
space: 2,
|
|
1252
|
+
direction: 'row',
|
|
1253
|
+
alignItems: 'flex-start',
|
|
1254
|
+
justifyContent: 'flex-start',
|
|
1255
|
+
flexGrow: 1
|
|
1256
|
+
},
|
|
1257
|
+
TagsItem: {
|
|
1258
|
+
appearances: {
|
|
1259
|
+
focus: appearances.ButtonGroupItem.focus,
|
|
1260
|
+
hover: appearances.ButtonGroupItem.hover,
|
|
1261
|
+
pressed: appearances.ButtonGroupItem.pressed,
|
|
1262
|
+
selected: appearances.ButtonGroupItem.selected
|
|
1263
|
+
},
|
|
1264
|
+
tokens: {
|
|
1265
|
+
icon: checkmarkIcon,
|
|
1266
|
+
iconSize: 16,
|
|
1267
|
+
iconColor: '#ffffff',
|
|
1268
|
+
iconTranslateX: 0,
|
|
1269
|
+
iconTranslateY: 0,
|
|
1270
|
+
|
|
1271
|
+
iconPosition: 'right',
|
|
1272
|
+
iconSpace: 2,
|
|
1273
|
+
iconBackground: '#ffffff',
|
|
1274
|
+
iconBorderRadius: 0,
|
|
1275
|
+
iconAlignSelf: 'center',
|
|
1276
|
+
iconPadding: 0,
|
|
1277
|
+
|
|
1278
|
+
borderColor: '#0e6ac8',
|
|
1279
|
+
borderWidth: 2,
|
|
1280
|
+
borderRadius: 0,
|
|
1281
|
+
shadow: null,
|
|
1282
|
+
|
|
1283
|
+
outerBorderColor: transparent,
|
|
1284
|
+
outerBorderWidth: 4,
|
|
1285
|
+
outerBorderGap: 2,
|
|
1286
|
+
outerBorderRadius: 2,
|
|
1287
|
+
|
|
1288
|
+
fontSize: 16,
|
|
1289
|
+
color: '#0e6ac8',
|
|
1290
|
+
lineHeight: 1.5,
|
|
1291
|
+
fontWeight: '600',
|
|
1292
|
+
alignSelf: 'flex-start',
|
|
1293
|
+
|
|
1294
|
+
backgroundColor: '#ffffff',
|
|
1295
|
+
opacity: 1,
|
|
1296
|
+
paddingLeft: 24,
|
|
1297
|
+
paddingRight: 24,
|
|
1298
|
+
paddingTop: 8,
|
|
1299
|
+
paddingBottom: 8,
|
|
1300
|
+
|
|
1301
|
+
width: null
|
|
1302
|
+
},
|
|
1303
|
+
rules: [
|
|
1304
|
+
{
|
|
1305
|
+
if: { focus: true },
|
|
1306
|
+
tokens: {
|
|
1307
|
+
borderWidth: 4,
|
|
1308
|
+
outerBorderColor: '#0e6ac8',
|
|
1309
|
+
opacity: 0.5
|
|
1310
|
+
}
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
if: { hover: true },
|
|
1314
|
+
tokens: {
|
|
1315
|
+
borderWidth: 6
|
|
1316
|
+
}
|
|
1317
|
+
},
|
|
1318
|
+
{
|
|
1319
|
+
if: { pressed: true },
|
|
1320
|
+
tokens: {
|
|
1321
|
+
borderWidth: 8
|
|
1322
|
+
}
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
if: { selected: true },
|
|
1326
|
+
tokens: {
|
|
1327
|
+
backgroundColor: '#0e6ac8',
|
|
1328
|
+
color: '#ffffff',
|
|
1329
|
+
opacity: 1,
|
|
1330
|
+
iconBackground: '#0e6ac8'
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1006
1333
|
]
|
|
1007
1334
|
},
|
|
1008
1335
|
Tooltip: {
|
|
@@ -1022,6 +1349,66 @@ module.exports = {
|
|
|
1022
1349
|
iconColor: 'black',
|
|
1023
1350
|
iconSize: 16
|
|
1024
1351
|
}
|
|
1352
|
+
},
|
|
1353
|
+
TextArea: {},
|
|
1354
|
+
InputSupports: {},
|
|
1355
|
+
Skeleton: {
|
|
1356
|
+
tokens: {
|
|
1357
|
+
color: '#b2b9bf',
|
|
1358
|
+
radius: 100,
|
|
1359
|
+
size: 3,
|
|
1360
|
+
baseWidth: 40,
|
|
1361
|
+
characters: 10,
|
|
1362
|
+
spaceBetweenLines: 2,
|
|
1363
|
+
squareRadius: 4
|
|
1364
|
+
}
|
|
1365
|
+
},
|
|
1366
|
+
Select: {
|
|
1367
|
+
tokens: {
|
|
1368
|
+
borderRadius: 4,
|
|
1369
|
+
borderWidth: 1,
|
|
1370
|
+
borderColor: '#00000044',
|
|
1371
|
+
paddingTop: 6,
|
|
1372
|
+
paddingBottom: 6,
|
|
1373
|
+
paddingLeft: 6,
|
|
1374
|
+
paddingRight: 6,
|
|
1375
|
+
outerBorderWidth: 1,
|
|
1376
|
+
outerBorderColor: transparent,
|
|
1377
|
+
outerBorderRadius: 4
|
|
1378
|
+
},
|
|
1379
|
+
rules: [
|
|
1380
|
+
{
|
|
1381
|
+
if: { validation: 'success' },
|
|
1382
|
+
tokens: {
|
|
1383
|
+
outerBorderColor: '#99ff99'
|
|
1384
|
+
}
|
|
1385
|
+
},
|
|
1386
|
+
{
|
|
1387
|
+
if: { validation: 'error' },
|
|
1388
|
+
tokens: {
|
|
1389
|
+
outerBorderColor: '#990000'
|
|
1390
|
+
}
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
if: { focus: true },
|
|
1394
|
+
tokens: {
|
|
1395
|
+
outerBorderColor: '#debc06'
|
|
1396
|
+
}
|
|
1397
|
+
},
|
|
1398
|
+
{
|
|
1399
|
+
if: { hover: true },
|
|
1400
|
+
tokens: {
|
|
1401
|
+
outerBorderColor: '#6666cc'
|
|
1402
|
+
}
|
|
1403
|
+
},
|
|
1404
|
+
{
|
|
1405
|
+
if: { inactive: true },
|
|
1406
|
+
tokens: {
|
|
1407
|
+
outerBorderColor: transparent,
|
|
1408
|
+
backgroundColor: '#00000044'
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1411
|
+
]
|
|
1025
1412
|
}
|
|
1026
1413
|
}
|
|
1027
1414
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
1
|
import React from 'react'
|
|
3
2
|
import { render } from '@testing-library/react-native'
|
|
4
3
|
import { Platform, Text } from 'react-native'
|
|
@@ -9,41 +8,13 @@ import ButtonBase from '../../src/Button/ButtonBase'
|
|
|
9
8
|
|
|
10
9
|
beforeEach(() => jest.clearAllMocks())
|
|
11
10
|
|
|
12
|
-
describe('ButtonBase', () => {
|
|
13
|
-
it('throws if both href and onPress are provided', async () => {
|
|
14
|
-
jest.spyOn(console, 'error').mockImplementation()
|
|
15
|
-
expect(() =>
|
|
16
|
-
render(
|
|
17
|
-
<Theme>
|
|
18
|
-
<ButtonBase href="example.com" onPress={jest.fn()}>
|
|
19
|
-
click me
|
|
20
|
-
</ButtonBase>
|
|
21
|
-
</Theme>
|
|
22
|
-
)
|
|
23
|
-
).toThrow()
|
|
24
|
-
expect(console.error).toHaveBeenCalledTimes(1)
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
it('throws if neither href nor onPress are provided', async () => {
|
|
28
|
-
jest.spyOn(console, 'error').mockImplementation()
|
|
29
|
-
expect(() =>
|
|
30
|
-
render(
|
|
31
|
-
<Theme>
|
|
32
|
-
<ButtonBase>click me</ButtonBase>
|
|
33
|
-
</Theme>
|
|
34
|
-
)
|
|
35
|
-
).toThrow()
|
|
36
|
-
expect(console.error).toHaveBeenCalledTimes(1)
|
|
37
|
-
})
|
|
38
|
-
})
|
|
39
|
-
|
|
40
11
|
describe('ButtonBase with render function child', () => {
|
|
41
|
-
it('receives
|
|
12
|
+
it('receives tokens in render function child', () => {
|
|
42
13
|
const { tokens } = testTheme.components.Button
|
|
43
14
|
const arbitraryWeight = '300'
|
|
44
15
|
const { getByText } = render(
|
|
45
16
|
<Theme>
|
|
46
|
-
<ButtonBase onPress={() => {}} tokens={{ fontWeight: arbitraryWeight }}>
|
|
17
|
+
<ButtonBase onPress={() => {}} tokens={{ ...tokens, fontWeight: arbitraryWeight }}>
|
|
47
18
|
{({ textStyles }) => <Text style={textStyles}>Function child</Text>}
|
|
48
19
|
</ButtonBase>
|
|
49
20
|
</Theme>
|