@tactics/toddle-styleguide 1.7.8 → 1.7.10

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/index.d.ts CHANGED
@@ -64,6 +64,7 @@ import { Count } from './src/components/atoms/count/count.component';
64
64
  import { Amount } from './src/components/molecules/amount/amount.component';
65
65
  import { TimetableEditor } from './src/components/organisms/timetable-editor/timetable-editor.component';
66
66
  import { InlineError } from './src/components/molecules/inline-error/inline-error.component';
67
+ import { InlineNotice } from './src/components/molecules/inline-notice/inline-notice.component';
67
68
  import { BubbleAlignment } from './src/types/bubble-alignment.enum';
68
69
  import { KeyBoardTypes } from './src/types/keyboard-types.enum';
69
70
  import { Size } from './src/types/size.enum';
@@ -75,4 +76,4 @@ import { ToddleDateTime } from './src/utilities/toddle-datetime/toddle-datetime.
75
76
  import { ThemeCtx } from './src/context/theme.context';
76
77
  import { Scale } from './src/theme/scale/index';
77
78
  import CreateResponsiveStyle from './src/theme/responsive/index';
78
- export { AllCapsHeading, Avatar, BackgroundGradient, BlockedMessage, Button, Calendar, CalendarSelect, CancelLink, Check, Checkbox, ChildListItem, ContactItem, ContactRole, DateInput, DaySelect, DefaultSelect, DepartmentLogo, FilterRange, FilterTab, Footer, Heading1, Heading2, Heading3, Heading4, Icon, ImageBubble, IncrementInput, Info, JournalEntry, LanguageButton, Line, LoadingIndicator, Logo, MessageInput, Modal, MoreInfoButton, MyChildListItem, Paragraph, PasswordInput, PersonInfoCard, Pill, Popover, PopOverAction, PressableIcon, QuickFilter, QuickMessage, Search, SelectLink, SelectListItem, SelectPicker, SmallText, Snackbar, SplitContainer, Swipe, TabView, Tag, TextBubble, TextInput, TimeLine, TimePicker, TimeTracker, TinyText, WaveBackground, WideButton, BubbleAlignment, Initials, KeyBoardTypes, Size, ThemeCtx, ToddleDateTime, VisualState, CreateResponsiveStyle, Scale, TimetableEdit, ContextLabel, Count, Amount, TimetableEditor, TimeSlotRecord, TimeSlotSequence, InlineError };
79
+ export { AllCapsHeading, Avatar, BackgroundGradient, BlockedMessage, Button, Calendar, CalendarSelect, CancelLink, Check, Checkbox, ChildListItem, ContactItem, ContactRole, DateInput, DaySelect, DefaultSelect, DepartmentLogo, FilterRange, FilterTab, Footer, Heading1, Heading2, Heading3, Heading4, Icon, ImageBubble, IncrementInput, Info, JournalEntry, LanguageButton, Line, LoadingIndicator, Logo, MessageInput, Modal, MoreInfoButton, MyChildListItem, Paragraph, PasswordInput, PersonInfoCard, Pill, Popover, PopOverAction, PressableIcon, QuickFilter, QuickMessage, Search, SelectLink, SelectListItem, SelectPicker, SmallText, Snackbar, SplitContainer, Swipe, TabView, Tag, TextBubble, TextInput, TimeLine, TimePicker, TimeTracker, TinyText, WaveBackground, WideButton, BubbleAlignment, Initials, KeyBoardTypes, Size, ThemeCtx, ToddleDateTime, VisualState, CreateResponsiveStyle, Scale, TimetableEdit, ContextLabel, Count, Amount, TimetableEditor, TimeSlotRecord, TimeSlotSequence, InlineError, InlineNotice };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tactics/toddle-styleguide",
3
- "version": "1.7.8",
3
+ "version": "1.7.10",
4
4
  "main": "index.tsx",
5
5
  "types": "index.d.ts",
6
6
  "prepublish": "tsc",
@@ -9,6 +9,7 @@ type AvatarProps = {
9
9
  isActive?: boolean;
10
10
  isLoading?: boolean;
11
11
  hasShadow?: boolean;
12
+ isBirthday?: boolean;
12
13
  };
