@vlprojects-chat/chat 0.0.48 → 0.0.49

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 (54) hide show
  1. package/dist/components/MessageInput/MessageInput.d.ts +8 -0
  2. package/dist/components/MessageInput/index.d.ts +1 -8
  3. package/dist/components/PollStatusBadge/PollStatusBadge.d.ts +8 -0
  4. package/dist/components/PollStatusBadge/index.d.ts +1 -0
  5. package/dist/containers/CreatePollPage/services.d.ts +0 -2
  6. package/dist/containers/CreatePollPage/types.d.ts +3 -1
  7. package/dist/containers/PollListPage/PollListPage.d.ts +3 -3
  8. package/dist/containers/PollListPage/components/PollAction/PollAction.d.ts +3 -2
  9. package/dist/containers/{PollResultDetailPage/components/PollDetailOpenEnded → PollListPage/components/PollAction}/styles.d.ts +1 -1
  10. package/dist/containers/PollListPage/components/PollCard/PollCard.d.ts +5 -5
  11. package/dist/containers/PollListPage/components/TemplateList/TemplateList.d.ts +3 -0
  12. package/dist/containers/PollListPage/components/TemplateList/index.d.ts +1 -0
  13. package/dist/containers/PollListPage/services.d.ts +17 -3
  14. package/dist/containers/PollModeratorResultPage/PollModeratorResultPage.d.ts +3 -0
  15. package/dist/containers/PollModeratorResultPage/components/ActionButton/ActionButton.d.ts +10 -0
  16. package/dist/containers/PollModeratorResultPage/components/ActionButton/index.d.ts +1 -0
  17. package/dist/containers/PollModeratorResultPage/components/OptionRow/OptionRow.d.ts +7 -0
  18. package/dist/containers/PollModeratorResultPage/components/OptionRow/index.d.ts +1 -0
  19. package/dist/containers/PollModeratorResultPage/components/OptionRowOpenEnded/OptionRowOpenEnded.d.ts +7 -0
  20. package/dist/containers/PollModeratorResultPage/components/OptionRowOpenEnded/index.d.ts +1 -0
  21. package/dist/containers/PollModeratorResultPage/components/OptionRowWrapper/OptionRowWrapper.d.ts +3 -0
  22. package/dist/containers/PollModeratorResultPage/components/OptionRowWrapper/index.d.ts +1 -0
  23. package/dist/containers/PollModeratorResultPage/components/PollModeratorResultCard/PollModeratorResultCard.d.ts +7 -0
  24. package/dist/containers/PollModeratorResultPage/components/PollModeratorResultCard/index.d.ts +1 -0
  25. package/dist/containers/PollModeratorResultPage/index.d.ts +1 -0
  26. package/dist/containers/PollPortal/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  27. package/dist/containers/PollPortal/components/{Textarea/Textarea.d.ts → OpenEnded/OpenEnded.d.ts} +2 -2
  28. package/dist/containers/PollPortal/components/OpenEnded/index.d.ts +1 -0
  29. package/dist/containers/PollPortal/components/{Textarea → OpenEnded}/styles.d.ts +0 -0
  30. package/dist/containers/PollPortal/components/OptionBox/OptionBox.d.ts +10 -0
  31. package/dist/containers/PollPortal/components/OptionBox/index.d.ts +1 -0
  32. package/dist/containers/PollPortal/components/PollVariant/PollVariant.d.ts +2 -2
  33. package/dist/containers/PollPortal/components/SubmitPollButton/SubmitPollButton.d.ts +8 -0
  34. package/dist/containers/PollPortal/components/SubmitPollButton/index.d.ts +1 -0
  35. package/dist/containers/PollResultOpenEndedDetailPage/PollResultOpenEndedDetailPage.d.ts +3 -0
  36. package/dist/containers/PollResultOpenEndedDetailPage/index.d.ts +1 -0
  37. package/dist/containers/{PollResultDetailPage → PollResultOpenEndedDetailPage}/styles.d.ts +0 -0
  38. package/dist/index.es.js +31 -32
  39. package/dist/index.js +29 -30
  40. package/dist/keystone/chat/channel.d.ts +10 -5
  41. package/dist/keystone/chat/poll.d.ts +14 -4
  42. package/dist/keystone/settings.d.ts +4 -1
  43. package/dist/keystone/ui.d.ts +8 -3
  44. package/dist/locales/index.d.ts +16 -2
  45. package/dist/routes.d.ts +2 -1
  46. package/dist/theme/consts.d.ts +4 -2
  47. package/dist/ui-kit/icons/PollMessageIcon.d.ts +10 -0
  48. package/dist/utils/helper.d.ts +3 -0
  49. package/package.json +1 -1
  50. package/dist/containers/PollPortal/components/Textarea/index.d.ts +0 -1
  51. package/dist/containers/PollResultDetailPage/PollResultDetailPage.d.ts +0 -3
  52. package/dist/containers/PollResultDetailPage/components/PollDetailOpenEnded/PollDetailOpenEnded.d.ts +0 -7
  53. package/dist/containers/PollResultDetailPage/components/PollDetailOpenEnded/index.d.ts +0 -1
  54. package/dist/containers/PollResultDetailPage/index.d.ts +0 -1
