react-asc 25.3.0 → 25.4.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.
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import { TooltipPlacement } from './tooltip.enums';
2
3
  export interface ITooltipProps extends React.ComponentProps<'div'> {
3
- placement?: 'top' | 'bottom' | 'right' | 'left';
4
+ placement?: TooltipPlacement;
4
5
  text?: string;
5
6
  delay?: number;
6
7
  isOpen?: boolean;
@@ -0,0 +1,6 @@
1
+ export declare enum TooltipPlacement {
2
+ top = "top",
3
+ bottom = "bottom",
4
+ right = "right",
5
+ left = "left"
6
+ }
package/index.es.js CHANGED
@@ -269,7 +269,7 @@ function useMobileDetect() {
269
269
  useEffect(() => {
270
270
  windowSize && checkIsMobile(windowSize.height, windowSize.width);
271
271
  }, [windowSize]);
272
- return { isMobile };
272
+ return { isMobile: isMobile };
273
273
  }
274
274
 
275
275
  const useOnDestroy = (callBack) => {
@@ -1117,11 +1117,11 @@ const FormInput = (props) => {
1117
1117
  };
1118
1118
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1119
1119
  const handleOnInput = (value, type, name) => {
1120
- onInput && onInput({ value, type, name });
1120
+ onInput && onInput({ value: value, type: type, name: name });
1121
1121
  };
1122
1122
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1123
1123
  const handleOnChange = (value, type, name) => {
1124
- onChange && onChange({ value, type, name });
1124
+ onChange && onChange({ value: value, type: type, name: name });
1125
1125
  };
1126
1126
  return (React.createElement(React.Fragment, null,
1127
1127
  (type === 'text' ||
@@ -1547,10 +1547,11 @@ styleInject(css_248z$x);
1547
1547
 
1548
1548
  const MenuBody = (props) => {
1549
1549
  const { parentRef, children, className, shadow = true, menuPosition = 'left', onClickBackdrop } = props;
1550
+ const [popperInstance, setPopperInstance] = useState();
1550
1551
  const menuBodyRef = useRef(null);
1551
1552
  useEffect(() => {
1552
1553
  if (menuBodyRef && parentRef.current && menuBodyRef.current) {
1553
- createPopper(parentRef.current, menuBodyRef.current, {
1554
+ const popperInstance = createPopper(parentRef.current, menuBodyRef.current, {
1554
1555
  placement: `${menuPosition}-start`,
1555
1556
  modifiers: [
1556
1557
  {
@@ -1570,6 +1571,10 @@ const MenuBody = (props) => {
1570
1571
  },
1571
1572
  ]
1572
1573
  });
1574
+ setPopperInstance(popperInstance);
1575
+ }
1576
+ else {
1577
+ popperInstance?.destroy();
1573
1578
  }
1574
1579
  }, [menuBodyRef]);
1575
1580
  const getCssClasses = () => {
@@ -1582,6 +1587,9 @@ const MenuBody = (props) => {
1582
1587
  const handleClickBackdrop = () => {
1583
1588
  onClickBackdrop && onClickBackdrop();
1584
1589
  };
1590
+ useOnDestroy(() => {
1591
+ popperInstance?.destroy();
1592
+ });
1585
1593
  return (React.createElement(Portal, { className: 'menu-root' },
1586
1594
  React.createElement("div", { ref: menuBodyRef, className: getCssClasses() },
1587
1595
  React.createElement(List, null, children)),
@@ -2018,8 +2026,17 @@ var css_248z$l = ".Tooltip-module_tooltipContainer__9ZWx3 {\n display: inline;\
2018
2026
  var styles$l = {"tooltipContainer":"Tooltip-module_tooltipContainer__9ZWx3","tooltip":"Tooltip-module_tooltip__x5HOu","arrow":"Tooltip-module_arrow__B6lfe"};
2019
2027
  styleInject(css_248z$l);
2020
2028
 
2029
+ var TooltipPlacement;
2030
+ (function (TooltipPlacement) {
2031
+ TooltipPlacement["top"] = "top";
2032
+ TooltipPlacement["bottom"] = "bottom";
2033
+ TooltipPlacement["right"] = "right";
2034
+ TooltipPlacement["left"] = "left";
2035
+ })(TooltipPlacement || (TooltipPlacement = {}));
2036
+
2021
2037
  const Tooltip = (props) => {
2022
- const { children, text, placement = 'bottom', isOpen = false, isShowClose = false, delay = 0 } = props;
2038
+ const { children, text, placement = TooltipPlacement.bottom, isOpen = false, isShowClose = false, delay = 0 } = props;
2039
+ const [popperInstance, setPopperInstance] = useState();
2023
2040
  const [debounce, setDebounce] = useState(delay);
2024
2041
  const [open, setOpen] = useState(isOpen);
2025
2042
  const [show, setShow] = useState(isOpen);
@@ -2038,17 +2055,27 @@ const Tooltip = (props) => {
2038
2055
  }, [delay]);
2039
2056
  useEffect(() => {
2040
2057
  if (open === true && refChild && refChild.current && refTooltip && refTooltip.current) {
2041
- createPopper(refChild.current, refTooltip.current, {
2042
- placement: placement,
2043
- modifiers: [
2044
- {
2045
- name: 'offset',
2046
- options: { offset: [0, 8] }
2047
- },
2048
- ]
2049
- });
2058
+ showTooltip();
2059
+ }
2060
+ else {
2061
+ hideTooltip();
2050
2062
  }
2051
2063
  }, [open]);
2064
+ const showTooltip = () => {
2065
+ const popperInstance = createPopper(refChild.current, refTooltip.current, {
2066
+ placement: placement,
2067
+ modifiers: [
2068
+ {
2069
+ name: 'offset',
2070
+ options: { offset: [0, 8] }
2071
+ },
2072
+ ]
2073
+ });
2074
+ setPopperInstance(popperInstance);
2075
+ };
2076
+ const hideTooltip = () => {
2077
+ popperInstance?.destroy();
2078
+ };
2052
2079
  const handleMouseOver = () => {
2053
2080
  setShow(true);
2054
2081
  };
@@ -2064,6 +2091,9 @@ const Tooltip = (props) => {
2064
2091
  const handleClickClose = () => {
2065
2092
  setShow(false);
2066
2093
  };
2094
+ useOnDestroy(() => {
2095
+ hideTooltip();
2096
+ });
2067
2097
  return (React.createElement(React.Fragment, null,
2068
2098
  React.createElement("div", { ref: refChild, className: styles$l.tooltipContainer, onMouseOver: handleMouseOver, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur }, children),
2069
2099
  open && text &&
@@ -2520,7 +2550,7 @@ const Step = (props) => {
2520
2550
  const [hoverRef, isHovered] = useHover();
2521
2551
  const handleClick = (event) => {
2522
2552
  if (!isDisabled) {
2523
- onClick && onClick({ event, value });
2553
+ onClick && onClick({ event: event, value: value });
2524
2554
  }
2525
2555
  };
2526
2556
  const getCssClasses = () => {
@@ -2697,9 +2727,9 @@ const Tabs = (props) => {
2697
2727
  const [selectedValue, setSelectedValue] = useState('');
2698
2728
  const [selectedIndex, setSelectedIndex] = useState(0);
2699
2729
  const tabContext = ({
2700
- selectedValue,
2701
- setSelectedValue,
2702
- fixed
2730
+ selectedValue: selectedValue,
2731
+ setSelectedValue: setSelectedValue,
2732
+ fixed: fixed
2703
2733
  });
2704
2734
  const prevSelectedValueRef = useRef();
2705
2735
  useEffect(() => {
@@ -2746,7 +2776,7 @@ const Tab = (props) => {
2746
2776
  return cssClasses.filter(css => css).join(' ');
2747
2777
  };
2748
2778
  const handleClick = (event) => {
2749
- onClick && onClick({ event, value });
2779
+ onClick && onClick({ event: event, value: value });
2750
2780
  setSelectedValue && setSelectedValue(value);
2751
2781
  };
2752
2782
  return (React.createElement(Button, { className: getCssClasses(), onClick: handleClick, isActive: selectedValue === value, disabled: disabled }, label));
package/index.js CHANGED
@@ -278,7 +278,7 @@ function useMobileDetect() {
278
278
  React.useEffect(() => {
279
279
  windowSize && checkIsMobile(windowSize.height, windowSize.width);
280
280
  }, [windowSize]);
281
- return { isMobile };
281
+ return { isMobile: isMobile };
282
282
  }
283
283
 
284
284
  const useOnDestroy = (callBack) => {
@@ -1126,11 +1126,11 @@ const FormInput = (props) => {
1126
1126
  };
1127
1127
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1128
1128
  const handleOnInput = (value, type, name) => {
1129
- onInput && onInput({ value, type, name });
1129
+ onInput && onInput({ value: value, type: type, name: name });
1130
1130
  };
1131
1131
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1132
1132
  const handleOnChange = (value, type, name) => {
1133
- onChange && onChange({ value, type, name });
1133
+ onChange && onChange({ value: value, type: type, name: name });
1134
1134
  };
1135
1135
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
1136
1136
  (type === 'text' ||
@@ -1556,10 +1556,11 @@ styleInject(css_248z$x);
1556
1556
 
1557
1557
  const MenuBody = (props) => {
1558
1558
  const { parentRef, children, className, shadow = true, menuPosition = 'left', onClickBackdrop } = props;
1559
+ const [popperInstance, setPopperInstance] = React.useState();
1559
1560
  const menuBodyRef = React.useRef(null);
1560
1561
  React.useEffect(() => {
1561
1562
  if (menuBodyRef && parentRef.current && menuBodyRef.current) {
1562
- core.createPopper(parentRef.current, menuBodyRef.current, {
1563
+ const popperInstance = core.createPopper(parentRef.current, menuBodyRef.current, {
1563
1564
  placement: `${menuPosition}-start`,
1564
1565
  modifiers: [
1565
1566
  {
@@ -1579,6 +1580,10 @@ const MenuBody = (props) => {
1579
1580
  },
1580
1581
  ]
1581
1582
  });
1583
+ setPopperInstance(popperInstance);
1584
+ }
1585
+ else {
1586
+ popperInstance?.destroy();
1582
1587
  }
1583
1588
  }, [menuBodyRef]);
1584
1589
  const getCssClasses = () => {
@@ -1591,6 +1596,9 @@ const MenuBody = (props) => {
1591
1596
  const handleClickBackdrop = () => {
1592
1597
  onClickBackdrop && onClickBackdrop();
1593
1598
  };
1599
+ useOnDestroy(() => {
1600
+ popperInstance?.destroy();
1601
+ });
1594
1602
  return (React__default["default"].createElement(Portal, { className: 'menu-root' },
1595
1603
  React__default["default"].createElement("div", { ref: menuBodyRef, className: getCssClasses() },
1596
1604
  React__default["default"].createElement(List, null, children)),
@@ -2027,8 +2035,17 @@ var css_248z$l = ".Tooltip-module_tooltipContainer__9ZWx3 {\n display: inline;\
2027
2035
  var styles$l = {"tooltipContainer":"Tooltip-module_tooltipContainer__9ZWx3","tooltip":"Tooltip-module_tooltip__x5HOu","arrow":"Tooltip-module_arrow__B6lfe"};
2028
2036
  styleInject(css_248z$l);
2029
2037
 
2038
+ var TooltipPlacement;
2039
+ (function (TooltipPlacement) {
2040
+ TooltipPlacement["top"] = "top";
2041
+ TooltipPlacement["bottom"] = "bottom";
2042
+ TooltipPlacement["right"] = "right";
2043
+ TooltipPlacement["left"] = "left";
2044
+ })(TooltipPlacement || (TooltipPlacement = {}));
2045
+
2030
2046
  const Tooltip = (props) => {
2031
- const { children, text, placement = 'bottom', isOpen = false, isShowClose = false, delay = 0 } = props;
2047
+ const { children, text, placement = TooltipPlacement.bottom, isOpen = false, isShowClose = false, delay = 0 } = props;
2048
+ const [popperInstance, setPopperInstance] = React.useState();
2032
2049
  const [debounce, setDebounce] = React.useState(delay);
2033
2050
  const [open, setOpen] = React.useState(isOpen);
2034
2051
  const [show, setShow] = React.useState(isOpen);
@@ -2047,17 +2064,27 @@ const Tooltip = (props) => {
2047
2064
  }, [delay]);
2048
2065
  React.useEffect(() => {
2049
2066
  if (open === true && refChild && refChild.current && refTooltip && refTooltip.current) {
2050
- core.createPopper(refChild.current, refTooltip.current, {
2051
- placement: placement,
2052
- modifiers: [
2053
- {
2054
- name: 'offset',
2055
- options: { offset: [0, 8] }
2056
- },
2057
- ]
2058
- });
2067
+ showTooltip();
2068
+ }
2069
+ else {
2070
+ hideTooltip();
2059
2071
  }
2060
2072
  }, [open]);
2073
+ const showTooltip = () => {
2074
+ const popperInstance = core.createPopper(refChild.current, refTooltip.current, {
2075
+ placement: placement,
2076
+ modifiers: [
2077
+ {
2078
+ name: 'offset',
2079
+ options: { offset: [0, 8] }
2080
+ },
2081
+ ]
2082
+ });
2083
+ setPopperInstance(popperInstance);
2084
+ };
2085
+ const hideTooltip = () => {
2086
+ popperInstance?.destroy();
2087
+ };
2061
2088
  const handleMouseOver = () => {
2062
2089
  setShow(true);
2063
2090
  };
@@ -2073,6 +2100,9 @@ const Tooltip = (props) => {
2073
2100
  const handleClickClose = () => {
2074
2101
  setShow(false);
2075
2102
  };
2103
+ useOnDestroy(() => {
2104
+ hideTooltip();
2105
+ });
2076
2106
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
2077
2107
  React__default["default"].createElement("div", { ref: refChild, className: styles$l.tooltipContainer, onMouseOver: handleMouseOver, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur }, children),
2078
2108
  open && text &&
@@ -2529,7 +2559,7 @@ const Step = (props) => {
2529
2559
  const [hoverRef, isHovered] = useHover();
2530
2560
  const handleClick = (event) => {
2531
2561
  if (!isDisabled) {
2532
- onClick && onClick({ event, value });
2562
+ onClick && onClick({ event: event, value: value });
2533
2563
  }
2534
2564
  };
2535
2565
  const getCssClasses = () => {
@@ -2706,9 +2736,9 @@ const Tabs = (props) => {
2706
2736
  const [selectedValue, setSelectedValue] = React.useState('');
2707
2737
  const [selectedIndex, setSelectedIndex] = React.useState(0);
2708
2738
  const tabContext = ({
2709
- selectedValue,
2710
- setSelectedValue,
2711
- fixed
2739
+ selectedValue: selectedValue,
2740
+ setSelectedValue: setSelectedValue,
2741
+ fixed: fixed
2712
2742
  });
2713
2743
  const prevSelectedValueRef = React.useRef();
2714
2744
  React.useEffect(() => {
@@ -2755,7 +2785,7 @@ const Tab = (props) => {
2755
2785
  return cssClasses.filter(css => css).join(' ');
2756
2786
  };
2757
2787
  const handleClick = (event) => {
2758
- onClick && onClick({ event, value });
2788
+ onClick && onClick({ event: event, value: value });
2759
2789
  setSelectedValue && setSelectedValue(value);
2760
2790
  };
2761
2791
  return (React__default["default"].createElement(Button, { className: getCssClasses(), onClick: handleClick, isActive: selectedValue === value, disabled: disabled }, label));
package/package.json CHANGED
@@ -1,28 +1,28 @@
1
- {
2
- "name": "react-asc",
3
- "version": "25.3.0",
4
- "description": "handcrafted react components",
5
- "main": "index.js",
6
- "module": "index.es.js",
7
- "jsnext:main": "index.es.js",
8
- "author": "Ardian Shala",
9
- "homepage": "https://react-asc.netlify.app",
10
- "license": "MIT",
11
- "dependencies": {
12
- "@popperjs/core": "2.11.5",
13
- "react": "18.2.0",
14
- "react-dom": "18.2.0",
15
- "modern-normalize": "1.1.0"
16
- },
17
- "scripts": {
18
- "pub": "npm publish --access public"
19
- },
20
- "keywords": [
21
- "react",
22
- "component library",
23
- "ui library",
24
- "components",
25
- "library",
26
- "material"
27
- ]
28
- }
1
+ {
2
+ "name": "react-asc",
3
+ "version": "25.4.0",
4
+ "description": "handcrafted react components",
5
+ "main": "index.js",
6
+ "module": "index.es.js",
7
+ "jsnext:main": "index.es.js",
8
+ "author": "Ardian Shala",
9
+ "homepage": "https://react-asc.netlify.app",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "@popperjs/core": "2.11.5",
13
+ "react": "18.2.0",
14
+ "react-dom": "18.2.0",
15
+ "modern-normalize": "1.1.0"
16
+ },
17
+ "scripts": {
18
+ "pub": "npm publish --access public"
19
+ },
20
+ "keywords": [
21
+ "react",
22
+ "component library",
23
+ "ui library",
24
+ "components",
25
+ "library",
26
+ "material"
27
+ ]
28
+ }
package/react-asc.scss CHANGED
@@ -1,354 +1,354 @@
1
- :root {
2
- --breakpoint-xs: 0;
3
- --breakpoint-sm: 576px;
4
- --breakpoint-md: 768px;
5
- --breakpoint-lg: 992px;
6
- --breakpoint-xl: 1200px;
7
- --breakpoint-xxl: 1400px;
8
- }
9
-
10
- :root {
11
- --buttonMinWidth: 62px;
12
- --buttonPadding: 11px 15px;
13
- }
14
-
15
- :root {
16
- --primary-light: #6573c3;
17
- --primary: #3f51b5;
18
- --primary-dark: #2c387e;
19
- --primary-contrast-text: #fff;
20
- --primary-highlight: #d6dbf7;
21
-
22
- --secondary-light: #e5e7eb;
23
- --secondary: #8f8f8f;
24
- --secondary-dark: #9c9da1;
25
- --secondary-contrast-text: #fff;
26
- --secondary-highlight: rgb(233, 233, 233);
27
-
28
- --accent-light: #fd96b8;
29
- --accent: #ff4081;
30
- --accent-dark: #fd2c72;
31
- --accent-contrast-text: #fff;
32
- --accent-highlight: #fca9c5;
33
-
34
- // rename!?
35
- --light-light: #ffffff;
36
- --light: #f8f9fa;
37
- --light-dark: #ebebeb;
38
- --light-contrast-text: #212529;
39
- --light-highlight: #f8f9fa;
40
-
41
- --dark-light: #616468;
42
- --dark: #343a40;
43
- --dark-dark: #343a40;
44
- --dark-contrast-text: #fff;
45
- --dark-highlight: #5e6164;
46
-
47
- --white: #fff;
48
-
49
- --bodyBg: white;
50
- --bodyColor: #212529;
51
-
52
- --highlight: rgba(204, 216, 224, 0.2); // ???
53
-
54
- --shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
55
- 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
56
-
57
- --shadowColor: rgba(0, 0, 0, 0.12);
58
-
59
- --muted: #6c757d !important;
60
- }
61
-
62
- :root {
63
- --fontFamily: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans",
64
- sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
65
- --fontSize: 16px;
66
- --fontWeight: 400;
67
-
68
- --fontLineHeight: 1.5;
69
-
70
- --textBody1FontSize: 13px;
71
- --textBody1LineHeight: 18px;
72
-
73
- --textBody2FontSize: 13px;
74
- --textBody2LineHeight: 18px;
75
-
76
- --textOverlineFontSize: 13px;
77
- --textOverlineLineHeight: 18px;
78
- --textOverlineTransform: uppercase;
79
- }
80
-
81
- :root {
82
- .ml-0 {
83
- margin-left: var(--0);
84
- }
85
-
86
- .ml-1 {
87
- margin-left: var(--1);
88
- }
89
-
90
- .ml-2 {
91
- margin-left: var(--2);
92
- }
93
-
94
- .ml-3 {
95
- margin-left: var(--3);
96
- }
97
-
98
- .ml-auto {
99
- margin-left: var(--auto);
100
- }
101
-
102
- .mr-0 {
103
- margin-right: var(--0);
104
- }
105
-
106
- .mr-1 {
107
- margin-right: var(--1);
108
- }
109
-
110
- .mr-2 {
111
- margin-right: var(--2);
112
- }
113
-
114
- .mr-3 {
115
- margin-right: var(--3);
116
- }
117
-
118
- .mr-auto {
119
- margin-right: var(--auto);
120
- }
121
-
122
- .mt-0 {
123
- margin-top: var(--0);
124
- }
125
-
126
- .mt-1 {
127
- margin-top: var(--1);
128
- }
129
-
130
- .mt-2 {
131
- margin-top: var(--2);
132
- }
133
-
134
- .mt-3 {
135
- margin-top: var(--3);
136
- }
137
-
138
- .mt-4 {
139
- margin-top: var(--4);
140
- }
141
-
142
- .mb-0 {
143
- margin-bottom: var(--0);
144
- }
145
-
146
- .mb-1 {
147
- margin-bottom: var(--1);
148
- }
149
-
150
- .mb-2 {
151
- margin-bottom: var(--2);
152
- }
153
-
154
- .mb-3 {
155
- margin-bottom: var(--3);
156
- }
157
- }
158
-
159
- :root {
160
- .pt-1 {
161
- padding-top: var(--1);
162
- }
163
-
164
- .pt-2 {
165
- padding-top: var(--2);
166
- }
167
-
168
- .pt-3 {
169
- padding-top: var(--3);
170
- }
171
-
172
- .pb-1 {
173
- padding-bottom: var(--1);
174
- }
175
-
176
- .pb-2 {
177
- padding-bottom: var(--2);
178
- }
179
-
180
- .pb-3 {
181
- padding-bottom: var(--3);
182
- }
183
-
184
- .pb-4 {
185
- padding-bottom: var(--4);
186
- }
187
-
188
- .p-3 {
189
- padding: var(--3);
190
- }
191
-
192
- .p-1 {
193
- padding: var(--1);
194
- }
195
-
196
- .p-2 {
197
- padding: var(--2);
198
- }
199
-
200
- .p-3 {
201
- padding: var(--3);
202
- }
203
-
204
- .p-4 {
205
- padding: var(--3);
206
- }
207
-
208
- .pt-0 {
209
- padding-top: var(--0);
210
- }
211
-
212
- .pb-0 {
213
- padding-bottom: var(--0);
214
- }
215
- }
216
-
217
- :root {
218
- --borderRadius: 5px;
219
- --0: 0px !important;
220
- --1: 15px !important;
221
- --2: 25px !important;
222
- --3: 35px !important;
223
- --4: 45px !important;
224
- --auto: auto !important;
225
- }
226
-
227
- .input-group-append {
228
- .btn {
229
- min-width: auto;
230
-
231
- .svg-icon {
232
- margin-left: 0;
233
- margin-right: 0;
234
- }
235
- }
236
- }
237
-
238
- .text-muted {
239
- color: var(--muted);
240
- }
241
-
242
- .flex-1 {
243
- flex: 1;
244
- }
245
-
246
- .d-flex {
247
- display: flex !important;
248
- }
249
-
250
- .justify-content-center {
251
- justify-content: center !important;
252
- }
253
-
254
- .align-items-center {
255
- align-items: center !important;
256
- }
257
-
258
- .flex-wrap {
259
- flex-wrap: wrap;
260
- }
261
-
262
- .flex-row {
263
- flex-direction: row;
264
- }
265
-
266
- .flex-row-reverse {
267
- flex-direction: row-reverse;
268
- }
269
-
270
- .flex-column {
271
- flex-direction: column;
272
- }
273
-
274
- .flex-column-reverse {
275
- flex-direction: column-reverse;
276
- }
277
-
278
- .w-100 {
279
- width: 100%;
280
- }
281
-
282
- .h-100 {
283
- height: 100%;
284
- }
285
-
286
- .text-center {
287
- text-align: center;
288
- }
289
-
290
- .text-uppercase {
291
- text-transform: uppercase;
292
- }
293
-
294
- .rounded-pill {
295
- border-radius: 50rem !important;
296
- }
297
-
298
- .fw-bold {
299
- font-weight: 700!important;
300
- }
301
-
302
- @media (max-width: 576px) {
303
- .flex-row {
304
- flex-direction: column !important;
305
- }
306
- }
307
- @media (min-width: 768px) {
308
- .justify-content-md-center {
309
- justify-content: center !important;
310
- }
311
- .align-items-md-center {
312
- align-items: center !important;
313
- }
314
- }
315
-
316
- .modal-open {
317
- overflow: hidden !important;
318
- }
319
-
320
-
321
- * {
322
- min-width: 0;
323
- min-height: 0;
324
- }
325
-
326
- label.required {
327
- &::after {
328
- display: inline-block;
329
- line-height: 0.8;
330
- content: "*";
331
- vertical-align: text-top;
332
- }
333
- }
334
-
335
- .overline {
336
- font-size: var(--textOverlineFontSize) !important;
337
- line-height: var(--textOverlineLineHeight) !important;
338
- text-transform: var(--textOverlineTransform) !important;
339
- font-weight: bold;
340
- }
341
-
342
- .body1 {
343
- font-size: var(--textBody1FontSize) !important;
344
- line-height: var(--textBody1LineHeight) !important;
345
- }
346
-
347
- .body2 {
348
- font-size: var(--textBody2FontSize) !important;
349
- line-height: var(--textBody2LineHeight) !important;
350
- }
351
-
352
- .uppercase {
353
- text-transform: uppercase !important;
354
- }
1
+ :root {
2
+ --breakpoint-xs: 0;
3
+ --breakpoint-sm: 576px;
4
+ --breakpoint-md: 768px;
5
+ --breakpoint-lg: 992px;
6
+ --breakpoint-xl: 1200px;
7
+ --breakpoint-xxl: 1400px;
8
+ }
9
+
10
+ :root {
11
+ --buttonMinWidth: 62px;
12
+ --buttonPadding: 11px 15px;
13
+ }
14
+
15
+ :root {
16
+ --primary-light: #6573c3;
17
+ --primary: #3f51b5;
18
+ --primary-dark: #2c387e;
19
+ --primary-contrast-text: #fff;
20
+ --primary-highlight: #d6dbf7;
21
+
22
+ --secondary-light: #e5e7eb;
23
+ --secondary: #8f8f8f;
24
+ --secondary-dark: #9c9da1;
25
+ --secondary-contrast-text: #fff;
26
+ --secondary-highlight: rgb(233, 233, 233);
27
+
28
+ --accent-light: #fd96b8;
29
+ --accent: #ff4081;
30
+ --accent-dark: #fd2c72;
31
+ --accent-contrast-text: #fff;
32
+ --accent-highlight: #fca9c5;
33
+
34
+ // rename!?
35
+ --light-light: #ffffff;
36
+ --light: #f8f9fa;
37
+ --light-dark: #ebebeb;
38
+ --light-contrast-text: #212529;
39
+ --light-highlight: #f8f9fa;
40
+
41
+ --dark-light: #616468;
42
+ --dark: #343a40;
43
+ --dark-dark: #343a40;
44
+ --dark-contrast-text: #fff;
45
+ --dark-highlight: #5e6164;
46
+
47
+ --white: #fff;
48
+
49
+ --bodyBg: white;
50
+ --bodyColor: #212529;
51
+
52
+ --highlight: rgba(204, 216, 224, 0.2); // ???
53
+
54
+ --shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
55
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
56
+
57
+ --shadowColor: rgba(0, 0, 0, 0.12);
58
+
59
+ --muted: #6c757d !important;
60
+ }
61
+
62
+ :root {
63
+ --fontFamily: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans",
64
+ sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
65
+ --fontSize: 16px;
66
+ --fontWeight: 400;
67
+
68
+ --fontLineHeight: 1.5;
69
+
70
+ --textBody1FontSize: 13px;
71
+ --textBody1LineHeight: 18px;
72
+
73
+ --textBody2FontSize: 13px;
74
+ --textBody2LineHeight: 18px;
75
+
76
+ --textOverlineFontSize: 13px;
77
+ --textOverlineLineHeight: 18px;
78
+ --textOverlineTransform: uppercase;
79
+ }
80
+
81
+ :root {
82
+ .ml-0 {
83
+ margin-left: var(--0);
84
+ }
85
+
86
+ .ml-1 {
87
+ margin-left: var(--1);
88
+ }
89
+
90
+ .ml-2 {
91
+ margin-left: var(--2);
92
+ }
93
+
94
+ .ml-3 {
95
+ margin-left: var(--3);
96
+ }
97
+
98
+ .ml-auto {
99
+ margin-left: var(--auto);
100
+ }
101
+
102
+ .mr-0 {
103
+ margin-right: var(--0);
104
+ }
105
+
106
+ .mr-1 {
107
+ margin-right: var(--1);
108
+ }
109
+
110
+ .mr-2 {
111
+ margin-right: var(--2);
112
+ }
113
+
114
+ .mr-3 {
115
+ margin-right: var(--3);
116
+ }
117
+
118
+ .mr-auto {
119
+ margin-right: var(--auto);
120
+ }
121
+
122
+ .mt-0 {
123
+ margin-top: var(--0);
124
+ }
125
+
126
+ .mt-1 {
127
+ margin-top: var(--1);
128
+ }
129
+
130
+ .mt-2 {
131
+ margin-top: var(--2);
132
+ }
133
+
134
+ .mt-3 {
135
+ margin-top: var(--3);
136
+ }
137
+
138
+ .mt-4 {
139
+ margin-top: var(--4);
140
+ }
141
+
142
+ .mb-0 {
143
+ margin-bottom: var(--0);
144
+ }
145
+
146
+ .mb-1 {
147
+ margin-bottom: var(--1);
148
+ }
149
+
150
+ .mb-2 {
151
+ margin-bottom: var(--2);
152
+ }
153
+
154
+ .mb-3 {
155
+ margin-bottom: var(--3);
156
+ }
157
+ }
158
+
159
+ :root {
160
+ .pt-1 {
161
+ padding-top: var(--1);
162
+ }
163
+
164
+ .pt-2 {
165
+ padding-top: var(--2);
166
+ }
167
+
168
+ .pt-3 {
169
+ padding-top: var(--3);
170
+ }
171
+
172
+ .pb-1 {
173
+ padding-bottom: var(--1);
174
+ }
175
+
176
+ .pb-2 {
177
+ padding-bottom: var(--2);
178
+ }
179
+
180
+ .pb-3 {
181
+ padding-bottom: var(--3);
182
+ }
183
+
184
+ .pb-4 {
185
+ padding-bottom: var(--4);
186
+ }
187
+
188
+ .p-3 {
189
+ padding: var(--3);
190
+ }
191
+
192
+ .p-1 {
193
+ padding: var(--1);
194
+ }
195
+
196
+ .p-2 {
197
+ padding: var(--2);
198
+ }
199
+
200
+ .p-3 {
201
+ padding: var(--3);
202
+ }
203
+
204
+ .p-4 {
205
+ padding: var(--3);
206
+ }
207
+
208
+ .pt-0 {
209
+ padding-top: var(--0);
210
+ }
211
+
212
+ .pb-0 {
213
+ padding-bottom: var(--0);
214
+ }
215
+ }
216
+
217
+ :root {
218
+ --borderRadius: 5px;
219
+ --0: 0px !important;
220
+ --1: 15px !important;
221
+ --2: 25px !important;
222
+ --3: 35px !important;
223
+ --4: 45px !important;
224
+ --auto: auto !important;
225
+ }
226
+
227
+ .input-group-append {
228
+ .btn {
229
+ min-width: auto;
230
+
231
+ .svg-icon {
232
+ margin-left: 0;
233
+ margin-right: 0;
234
+ }
235
+ }
236
+ }
237
+
238
+ .text-muted {
239
+ color: var(--muted);
240
+ }
241
+
242
+ .flex-1 {
243
+ flex: 1;
244
+ }
245
+
246
+ .d-flex {
247
+ display: flex !important;
248
+ }
249
+
250
+ .justify-content-center {
251
+ justify-content: center !important;
252
+ }
253
+
254
+ .align-items-center {
255
+ align-items: center !important;
256
+ }
257
+
258
+ .flex-wrap {
259
+ flex-wrap: wrap;
260
+ }
261
+
262
+ .flex-row {
263
+ flex-direction: row;
264
+ }
265
+
266
+ .flex-row-reverse {
267
+ flex-direction: row-reverse;
268
+ }
269
+
270
+ .flex-column {
271
+ flex-direction: column;
272
+ }
273
+
274
+ .flex-column-reverse {
275
+ flex-direction: column-reverse;
276
+ }
277
+
278
+ .w-100 {
279
+ width: 100%;
280
+ }
281
+
282
+ .h-100 {
283
+ height: 100%;
284
+ }
285
+
286
+ .text-center {
287
+ text-align: center;
288
+ }
289
+
290
+ .text-uppercase {
291
+ text-transform: uppercase;
292
+ }
293
+
294
+ .rounded-pill {
295
+ border-radius: 50rem !important;
296
+ }
297
+
298
+ .fw-bold {
299
+ font-weight: 700!important;
300
+ }
301
+
302
+ @media (max-width: 576px) {
303
+ .flex-row {
304
+ flex-direction: column !important;
305
+ }
306
+ }
307
+ @media (min-width: 768px) {
308
+ .justify-content-md-center {
309
+ justify-content: center !important;
310
+ }
311
+ .align-items-md-center {
312
+ align-items: center !important;
313
+ }
314
+ }
315
+
316
+ .modal-open {
317
+ overflow: hidden !important;
318
+ }
319
+
320
+
321
+ * {
322
+ min-width: 0;
323
+ min-height: 0;
324
+ }
325
+
326
+ label.required {
327
+ &::after {
328
+ display: inline-block;
329
+ line-height: 0.8;
330
+ content: "*";
331
+ vertical-align: text-top;
332
+ }
333
+ }
334
+
335
+ .overline {
336
+ font-size: var(--textOverlineFontSize) !important;
337
+ line-height: var(--textOverlineLineHeight) !important;
338
+ text-transform: var(--textOverlineTransform) !important;
339
+ font-weight: bold;
340
+ }
341
+
342
+ .body1 {
343
+ font-size: var(--textBody1FontSize) !important;
344
+ line-height: var(--textBody1LineHeight) !important;
345
+ }
346
+
347
+ .body2 {
348
+ font-size: var(--textBody2FontSize) !important;
349
+ line-height: var(--textBody2LineHeight) !important;
350
+ }
351
+
352
+ .uppercase {
353
+ text-transform: uppercase !important;
354
+ }
package/readme.md CHANGED
@@ -1,91 +1,91 @@
1
- # react-asc
2
-
3
- handcrafted components inspired by Material Design and bundled with rollup.
4
-
5
- ## showcase
6
-
7
- react-asc interactive showcase [link](https://react-asc.netlify.app)
8
-
9
- ## usage
10
-
11
- ### install package
12
-
13
- `npm install react-asc`
14
-
15
- ### install modern-normalize
16
-
17
- `npm install modern-normalize`
18
-
19
- ### Include styles
20
-
21
- ```scss
22
- @import "modern-normalize";
23
- @import "react-asc/react-asc.scss";
24
- ```
25
-
26
- ### Usage
27
-
28
- ```js
29
- import React from "react";
30
- import { Button } from "react-asc";
31
-
32
- const MyApp = () => {
33
- return <Button>some button</Button>;
34
- };
35
- ```
36
-
37
-
38
- ## TypeScript
39
- react-asc provides built-in ts definition
40
-
41
-
42
- ## Included Components
43
-
44
- - Alert (beta)
45
- - AppBar
46
- - AutoComplete (beta)
47
- - Backdrop
48
- - Badge
49
- - Breadcrumb
50
- - Button
51
- - ButtonGroup
52
- - Card
53
- - Checkbox
54
- - Chip
55
- - CssTransition
56
- - ConditionalWrapper
57
- - DateSelect
58
- - Drawer
59
- - ExpansionPanel
60
- - FileInput
61
- - FloatingActionButton
62
- - Form (beta)
63
- - Grid
64
- - Icon
65
- - IconButton
66
- - Link
67
- - List
68
- - LoadingIndicator
69
- - Menu
70
- - Modal + ModalService
71
- - NumberSelect
72
- Portal
73
- - Select
74
- - Sidebar
75
- - Skeleton (Avatar, Image, Text, SkeletonFooter)
76
- - Snackbar + SnackbarService
77
- - SpeedDial
78
- - Stepper (beta)
79
- - Table (beta)
80
- - Tabs
81
- - Textarea
82
- - TimeSelect
83
- - Tooltip
84
- - TreeView (beta)
85
- - Typography
86
-
87
-
88
- ## Credit
89
-
90
- uses fontawesome icons as SVGs
91
- https://fontawesome.com/license
1
+ # react-asc
2
+
3
+ handcrafted components inspired by Material Design and bundled with rollup.
4
+
5
+ ## showcase
6
+
7
+ react-asc interactive showcase [link](https://react-asc.netlify.app)
8
+
9
+ ## usage
10
+
11
+ ### install package
12
+
13
+ `npm install react-asc`
14
+
15
+ ### install modern-normalize
16
+
17
+ `npm install modern-normalize`
18
+
19
+ ### Include styles
20
+
21
+ ```scss
22
+ @import "modern-normalize";
23
+ @import "react-asc/react-asc.scss";
24
+ ```
25
+
26
+ ### Usage
27
+
28
+ ```js
29
+ import React from "react";
30
+ import { Button } from "react-asc";
31
+
32
+ const MyApp = () => {
33
+ return <Button>some button</Button>;
34
+ };
35
+ ```
36
+
37
+
38
+ ## TypeScript
39
+ react-asc provides built-in ts definition
40
+
41
+
42
+ ## Included Components
43
+
44
+ - Alert (beta)
45
+ - AppBar
46
+ - AutoComplete (beta)
47
+ - Backdrop
48
+ - Badge
49
+ - Breadcrumb
50
+ - Button
51
+ - ButtonGroup
52
+ - Card
53
+ - Checkbox
54
+ - Chip
55
+ - CssTransition
56
+ - ConditionalWrapper
57
+ - DateSelect
58
+ - Drawer
59
+ - ExpansionPanel
60
+ - FileInput
61
+ - FloatingActionButton
62
+ - Form (beta)
63
+ - Grid
64
+ - Icon
65
+ - IconButton
66
+ - Link
67
+ - List
68
+ - LoadingIndicator
69
+ - Menu
70
+ - Modal + ModalService
71
+ - NumberSelect
72
+ Portal
73
+ - Select
74
+ - Sidebar
75
+ - Skeleton (Avatar, Image, Text, SkeletonFooter)
76
+ - Snackbar + SnackbarService
77
+ - SpeedDial
78
+ - Stepper (beta)
79
+ - Table (beta)
80
+ - Tabs
81
+ - Textarea
82
+ - TimeSelect
83
+ - Tooltip
84
+ - TreeView (beta)
85
+ - Typography
86
+
87
+
88
+ ## Credit
89
+
90
+ uses fontawesome icons as SVGs
91
+ https://fontawesome.com/license