allaw-ui 0.0.347 → 0.0.352

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 (129) hide show
  1. package/dist/components/atoms/buttons/ActionCircleButton.d.ts +9 -0
  2. package/dist/components/atoms/buttons/ActionCircleButton.js +23 -0
  3. package/dist/components/atoms/buttons/AgendaSlot.d.ts +10 -0
  4. package/dist/components/atoms/buttons/AgendaSlot.js +7 -0
  5. package/dist/components/atoms/buttons/FavoriteToggle.d.ts +8 -0
  6. package/dist/components/atoms/buttons/FavoriteToggle.js +11 -0
  7. package/dist/components/atoms/buttons/FilterButton.d.ts +9 -0
  8. package/dist/components/atoms/buttons/FilterButton.js +9 -0
  9. package/dist/components/atoms/buttons/FilterButtonPrimary.d.ts +9 -0
  10. package/dist/components/atoms/buttons/FilterButtonPrimary.js +46 -0
  11. package/dist/components/atoms/buttons/GhostButton.d.ts +14 -0
  12. package/dist/components/atoms/buttons/GhostButton.js +11 -0
  13. package/dist/components/atoms/buttons/IconButton.d.ts +10 -0
  14. package/dist/components/atoms/buttons/IconButton.js +14 -0
  15. package/dist/components/atoms/buttons/OAuthProviderButton.d.ts +12 -0
  16. package/dist/components/atoms/buttons/OAuthProviderButton.js +143 -0
  17. package/dist/components/atoms/buttons/PendingDocuments.d.ts +10 -0
  18. package/dist/components/atoms/buttons/PendingDocuments.js +13 -0
  19. package/dist/components/atoms/buttons/PrimaryButton.d.ts +16 -0
  20. package/dist/components/atoms/buttons/PrimaryButton.js +34 -0
  21. package/dist/components/atoms/buttons/SecondaryButton.d.ts +14 -0
  22. package/dist/components/atoms/buttons/SecondaryButton.js +11 -0
  23. package/dist/components/atoms/buttons/TabNavigation.d.ts +13 -0
  24. package/dist/components/atoms/buttons/TabNavigation.js +10 -0
  25. package/dist/components/atoms/buttons/TertiaryButton.d.ts +10 -0
  26. package/dist/components/atoms/buttons/TertiaryButton.js +10 -0
  27. package/dist/components/atoms/buttons/index.d.ts +22 -0
  28. package/dist/components/atoms/buttons/index.js +11 -0
  29. package/dist/components/atoms/checkboxes/Checkbox.d.ts +13 -0
  30. package/dist/components/atoms/checkboxes/Checkbox.js +19 -0
  31. package/dist/components/atoms/checkboxes/index.d.ts +2 -0
  32. package/dist/components/atoms/checkboxes/index.js +1 -0
  33. package/dist/components/atoms/filter/Filter.d.ts +17 -0
  34. package/dist/components/atoms/filter/Filter.js +70 -0
  35. package/dist/components/atoms/filter/index.d.ts +2 -0
  36. package/dist/components/atoms/filter/index.js +1 -0
  37. package/dist/components/atoms/filters/SingleFilter.css +172 -0
  38. package/dist/components/atoms/filters/SingleFilter.d.ts +17 -0
  39. package/dist/components/atoms/filters/SingleFilter.js +70 -0
  40. package/dist/components/atoms/filters/index.d.ts +2 -0
  41. package/dist/components/atoms/filters/index.js +1 -0
  42. package/dist/components/atoms/inputs/Input.d.ts +22 -0
  43. package/dist/components/atoms/inputs/Input.js +86 -0
  44. package/dist/components/atoms/inputs/SearchBar.d.ts +12 -0
  45. package/dist/components/atoms/inputs/SearchBar.js +20 -0
  46. package/dist/components/atoms/inputs/index.d.ts +4 -0
  47. package/dist/components/atoms/inputs/index.js +2 -0
  48. package/dist/components/atoms/progressBars/ProgressBar.d.ts +15 -0
  49. package/dist/components/atoms/progressBars/ProgressBar.js +17 -0
  50. package/dist/components/atoms/progressBars/index.d.ts +2 -0
  51. package/dist/components/atoms/progressBars/index.js +1 -0
  52. package/dist/components/atoms/radios/RadioButton.d.ts +11 -0
  53. package/dist/components/atoms/radios/RadioButton.js +10 -0
  54. package/dist/components/atoms/radios/index.d.ts +2 -0
  55. package/dist/components/atoms/radios/index.js +1 -0
  56. package/dist/components/atoms/selects/Select.d.ts +24 -0
  57. package/dist/components/atoms/selects/Select.js +84 -0
  58. package/dist/components/atoms/selects/index.d.ts +2 -0
  59. package/dist/components/atoms/selects/index.js +1 -0
  60. package/dist/components/atoms/tags/AppointementStatusTag.d.ts +8 -0
  61. package/dist/components/atoms/tags/AppointementStatusTag.js +41 -0
  62. package/dist/components/atoms/tags/FolderStatusTag.d.ts +7 -0
  63. package/dist/components/atoms/tags/FolderStatusTag.js +8 -0
  64. package/dist/components/atoms/tags/OtherStatusTag.d.ts +10 -0
  65. package/dist/components/atoms/tags/OtherStatusTag.js +10 -0
  66. package/dist/components/atoms/tags/index.d.ts +6 -0
  67. package/dist/components/atoms/tags/index.js +3 -0
  68. package/dist/components/atoms/typography/Heading.d.ts +10 -0
  69. package/dist/components/atoms/typography/Heading.js +7 -0
  70. package/dist/components/atoms/typography/Paragraph.d.ts +12 -0
  71. package/dist/components/atoms/typography/Paragraph.js +24 -0
  72. package/dist/components/atoms/typography/SmallTitle.d.ts +9 -0
  73. package/dist/components/atoms/typography/SmallTitle.js +7 -0
  74. package/dist/components/atoms/typography/Subtitle.d.ts +9 -0
  75. package/dist/components/atoms/typography/Subtitle.js +7 -0
  76. package/dist/components/atoms/typography/TinyInfo.d.ts +12 -0
  77. package/dist/components/atoms/typography/TinyInfo.js +15 -0
  78. package/dist/components/atoms/typography/index.d.ts +10 -0
  79. package/dist/components/atoms/typography/index.js +5 -0
  80. package/dist/components/atoms/uiVariables/BorderRadius.d.ts +6 -0
  81. package/dist/components/atoms/uiVariables/BorderRadius.js +12 -0
  82. package/dist/components/atoms/uiVariables/Shadows.d.ts +6 -0
  83. package/dist/components/atoms/uiVariables/Shadows.js +11 -0
  84. package/dist/components/atoms/uiVariables/Strokes.d.ts +6 -0
  85. package/dist/components/atoms/uiVariables/Strokes.js +10 -0
  86. package/dist/components/atoms/uiVariables/index.d.ts +3 -0
  87. package/dist/components/atoms/uiVariables/index.js +3 -0
  88. package/dist/components/molecules/appointmentSlot/AppointmentSlot.d.ts +25 -0
  89. package/dist/components/molecules/appointmentSlot/AppointmentSlot.js +109 -0
  90. package/dist/components/molecules/appointmentSlot/index.d.ts +2 -0
  91. package/dist/components/molecules/appointmentSlot/index.js +1 -0
  92. package/dist/components/molecules/breadcrumb/Breadcrumb.d.ts +12 -0
  93. package/dist/components/molecules/breadcrumb/Breadcrumb.js +12 -0
  94. package/dist/components/molecules/breadcrumb/index.d.ts +2 -0
  95. package/dist/components/molecules/breadcrumb/index.js +1 -0
  96. package/dist/components/molecules/caseCard/CaseCard.d.ts +14 -0
  97. package/dist/components/molecules/caseCard/CaseCard.js +20 -0
  98. package/dist/components/molecules/caseCard/index.d.ts +2 -0
  99. package/dist/components/molecules/caseCard/index.js +1 -0
  100. package/dist/components/molecules/checkboxForm/CheckboxForm.d.ts +16 -0
  101. package/dist/components/molecules/checkboxForm/CheckboxForm.js +24 -0
  102. package/dist/components/molecules/checkboxForm/index.d.ts +2 -0
  103. package/dist/components/molecules/checkboxForm/index.js +1 -0
  104. package/dist/components/molecules/contactCard/ContactCard.d.ts +17 -0
  105. package/dist/components/molecules/contactCard/ContactCard.js +80 -0
  106. package/dist/components/molecules/contactCard/index.d.ts +2 -0
  107. package/dist/components/molecules/contactCard/index.js +1 -0
  108. package/dist/components/molecules/documentCard/DocumentCard.d.ts +14 -0
  109. package/dist/components/molecules/documentCard/DocumentCard.js +59 -0
  110. package/dist/components/molecules/documentCard/index.d.ts +2 -0
  111. package/dist/components/molecules/documentCard/index.js +1 -0
  112. package/dist/components/molecules/employeeCard/EmployeeCard.d.ts +15 -0
  113. package/dist/components/molecules/employeeCard/EmployeeCard.js +34 -0
  114. package/dist/components/molecules/employeeCard/index.d.ts +2 -0
  115. package/dist/components/molecules/employeeCard/index.js +1 -0
  116. package/dist/components/molecules/proCard/ProCard.d.ts +13 -0
  117. package/dist/components/molecules/proCard/ProCard.js +25 -0
  118. package/dist/components/molecules/proCard/index.d.ts +2 -0
  119. package/dist/components/molecules/proCard/index.js +1 -0
  120. package/dist/components/molecules/stepper/Stepper.d.ts +27 -0
  121. package/dist/components/molecules/stepper/Stepper.js +68 -0
  122. package/dist/components/molecules/stepper/index.d.ts +2 -0
  123. package/dist/components/molecules/stepper/index.js +1 -0
  124. package/dist/index.d.ts +41 -0
  125. package/dist/index.js +60 -0
  126. package/dist/utils/regex.d.ts +5 -0
  127. package/dist/utils/regex.js +7 -0
  128. package/package.json +2 -1
  129. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import "./CaseCard.css";