@@ -14,7 +14,7 @@ declare const Channel_base: import("mobx-keystone")._Model<unknown, {
14
14
  messages: import("mobx-keystone").OptionalModelProp<import("mobx-keystone").ObjectMap<Message>>;
15
15
  users: import("mobx-keystone").OptionalModelProp<import("mobx-keystone").ObjectMap<Ref<User>>>;
16
16
  polls: import("mobx-keystone").OptionalModelProp<Poll[]>;
17
- activePoll: import("mobx-keystone").OptionalModelProp<Ref<Poll> | undefined>;
17
+ activePoll: import("mobx-keystone").ModelProp<Ref<Poll> | undefined, Ref<Poll> | null | undefined, Ref<Poll> | undefined, Ref<Poll> | null | undefined, string, false, string>;
18
18
  pinnedMessages: import("mobx-keystone").OptionalModelProp<PinnedMessage[]>;
19
19
  }, import("mobx-keystone").SnapshotInOfObject<import("mobx-keystone").ModelPropsToCreationData<{
20
20
  name: import("mobx-keystone").OptionalModelProp<string>;
@@ -24,7 +24,7 @@ declare const Channel_base: import("mobx-keystone")._Model<unknown, {
24
24
  messages: import("mobx-keystone").OptionalModelProp<import("mobx-keystone").ObjectMap<Message>>;
25
25
  users: import("mobx-keystone").OptionalModelProp<import("mobx-keystone").ObjectMap<Ref<User>>>;
26
26
  polls: import("mobx-keystone").OptionalModelProp<Poll[]>;
27
- activePoll: import("mobx-keystone").OptionalModelProp<Ref<Poll> | undefined>;
27
+ activePoll: import("mobx-keystone").ModelProp<Ref<Poll> | undefined, Ref<Poll> | null | undefined, Ref<Poll> | undefined, Ref<Poll> | null | undefined, string, false, string>;
28
28
  pinnedMessages: import("mobx-keystone").OptionalModelProp<PinnedMessage[]>;
29
29
  }>>, import("mobx-keystone").SnapshotOutOfObject<import("mobx-keystone").ModelPropsToData<{
30
30
  name: import("mobx-keystone").OptionalModelProp<string>;
@@ -34,7 +34,7 @@ declare const Channel_base: import("mobx-keystone")._Model<unknown, {
34
34
  messages: import("mobx-keystone").OptionalModelProp<import("mobx-keystone").ObjectMap<Message>>;
35
35
  users: import("mobx-keystone").OptionalModelProp<import("mobx-keystone").ObjectMap<Ref<User>>>;
36
36
  polls: import("mobx-keystone").OptionalModelProp<Poll[]>;
37
- activePoll: import("mobx-keystone").OptionalModelProp<Ref<Poll> | undefined>;
37
+ activePoll: import("mobx-keystone").ModelProp<Ref<Poll> | undefined, Ref<Poll> | null | undefined, Ref<Poll> | undefined, Ref<Poll> | null | undefined, string, false, string>;
38
38
  pinnedMessages: import("mobx-keystone").OptionalModelProp<PinnedMessage[]>;
39
39
  }>>>;
40
40
  export default class Channel extends Channel_base {
@@ -42,15 +42,18 @@ export default class Channel extends Channel_base {
42
42
  setPollList(items: IServerPoll[]): void;
43
43
  addPoll(poll: IServerPoll): Poll;
44
44
  deletePoll(poll: Poll): void;
45
- startPoll(poll: Poll): void;
45
+ startPoll(poll?: Poll): void;
46
46
  setPollVoted(payload: string[], options: IServerPollOption[]): void;
47
47
  updateVotesCounter(ids: number[]): void;
48
- stopPoll(poll: Poll): void;
48
+ stopPoll(poll?: Poll): void;
49
49
  closePollPortal(): void;
50
50
  pollResult(poll: Poll): void;
51
51
  setPinnedMessages(items: IRPinnedMessage[]): void;
52
52
  cleanAllMessages(): void;
53
53
  deleteMessages(ids: number[]): void;
54
+ getLastPollByTemplateId(templateId?: string): Poll | undefined;
55
+ findPollById(pollId?: string): Poll | undefined;
56
+ getPollListByTemplateId(templatePoll?: Poll): Poll[] | undefined;
54
57
  get sortedMessages(): Message[];
55
58
  findLastMessageForUser(msgIdx: number): Message | undefined;
56
59
  get lastMessage(): Message | undefined;
@@ -59,6 +62,8 @@ export default class Channel extends Channel_base {
59
62
  get getActivePoll(): Poll | undefined;
60
63
  get getPinnedMessages(): PinnedMessage[];
61
64
  get lastPinnedMessage(): PinnedMessage;
65
+ get getPollTemplates(): Poll[];
66
+ get getPollList(): Poll[];
62
67
  findMessageIdx(messageId: number): number;
63
68
  }
64
69
  export {};
@@ -1,4 +1,4 @@
1
- import { IServerPollOption } from '../../containers/CreatePollPage/types';
1
+ import { IServerPollOption, IServerPollVote } from '../../containers/CreatePollPage/types';
2
2
  import { IPollStatus } from '../../types/types';
3
3
  declare const Poll_base: import("mobx-keystone")._Model<unknown, {
4
4
  id: import("mobx-keystone").MaybeOptionalModelProp<string>;
@@ -9,7 +9,10 @@ declare const Poll_base: import("mobx-keystone")._Model<unknown, {
9
9
  options: import("mobx-keystone").OptionalModelProp<IServerPollOption[]>;
10
10
  validOptions: import("mobx-keystone").OptionalModelProp<string[]>;
11
11
  templateId: import("mobx-keystone").MaybeOptionalModelProp<number | null | undefined>;
12
- status: import("mobx-keystone").OptionalModelProp<IPollStatus>;
12
+ createdAt: import("mobx-keystone").MaybeOptionalModelProp<string>;
13
+ stoppedAt: import("mobx-keystone").MaybeOptionalModelProp<string>;
14
+ status: import("mobx-keystone").ModelProp<IPollStatus, IPollStatus | null | undefined, IPollStatus, IPollStatus | null | undefined, string, false, string>;
15
+ votes: import("mobx-keystone").MaybeOptionalModelProp<IServerPollVote[]>;
13
16
  }, import("mobx-keystone").SnapshotInOfObject<import("mobx-keystone").ModelPropsToCreationData<{
14
17
  id: import("mobx-keystone").MaybeOptionalModelProp<string>;
15
18
  question: import("mobx-keystone").OptionalModelProp<string>;
@@ -19,7 +22,10 @@ declare const Poll_base: import("mobx-keystone")._Model<unknown, {
19
22
  options: import("mobx-keystone").OptionalModelProp<IServerPollOption[]>;
20
23
  validOptions: import("mobx-keystone").OptionalModelProp<string[]>;
21
24
  templateId: import("mobx-keystone").MaybeOptionalModelProp<number | null | undefined>;
22
- status: import("mobx-keystone").OptionalModelProp<IPollStatus>;
25
+ createdAt: import("mobx-keystone").MaybeOptionalModelProp<string>;
26
+ stoppedAt: import("mobx-keystone").MaybeOptionalModelProp<string>;
27
+ status: import("mobx-keystone").ModelProp<IPollStatus, IPollStatus | null | undefined, IPollStatus, IPollStatus | null | undefined, string, false, string>;
28
+ votes: import("mobx-keystone").MaybeOptionalModelProp<IServerPollVote[]>;
23
29
  }>>, import("mobx-keystone").SnapshotOutOfObject<import("mobx-keystone").ModelPropsToData<{
24
30
  id: import("mobx-keystone").MaybeOptionalModelProp<string>;
25
31
  question: import("mobx-keystone").OptionalModelProp<string>;
@@ -29,9 +35,13 @@ declare const Poll_base: import("mobx-keystone")._Model<unknown, {
29
35
  options: import("mobx-keystone").OptionalModelProp<IServerPollOption[]>;
30
36
  validOptions: import("mobx-keystone").OptionalModelProp<string[]>;
31
37
  templateId: import("mobx-keystone").MaybeOptionalModelProp<number | null | undefined>;
32
- status: import("mobx-keystone").OptionalModelProp<IPollStatus>;
38
+ createdAt: import("mobx-keystone").MaybeOptionalModelProp<string>;
39
+ stoppedAt: import("mobx-keystone").MaybeOptionalModelProp<string>;
40
+ status: import("mobx-keystone").ModelProp<IPollStatus, IPollStatus | null | undefined, IPollStatus, IPollStatus | null | undefined, string, false, string>;
41
+ votes: import("mobx-keystone").MaybeOptionalModelProp<IServerPollVote[]>;
33
42
  }>>>;
34
43
  export default class Poll extends Poll_base {
44
+ changeStatus(status: IPollStatus): void;
35
45
  }
36
46
  export declare const pollRef: import("mobx-keystone").RefConstructor<Poll>;
37
47
  export {};
@@ -8,6 +8,7 @@ declare const Settings_base: import("mobx-keystone")._Model<unknown, {
8
8
  displayChannelList: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
9
9
  displaySystemMessages: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
10
10
  displayHeader: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
11
+ displayFooter: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
11
12
  socketUrl: import("mobx-keystone").ModelProp<string, string | null | undefined, string, string | null | undefined, string, false, string>;
12
13
  }, import("mobx-keystone").SnapshotInOfObject<import("mobx-keystone").ModelPropsToCreationData<{
13
14
  createChannelAllowed: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
@@ -19,6 +20,7 @@ declare const Settings_base: import("mobx-keystone")._Model<unknown, {
19
20
  displayChannelList: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
20
21
  displaySystemMessages: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
21
22
  displayHeader: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
23
+ displayFooter: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
22
24
  socketUrl: import("mobx-keystone").ModelProp<string, string | null | undefined, string, string | null | undefined, string, false, string>;
23
25
  }>>, import("mobx-keystone").SnapshotOutOfObject<import("mobx-keystone").ModelPropsToData<{
24
26
  createChannelAllowed: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
@@ -30,10 +32,11 @@ declare const Settings_base: import("mobx-keystone")._Model<unknown, {
30
32
  displayChannelList: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
31
33
  displaySystemMessages: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
32
34
  displayHeader: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
35
+ displayFooter: import("mobx-keystone").ModelProp<boolean, boolean | null | undefined, boolean, boolean | null | undefined, string, false, string>;
33
36
  socketUrl: import("mobx-keystone").ModelProp<string, string | null | undefined, string, string | null | undefined, string, false, string>;
34
37
  }>>>;
35
38
  export default class Settings extends Settings_base {
36
- setAll({ createChannelAllowed, accessUnregisteredUsers, accessChatGuest, accessRegister, displayDirect, displayUserList, displayChannelList, displaySystemMessages, displayHeader, socketUrl, }: Record<string, any>): void;
39
+ setAll({ createChannelAllowed, accessUnregisteredUsers, accessChatGuest, accessRegister, displayDirect, displayUserList, displayChannelList, displaySystemMessages, displayHeader, displayFooter, socketUrl, }: Record<string, any>): void;
37
40
  get authMode(): number;
38
41
  }
39
42
  export {};
@@ -1,15 +1,20 @@
1
+ interface IParams {
2
+ id?: string;
3
+ pollId?: string;
4
+ [key: string]: unknown;
5
+ }
1
6
  declare const UI_base: import("mobx-keystone")._Model<unknown, {
2
7
  route: import("mobx-keystone").OptionalModelProp<string>;
3
8
  channelId: import("mobx-keystone").ModelProp<string, string | null | undefined, string, string | null | undefined, string, false, string>;
4
- params: import("mobx-keystone").ModelProp<Record<string, unknown>, Record<string, unknown> | null | undefined, Record<string, unknown>, Record<string, unknown> | null | undefined, string, false, string>;
9
+ params: import("mobx-keystone").ModelProp<IParams, IParams | null | undefined, IParams, IParams | null | undefined, string, false, string>;
5
10
  }, import("mobx-keystone").SnapshotInOfObject<import("mobx-keystone").ModelPropsToCreationData<{
6
11
  route: import("mobx-keystone").OptionalModelProp<string>;
7
12
  channelId: import("mobx-keystone").ModelProp<string, string | null | undefined, string, string | null | undefined, string, false, string>;
8
- params: import("mobx-keystone").ModelProp<Record<string, unknown>, Record<string, unknown> | null | undefined, Record<string, unknown>, Record<string, unknown> | null | undefined, string, false, string>;
13
+ params: import("mobx-keystone").ModelProp<IParams, IParams | null | undefined, IParams, IParams | null | undefined, string, false, string>;
9
14
  }>>, import("mobx-keystone").SnapshotOutOfObject<import("mobx-keystone").ModelPropsToData<{
10
15
  route: import("mobx-keystone").OptionalModelProp<string>;
11
16
  channelId: import("mobx-keystone").ModelProp<string, string | null | undefined, string, string | null | undefined, string, false, string>;
12
- params: import("mobx-keystone").ModelProp<Record<string, unknown>, Record<string, unknown> | null | undefined, Record<string, unknown>, Record<string, unknown> | null | undefined, string, false, string>;
17
+ params: import("mobx-keystone").ModelProp<IParams, IParams | null | undefined, IParams, IParams | null | undefined, string, false, string>;
13
18
  }>>>;
14
19
  export default class UI extends UI_base {
15
20
  jumpToMessage: (index: number) => void;
@@ -20,7 +20,7 @@ declare const _default: {
20
20
  dontHaveAccount: string;
21
21
  signUp: string;
22
22
  enterPassword: string;
23
- signUpinTheChat: string;
23
+ signUpInTheChat: string;
24
24
  alreadyHaveAccount: string;
25
25
  name: string;
26
26
  password: string;
@@ -84,7 +84,14 @@ declare const _default: {
84
84
  edit: string;
85
85
  delete: string;
86
86
  templates: string;
87
+ join: string;
87
88
  addOptionsNumber: string;
89
+ "poll.answers": string;
90
+ "your.reply": string;
91
+ "poll.results": string;
92
+ done: string;
93
+ in_progress: string;
94
+ new: string;
88
95
  };
89
96
  ru: {
90
97
  loadingSocket: string;
@@ -107,7 +114,7 @@ declare const _default: {
107
114
  dontHaveAccount: string;
108
115
  signUp: string;
109
116
  enterPassword: string;
110
- signUpinTheChat: string;
117
+ signUpInTheChat: string;
111
118
  alreadyHaveAccount: string;
112
119
  name: string;
113
120
  password: string;
@@ -170,7 +177,14 @@ declare const _default: {
170
177
  edit: string;
171
178
  delete: string;
172
179
  templates: string;
180
+ join: string;
173
181
  addOptionsNumber: string;
182
+ "poll.answers": string;
183
+ "your.reply": string;
184
+ "poll.results": string;
185
+ done: string;
186
+ in_progress: string;
187
+ new: string;
174
188
  };
175
189
  };
176
190
  export default _default;
package/dist/routes.d.ts CHANGED
@@ -7,6 +7,7 @@ declare enum Routes {
7
7
  Users = "users",
8
8
  Polls = "polls",
9
9
  CreatePoll = "create_poll",
10
- PollResultDetail = "poll_result_detail"
10
+ PollResultDetail = "poll_result_detail",
11
+ PollResultOpenEndedDetail = "poll_result_open_ended_detail"
11
12
  }
12
13
  export default Routes;
@@ -29,17 +29,19 @@ export declare const COLOURS: {
29
29
  POLL_TEXT_SECONDARY: string;
30
30
  SURFACE_PRIMARY: string;
31
31
  SURFACE_SECONDARY: string;
32
- MESSAGE_DATE_COLOR_OWN: string;
33
32
  MESSAGE_DATE_COLOR: string;
34
33
  BG_FOR_SLOT: string;
34
+ LIGHT: string;
35
35
  LIGHT_01: string;
36
36
  LIGHT_02: string;
37
37
  LIGHT_03: string;
38
38
  LIGHT_04: string;
39
39
  LIGHT_05: string;
40
- BLUE_01: string;
41
40
  BLUE_02: string;
42
41
  BLUE: string;
42
+ GREEN: string;
43
+ ORANGE: string;
44
+ ERROR: string;
43
45
  AVATAR1_BURGUNDY: string;
44
46
  AVATAR2_RED: string;
45
47
  AVATAR3_DARK_PINK: string;
@@ -0,0 +1,10 @@
1
+ import { CSSProperties, ReactElement } from 'react';
2
+ interface IProps {
3
+ className?: string;
4
+ width?: number;
5
+ height?: number;
6
+ fill?: string;
7
+ style?: CSSProperties;
8
+ }
9
+ declare const _default: (props: IProps) => ReactElement;
10
+ export default _default;
@@ -1 +1,4 @@
1
+ import Poll from 'keystone/chat/poll';
1
2
  export declare const getLeadingLetters: (name: string, count?: number) => string;
3
+ export declare const getPollType: (poll?: Poll | undefined) => 'poll' | 'test' | 'pollOpenEnded' | undefined;
4
+ export declare const sortPollDesc: (a: Poll, b: Poll) => number;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vlprojects-chat/chat",
3
3
  "author": "vlprojects",
4
- "version": "0.0.48",
4
+ "version": "0.0.49",
5
5
  "description": "chat",
6
6
  "license": "ISC",
7
7
  "main": "dist/index.js",
@@ -1 +0,0 @@
1
- export { default } from './Textarea';
@@ -1,3 +0,0 @@
1
- import { FC } from 'react';
2
- declare const PollResultDetailPage: FC;
3
- export default PollResultDetailPage;
@@ -1,7 +0,0 @@
1
- import { FC } from 'react';
2
- import { IServerPollVote } from '../../../CreatePollPage/types';
3
- interface IProps {
4
- vote: IServerPollVote;
5
- }
6
- declare const PollDetailOpenEnded: FC<IProps>;
7
- export default PollDetailOpenEnded;
@@ -1 +0,0 @@
1
- export { default } from './PollDetailOpenEnded';
@@ -1 +0,0 @@
1
- export { default } from './PollResultDetailPage';