@sikka/hawa 0.0.58 → 0.0.60

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 (51) hide show
  1. package/es/index.es.js +1 -1
  2. package/lib/index.js +1 -1
  3. package/package.json +3 -2
  4. package/src/blocks/Account/UserProfileForm.js +9 -5
  5. package/src/blocks/Account/UserSettingsForm.js +10 -5
  6. package/src/blocks/AuthForms/CodeConfirmation.js +5 -5
  7. package/src/blocks/AuthForms/NewPasswordForm.js +9 -5
  8. package/src/blocks/AuthForms/ResetPasswordForm.js +9 -5
  9. package/src/blocks/AuthForms/SignInForm.js +5 -10
  10. package/src/blocks/AuthForms/SignInPhone.js +4 -5
  11. package/src/blocks/AuthForms/SignUpForm.js +4 -10
  12. package/src/blocks/Misc/NotFound.js +1 -1
  13. package/src/blocks/Payment/ChargeWalletForm.js +9 -5
  14. package/src/blocks/Payment/CheckoutForm.js +6 -8
  15. package/src/blocks/Payment/Confirmation.js +19 -12
  16. package/src/blocks/Payment/CreditCardForm.js +6 -7
  17. package/src/blocks/Payment/Form/CForm.js +2 -12
  18. package/src/blocks/Payment/PayWithWallet.js +9 -5
  19. package/src/blocks/Payment/SelectPayment.js +4 -2
  20. package/src/blocks/Pricing/ComparingPlans.js +151 -0
  21. package/src/blocks/Pricing/PricingPlans.js +21 -12
  22. package/src/blocks/Pricing/index.js +1 -0
  23. package/src/elements/DragDropImages.js +2 -3
  24. package/src/elements/HawaButton.js +13 -6
  25. package/src/elements/HawaCheckbox.js +7 -10
  26. package/src/elements/HawaItemCard.js +38 -155
  27. package/src/elements/HawaModal.js +73 -0
  28. package/src/elements/HawaPanelTabs.js +17 -69
  29. package/src/elements/HawaPricingCard.js +51 -53
  30. package/src/elements/HawaRadio.js +32 -0
  31. package/src/elements/HawaRange.js +8 -16
  32. package/src/elements/HawaSettingsRow.js +2 -4
  33. package/src/elements/HawaTable.js +2 -6
  34. package/src/elements/HawaTabs.js +32 -0
  35. package/src/elements/HawaTooltip.js +2 -41
  36. package/src/elements/index.js +2 -2
  37. package/src/layout/HawaContainer.js +12 -0
  38. package/src/layout/index.js +1 -2
  39. package/storybook-static/iframe.html +1 -1
  40. package/storybook-static/main.dd9f34e9.iframe.bundle.js +1 -0
  41. package/storybook-static/project.json +1 -1
  42. package/storybook-static/vendors~main.7059fde5.iframe.bundle.js +76 -0
  43. package/storybook-static/{vendors~main.8be71844.iframe.bundle.js.LICENSE.txt → vendors~main.7059fde5.iframe.bundle.js.LICENSE.txt} +0 -0
  44. package/storybook-static/vendors~main.7059fde5.iframe.bundle.js.map +1 -0
  45. package/src/elements/ActionButton.js +0 -14
  46. package/src/elements/RadioBox.js +0 -29
  47. package/src/elements/ResponsiveButton.js +0 -34
  48. package/src/layout/HawaDrawer.js +0 -109
  49. package/storybook-static/main.89a5002b.iframe.bundle.js +0 -1
  50. package/storybook-static/vendors~main.8be71844.iframe.bundle.js +0 -76
  51. package/storybook-static/vendors~main.8be71844.iframe.bundle.js.map +0 -1
@@ -19,11 +19,11 @@ export const HawaPanelTabs = (props) => {
19
19
  <li class="mr-2" role="presentation">
20
20
  <button
21
21
  class="inline-block p-4 rounded-t-lg border-b-2 text-blue-600 hover:text-blue-600 dark:text-blue-500 dark:hover:text-blue-500 border-blue-600 dark:border-blue-500"
22
- id="profile-tab"
23
- data-tabs-target="#profile"
22
+ id={`${option.value}-tab`}
23
+ data-tabs-target={`#${option.value}`}
24
24
  type="button"
25
25
  role="tab"
26
- aria-controls="profile"
26
+ aria-controls={option.value}
27
27
  aria-selected="true"
28
28
  >
29
29
  {option.label}
@@ -33,72 +33,20 @@ export const HawaPanelTabs = (props) => {
33
33
  })}