3
+ import OtherStatusTag from "../../atoms/tags/OtherStatusTag";
4
+ var CaseCard = function (_a) {
5
+ var clientName = _a.clientName, title = _a.title, nextAppointment = _a.nextAppointment, categories = _a.categories, variant = _a.variant;
6
+ return (React.createElement("div", { className: "case-card-wrapper case-card-".concat(variant) },
7
+ React.createElement("div", { className: "case-card-content" },
8
+ React.createElement("div", { className: "case-card-header" },
9
+ React.createElement("span", { className: "case-card-client-name" }, clientName),
10
+ React.createElement("h2", { className: variant === "desktop"
11
+ ? "case-card-title"
12
+ : "case-card-title-extended" }, title)),
13
+ React.createElement("div", { className: "case-card-categories" }, categories.map(function (category, index) { return (React.createElement(OtherStatusTag, { key: index, label: category, type: "readonly" })); }))),
14
+ nextAppointment && variant !== "archived" && (React.createElement("div", { className: "case-card-next-appointment" },
15
+ React.createElement("span", { className: "case-card-next-appointment-label" }, "Prochain RDV"),
16
+ variant === "desktop" ? (React.createElement(React.Fragment, null,
17
+ React.createElement("span", { className: "case-card-next-appointment-date" }, nextAppointment.date),
18
+ React.createElement("span", { className: "case-card-next-appointment-time" }, nextAppointment.time))) : (React.createElement("span", { className: "case-card-next-appointment-date-only" }, nextAppointment.date))))));
19
+ };
20
+ export default CaseCard;
@@ -0,0 +1,2 @@
1
+ export { default as CaseCard } from "./CaseCard";
2
+ export type { CaseCardProps } from "./CaseCard";
@@ -0,0 +1 @@
1
+ export { default as CaseCard } from "./CaseCard";
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import { ParagraphProps } from "../../atoms/typography/Paragraph";
3
+ import "./CheckboxForm.css";
4
+ export interface CheckboxFormProps {
5
+ checked?: boolean;
6
+ onChange?: (checked: boolean) => void;
7
+ color?: ParagraphProps["color"];
8
+ label?: React.ReactNode;
9
+ isRequired?: boolean;
10
+ linkText?: string;
11
+ linkUrl?: string;
12
+ size?: "default" | "small";
13
+ style?: "default" | "light";
14
+ }
15
+ declare const CheckboxForm: React.FC<CheckboxFormProps>;
16
+ export default CheckboxForm;
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import Checkbox from "../../atoms/checkboxes/Checkbox";
3
+ import Paragraph from "../../atoms/typography/Paragraph";
4
+ import "./CheckboxForm.css";
5
+ var CheckboxForm = function (_a) {
6
+ var _b = _a.checked, checked = _b === void 0 ? false : _b, onChange = _a.onChange, _c = _a.color, color = _c === void 0 ? "noir" : _c, label = _a.label, _d = _a.isRequired, isRequired = _d === void 0 ? false : _d, linkText = _a.linkText, linkUrl = _a.linkUrl, _e = _a.size, size = _e === void 0 ? "default" : _e, _f = _a.style, style = _f === void 0 ? "default" : _f;
7
+ var checkboxId = "checkbox-".concat(Math.random().toString(36).substr(2, 9));
8
+ var handleCheckboxChange = function (checked) {
9
+ if (onChange) {
10
+ onChange(checked);
11
+ }
12
+ };
13
+ var checkboxColor = style === "light" ? "light" : color;
14
+ return (React.createElement("div", { className: "checkbox-form checkbox-form-".concat(checkboxColor, " ").concat(size === "small" ? "checkbox-form-small" : "") },
15
+ React.createElement(Checkbox, { id: checkboxId, checked: checked, onChange: handleCheckboxChange, color: checkboxColor, size: size, style: style }),
16
+ label && (React.createElement("label", { htmlFor: checkboxId, className: "checkbox-form-label-container" },
17
+ React.createElement(Paragraph, { variant: "semiBold", color: color, text: React.createElement(React.Fragment, null,
18
+ React.createElement("span", null, label),
19
+ linkText && linkUrl && (React.createElement("a", { href: linkUrl, target: "_blank", rel: "noopener noreferrer", className: "checkbox-form-link", onClick: function (e) { return e.stopPropagation(); } }, linkText))), size: size }),
20
+ isRequired && (React.createElement("span", { className: "checkbox-form-required" },
21
+ "\u00A0",
22
+ "*"))))));
23
+ };
24
+ export default CheckboxForm;
@@ -0,0 +1,2 @@
1
+ export { default as CheckboxForm } from "./CheckboxForm";
2
+ export type { CheckboxFormProps } from "./CheckboxForm";
@@ -0,0 +1 @@
1
+ export { default as CheckboxForm } from "./CheckboxForm";
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import "./ContactCard.css";
3
+ export interface ContactCardProps {
4
+ size: "small" | "medium" | "large" | "editable";
5
+ name: string;
6
+ birthDate: string;
7
+ avatarUrl: string;
8
+ status: string;
9
+ address: string;
10
+ phone: string;
11
+ email: string;
12
+ isEditable: boolean;
13
+ onEdit: () => void;
14
+ gender: "male" | "female";
15
+ }
16
+ declare const ContactCard: React.FC<ContactCardProps>;
17
+ export default ContactCard;
@@ -0,0 +1,80 @@
1
+ import React from "react";
2
+ import "./ContactCard.css";
3
+ import OtherStatusTag from "../../atoms/tags/OtherStatusTag";
4
+ import IconButton from "../../atoms/buttons/IconButton";
5
+ import Image from "next/image";
6
+ var NoPhoto = "/assets/NoPhoto.png";
7
+ var ContactCard = function (_a) {
8
+ var size = _a.size, name = _a.name, birthDate = _a.birthDate, avatarUrl = _a.avatarUrl, status = _a.status, address = _a.address, phone = _a.phone, email = _a.email, onEdit = _a.onEdit, gender = _a.gender;
9
+ var renderContent = function () {
10
+ switch (size) {
11
+ case "small":
12
+ return (React.createElement("div", { className: "contact-card-content" },
13
+ React.createElement("div", { className: "profile-picture-container" },
14
+ React.createElement(Image, { src: avatarUrl || NoPhoto, alt: name, width: 64, height: 64, className: "avatar" })),
15
+ React.createElement("div", { className: "contact-info" },
16
+ React.createElement("h3", { className: "contact-name" }, name),
17
+ React.createElement("p", { className: "contact-details" },
18
+ React.createElement("span", null, gender === "male" ? "M" : "F"),
19
+ React.createElement("span", { className: "gender-separator" }),
20
+ React.createElement("span", null, birthDate)))));
21
+ case "medium":
22
+ return (React.createElement("div", { className: "contact-card-content" },
23
+ React.createElement("div", { className: "profile-picture-container" },
24
+ React.createElement(Image, { src: avatarUrl || NoPhoto, alt: name, width: 72, height: 72, className: "avatar" })),
25
+ React.createElement("div", { className: "contact-info" },
26
+ React.createElement("h3", { className: "contact-name" }, name),
27
+ React.createElement("p", { className: "contact-details" },
28
+ React.createElement("span", null, gender === "male" ? "M" : "F"),
29
+ React.createElement("span", { className: "gender-separator" }),
30
+ React.createElement("span", null, birthDate))),
31
+ React.createElement("div", { className: "status-container" },
32
+ React.createElement(OtherStatusTag, { label: status, type: "readonly" }))));
33
+ case "large":
34
+ return (React.createElement(React.Fragment, null,
35
+ React.createElement("div", { className: "profile-picture-container" },
36
+ React.createElement(Image, { src: avatarUrl || NoPhoto, alt: name, width: 94, height: 94, className: "avatar" })),
37
+ React.createElement("div", { className: "content-container" },
38
+ React.createElement("div", null,
39
+ React.createElement("h3", { className: "contact-name" }, name),
40
+ React.createElement("p", { className: "contact-details" },
41
+ React.createElement("span", null, gender === "male" ? "M" : "F"),
42
+ React.createElement("span", { className: "gender-separator" }),
43
+ React.createElement("span", null, birthDate))),
44
+ React.createElement("div", { className: "contact-additional-info" },
45
+ React.createElement("div", { className: "contact-address-container" },
46
+ React.createElement("p", { className: "info-label" }, "ADRESSE"),
47
+ React.createElement("p", { className: "info-value" }, address)),
48
+ React.createElement("div", { className: "contact-telephone-email-container" },
49
+ React.createElement("p", { className: "info-label" }, "CONTACT"),
50
+ React.createElement("p", { className: "info-value" },
51
+ React.createElement("span", { className: "contact-phone" }, phone)),
52
+ React.createElement("p", { className: "info-value" },
53
+ React.createElement("span", { className: "contact-phone" }, email))))),
54
+ React.createElement("div", { className: "status-container" },
55
+ React.createElement(OtherStatusTag, { label: status, type: "readonly" }))));
56
+ case "editable":
57
+ return (React.createElement(React.Fragment, null,
58
+ React.createElement("div", { className: "content-container" },
59
+ React.createElement("div", { className: "name-tag-container" },
60
+ React.createElement("h3", { className: "contact-name" }, name),
61
+ React.createElement(OtherStatusTag, { label: status, type: "readonly" })),
62
+ React.createElement("div", { className: "info-container" },
63
+ React.createElement("div", { className: "info-item" },
64
+ React.createElement("i", { className: "allaw-icon-user info-icon" }),
65
+ React.createElement("span", { className: "info-text" },
66
+ gender === "male" ? "Client" : "Cliente",
67
+ " de l'\u00E9tude")),
68
+ React.createElement("div", { className: "telephone-email-items" },
69
+ React.createElement("div", { className: "info-item" },
70
+ React.createElement("i", { className: "allaw-icon-phone info-icon" }),
71
+ React.createElement("span", { className: "info-text contact" }, phone)),
72
+ React.createElement("div", { className: "info-item" },
73
+ React.createElement("i", { className: "allaw-icon-mail info-icon" }),
74
+ React.createElement("span", { className: "info-text contact" }, email))))),
75
+ React.createElement(IconButton, { style: "largeFilled", iconName: "allaw-icon-edit-2", onClick: onEdit })));
76
+ }
77
+ };
78
+ return React.createElement("div", { className: "contact-card ".concat(size) }, renderContent());
79
+ };
80
+ export default ContactCard;
@@ -0,0 +1,2 @@
1
+ export { default as ContactCard } from "./ContactCard";
2
+ export type { ContactCardProps } from "./ContactCard";
@@ -0,0 +1 @@
1
+ export { default as ContactCard } from "./ContactCard";
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import "./DocumentCard.css";
3
+ export interface DocumentCardProps {
4
+ type: "document" | "note" | "invoice" | "waiting";
5
+ title: string;
6
+ date: Date;
7
+ status: "sent" | "received";
8
+ documents?: {
9
+ [key: string]: boolean;
10
+ };
11
+ documentCount?: string;
12
+ }
13
+ declare const DocumentCard: React.FC<DocumentCardProps>;
14
+ export default DocumentCard;
@@ -0,0 +1,59 @@
1
+ import React from "react";
2
+ import "./DocumentCard.css";
3
+ import IconButton from "../../atoms/buttons/IconButton";
4
+ import OtherStatusTag from "../../atoms/tags/OtherStatusTag";
5
+ var DocumentCard = function (_a) {
6
+ var type = _a.type, title = _a.title, date = _a.date, status = _a.status, _b = _a.documents, documents = _b === void 0 ? {} : _b, _c = _a.documentCount, documentCount = _c === void 0 ? "" : _c;
7
+ var getIconName = function () {
8
+ switch (type) {
9
+ case "document":
10
+ return "allaw-icon-edit-2";
11
+ case "note":
12
+ return "allaw-icon-document";
13
+ case "invoice":
14
+ return "allaw-icon-file";
15
+ case "waiting":
16
+ return "allaw-icon-clock";
17
+ default:
18
+ return "allaw-icon-document";
19
+ }
20
+ };
21
+ var getDisplayType = function (type) {
22
+ if (type === "invoice") {
23
+ return "FACTURE";
24
+ }
25
+ return type.toUpperCase();
26
+ };
27
+ var formatDate = function (date) {
28
+ return date.toLocaleDateString("fr-FR", {
29
+ day: "2-digit",
30
+ month: "2-digit",
31
+ year: "2-digit",
32
+ });
33
+ };
34
+ if (type === "waiting") {
35
+ var documentList = Object.keys(documents);
36
+ return (React.createElement("div", { className: "document-card waiting" },
37
+ React.createElement("div", { className: "document-card-left" },
38
+ React.createElement(OtherStatusTag, { type: "information", label: "Documents demand\u00E9s pour ce rendez-vous" }),
39
+ React.createElement("h3", { className: "document-card-title" }, title),
40
+ React.createElement("div", { className: "document-list" },
41
+ React.createElement("ul", null, documentList.map(function (doc, index) { return (React.createElement("li", { key: index, className: "document-label" },
42
+ React.createElement("span", { className: "document-bullet" }),
43
+ " ",
44
+ doc)); })))),
45
+ React.createElement("div", { className: "document-card-right" },
46
+ React.createElement(IconButton, { style: "smallFilled", iconName: "allaw-icon-document" }),
47
+ React.createElement("span", { className: "document-count" }, documentCount))));
48
+ }
49
+ return (React.createElement("div", { className: "document-card" },
50
+ React.createElement("div", { className: "document-card-left" },
51
+ React.createElement(IconButton, { style: "largeFilled", iconName: getIconName() }),
52
+ React.createElement("div", { className: "document-card-info" },
53
+ React.createElement("span", { className: "document-card-type" }, getDisplayType(type)),
54
+ React.createElement("h3", { className: "document-card-title" }, title),
55
+ React.createElement("span", { className: "document-card-date" }, formatDate(date)))),
56
+ React.createElement("div", { className: "document-card-right" },
57
+ React.createElement(OtherStatusTag, { type: "information", label: status === "sent" ? "ENVOYÉ" : "REÇU" }))));
58
+ };
59
+ export default DocumentCard;
@@ -0,0 +1,2 @@
1
+ export { default as DocumentCard } from "./DocumentCard";
2
+ export type { DocumentCardProps } from "./DocumentCard";
@@ -0,0 +1 @@
1
+ export { default as DocumentCard } from "./DocumentCard";
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import "./EmployeeCard.css";
3
+ export interface EmployeeCardProps {
4
+ name: string;
5
+ role: string;
6
+ contactNumber: string;
7
+ email1: string;
8
+ email2: string;
9
+ profileImage: string;
10
+ isVerified: boolean;
11
+ size: "small" | "large";
12
+ onEdit: () => void;
13
+ }
14
+ declare const EmployeeCard: React.FC<EmployeeCardProps>;
15
+ export default EmployeeCard;
@@ -0,0 +1,34 @@
1
+ import React from "react";
2
+ import "./EmployeeCard.css";
3
+ import OtherStatusTag from "../../atoms/tags/OtherStatusTag";
4
+ import IconButton from "../../atoms/buttons/IconButton";
5
+ import Image from "next/image";
6
+ var NoPhoto = "/assets/NoPhoto.png";
7
+ var EmployeeCard = function (_a) {
8
+ var name = _a.name, role = _a.role, contactNumber = _a.contactNumber, email1 = _a.email1, email2 = _a.email2, profileImage = _a.profileImage, isVerified = _a.isVerified, size = _a.size, onEdit = _a.onEdit;
9
+ var renderProfileImage = function () { return (React.createElement("div", { className: "profile-image-container" },
10
+ React.createElement(Image, { src: profileImage || NoPhoto, alt: name, width: size === "small" ? 64 : 94, height: size === "small" ? 64 : 94, className: "profile-image" }),
11
+ isVerified && (React.createElement("span", { className: "verified-icon allaw-icon-verified" })))); };
12
+ var renderNameAndRole = function () { return (React.createElement("div", { className: "name-tag-container" },
13
+ React.createElement("h3", { className: "name" }, name),
14
+ React.createElement("div", { className: "role-container" },
15
+ React.createElement(OtherStatusTag, { label: role, type: "information" })))); };
16
+ var renderContactInfo = function () { return (React.createElement("div", { className: "contact-container" },
17
+ React.createElement("span", { className: "contact-label" }, "CONTACT"),
18
+ React.createElement("div", { className: "phone-email-container" },
19
+ React.createElement("span", { className: "phone-number" }, contactNumber),
20
+ React.createElement("span", { className: "email" }, email1),
21
+ React.createElement("span", { className: "email" }, email2)))); };
22
+ var renderSmallCard = function () { return (React.createElement("div", { className: "content" },
23
+ renderProfileImage(),
24
+ renderNameAndRole())); };
25
+ var renderLargeCard = function () { return (React.createElement(React.Fragment, null,
26
+ React.createElement("div", { className: "content" },
27
+ renderProfileImage(),
28
+ React.createElement("div", { className: "content-main-container" },
29
+ renderNameAndRole(),
30
+ React.createElement("div", { className: "content-container" }, renderContactInfo()))),
31
+ React.createElement(IconButton, { style: "largeFilled", iconName: "allaw-icon-edit-2", onClick: onEdit }))); };
32
+ return (React.createElement("div", { className: "employee-card ".concat(size) }, size === "small" ? renderSmallCard() : renderLargeCard()));
33
+ };
34
+ export default EmployeeCard;
@@ -0,0 +1,2 @@
1
+ export { default as EmployeeCard } from "./EmployeeCard";
2
+ export type { EmployeeCardProps } from "./EmployeeCard";
@@ -0,0 +1 @@
1
+ export { default as EmployeeCard } from "./EmployeeCard";
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import "./ProCard.css";
3
+ export interface ProCardProps {
4
+ imageUrl?: string;
5
+ job: string;
6
+ firstName: string;
7
+ lastName: string;
8
+ address: string;
9
+ profileUrl: string;
10
+ isPro?: boolean;
11
+ }
12
+ declare const ProCard: React.FC<ProCardProps>;
13
+ export default ProCard;
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import "./ProCard.css";
3
+ import OtherStatusTag from "../../atoms/tags/OtherStatusTag";
4
+ import Image from "next/image";
5
+ var NoPhoto = "/assets/NoPhoto.png";
6
+ var ProCard = function (_a) {
7
+ var imageUrl = _a.imageUrl, job = _a.job, firstName = _a.firstName, lastName = _a.lastName, address = _a.address, profileUrl = _a.profileUrl, _b = _a.isPro, isPro = _b === void 0 ? false : _b;
8
+ var uppercaseJob = job.toUpperCase();
9
+ return (React.createElement("div", { className: "pro-card" },
10
+ React.createElement("div", { className: "pro-card-content" },
11
+ React.createElement("div", { className: "pro-card-top" },
12
+ React.createElement("div", { className: "pro-card-image-container" },
13
+ React.createElement(Image, { src: imageUrl || NoPhoto, alt: "".concat(firstName, " ").concat(lastName), width: 74, height: 74, className: "pro-card-avatar" }),
14
+ isPro && (React.createElement("div", { className: "pro-card-verified-icon-container" },
15
+ React.createElement("div", { className: "pro-card-verified-icon-background" }),
16
+ React.createElement("i", { className: "icon allaw-icon-verified pro-card-verified-icon" })))),
17
+ React.createElement("div", { className: "pro-card-job-name" },
18
+ React.createElement(OtherStatusTag, { label: uppercaseJob, type: "information" }),
19
+ React.createElement("h3", { className: "pro-card-name" },
20
+ React.createElement("a", { href: profileUrl }, "".concat(firstName, " ").concat(lastName))))),
21
+ React.createElement("div", { className: "pro-card-address" },
22
+ React.createElement("i", { className: "icon allaw-icon-map-pin" }),
23
+ React.createElement("span", null, address)))));
24
+ };
25
+ export default ProCard;
@@ -0,0 +1,2 @@
1
+ export { default as ProCard } from "./ProCard";
2
+ export type { ProCardProps } from "./ProCard";
@@ -0,0 +1 @@
1
+ export { default as ProCard } from "./ProCard";
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import "./Stepper.css";
3
+ import "../../../styles/global.css";
4
+ import "../../../styles/icons.css";
5
+ export interface StepperProps {
6
+ steps: number;
7
+ currentStep: number;
8
+ startIcon?: boolean[];
9
+ endIcon?: boolean;
10
+ children: React.ReactNode[];
11
+ secondaryButton?: {
12
+ show: boolean;
13
+ label: string;
14
+ icon: string;
15
+ onSecondaryButtonClick?: (step: number) => void;
16
+ }[];
17
+ primaryButton?: {
18
+ show: boolean;
19
+ label: string;
20
+ onPrimaryButtonClick?: (step: number) => void;
21
+ }[];
22
+ showProgressBar?: boolean[];
23
+ onClose?: () => void;
24
+ validateStep?: (step: number) => boolean;
25
+ }
26
+ declare const Stepper: React.FC<StepperProps>;
27
+ export default Stepper;
@@ -0,0 +1,68 @@
1
+ import React, { useState, useEffect, useCallback } from "react";
2
+ import ReactDOM from "react-dom";
3
+ import "./Stepper.css";
4
+ import "../../../styles/global.css";
5
+ import "../../../styles/icons.css";
6
+ import ProgressBar from "../../atoms/progressBars/ProgressBar";
7
+ import PrimaryButton from "../../atoms/buttons/PrimaryButton";
8
+ import SecondaryButton from "../../atoms/buttons/SecondaryButton";
9
+ var Stepper = function (_a) {
10
+ var steps = _a.steps, currentStep = _a.currentStep, _b = _a.startIcon, startIcon = _b === void 0 ? [] : _b, _c = _a.endIcon, endIcon = _c === void 0 ? true : _c, children = _a.children, _d = _a.secondaryButton, secondaryButton = _d === void 0 ? [] : _d, _e = _a.primaryButton, primaryButton = _e === void 0 ? [] : _e, _f = _a.showProgressBar, showProgressBar = _f === void 0 ? [] : _f, onClose = _a.onClose, validateStep = _a.validateStep;
11
+ var _g = useState(currentStep), step = _g[0], setStep = _g[1];
12
+ var _h = useState(null), portalContainer = _h[0], setPortalContainer = _h[1];
13
+ useEffect(function () {
14
+ var container = document.createElement("div");
15
+ document.body.appendChild(container);
16
+ setPortalContainer(container);
17
+ return function () {
18
+ document.body.removeChild(container);
19
+ };
20
+ }, []);
21
+ useEffect(function () {
22
+ setStep(currentStep);
23
+ }, [currentStep]);
24
+ var handleNext = useCallback(function () {
25
+ // console.log("Stepper: Validating current step");
26
+ var currentPrimaryButton = primaryButton[step - 1];
27
+ if (currentPrimaryButton === null || currentPrimaryButton === void 0 ? void 0 : currentPrimaryButton.onPrimaryButtonClick) {
28
+ currentPrimaryButton.onPrimaryButtonClick(step);
29
+ }
30
+ if (validateStep) {
31
+ var isValid = validateStep(step);
32
+ // console.log(
33
+ // `Stepper: Step ${step} validation result - ${isValid ? "valid" : "invalid"}`
34
+ // );
35
+ if (!isValid) {
36
+ return;
37
+ }
38
+ }
39
+ if (step < steps) {
40
+ setStep(step + 1);
41
+ }
42
+ else if (step === steps && onClose) {
43
+ onClose();
44
+ }
45
+ }, [step, steps, validateStep, primaryButton, onClose]);
46
+ var handlePrevious = useCallback(function () {
47
+ if (step > 1) {
48
+ setStep(step - 1);
49
+ }
50
+ }, [step]);
51
+ var currentSecondaryButton = secondaryButton[step - 1];
52
+ var currentPrimaryButton = primaryButton[step - 1];
53
+ var currentShowProgressBar = showProgressBar[step - 1] !== false;
54
+ var currentShowStartIcon = startIcon[step - 1];
55
+ var stepperContent = (React.createElement("div", { className: "stepper-overlay", onClick: onClose },
56
+ React.createElement("div", { className: "stepper-container", onClick: function (e) { return e.stopPropagation(); } },
57
+ React.createElement(ProgressBar, { steps: steps, currentStep: step, startIcon: currentShowStartIcon, endIcon: endIcon, onStartIconClick: handlePrevious, onEndIconClick: onClose, showProgressBar: currentShowProgressBar }),
58
+ React.createElement("div", { className: "stepper-content" }, children[step - 1]),
59
+ React.createElement("div", { className: "stepper-buttons ".concat(!(currentSecondaryButton === null || currentSecondaryButton === void 0 ? void 0 : currentSecondaryButton.show) && !(currentPrimaryButton === null || currentPrimaryButton === void 0 ? void 0 : currentPrimaryButton.show) ? "no-buttons" : "") },
60
+ (currentSecondaryButton === null || currentSecondaryButton === void 0 ? void 0 : currentSecondaryButton.show) && (React.createElement("div", { className: "stepper-button-container secondary-button-container" },
61
+ React.createElement(SecondaryButton, { label: currentSecondaryButton.label, startIcon: currentSecondaryButton.icon, onClick: function () { var _a; return (_a = currentSecondaryButton.onSecondaryButtonClick) === null || _a === void 0 ? void 0 : _a.call(currentSecondaryButton, step); } }))),
62
+ (currentPrimaryButton === null || currentPrimaryButton === void 0 ? void 0 : currentPrimaryButton.show) && (React.createElement("div", { className: "stepper-button-container primary-button-container" },
63
+ React.createElement(PrimaryButton, { label: currentPrimaryButton.label, onClick: handleNext })))))));
64
+ return portalContainer
65
+ ? ReactDOM.createPortal(stepperContent, portalContainer)
66
+ : null;
67
+ };
68
+ export default Stepper;
@@ -0,0 +1,2 @@
1
+ export { default as Stepper } from "./Stepper";
2
+ export type { StepperProps } from "./Stepper";
@@ -0,0 +1 @@
1
+ export { default as Stepper } from "./Stepper";
@@ -0,0 +1,41 @@
1
+ export { default as Button } from "./components/atoms/buttons/PrimaryButton";
2
+ export { default as FavoriteToggle } from "./components/atoms/buttons/FavoriteToggle";
3
+ export { default as FilterButton } from "./components/atoms/buttons/FilterButton";
4
+ export { default as GhostButton } from "./components/atoms/buttons/GhostButton";
5
+ export { default as IconButton } from "./components/atoms/buttons/IconButton";
6
+ export { default as PendingDocuments } from "./components/atoms/buttons/PendingDocuments";
7
+ export { default as PrimaryButton } from "./components/atoms/buttons/PrimaryButton";
8
+ export { default as SecondaryButton } from "./components/atoms/buttons/SecondaryButton";
9
+ export { default as TabNavigation } from "./components/atoms/buttons/TabNavigation";
10
+ export { default as TertiaryButton } from "./components/atoms/buttons/TertiaryButton";
11
+ export { default as OAuthProviderButton } from "./components/atoms/buttons/OAuthProviderButton";
12
+ export { default as Checkbox } from "./components/atoms/checkboxes/Checkbox";
13
+ export { default as Fitler } from "./components/atoms/filter/Filter";
14
+ export { default as Input } from "./components/atoms/inputs/Input";
15
+ export type { InputProps, InputRef } from "./components/atoms/inputs/Input";
16
+ export { default as SearchBar } from "./components/atoms/inputs/SearchBar";
17
+ export { default as ProgressBar } from "./components/atoms/progressBars/ProgressBar";
18
+ export { default as RadioButton } from "./components/atoms/radios/RadioButton";
19
+ export { default as SingleFilter } from "./components/atoms/filters/SingleFilter";
20
+ export { default as Select } from "./components/atoms/selects/Select";
21
+ export type { SelectItem, SelectProps, SelectRef, } from "./components/atoms/selects/Select";
22
+ export { default as AppointementStatusTag } from "./components/atoms/tags/AppointementStatusTag";
23
+ export { default as FolderStatusTag } from "./components/atoms/tags/FolderStatusTag";
24
+ export { default as OtherStatusTag } from "./components/atoms/tags/OtherStatusTag";
25
+ export { default as Heading } from "./components/atoms/typography/Heading";
26
+ export { default as Paragraph } from "./components/atoms/typography/Paragraph";
27
+ export { default as SmallTitle } from "./components/atoms/typography/SmallTitle";
28
+ export { default as Subtitle } from "./components/atoms/typography/Subtitle";
29
+ export { default as TinyInfo } from "./components/atoms/typography/TinyInfo";
30
+ export { default as BorderRadius } from "./components/atoms/uiVariables/BorderRadius";
31
+ export { default as Shadows } from "./components/atoms/uiVariables/Shadows";
32
+ export { default as Strokes } from "./components/atoms/uiVariables/Strokes";
33
+ export { default as AppointmentSlot } from "./components/molecules/appointmentSlot/AppointmentSlot";
34
+ export { default as CaseCard } from "./components/molecules/caseCard/CaseCard";
35
+ export { default as ContactCard } from "./components/molecules/contactCard/ContactCard";
36
+ export { default as DocumentCard } from "./components/molecules/documentCard/DocumentCard";
37
+ export { default as EmployeeCard } from "./components/molecules/employeeCard/EmployeeCard";
38
+ export { default as Stepper } from "./components/molecules/stepper/Stepper";
39
+ export { default as CheckboxForm } from "./components/molecules/checkboxForm/CheckboxForm";
40
+ export { default as Breadcrumb } from "./components/molecules/breadcrumb/Breadcrumb";
41
+ export { default as ProCard } from "./components/molecules/proCard/ProCard";
package/dist/index.js ADDED
@@ -0,0 +1,60 @@
1
+ // Atoms
2
+ // Buttons
3
+ export { default as Button } from "./components/atoms/buttons/PrimaryButton";
4
+ export { default as FavoriteToggle } from "./components/atoms/buttons/FavoriteToggle";
5
+ export { default as FilterButton } from "./components/atoms/buttons/FilterButton";
6
+ export { default as GhostButton } from "./components/atoms/buttons/GhostButton";
7
+ export { default as IconButton } from "./components/atoms/buttons/IconButton";
8
+ export { default as PendingDocuments } from "./components/atoms/buttons/PendingDocuments";
9
+ export { default as PrimaryButton } from "./components/atoms/buttons/PrimaryButton";
10
+ export { default as SecondaryButton } from "./components/atoms/buttons/SecondaryButton";
11
+ export { default as TabNavigation } from "./components/atoms/buttons/TabNavigation";
12
+ export { default as TertiaryButton } from "./components/atoms/buttons/TertiaryButton";
13
+ export { default as OAuthProviderButton } from "./components/atoms/buttons/OAuthProviderButton";
14
+ // Checkboxes
15
+ export { default as Checkbox } from "./components/atoms/checkboxes/Checkbox";
16
+ // Checkboxes
17
+ export { default as Fitler } from "./components/atoms/filter/Filter";
18
+ // Inputs
19
+ export { default as Input } from "./components/atoms/inputs/Input";
20
+ export { default as SearchBar } from "./components/atoms/inputs/SearchBar";
21
+ // Progress Bars
22
+ export { default as ProgressBar } from "./components/atoms/progressBars/ProgressBar";
23
+ // Radios
24
+ export { default as RadioButton } from "./components/atoms/radios/RadioButton";
25
+ export { default as SingleFilter } from "./components/atoms/filters/SingleFilter";
26
+ // Selects
27
+ export { default as Select } from "./components/atoms/selects/Select";
28
+ // Tags
29
+ export { default as AppointementStatusTag } from "./components/atoms/tags/AppointementStatusTag";
30
+ export { default as FolderStatusTag } from "./components/atoms/tags/FolderStatusTag";
31
+ export { default as OtherStatusTag } from "./components/atoms/tags/OtherStatusTag";
32
+ // Typography
33
+ export { default as Heading } from "./components/atoms/typography/Heading";
34
+ export { default as Paragraph } from "./components/atoms/typography/Paragraph";
35
+ export { default as SmallTitle } from "./components/atoms/typography/SmallTitle";
36
+ export { default as Subtitle } from "./components/atoms/typography/Subtitle";
37
+ export { default as TinyInfo } from "./components/atoms/typography/TinyInfo";
38
+ // UI Variables
39
+ export { default as BorderRadius } from "./components/atoms/uiVariables/BorderRadius";
40
+ export { default as Shadows } from "./components/atoms/uiVariables/Shadows";
41
+ export { default as Strokes } from "./components/atoms/uiVariables/Strokes";
42
+ // Molecules
43
+ // Appointment Slot
44
+ export { default as AppointmentSlot } from "./components/molecules/appointmentSlot/AppointmentSlot";
45
+ // Case Card
46
+ export { default as CaseCard } from "./components/molecules/caseCard/CaseCard";
47
+ // Contact Card
48
+ export { default as ContactCard } from "./components/molecules/contactCard/ContactCard";
49
+ // Document Card
50
+ export { default as DocumentCard } from "./components/molecules/documentCard/DocumentCard";
51
+ // Employee Card
52
+ export { default as EmployeeCard } from "./components/molecules/employeeCard/EmployeeCard";
53
+ // Stepper
54
+ export { default as Stepper } from "./components/molecules/stepper/Stepper";
55
+ // CheckboxForm
56
+ export { default as CheckboxForm } from "./components/molecules/checkboxForm/CheckboxForm";
57
+ // Breadcrumb
58
+ export { default as Breadcrumb } from "./components/molecules/breadcrumb/Breadcrumb";
59
+ // ProCard
60
+ export { default as ProCard } from "./components/molecules/proCard/ProCard";
@@ -0,0 +1,5 @@
1
+ export declare const commonRegex: {
2
+ email: RegExp;
3
+ phone: RegExp;
4
+ name: RegExp;
5
+ };
@@ -0,0 +1,7 @@
1
+ export var commonRegex = {
2
+ email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
3
+ // Cette regex couvre les numéros de téléphone français incluant la France métropolitaine, les départements et territoires d'outre-mer (Guadeloupe, Martinique, Guyane, Réunion, Mayotte, et Nouvelle-Calédonie) en formats national et international.
4
+ phone: /^(?:\+33\s?[1-9](?:[\s.-]?\d{2}){4}|0[1-9](?:[\s.-]?\d{2}){4}|0[1-9]\d{8}|(?:\+590|0|0590)[\s.-]?\d{2}[\s.-]?\d{2}[\s.-]?\d{2}|(?:\+596|0|0596)[\s.-]?\d{2}[\s.-]?\d{2}[\s.-]?\d{2}|(?:\+594|0|0594)[\s.-]?\d{2}[\s.-]?\d{2}[\s.-]?\d{2}|(?:\+262|0|0262)[\s.-]?\d{2}[\s.-]?\d{2}[\s.-]?\d{2}|(?:\+687)[\s.-]?\d{2}[\s.-]?\d{2}[\s.-]?\d{2})$/,
5
+ // Cette regex permet de valider les noms et prénoms français, incluant les accents, cédilles, traits d'union, espaces et apostrophes.
6
+ name: /^[A-Za-zÀ-ÖØ-öø-ÿ'\- ]+$/,
7
+ };