basefn 1.0.0

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 (154) hide show
  1. package/README.md +104 -0
  2. package/package.json +82 -0
  3. package/rescript.json +32 -0
  4. package/src/Basefn.css +14 -0
  5. package/src/Basefn.res +105 -0
  6. package/src/Basefn.res.mjs +114 -0
  7. package/src/Basefn__Dom.res +9 -0
  8. package/src/Basefn__Dom.res.mjs +24 -0
  9. package/src/Basefn__Utils.res +15 -0
  10. package/src/Basefn__Utils.res.mjs +32 -0
  11. package/src/Demo.res +1417 -0
  12. package/src/Demo.res.mjs +2328 -0
  13. package/src/Eita.res.mjs +105 -0
  14. package/src/Eita__Accordion.res.mjs +77 -0
  15. package/src/Eita__Alert.res.mjs +81 -0
  16. package/src/Eita__AppLayout.res.mjs +100 -0
  17. package/src/Eita__Avatar.res.mjs +40 -0
  18. package/src/Eita__Badge.res.mjs +65 -0
  19. package/src/Eita__Breadcrumb.res.mjs +53 -0
  20. package/src/Eita__Button.res.mjs +47 -0
  21. package/src/Eita__Card.res.mjs +60 -0
  22. package/src/Eita__Checkbox.res.mjs +36 -0
  23. package/src/Eita__Dom.res.mjs +16 -0
  24. package/src/Eita__Drawer.res.mjs +112 -0
  25. package/src/Eita__Dropdown.res.mjs +96 -0
  26. package/src/Eita__Grid.res.mjs +24 -0
  27. package/src/Eita__Input.res.mjs +54 -0
  28. package/src/Eita__Kbd.res.mjs +42 -0
  29. package/src/Eita__Label.res.mjs +24 -0
  30. package/src/Eita__Modal.res.mjs +93 -0
  31. package/src/Eita__Progress.res.mjs +101 -0
  32. package/src/Eita__Radio.res.mjs +38 -0
  33. package/src/Eita__Select.res.mjs +40 -0
  34. package/src/Eita__Separator.res.mjs +70 -0
  35. package/src/Eita__Sidebar.res.mjs +103 -0
  36. package/src/Eita__Slider.res.mjs +89 -0
  37. package/src/Eita__Spinner.res.mjs +69 -0
  38. package/src/Eita__Stepper.res.mjs +114 -0
  39. package/src/Eita__Switch.res.mjs +84 -0
  40. package/src/Eita__Tabs.res.mjs +57 -0
  41. package/src/Eita__Textarea.res.mjs +39 -0
  42. package/src/Eita__Timeline.res.mjs +86 -0
  43. package/src/Eita__Toast.res.mjs +112 -0
  44. package/src/Eita__Tooltip.res.mjs +60 -0
  45. package/src/Eita__Topbar.res.mjs +96 -0
  46. package/src/Eita__Typography.res.mjs +183 -0
  47. package/src/Eita__Utils.res.mjs +32 -0
  48. package/src/Example.res +111 -0
  49. package/src/Example.res.mjs +176 -0
  50. package/src/components/Basefn__Accordion.css +70 -0
  51. package/src/components/Basefn__Accordion.res +79 -0
  52. package/src/components/Basefn__Accordion.res.mjs +77 -0
  53. package/src/components/Basefn__Alert.css +79 -0
  54. package/src/components/Basefn__Alert.res +68 -0
  55. package/src/components/Basefn__Alert.res.mjs +78 -0
  56. package/src/components/Basefn__AppLayout.css +100 -0
  57. package/src/components/Basefn__AppLayout.res +74 -0
  58. package/src/components/Basefn__AppLayout.res.mjs +100 -0
  59. package/src/components/Basefn__Avatar.css +25 -0
  60. package/src/components/Basefn__Avatar.res +23 -0
  61. package/src/components/Basefn__Avatar.res.mjs +40 -0
  62. package/src/components/Basefn__Badge.css +71 -0
  63. package/src/components/Basefn__Badge.res +43 -0
  64. package/src/components/Basefn__Badge.res.mjs +65 -0
  65. package/src/components/Basefn__Breadcrumb.css +36 -0
  66. package/src/components/Basefn__Breadcrumb.res +45 -0
  67. package/src/components/Basefn__Breadcrumb.res.mjs +53 -0
  68. package/src/components/Basefn__Button.css +83 -0
  69. package/src/components/Basefn__Button.res +32 -0
  70. package/src/components/Basefn__Button.res.mjs +54 -0
  71. package/src/components/Basefn__Card.css +50 -0
  72. package/src/components/Basefn__Card.res +45 -0
  73. package/src/components/Basefn__Card.res.mjs +60 -0
  74. package/src/components/Basefn__Checkbox.css +72 -0
  75. package/src/components/Basefn__Checkbox.res +25 -0
  76. package/src/components/Basefn__Checkbox.res.mjs +36 -0
  77. package/src/components/Basefn__Drawer.css +168 -0
  78. package/src/components/Basefn__Drawer.res +86 -0
  79. package/src/components/Basefn__Drawer.res.mjs +112 -0
  80. package/src/components/Basefn__Dropdown.css +76 -0
  81. package/src/components/Basefn__Dropdown.res +85 -0
  82. package/src/components/Basefn__Dropdown.res.mjs +96 -0
  83. package/src/components/Basefn__Grid.css +11 -0
  84. package/src/components/Basefn__Grid.res +296 -0
  85. package/src/components/Basefn__Grid.res.mjs +263 -0
  86. package/src/components/Basefn__Icon.css +12 -0
  87. package/src/components/Basefn__Icon.res +196 -0
  88. package/src/components/Basefn__Icon.res.mjs +183 -0
  89. package/src/components/Basefn__Input.css +44 -0
  90. package/src/components/Basefn__Input.res +48 -0
  91. package/src/components/Basefn__Input.res.mjs +63 -0
  92. package/src/components/Basefn__Kbd.css +65 -0
  93. package/src/components/Basefn__Kbd.res +27 -0
  94. package/src/components/Basefn__Kbd.res.mjs +42 -0
  95. package/src/components/Basefn__Label.css +22 -0
  96. package/src/components/Basefn__Label.res +18 -0
  97. package/src/components/Basefn__Label.res.mjs +24 -0
  98. package/src/components/Basefn__Modal.css +100 -0
  99. package/src/components/Basefn__Modal.res +74 -0
  100. package/src/components/Basefn__Modal.res.mjs +93 -0
  101. package/src/components/Basefn__Progress.css +69 -0
  102. package/src/components/Basefn__Progress.res +88 -0
  103. package/src/components/Basefn__Progress.res.mjs +101 -0
  104. package/src/components/Basefn__Radio.css +72 -0
  105. package/src/components/Basefn__Radio.res +35 -0
  106. package/src/components/Basefn__Radio.res.mjs +38 -0
  107. package/src/components/Basefn__Select.css +44 -0
  108. package/src/components/Basefn__Select.res +33 -0
  109. package/src/components/Basefn__Select.res.mjs +40 -0
  110. package/src/components/Basefn__Separator.css +85 -0
  111. package/src/components/Basefn__Separator.res +45 -0
  112. package/src/components/Basefn__Separator.res.mjs +70 -0
  113. package/src/components/Basefn__Sidebar.css +141 -0
  114. package/src/components/Basefn__Sidebar.res +95 -0
  115. package/src/components/Basefn__Sidebar.res.mjs +107 -0
  116. package/src/components/Basefn__Slider.css +97 -0
  117. package/src/components/Basefn__Slider.res +68 -0
  118. package/src/components/Basefn__Slider.res.mjs +89 -0
  119. package/src/components/Basefn__Spinner.css +63 -0
  120. package/src/components/Basefn__Spinner.res +44 -0
  121. package/src/components/Basefn__Spinner.res.mjs +69 -0
  122. package/src/components/Basefn__Stepper.css +141 -0
  123. package/src/components/Basefn__Stepper.res +86 -0
  124. package/src/components/Basefn__Stepper.res.mjs +114 -0
  125. package/src/components/Basefn__Switch.css +80 -0
  126. package/src/components/Basefn__Switch.res +62 -0
  127. package/src/components/Basefn__Switch.res.mjs +84 -0
  128. package/src/components/Basefn__Tabs.css +54 -0
  129. package/src/components/Basefn__Tabs.res +73 -0
  130. package/src/components/Basefn__Tabs.res.mjs +57 -0
  131. package/src/components/Basefn__Textarea.css +41 -0
  132. package/src/components/Basefn__Textarea.res +28 -0
  133. package/src/components/Basefn__Textarea.res.mjs +41 -0
  134. package/src/components/Basefn__ThemeToggle.css +5 -0
  135. package/src/components/Basefn__ThemeToggle.res +29 -0
  136. package/src/components/Basefn__ThemeToggle.res.mjs +49 -0
  137. package/src/components/Basefn__Timeline.css +144 -0
  138. package/src/components/Basefn__Timeline.res +70 -0
  139. package/src/components/Basefn__Timeline.res.mjs +86 -0
  140. package/src/components/Basefn__Toast.css +100 -0
  141. package/src/components/Basefn__Toast.res +92 -0
  142. package/src/components/Basefn__Toast.res.mjs +112 -0
  143. package/src/components/Basefn__Tooltip.css +84 -0
  144. package/src/components/Basefn__Tooltip.res +42 -0
  145. package/src/components/Basefn__Tooltip.res.mjs +60 -0
  146. package/src/components/Basefn__Topbar.css +130 -0
  147. package/src/components/Basefn__Topbar.res +92 -0
  148. package/src/components/Basefn__Topbar.res.mjs +91 -0
  149. package/src/components/Basefn__Typography.css +120 -0
  150. package/src/components/Basefn__Typography.res +96 -0
  151. package/src/components/Basefn__Typography.res.mjs +175 -0
  152. package/src/styles/Basefn__Theme.res +63 -0
  153. package/src/styles/Basefn__Theme.res.mjs +65 -0
  154. package/src/styles/variables.css +199 -0