34
34
  </ul>
35
35
  </div>
36
- {/* <div id="myTabContent">
37
- <div
38
- class="p-4 bg-gray-50 rounded-lg dark:bg-gray-800"
39
- id="profile"
40
- role="tabpanel"
41
- aria-labelledby="profile-tab"
42
- >
43
- <p class="text-sm text-gray-500 dark:text-gray-400">
44
- This is some placeholder content the{" "}
45
- <strong class="font-medium text-gray-800 dark:text-white">
46
- Profile tab's associated content
47
- </strong>
48
- . Clicking another tab will toggle the visibility of this one for
49
- the next. The tab JavaScript swaps classes to control the content
50
- visibility and styling.
51
- </p>
52
- </div>
53
- <div
54
- class="hidden p-4 bg-gray-50 rounded-lg dark:bg-gray-800"
55
- id="dashboard"
56
- role="tabpanel"
57
- aria-labelledby="dashboard-tab"
58
- >
59
- <p class="text-sm text-gray-500 dark:text-gray-400">
60
- This is some placeholder content the{" "}
61
- <strong class="font-medium text-gray-800 dark:text-white">
62
- Dashboard tab's associated content
63
- </strong>
64
- . Clicking another tab will toggle the visibility of this one for
65
- the next. The tab JavaScript swaps classes to control the content
66
- visibility and styling.
67
- </p>
68
- </div>
69
- <div
70
- class="hidden p-4 bg-gray-50 rounded-lg dark:bg-gray-800"
71
- id="settings"
72
- role="tabpanel"
73
- aria-labelledby="settings-tab"
74
- >
75
- <p class="text-sm text-gray-500 dark:text-gray-400">
76
- This is some placeholder content the{" "}
77
- <strong class="font-medium text-gray-800 dark:text-white">
78
- Settings tab's associated content
79
- </strong>
80
- . Clicking another tab will toggle the visibility of this one for
81
- the next. The tab JavaScript swaps classes to control the content
82
- visibility and styling.
83
- </p>
84
- </div>
85
- <div
86
- class="hidden p-4 bg-gray-50 rounded-lg dark:bg-gray-800"
87
- id="contacts"
88
- role="tabpanel"
89
- aria-labelledby="contacts-tab"
90
- >
91
- <p class="text-sm text-gray-500 dark:text-gray-400">
92
- This is some placeholder content the{" "}
93
- <strong class="font-medium text-gray-800 dark:text-white">
94
- Contacts tab's associated content
95
- </strong>
96
- . Clicking another tab will toggle the visibility of this one for
97
- the next. The tab JavaScript swaps classes to control the content
98
- visibility and styling.
99
- </p>
100
- </div>
101
- </div> */}
36
+ <div id="myTabContent">
37
+ {props.options.map((option) => {
38
+ return (
39
+ <div
40
+ class="p-4 bg-gray-50 rounded-lg dark:bg-gray-800"
41
+ id={option.value}
42
+ role="tabpanel"
43
+ aria-labelledby={`${option.value}-tab`}
44
+ >
45
+ {option.content}
46
+ </div>
47
+ );
48
+ })}
49
+ </div>
102
50
  </div>
103
51
  // <Container variant={props.location || "panelTabs"}>
104
52
  // {props.options.map((singleOption, i) => {