13
- declare const Avatar: ({ source, size, isBlocked, isActive, isLoading, hasShadow, }: AvatarProps) => React.JSX.Element;
14
+ declare const Avatar: ({ source, size, isBlocked, isActive, isLoading, hasShadow, isBirthday }: AvatarProps) => React.JSX.Element;
14
15
  export { Avatar as Avatar };
@@ -14,6 +14,7 @@ import {Size} from '../../../types/size.enum';
14
14
  import {Initials} from '../../../models/initials.model';
15
15
  import {MainGradient} from '../../../gradients/main/main.gradient';
16
16
  import {Heading1, Heading2, Heading3} from '../../atoms/heading-components';
17
+ import { CrownIcon } from '../../../icons/crown.icon';
17
18
 
18
19
  type AvatarProps = {
19
20
  source: ImageSourcePropType | Initials;
@@ -22,6 +23,7 @@ type AvatarProps = {
22
23
  isActive?: boolean;
23
24
  isLoading?: boolean;
24
25
  hasShadow?: boolean;
26
+ isBirthday?: boolean;
25
27
  };
26
28
 
27
29
  const Avatar = ({
@@ -31,10 +33,19 @@ const Avatar = ({
31
33
  isActive = true,
32
34
  isLoading,
33
35
  hasShadow,
36
+ isBirthday
34
37
  }: AvatarProps) => {
35
38
  const Context = useContext(ThemeCtx);
36
39
  const styles = Stylesheet(Context, size, isBlocked, isActive);
37
40
 
41
+ const renderCrown = () => {
42
+ if (isBirthday) {
43
+ return <View style={styles.crownContainer}>
44
+ <CrownIcon />
45
+ </View>
46
+ }
47
+ }
48
+
38
49
  const renderText = (size: Size) => {
39
50
  if (size === Size.SMALL) {
40
51
  return (
@@ -72,6 +83,7 @@ const Avatar = ({
72
83
 
73
84
  return source instanceof Initials ? (
74
85
  <View style={hasShadow ? styles.shadow : null}>
86
+ {renderCrown()}
75
87
  <View style={styles.container}>
76
88
  {isLoading ? (
77
89
  <ActivityIndicator size={'small'} color={Context.colors.ui.white} />
@@ -82,6 +94,7 @@ const Avatar = ({
82
94
  </View>
83
95
  ) : isLoading ? (
84
96
  <View style={hasShadow ? styles.shadow : null}>
97
+ {renderCrown()}
85
98
  <View style={styles.container}>
86
99
  {!isBlocked ? <MainGradient isActive={isActive} /> : null}
87
100
  <View style={{zIndex: 100, position: 'absolute'}}>
@@ -91,6 +104,7 @@ const Avatar = ({
91
104
  </View>
92
105
  ) : (
93
106
  <View style={hasShadow ? styles.shadow : null}>
107
+ {renderCrown()}
94
108
  <View style={styles.container}>
95
109
  {!isBlocked ? <MainGradient isActive={isActive} /> : null}
96
110
  <Image source={source} style={styles.image as ImageStyle} />
@@ -32,10 +32,23 @@ export const AvatarPreview = ({}: {}) => {
32
32
  size={Size.SMALL}
33
33
  source={require('./../../../../assets/components/avatar/baby.png')}
34
34
  />
35
+ <Avatar
36
+ size={Size.SMALL}
37
+ source={Initials.for('John', 'Doe')}
38
+ hasShadow={true}
39
+ isBirthday={true}
40
+ />
41
+ <Avatar
42
+ size={Size.MEDIUM}
43
+ source={Initials.for('John', 'Doe')}
44
+ hasShadow={true}
45
+ isBirthday={true}
46
+ />
35
47
  <Avatar
36
48
  size={Size.LARGE}
37
49
  source={Initials.for('John', 'Doe')}
38
50
  hasShadow={true}
51
+ isBirthday={true}
39
52
  />
40
53
  <Avatar
41
54
  size={Size.MEDIUM}
@@ -1,88 +1,84 @@
1
- export function Stylesheet(
2
- context: any,
3
- size: any,
4
- isBlocked: any,
5
- isActive: any
6
- ):
7
- | StyleSheet.NamedStyles<any>
8
- | StyleSheet.NamedStyles<{
9
- container: (
10
- | {
11
- overflow: string;
12
- backgroundColor: any;
13
- justifyContent: string;
14
- alignItems: string;
15
- width?: undefined;
16
- height?: undefined;
17
- borderRadius?: undefined;
18
- }
19
- | {
20
- width: number;
21
- height: number;
22
- borderRadius: number;
23
- overflow?: undefined;
24
- backgroundColor?: undefined;
25
- justifyContent?: undefined;
26
- alignItems?: undefined;
27
- }
28
- )[];
29
- shadow: (
30
- | {
31
- backgroundColor: string;
32
- shadowColor?: undefined;
33
- shadowOpacity?: undefined;
34
- shadowRadius?: undefined;
35
- shadowOffset?: undefined;
36
- elevation?: undefined;
37
- width?: undefined;
38
- height?: undefined;
39
- borderRadius?: undefined;
40
- }
41
- | {
42
- shadowColor: any;
43
- shadowOpacity: number;
44
- shadowRadius: number;
45
- shadowOffset: {
46
- width: number;
47
- height: number;
48
- };
49
- backgroundColor?: undefined;
50
- elevation?: undefined;
51
- width?: undefined;
52
- height?: undefined;
53
- borderRadius?: undefined;
54
- }
55
- | {
56
- elevation: number;
57
- shadowColor: any;
58
- backgroundColor?: undefined;
59
- shadowOpacity?: undefined;
60
- shadowRadius?: undefined;
61
- shadowOffset?: undefined;
62
- width?: undefined;
63
- height?: undefined;
64
- borderRadius?: undefined;
65
- }
66
- | {
1
+ export function Stylesheet(context: any, size: any, isBlocked: any, isActive: any): StyleSheet.NamedStyles<any> | StyleSheet.NamedStyles<{
2
+ container: ({
3
+ overflow: string;
4
+ backgroundColor: any;
5
+ justifyContent: string;
6
+ alignItems: string;
7
+ width?: undefined;
8
+ height?: undefined;
9
+ borderRadius?: undefined;
10
+ } | {
11
+ width: number;
12
+ height: number;
13
+ borderRadius: number;
14
+ overflow?: undefined;
15
+ backgroundColor?: undefined;
16
+ justifyContent?: undefined;
17
+ alignItems?: undefined;
18
+ })[];
19
+ shadow: ({
20
+ backgroundColor: string;
21
+ shadowColor?: undefined;
22
+ shadowOpacity?: undefined;
23
+ shadowRadius?: undefined;
24
+ shadowOffset?: undefined;
25
+ elevation?: undefined;
26
+ width?: undefined;
27
+ height?: undefined;
28
+ borderRadius?: undefined;
29
+ } | {
30
+ shadowColor: any;
31
+ shadowOpacity: number;
32
+ shadowRadius: number;
33
+ shadowOffset: {
67
34
  width: number;
68
35
  height: number;
69
- borderRadius: number;
70
- backgroundColor?: undefined;
71
- shadowColor?: undefined;
72
- shadowOpacity?: undefined;
73
- shadowRadius?: undefined;
74
- shadowOffset?: undefined;
75
- elevation?: undefined;
76
- }
77
- )[];
78
- image: {
36
+ };
37
+ backgroundColor?: undefined;
38
+ elevation?: undefined;
39
+ width?: undefined;
40
+ height?: undefined;
41
+ borderRadius?: undefined;
42
+ } | {
43
+ elevation: number;
44
+ shadowColor: any;
45
+ backgroundColor?: undefined;
46
+ shadowOpacity?: undefined;
47
+ shadowRadius?: undefined;
48
+ shadowOffset?: undefined;
49
+ width?: undefined;
50
+ height?: undefined;
51
+ borderRadius?: undefined;
52
+ } | {
53
+ width: number;
54
+ height: number;
55
+ borderRadius: number;
56
+ backgroundColor?: undefined;
57
+ shadowColor?: undefined;
58
+ shadowOpacity?: undefined;
59
+ shadowRadius?: undefined;
60
+ shadowOffset?: undefined;
61
+ elevation?: undefined;
62
+ })[];
63
+ image: {
79
64
  position: string;
80
65
  width: string;
81
66
  height: string;
82
67
  borderRadius: number;
83
- }[];
84
- text: {
85
- textTransform: 'uppercase';
86
- };
87
- }>;
88
- import {StyleSheet} from 'react-native/Libraries/StyleSheet/StyleSheet';
68
+ }[];
69
+ text: {
70
+ textTransform: "uppercase";
71
+ };
72
+ crownContainer: ({
73
+ position: string;
74
+ zIndex: number;
75
+ top?: undefined;
76
+ left?: undefined;
77
+ } | {
78
+ top: number;
79
+ left: number;
80
+ position?: undefined;
81
+ zIndex?: undefined;
82
+ })[];
83
+ }>;
84
+ import { StyleSheet } from 'react-native';
@@ -69,4 +69,20 @@ export const Stylesheet = (context, size, isBlocked, isActive) =>
69
69
  text: {
70
70
  textTransform: 'uppercase',
71
71
  },
72
+ crownContainer:[ {
73
+ position: 'absolute',
74
+ zIndex: 999
75
+ },
76
+ size === Size.SMALL && {
77
+ top: -10,
78
+ left: -5,
79
+ },
80
+ size === Size.MEDIUM && {
81
+ top: -6,
82
+ left: 0,
83
+ },
84
+ size === Size.LARGE && {
85
+ top: -2,
86
+ left: 10,
87
+ }]
72
88
  });
@@ -44,7 +44,11 @@ const CalendarSelect = ({
44
44
  }}
45
45
  style={styles.arrowContainer}
46
46
  >
47
- <Icon style={'regular'} name={'chevron-left'} />
47
+ <Icon
48
+ style={'regular'}
49
+ name={'chevron-left'}
50
+ color={context.colors.main['9']}
51
+ />
48
52
  </Pressable>
49
53
 
50
54
  <Pressable
@@ -60,7 +64,7 @@ const CalendarSelect = ({
60
64
  </View>
61
65
  <View>
62
66
  <Paragraph textColor={context.colors.main['9']}>
63
- {visibleDate.toLocaleString(ToddleDateTime.DATE_MED)}
67
+ {visibleDate.toLocaleString({weekday: 'short', day: 'numeric', month: 'short', year: 'numeric'})}
64
68
  </Paragraph>
65
69
  </View>
66
70
  </Pressable>
@@ -71,7 +75,11 @@ const CalendarSelect = ({
71
75
  }}
72
76
  style={styles.arrowContainer}
73
77
  >
74
- <Icon style={'regular'} name={'chevron-right'} />
78
+ <Icon
79
+ style={'regular'}
80
+ name={'chevron-right'}
81
+ color={context.colors.main['9']}
82
+ />
75
83
  </Pressable>
76
84
  </View>
77
85
  );
@@ -9,7 +9,7 @@ export const CalendarSelectPreview = ({}: {}) => {
9
9
  );
10
10
  console.log(date);
11
11
  return (
12
- <View>
12
+ <View style={{alignItems: 'center'}}>
13
13
  <CalendarSelect
14
14
  onPressDate={() => console.log('open modal')}
15
15
  startDate={date}
@@ -1,9 +1,13 @@
1
1
  export function Stylesheet(context: any): {
2
2
  container: {
3
+ width: "auto";
3
4
  color: any;
4
5
  flexDirection: "row";
5
6
  alignItems: "center";
6
- justifyContent: "space-between";
7
+ justifyContent: "center";
8
+ backgroundColor: any;
9
+ borderRadius: number;
10
+ gap: number;
7
11
  };
8
12
  dateContainer: {
9
13
  flexDirection: "row";
@@ -13,7 +17,9 @@ export function Stylesheet(context: any): {
13
17
  paddingBottom: number;
14
18
  paddingLeft: number;
15
19
  paddingRight: number;
20
+ justifyContent: "space-between";
16
21
  alignItems: "center";
22
+ width: number;
17
23
  };
18
24
  arrowContainer: {
19
25
  width: number;
@@ -4,10 +4,14 @@ import {Scale} from '../../../theme/scale/index';
4
4
  export const Stylesheet = (context) =>
5
5
  StyleSheet.create({
6
6
  container: {
7
+ width: 'auto',
7
8
  color: context.colors.ui.white,
8
9
  flexDirection: 'row',
9
10
  alignItems: 'center',
10
- justifyContent: 'space-between',
11
+ justifyContent: 'center',
12
+ backgroundColor: context.colors.main[0],
13
+ borderRadius: Scale.xl,
14
+ gap: Scale.s
11
15
  },
12
16
  dateContainer: {
13
17
  flexDirection: 'row',
@@ -15,9 +19,11 @@ export const Stylesheet = (context) =>
15
19
  borderRadius: Scale.xl,
16
20
  paddingTop: Scale.s,
17
21
  paddingBottom: Scale.s,
18
- paddingLeft: Scale.l,
19
- paddingRight: Scale.l,
22
+ paddingLeft: Scale.m,
23
+ paddingRight: Scale.m,
24
+ justifyContent: 'space-between',
20
25
  alignItems: 'center',
26
+ width: 185
21
27
  },
22
28
  arrowContainer: {
23
29
  width: Scale.xxl,
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ type InlineNoticeProps = {
3
+ label: string;
4
+ };
5
+ declare const InlineNotice: ({ label }: InlineNoticeProps) => React.JSX.Element;
6
+ export { InlineNotice as InlineNotice };
@@ -17,6 +17,7 @@ type ChildListItemProps = {
17
17
  visualStateTimeTracker?: VisualState;
18
18
  tags?: string[];
19
19
  error: boolean;
20
+ isBirthday?: boolean;
20
21
  };
21
- declare const ChildListItem: React.MemoExoticComponent<({ id, name, department, selectable, isSelected, onPressArrow, onPressText, onLongPress, onSelect, sourceAvatar, textTimeTracker, visualStateTimeTracker, tags, error }: ChildListItemProps) => React.JSX.Element>;
22
+ declare const ChildListItem: React.MemoExoticComponent<({ id, name, department, selectable, isSelected, onPressArrow, onPressText, onLongPress, onSelect, sourceAvatar, textTimeTracker, visualStateTimeTracker, tags, error, isBirthday }: ChildListItemProps) => React.JSX.Element>;
22
23
  export { ChildListItem as ChildListItem };
@@ -29,6 +29,7 @@ type ChildListItemProps = {
29
29
  visualStateTimeTracker?: VisualState;
30
30
  tags?: string[];
31
31
  error: boolean;
32
+ isBirthday?: boolean;
32
33
  };
33
34
 
34
35
  const ChildListItem = React.memo(
@@ -46,7 +47,8 @@ const ChildListItem = React.memo(
46
47
  textTimeTracker,
47
48
  visualStateTimeTracker,
48
49
  tags,
49
- error
50
+ error,
51
+ isBirthday
50
52
  }: ChildListItemProps) => {
51
53
  const context = useContext(ThemeCtx);
52
54
  const styles = Stylesheet(isSelected, context);
@@ -95,6 +97,7 @@ const ChildListItem = React.memo(
95
97
  source={sourceAvatar}
96
98
  size={Size.MEDIUM}
97
99
  isLoading={longPressExecuting}
100
+ isBirthday={isBirthday}
98
101
  />
99
102
  <View style={styles.pressableText}>
100
103
  <View style={styles.trackerContainer}>
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare const CrownIcon: () => React.JSX.Element;
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import Svg, {Defs, Image, Pattern, Rect, Use} from 'react-native-svg';
3
+
4
+ export const CrownIcon = () => {
5
+ return (
6
+ <Svg width="32" height="28" viewBox="0 0 32 28" fill="none">
7
+ <Rect width="32" height="27.3231" fill="url(#pattern0)"/>
8
+ <Defs>
9
+ <Pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
10
+ <Use xlinkHref="#image0_226_1363" transform="scale(0.00769231 0.00900901)"/>
11
+ </Pattern>
12
+ <Image id="image0_226_1363" width="130" height="111" xlinkHref="data:image/png;base64,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"/>
13
+ </Defs>
14
+ </Svg>
15
+ );
16
+ };
@@ -9,6 +9,7 @@ export declare class TimeSlotRecord {
9
9
  static fromJson(json: TimeSlotRecordJSON): TimeSlotRecord;
10
10
  static fromEmpty(): TimeSlotRecord;
11
11
  static fromRecord(seq: TimeSlotRecord): TimeSlotRecord;
12
+ isEmpty(): boolean;
12
13
  isComplete(): boolean;
13
14
  toJson(): TimeSlotRecordJSON;
14
15
  }
@@ -12,4 +12,5 @@ export declare class TimeSlotSequence {
12
12
  toJson(): TimeSlotRecord[];
13
13
  addToNextSlot(checkInOutTime: string): void;
14
14
  isComplete(): boolean;
15
+ isEmpty(): boolean;
15
16
  }