@@ -0,0 +1,103 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+
6
+ import './Eita__Sidebar.css'
7
+ ;
8
+
9
+ function themeToString(theme) {
10
+ if (theme === "Dark") {
11
+ return "dark";
12
+ } else {
13
+ return "light";
14
+ }
15
+ }
16
+
17
+ function sizeToString(size) {
18
+ switch (size) {
19
+ case "Sm" :
20
+ return "sm";
21
+ case "Md" :
22
+ return "md";
23
+ case "Lg" :
24
+ return "lg";
25
+ }
26
+ }
27
+
28
+ function Eita__Sidebar(props) {
29
+ let __collapsed = props.collapsed;
30
+ let __size = props.size;
31
+ let __theme = props.theme;
32
+ let footer = props.footer;
33
+ let logo = props.logo;
34
+ let theme = __theme !== undefined ? __theme : "Dark";
35
+ let size = __size !== undefined ? __size : "Md";
36
+ let collapsed = __collapsed !== undefined ? __collapsed : false;
37
+ let getSidebarClass = () => {
38
+ let themeClass = theme === "Light" ? " basefn-sidebar--light" : "";
39
+ let sizeClass = " basefn-sidebar--" + sizeToString(size);
40
+ let collapsedClass = collapsed ? " basefn-sidebar--collapsed" : "";
41
+ return "basefn-sidebar" + themeClass + sizeClass + collapsedClass;
42
+ };
43
+ return Xote__JSX.Elements.jsxs("div", {
44
+ class: getSidebarClass(),
45
+ children: Xote__JSX.array([
46
+ logo !== undefined ? Xote__JSX.Elements.jsx("div", {
47
+ class: "basefn-sidebar__header",
48
+ children: Xote__JSX.Elements.jsx("div", {
49
+ class: "basefn-sidebar__logo",
50
+ children: logo
51
+ })
52
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {}),
53
+ Xote__JSX.Elements.jsx("nav", {
54
+ class: "basefn-sidebar__nav",
55
+ children: Xote.Component.fragment(props.sections.map(section => {
56
+ let title = section.title;
57
+ return Xote__JSX.Elements.jsxs("div", {
58
+ class: "basefn-sidebar__section",
59
+ children: Xote__JSX.array([
60
+ title !== undefined ? Xote__JSX.Elements.jsx("div", {
61
+ class: "basefn-sidebar__section-title",
62
+ children: Xote.Component.text(title)
63
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {}),
64
+ Xote.Component.fragment(section.items.map((item, index) => {
65
+ let itemClass = "basefn-sidebar__item" + (
66
+ item.active ? " basefn-sidebar__item--active" : ""
67
+ );
68
+ let icon = item.icon;
69
+ return Xote__JSX.Elements.jsxsKeyed("div", {
70
+ class: itemClass,
71
+ onClick: param => item.onClick(),
72
+ children: Xote__JSX.array([
73
+ icon !== undefined ? Xote__JSX.Elements.jsx("div", {
74
+ class: "basefn-sidebar__item-icon",
75
+ children: Xote.Component.text(icon)
76
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {}),
77
+ Xote__JSX.Elements.jsx("div", {
78
+ class: "basefn-sidebar__item-text",
79
+ children: Xote.Component.text(item.label)
80
+ })
81
+ ])
82
+ }, index.toString(), undefined);
83
+ }))
84
+ ])
85
+ });
86
+ }))
87
+ }),
88
+ footer !== undefined ? Xote__JSX.Elements.jsx("div", {
89
+ class: "basefn-sidebar__footer",
90
+ children: footer
91
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {})
92
+ ])
93
+ });
94
+ }
95
+
96
+ let make = Eita__Sidebar;
97
+
98
+ export {
99
+ themeToString,
100
+ sizeToString,
101
+ make,
102
+ }
103
+ /* Not a pure module */
@@ -0,0 +1,89 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+ import * as Core__Float from "@rescript/core/src/Core__Float.res.mjs";
6
+ import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
7
+
8
+ import './Eita__Slider.css'
9
+ ;
10
+
11
+ function Eita__Slider(props) {
12
+ let markers = props.markers;
13
+ let __disabled = props.disabled;
14
+ let __showValue = props.showValue;
15
+ let label = props.label;
16
+ let __step = props.step;
17
+ let __max = props.max;
18
+ let __min = props.min;
19
+ let onChange = props.onChange;
20
+ let value = props.value;
21
+ let min = __min !== undefined ? __min : 0.0;
22
+ let max = __max !== undefined ? __max : 100.0;
23
+ let step = __step !== undefined ? __step : 1.0;
24
+ let showValue = __showValue !== undefined ? __showValue : true;
25
+ let disabled = __disabled !== undefined ? __disabled : false;
26
+ let handleInput = evt => {
27
+ let target = evt.target;
28
+ let newValue = Core__Option.getOr(Core__Float.fromString(target.value), 0.0);
29
+ Xote.Signal.set(value, newValue);
30
+ if (onChange !== undefined) {
31
+ return onChange(newValue);
32
+ }
33
+ };
34
+ let tmp;
35
+ let exit = 0;
36
+ if (label !== undefined || showValue) {
37
+ exit = 1;
38
+ } else {
39
+ tmp = Xote__JSX.jsx(Xote__JSX.jsxFragment, {});
40
+ }
41
+ if (exit === 1) {
42
+ tmp = Xote__JSX.Elements.jsxs("div", {
43
+ class: "basefn-slider__header",
44
+ children: Xote__JSX.array([
45
+ label !== undefined ? Xote__JSX.Elements.jsx("span", {
46
+ class: "basefn-slider__label",
47
+ children: Xote.Component.text(label)
48
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {}),
49
+ showValue ? Xote__JSX.Elements.jsx("span", {
50
+ class: "basefn-slider__value",
51
+ children: Xote.Component.textSignal(() => Xote.Signal.get(value).toString())
52
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {})
53
+ ])
54
+ });
55
+ }
56
+ return Xote__JSX.Elements.jsx("div", {
57
+ class: "basefn-slider",
58
+ children: Xote__JSX.Elements.jsxs("div", {
59
+ class: "basefn-slider__wrapper",
60
+ children: Xote__JSX.array([
61
+ tmp,
62
+ Xote__JSX.Elements.jsx("input", {
63
+ class: "basefn-slider__input",
64
+ type: "range",
65
+ value: value,
66
+ disabled: disabled,
67
+ min: min.toString(),
68
+ max: max.toString(),
69
+ step: step.toString(),
70
+ onInput: handleInput
71
+ }),
72
+ markers !== undefined ? Xote__JSX.Elements.jsx("div", {
73
+ class: "basefn-slider__markers",
74
+ children: Xote.Component.fragment(markers.map(marker => Xote__JSX.Elements.jsx("span", {
75
+ class: "basefn-slider__marker",
76
+ children: Xote.Component.text(marker)
77
+ })))
78
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {})
79
+ ])
80
+ })
81
+ });
82
+ }
83
+
84
+ let make = Eita__Slider;
85
+
86
+ export {
87
+ make,
88
+ }
89
+ /* Not a pure module */
@@ -0,0 +1,69 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+
6
+ import './Eita__Spinner.css'
7
+ ;
8
+
9
+ function sizeToString(size) {
10
+ switch (size) {
11
+ case "Sm" :
12
+ return "sm";
13
+ case "Md" :
14
+ return "md";
15
+ case "Lg" :
16
+ return "lg";
17
+ case "Xl" :
18
+ return "xl";
19
+ }
20
+ }
21
+
22
+ function variantToString(variant) {
23
+ switch (variant) {
24
+ case "Default" :
25
+ return "default";
26
+ case "Primary" :
27
+ return "primary";
28
+ case "Secondary" :
29
+ return "secondary";
30
+ }
31
+ }
32
+
33
+ function Eita__Spinner(props) {
34
+ let __label = props.label;
35
+ let __variant = props.variant;
36
+ let __size = props.size;
37
+ let size = __size !== undefined ? __size : "Md";
38
+ let variant = __variant !== undefined ? __variant : "Default";
39
+ let label = __label !== undefined ? __label : "";
40
+ let getClassName = () => {
41
+ let sizeClass = "basefn-spinner--" + sizeToString(size);
42
+ let variantClass = "basefn-spinner--" + variantToString(variant);
43
+ return "basefn-spinner " + sizeClass + " " + variantClass;
44
+ };
45
+ let showLabel = label !== "";
46
+ return Xote__JSX.Elements.jsxs("div", {
47
+ class: "basefn-spinner-container",
48
+ children: Xote__JSX.array([
49
+ Xote__JSX.Elements.jsx("div", {
50
+ class: getClassName(),
51
+ role: "status",
52
+ "aria-label": "Loading"
53
+ }),
54
+ showLabel ? Xote__JSX.Elements.jsx("span", {
55
+ class: "basefn-spinner__label",
56
+ children: Xote.Component.text(label)
57
+ }) : Xote__JSX.Elements.jsx("empty", {})
58
+ ])
59
+ });
60
+ }
61
+
62
+ let make = Eita__Spinner;
63
+
64
+ export {
65
+ sizeToString,
66
+ variantToString,
67
+ make,
68
+ }
69
+ /* Not a pure module */
@@ -0,0 +1,114 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+ import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
6
+
7
+ import './Eita__Stepper.css'
8
+ ;
9
+
10
+ function statusToString(status) {
11
+ switch (status) {
12
+ case "Inactive" :
13
+ return "inactive";
14
+ case "Active" :
15
+ return "active";
16
+ case "Completed" :
17
+ return "completed";
18
+ case "Error" :
19
+ return "error";
20
+ }
21
+ }
22
+
23
+ function Eita__Stepper(props) {
24
+ let onStepClick = props.onStepClick;
25
+ let __orientation = props.orientation;
26
+ let orientation = __orientation !== undefined ? __orientation : "Horizontal";
27
+ let getStepperClass = () => {
28
+ let orientationClass;
29
+ orientationClass = orientation === "Horizontal" ? "basefn-stepper--horizontal" : "basefn-stepper--vertical";
30
+ return "basefn-stepper " + orientationClass;
31
+ };
32
+ let getStepClass = (status, clickable) => {
33
+ let statusClass = "basefn-stepper__step--" + statusToString(status);
34
+ let clickableClass = clickable ? " basefn-stepper__step--clickable" : "";
35
+ return "basefn-stepper__step " + statusClass + clickableClass;
36
+ };
37
+ return Xote__JSX.Elements.jsx("div", {
38
+ class: getStepperClass(),
39
+ children: Xote.Component.fragment(props.steps.map((step, index) => {
40
+ let isClickable = Core__Option.isSome(onStepClick) && (step.status === "Completed" || step.status === "Active");
41
+ let match = step.status;
42
+ let tmp;
43
+ let exit = 0;
44
+ switch (match) {
45
+ case "Inactive" :
46
+ case "Active" :
47
+ exit = 1;
48
+ break;
49
+ case "Completed" :
50
+ tmp = Xote.Component.text("\u2713");
51
+ break;
52
+ case "Error" :
53
+ tmp = Xote.Component.text("\u00d7");
54
+ break;
55
+ }
56
+ if (exit === 1) {
57
+ tmp = Xote.Component.text((index + 1 | 0).toString());
58
+ }
59
+ let desc = step.description;
60
+ return Xote__JSX.Elements.jsxsKeyed("div", {
61
+ class: getStepClass(step.status, isClickable),
62
+ children: Xote__JSX.array([
63
+ Xote__JSX.Elements.jsxs("div", {
64
+ class: "basefn-stepper__step-header",
65
+ onClick: param => {
66
+ let status = step.status;
67
+ if (onStepClick === undefined) {
68
+ return;
69
+ }
70
+ switch (status) {
71
+ case "Active" :
72
+ case "Completed" :
73
+ return onStepClick(index);
74
+ case "Inactive" :
75
+ case "Error" :
76
+ return;
77
+ }
78
+ },
79
+ children: Xote__JSX.array([
80
+ Xote__JSX.Elements.jsx("div", {
81
+ class: "basefn-stepper__step-indicator",
82
+ children: tmp
83
+ }),
84
+ Xote__JSX.Elements.jsxs("div", {
85
+ class: "basefn-stepper__step-content",
86
+ children: Xote__JSX.array([
87
+ Xote__JSX.Elements.jsx("div", {
88
+ class: "basefn-stepper__step-title",
89
+ children: Xote.Component.text(step.title)
90
+ }),
91
+ desc !== undefined ? Xote__JSX.Elements.jsx("div", {
92
+ class: "basefn-stepper__step-description",
93
+ children: Xote.Component.text(desc)
94
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {})
95
+ ])
96
+ })
97
+ ])
98
+ }),
99
+ Xote__JSX.Elements.jsx("div", {
100
+ class: "basefn-stepper__connector"
101
+ })
102
+ ])
103
+ }, index.toString(), undefined);
104
+ }))
105
+ });
106
+ }
107
+
108
+ let make = Eita__Stepper;
109
+
110
+ export {
111
+ statusToString,
112
+ make,
113
+ }
114
+ /* Not a pure module */
@@ -0,0 +1,84 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+
6
+ import './Eita__Switch.css'
7
+ ;
8
+
9
+ function sizeToString(size) {
10
+ switch (size) {
11
+ case "Sm" :
12
+ return "sm";
13
+ case "Md" :
14
+ return "md";
15
+ case "Lg" :
16
+ return "lg";
17
+ }
18
+ }
19
+
20
+ function Eita__Switch(props) {
21
+ let __size = props.size;
22
+ let __disabled = props.disabled;
23
+ let label = props.label;
24
+ let onChange = props.onChange;
25
+ let checked = props.checked;
26
+ let disabled = __disabled !== undefined ? __disabled : false;
27
+ let size = __size !== undefined ? __size : "Md";
28
+ let handleClick = param => {
29
+ if (!disabled) {
30
+ Xote.Signal.update(checked, prev => !prev);
31
+ if (onChange !== undefined) {
32
+ return onChange();
33
+ } else {
34
+ return;
35
+ }
36
+ }
37
+ };
38
+ let getWrapperClass = () => {
39
+ let disabledClass = disabled ? " basefn-switch-wrapper--disabled" : "";
40
+ return "basefn-switch-wrapper" + disabledClass;
41
+ };
42
+ let getSwitchClass = () => {
43
+ let sizeClass = size !== "Md" ? " basefn-switch--" + sizeToString(size) : "";
44
+ Xote.Computed.make(() => {
45
+ if (Xote.Signal.get(checked)) {
46
+ return " basefn-switch--checked";
47
+ } else {
48
+ return "";
49
+ }
50
+ }, undefined);
51
+ let disabledClass = disabled ? " basefn-switch--disabled" : "";
52
+ return "basefn-switch" + sizeClass + disabledClass;
53
+ };
54
+ return Xote__JSX.Elements.jsxs("label", {
55
+ class: getWrapperClass(),
56
+ children: Xote__JSX.array([
57
+ Xote__JSX.Elements.jsx("div", {
58
+ class: Xote.Computed.make(() => getSwitchClass() + Xote.Signal.get(Xote.Computed.make(() => {
59
+ if (Xote.Signal.get(checked)) {
60
+ return " basefn-switch--checked";
61
+ } else {
62
+ return "";
63
+ }
64
+ }, undefined)), undefined),
65
+ onClick: handleClick,
66
+ children: Xote__JSX.Elements.jsx("div", {
67
+ class: "basefn-switch__slider"
68
+ })
69
+ }),
70
+ label !== undefined ? Xote__JSX.Elements.jsx("span", {
71
+ class: "basefn-switch-label",
72
+ children: Xote.Component.text(label)
73
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {})
74
+ ])
75
+ });
76
+ }
77
+
78
+ let make = Eita__Switch;
79
+
80
+ export {
81
+ sizeToString,
82
+ make,
83
+ }
84
+ /* Not a pure module */
@@ -0,0 +1,57 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+ import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
6
+
7
+ import './Eita__Tabs.css'
8
+ ;
9
+
10
+ function Eita__Tabs(props) {
11
+ let defaultValue = props.defaultValue;
12
+ let tabs = props.tabs;
13
+ let activeTabSignal = Xote.Signal.make(defaultValue !== undefined ? defaultValue : Core__Option.getOr(Core__Option.map(tabs[0], tab => tab.value), ""), undefined, undefined);
14
+ return Xote.Component.signalFragment(Xote.Computed.make(() => {
15
+ let activeValue = Xote.Signal.get(activeTabSignal);
16
+ return [Xote__JSX.Elements.jsxs("div", {
17
+ class: "basefn-tabs",
18
+ children: Xote__JSX.array([
19
+ Xote__JSX.Elements.jsx("div", {
20
+ class: "basefn-tabs__list",
21
+ children: Xote.Component.fragment(tabs.map(tab => {
22
+ let isActive = Xote.Computed.make(() => Xote.Signal.get(activeTabSignal) === tab.value, undefined);
23
+ let className = Xote.Computed.make(() => {
24
+ let activeClass = Xote.Signal.get(isActive) ? " basefn-tabs__trigger--active" : "";
25
+ return "basefn-tabs__trigger" + activeClass;
26
+ }, undefined);
27
+ return Xote__JSX.Elements.jsxKeyed("button", {
28
+ class: className,
29
+ disabled: Core__Option.getOr(tab.disabled, false),
30
+ onClick: param => {
31
+ let value = tab.value;
32
+ let disabled = tab.disabled;
33
+ if (disabled !== undefined && disabled) {
34
+ return;
35
+ } else {
36
+ return Xote.Signal.set(activeTabSignal, value);
37
+ }
38
+ },
39
+ children: Xote.Component.text(tab.label)
40
+ }, tab.value, undefined);
41
+ }))
42
+ }),
43
+ Xote__JSX.Elements.jsx("div", {
44
+ class: "basefn-tabs__content",
45
+ children: Core__Option.getOr(Core__Option.map(tabs.find(tab => tab.value === activeValue), tab => tab.content), Xote__JSX.jsx(Xote__JSX.jsxFragment, {}))
46
+ })
47
+ ])
48
+ })];
49
+ }, undefined));
50
+ }
51
+
52
+ let make = Eita__Tabs;
53
+
54
+ export {
55
+ make,
56
+ }
57
+ /* Not a pure module */
@@ -0,0 +1,39 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Eita__Dom from "./Eita__Dom.res.mjs";
5
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
6
+
7
+ import './Eita__Textarea.css'
8
+ ;
9
+
10
+ function Eita__Textarea(props) {
11
+ let __disabled = props.disabled;
12
+ let __placeholder = props.placeholder;
13
+ let onInput = props.onInput;
14
+ let value = props.value;
15
+ let placeholder = __placeholder !== undefined ? __placeholder : "";
16
+ let disabled = __disabled !== undefined ? __disabled : false;
17
+ let onInput$1 = e => {
18
+ let t = Eita__Dom.target(e);
19
+ let v = t.value;
20
+ Xote.Signal.set(value, v);
21
+ if (onInput !== undefined) {
22
+ return onInput(v);
23
+ }
24
+ };
25
+ return Xote__JSX.Elements.jsx("textarea", {
26
+ class: "basefn-textarea",
27
+ value: value,
28
+ placeholder: placeholder,
29
+ disabled: disabled,
30
+ onInput: onInput$1
31
+ });
32
+ }
33
+
34
+ let make = Eita__Textarea;
35
+
36
+ export {
37
+ make,
38
+ }
39
+ /* Not a pure module */
@@ -0,0 +1,86 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+
6
+ import './Eita__Timeline.css'
7
+ ;
8
+
9
+ function variantToString(variant) {
10
+ switch (variant) {
11
+ case "Default" :
12
+ return "default";
13
+ case "Primary" :
14
+ return "primary";
15
+ case "Success" :
16
+ return "success";
17
+ case "Warning" :
18
+ return "warning";
19
+ case "Error" :
20
+ return "error";
21
+ }
22
+ }
23
+
24
+ function Eita__Timeline(props) {
25
+ let __orientation = props.orientation;
26
+ let orientation = __orientation !== undefined ? __orientation : "Vertical";
27
+ let getTimelineClass = () => {
28
+ let orientationClass;
29
+ orientationClass = orientation === "Vertical" ? "basefn-timeline--vertical" : "basefn-timeline--horizontal";
30
+ return "basefn-timeline " + orientationClass;
31
+ };
32
+ let getMarkerClass = variant => {
33
+ let variantClass = "basefn-timeline__marker--" + variantToString(variant);
34
+ return "basefn-timeline__marker " + variantClass;
35
+ };
36
+ return Xote__JSX.Elements.jsx("div", {
37
+ class: getTimelineClass(),
38
+ children: Xote.Component.fragment(props.items.map((item, index) => {
39
+ let iconText = item.icon;
40
+ let time = item.timestamp;
41
+ let desc = item.description;
42
+ return Xote__JSX.Elements.jsxsKeyed("div", {
43
+ class: "basefn-timeline__item",
44
+ children: Xote__JSX.array([
45
+ Xote__JSX.Elements.jsxs("div", {
46
+ class: "basefn-timeline__marker-wrapper",
47
+ children: Xote__JSX.array([
48
+ Xote__JSX.Elements.jsx("div", {
49
+ class: getMarkerClass(item.variant),
50
+ children: iconText !== undefined ? Xote.Component.text(iconText) : Xote.Component.text((index + 1 | 0).toString())
51
+ }),
52
+ Xote__JSX.Elements.jsx("div", {
53
+ class: "basefn-timeline__connector"
54
+ })
55
+ ])
56
+ }),
57
+ Xote__JSX.Elements.jsxs("div", {
58
+ class: "basefn-timeline__content",
59
+ children: Xote__JSX.array([
60
+ Xote__JSX.Elements.jsx("div", {
61
+ class: "basefn-timeline__title",
62
+ children: Xote.Component.text(item.title)
63
+ }),
64
+ time !== undefined ? Xote__JSX.Elements.jsx("div", {
65
+ class: "basefn-timeline__timestamp",
66
+ children: Xote.Component.text(time)
67
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {}),
68
+ desc !== undefined ? Xote__JSX.Elements.jsx("div", {
69
+ class: "basefn-timeline__description",
70
+ children: Xote.Component.text(desc)
71
+ }) : Xote__JSX.jsx(Xote__JSX.jsxFragment, {})
72
+ ])
73
+ })
74
+ ])
75
+ }, index.toString(), undefined);
76
+ }))
77
+ });
78
+ }
79
+
80
+ let make = Eita__Timeline;
81
+
82
+ export {
83
+ variantToString,
84
+ make,
85
+ }
86
+ /* Not a pure module */