@@ -22,52 +22,51 @@ export const HawaPricingCard = (props) => {
22
22
  let featuresMapping = isArabic ? props.features_ar : props.features;
23
23
  let chipSpacing = isArabic ? { left: 10 } : { right: 10 };
24
24
  return (
25
- <div>
26
- <div class="p-4 w-full max-w-sm bg-white rounded-lg border shadow-md sm:p-8 dark:bg-gray-800 dark:border-gray-700">
27
- <h5 class="mb-4 text-xl font-medium text-gray-500 dark:text-gray-400">
28
- {isArabic ? props.title_ar : props.title}
29
- </h5>
30
- <div class="flex items-baseline text-gray-900 dark:text-white">
31
- <span class="text-3xl font-semibold">
32
- {" "}
33
- {currencyMapping[props.currency?.toLowerCase()]}
34
- </span>
35
- <span class="text-5xl font-extrabold tracking-tight">
36
- {props.price}
37
- </span>
38
- <span class="ml-1 text-xl font-normal text-gray-500 dark:text-gray-400">
39
- /{" "}
40
- {isArabic
41
- ? cycleTextsArabic[props.cycleText]
42
- : cycleTextsEnglish[props.cycleText]}
43
- </span>
44
- </div>
45
- <ul role="list" class="my-7 space-y-5">
46
- {featuresMapping?.map((feature) => {
47
- return (
48
- <li class="flex space-x-3">
49
- <svg
50
- aria-hidden="true"
51
- class="flex-shrink-0 w-5 h-5 text-blue-600 dark:text-blue-500"
52
- fill="currentColor"
53
- viewBox="0 0 20 20"
54
- xmlns="http://www.w3.org/2000/svg"
55
- >
56
- <title>Check icon</title>
57
- <path
58
- fill-rule="evenodd"
59
- d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
60
- clip-rule="evenodd"
61
- ></path>
62
- </svg>
63
- <span class="text-base font-normal leading-tight text-gray-500 dark:text-gray-400">
64
- {feature}
65
- </span>
66
- </li>
67
- );
68
- })}
25
+ <div class="mx-1 p-4 w-full max-w-sm bg-white rounded-lg border shadow-md sm:p-8 dark:bg-gray-800 dark:border-gray-700">
26
+ <h5 class="mb-4 text-xl font-medium text-gray-500 dark:text-gray-400">
27
+ {isArabic ? props.title_ar : props.title}
28
+ </h5>
29
+ <div class="flex items-baseline text-gray-900 dark:text-white">
30
+ <span class="font-semibold text-sm">
31
+ {" "}
32
+ {currencyMapping[props.currency?.toLowerCase()]}
33
+ </span>
34
+ <span class="text-5xl font-extrabold tracking-tight">
35
+ {props.price}
36
+ </span>
37
+ <span class="ml-1 text-xl font-normal text-gray-500 dark:text-gray-400">
38
+ /{" "}
39
+ {isArabic
40
+ ? cycleTextsArabic[props.cycleText]
41
+ : cycleTextsEnglish[props.cycleText]}
42
+ </span>
43
+ </div>
44
+ <ul role="list" class="my-7 space-y-5">
45
+ {featuresMapping?.map((feature) => {
46
+ return (
47
+ <li class="flex space-x-3">
48
+ <svg
49
+ aria-hidden="true"
50
+ class="flex-shrink-0 w-5 h-5 text-blue-600 dark:text-blue-500"
51
+ fill="currentColor"
52
+ viewBox="0 0 20 20"
53
+ xmlns="http://www.w3.org/2000/svg"
54
+ >
55
+ <title>Check icon</title>
56
+ <path
57
+ fill-rule="evenodd"
58
+ d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
59
+ clip-rule="evenodd"
60
+ ></path>
61
+ </svg>
62
+ <span class="text-base font-normal leading-tight text-gray-500 dark:text-gray-400">
63
+ {feature}
64
+ </span>
65
+ </li>
66
+ );
67
+ })}
69
68
 
70
- {/* <li class="flex space-x-3 line-through decoration-gray-500">
69
+ {/* <li class="flex space-x-3 line-through decoration-gray-500">
71
70
  <svg
72
71
  aria-hidden="true"
73
72
  class="flex-shrink-0 w-5 h-5 text-gray-400 dark:text-gray-500"
@@ -86,14 +85,13 @@ export const HawaPricingCard = (props) => {
86
85
  Sketch Files
87
86
  </span>
88
87
  </li> */}
89
- </ul>
90
- <button
91
- type="button"
92
- class="text-white bg-blue-600 hover:bg-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-200 dark:focus:ring-blue-900 font-medium rounded-lg text-sm px-5 py-2.5 inline-flex justify-center w-full text-center"
93
- >
94
- {props.buttonText}
95
- </button>
96
- </div>
88
+ </ul>
89
+ <button
90
+ type="button"
91
+ class="text-white bg-blue-600 hover:bg-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-200 dark:focus:ring-blue-900 font-medium rounded-lg text-sm px-5 py-2.5 inline-flex justify-center w-full text-center"
92
+ >
93
+ {props.buttonText}
94
+ </button>
97
95
  </div>
98
96
 
99
97
  // <Container
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import "flowbite";
3
+
4
+ export const HawaRadio = (props) => {
5
+ return (
6
+ <div>
7
+ <ul class="items-center w-full text-sm font-medium text-gray-900 bg-white rounded-lg border border-gray-200 sm:flex dark:bg-gray-700 dark:border-gray-600 dark:text-white">
8
+ {props.options.map((option) => {
9
+ return (
10
+ <li class="w-full border-b border-gray-200 sm:border-b-0 sm:border-r dark:border-gray-600">
11
+ <div class="flex items-center pl-3">
12
+ <input
13
+ id="horizontal-list-radio-license"
14
+ type="radio"
15
+ value=""
16
+ name="list-radio"
17
+ class="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500"
18
+ />
19
+ <label
20
+ for="horizontal-list-radio-license"
21
+ class="py-3 ml-2 w-full text-sm font-medium text-gray-900 dark:text-gray-300"
22
+ >
23
+ {option.label}
24
+ </label>
25
+ </div>
26
+ </li>
27
+ );
28
+ })}
29
+ </ul>
30
+ </div>
31
+ );
32
+ };
@@ -3,23 +3,15 @@ import PropTypes from "prop-types";
3
3
 
4
4
  export const HawaRange = (props) => {
5
5
  return (
6
- // <Stack spacing={2} direction="row" alignItems="center" style={props.style}>
7
- // {props.startElement}
8
- // <Slider
9
- // size="small"
10
- // aria-label="Volume"
11
- // value={props.value}
12
- // onChange={props.handleChange}
13
- // />
14
- // {props.endElement}
15
- // </Stack>
16
6
  <div>
17
- <label
18
- for="default-range"
19
- class="block mb-2 text-sm font-medium text-gray-900 dark:text-gray-300"
20
- >
21
- Default range
22
- </label>
7
+ {props.label && (
8
+ <label
9
+ for="default-range"
10
+ class="block mb-2 text-sm font-medium text-gray-900 dark:text-gray-300"
11
+ >
12
+ {props.label}
13
+ </label>
14
+ )}
23
15
  <div className="flex flex-row justify-center items-center w-fit">
24
16
  <div className="mr-2">{props.startElement}</div>{" "}
25
17
  <input
@@ -2,11 +2,11 @@ import React from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import { HawaTypography } from "./HawaTypography";
4
4
  import { HawaTextField } from "./HawaTextField";
5
- import { HawaPanelTabs } from "./HawaPanelTabs";
6
5
  import { HawaSwitch } from "./HawaSwitch";
7
6
  import { HawaColorPicker } from "./HawaColorPicker";
8
7
  import { HawaRange } from "./HawaRange";
9
8
  import { HawaCheckbox } from "./HawaCheckbox";
9
+ import { HawaTabs } from "./HawaTabs";
10
10
 
11
11
  export const HawaSettingsRow = (props) => {
12
12
  return (
@@ -17,9 +17,7 @@ export const HawaSettingsRow = (props) => {
17
17
  {props.settingsType === "boolean" && <HawaSwitch {...props} />}
18
18
  {props.settingsType === "range" && <HawaRange {...props} />}
19
19
  {props.settingsType === "color" && <HawaColorPicker {...props} />}
20
- {props.settingsType === "radio" && (
21
- <HawaPanelTabs location="inSettings" {...props} />
22
- )}
20
+ {props.settingsType === "radio" && <HawaTabs {...props} />}
23
21
  </div>
24
22
  );
25
23
  };
@@ -52,13 +52,9 @@ export const HawaTable = (props) => {
52
52
  >
53
53
  {props.actions.map((act) => (
54
54
  <HawaButton
55
- style={{ margin: 2 }}
56
- variant="outlined"
57
- size="small"
58
55
  onClick={() => props.handleActionClick(singleRow)}
59
- >
60
- {act}
61
- </HawaButton>
56
+ text={act}
57
+ />
62
58
  ))}
63
59
  </td>
64
60
  )}
@@ -0,0 +1,32 @@
1
+ import React, { useState } from "react";
2
+
3
+ export const HawaTabs = (props) => {
4
+ const [selectedOption, setSelectedOption] = useState(props.defaultValue);
5
+ let activeTabStyle =
6
+ "inline-block py-2 px-4 text-white bg-blue-600 rounded-lg active";
7
+ let inactiveTabStyle =
8
+ "inline-block py-2 px-4 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 dark:hover:text-white";
9
+
10
+ return (
11
+ <div>
12
+ <ul className="bg-gray-100 w-fit rounded-lg flex flex-wrap text-sm font-medium text-center text-gray-500 dark:text-gray-400">
13
+ {props.options.map((opt) => (
14
+ <li className="mr-2">
15
+ <button
16
+ aria-current="page"
17
+ onClick={() => {
18
+ setSelectedOption(opt.value);
19
+ props.onChangeTab(opt.value);
20
+ }}
21
+ className={
22
+ selectedOption === opt.value ? activeTabStyle : inactiveTabStyle
23
+ }
24
+ >
25
+ {opt.label}
26
+ </button>
27
+ </li>
28
+ ))}
29
+ </ul>
30
+ </div>
31
+ );
32
+ };
@@ -1,54 +1,15 @@
1
1
  import React from "react";
2
2
  import "flowbite";
3
+
3
4
  export const HawaTooltip = (props) => {
4
- const screenSize = {
5
- width: 1500,
6
- height: 200
7
- };
8
5
  return (
9
6
  <div
10
7
  id={props.tooltipID}
11
8
  role="tooltip"
12
9
  class="inline-block absolute invisible z-10 py-2 px-3 text-sm font-medium text-white bg-gray-900 rounded-lg shadow-sm opacity-0 transition-opacity duration-300 tooltip dark:bg-gray-700"
13
10
  >
14
- Tooltip content
11
+ {props.content}
15
12
  <div class="tooltip-arrow" data-popper-arrow></div>
16
13
  </div>
17
-
18
- // <Tooltip
19
- // placement={screenSize.width > 400 ? "bottom-center" : "top-center"}
20
- // enterTouchDelay={100}
21
- // title={
22
- // props.hint ? (
23
- // props.hint
24
- // ) : (
25
- // <div>
26
- // <div
27
- // style={{
28
- // fontSize: 20,
29
- // fontWeight: 800,
30
- // padding: 10,
31
- // paddingBottom: 5,
32
- // textAlign: "center"
33
- // }}
34
- // >
35
- // {props.hintTitle}
36
- // </div>
37
- // <div
38
- // style={{
39
- // fontSize: 13,
40
- // fontWeight: 100,
41
- // padding: 10,
42
- // textAlign: "center"
43
- // }}
44
- // >
45
- // {props.hintContent}
46
- // </div>
47
- // </div>
48
- // )
49
- // }
50
- // >
51
- // {props.children}
52
- // </Tooltip>
53
14
  );
54
15
  };
@@ -1,5 +1,3 @@
1
- export * from "./ResponsiveButton";
2
- export * from "./ActionButton";
3
1
  export * from "./HawaSnackbar";
4
2
  export * from "./HawaSwitch";
5
3
  export * from "./HawaCheckbox";
@@ -25,3 +23,5 @@ export * from "./HawaPhoneInput";
25
23
  export * from "./HawaPhoneInput2";
26
24
  export * from "./HawaDrawerItem";
27
25
  export * from "./HawaTooltip";
26
+ export * from "./HawaTabs";
27
+ export * from "./HawaModal";
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+
3
+ export const HawaContainer = (props) => {
4
+ let containerStyle = "";
5
+ if (props.withDividers) {
6
+ containerStyle =
7
+ "w-full max-w-sm flex flex-col divide-y divide-gray-300 bg-blue-300 rounded-xl p-4";
8
+ } else {
9
+ containerStyle = "w-full max-w-sm flex flex-col bg-blue-300 rounded-xl p-4";
10
+ }
11
+ return <div className={containerStyle}>{props.children}</div>;
12
+ };
@@ -1,7 +1,6 @@
1
1
  export * from "./Box";
2
- // export * from "./HawaAppLayout";
3
2
  export * from "./HawaDialog";
4
3
  export * from "./HawaPageControls";
5
4
  export * from "./HawaBottomAppBar";
6
- export * from "./HawaDrawer";
7
5
  export * from "./HawaLayout";
6
+ export * from "./HawaContainer";
@@ -361,4 +361,4 @@
361
361
 
362
362
 
363
363
 
364
- window['STORIES'] = [{"titlePrefix":"","directory":"./src","files":"**/*.stories.mdx","importPathMatcher":"^\\.[\\\\/](?:src(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.mdx)$"},{"titlePrefix":"","directory":"./src","files":"**/*.stories.@(js|jsx|ts|tsx)","importPathMatcher":"^\\.[\\\\/](?:src(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.(js|jsx|ts|tsx))$"}];</script><script src="runtime~main.6b765954.iframe.bundle.js"></script><script src="vendors~main.8be71844.iframe.bundle.js"></script><script src="main.89a5002b.iframe.bundle.js"></script></body></html>
364
+ window['STORIES'] = [{"titlePrefix":"","directory":"./src","files":"**/*.stories.mdx","importPathMatcher":"^\\.[\\\\/](?:src(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.mdx)$"},{"titlePrefix":"","directory":"./src","files":"**/*.stories.@(js|jsx|ts|tsx)","importPathMatcher":"^\\.[\\\\/](?:src(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.(js|jsx|ts|tsx))$"}];</script><script src="runtime~main.6b765954.iframe.bundle.js"></script><script src="vendors~main.7059fde5.iframe.bundle.js"></script><script src="main.dd9f34e9.iframe.bundle.js"></script></body></html>