@sikka/hawa 0.0.185 → 0.0.187

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.
package/package.json CHANGED
@@ -1,9 +1,27 @@
1
1
  {
2
2
  "name": "@sikka/hawa",
3
- "version": "0.0.185",
4
- "description": "UI Kit",
3
+ "version": "0.0.187",
4
+ "description": "SaaS Oriented UI Kit",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.es.js",
7
+ "author": "Sikka Software <contact@sikka.io> (http://sikka.io)",
8
+ "license": "MIT",
9
+ "keywords": [
10
+ "ui",
11
+ "kit",
12
+ "saas",
13
+ "kit",
14
+ "hawa"
15
+ ],
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/sikka-software/hawa.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/sikka-software/hawa/issues",
22
+ "email": "hawa@sikka.io"
23
+ },
24
+ "homepage": "https://hawa.style",
7
25
  "scripts": {
8
26
  "test": "echo \"Error: no test specified\" && exit 1",
9
27
  "start": "start-storybook -p 6006 -s public",
@@ -14,8 +32,6 @@
14
32
  "build-lib": "rollup -c",
15
33
  "build:styles": " node tools/build-styles"
16
34
  },
17
- "author": "Sikka Software",
18
- "license": "MIT",
19
35
  "devDependencies": {
20
36
  "@babel/core": "^7.12.10",
21
37
  "@babel/preset-react": "^7.12.10",
@@ -5,6 +5,7 @@ import { HawaContainer } from "../../layout"
5
5
 
6
6
  type ResetPasswordType = {
7
7
  handleResetPassword: () => void
8
+ handleRouteToSignUp: () => void
8
9
  sent: any
9
10
  texts: {
10
11
  emailLabel: string
@@ -13,6 +14,8 @@ type ResetPasswordType = {
13
14
  emailInvalidText: string
14
15
  emailSentText: string
15
16
  resetPassword: string
17
+ signUpText: string
18
+ dontHaveAccount: string
16
19
  }
17
20
  }
18
21
 
@@ -53,6 +56,15 @@ export const ResetPasswordForm: React.FunctionComponent<ResetPasswordType> = (
53
56
  },
54
57
  }}
55
58
  />
59
+ <div className=" pb-2 text-left text-sm dark:text-gray-300">
60
+ {props.texts.dontHaveAccount ?? "Don't have an account? "}
61
+ <span
62
+ onClick={props.handleRouteToSignUp}
63
+ className="cursor-pointer text-blue-600 dark:text-blue-400"
64
+ >
65
+ {props.texts.signUpText ?? "Sign Up"}
66
+ </span>
67
+ </div>
56
68
  <HawaButton
57
69
  color="primary"
58
70
  width="full"
@@ -41,6 +41,7 @@ type SignUpFormTypes = {
41
41
  googleButtonLabel: string
42
42
  githubButtonLabel: string
43
43
  twitterButtonLabel: string
44
+ refCode: string
44
45
  }
45
46
  showUserSource: any
46
47
  viaGoogle: boolean
@@ -194,13 +195,13 @@ export const SignUpForm: React.FunctionComponent<SignUpFormTypes> = (props) => {
194
195
  {props.showRefCode && (
195
196
  <Controller
196
197
  control={control}
197
- name="password"
198
+ name="refCode"
198
199
  render={({ field }) => (
199
200
  <HawaTextField
200
201
  width="full"
201
202
  type="text"
202
203
  defaultValue={field.value ?? ""}
203
- label={"Ref Code"}
204
+ label={props.texts.refCode}
204
205
  placeholder={props.texts.passwordPlaceholder}
205
206
  helperText={errors.password?.message}
206
207
  value={field.value ?? ""}
@@ -235,49 +236,45 @@ export const SignUpForm: React.FunctionComponent<SignUpFormTypes> = (props) => {
235
236
  </div>
236
237
  )}
237
238
  {props.showTermsOption && (
238
- <div>
239
- <Controller
240
- control={control}
241
- name="terms_accepted"
242
- render={({ field }) => (
243
- <HawaCheckbox
244
- id="terms_accepted"
245
- helperText={errors.terms_accepted?.message}
246
- onChange={(e) => {
247
- console.log("changing ", e)
248
- field.onChange(e)
249
- }}
250
- label={
251
- <span>
252
- {props.texts.iAcceptText}{" "}
253
- <a
254
- onClick={props.handleRouteToTOS}
255
- className="cursor-pointer text-blue-800"
256
- >
257
- {props.texts.termsText}
258
- </a>
259
- </span>
260
- }
261
- />
262
- )}
263
- rules={{ required: props.texts.termsRequiredText }}
264
- />
265
- </div>
239
+ <Controller
240
+ control={control}
241
+ name="terms_accepted"
242
+ render={({ field }) => (
243
+ <HawaCheckbox
244
+ id="terms_accepted"
245
+ helperText={errors.terms_accepted?.message}
246
+ onChange={(e) => {
247
+ console.log("changing ", e)
248
+ field.onChange(e)
249
+ }}
250
+ label={
251
+ <span>
252
+ {props.texts.iAcceptText}{" "}
253
+ <a
254
+ onClick={props.handleRouteToTOS}
255
+ className="cursor-pointer text-blue-800"
256
+ >
257
+ {props.texts.termsText}
258
+ </a>
259
+ </span>
260
+ }
261
+ />
262
+ )}
263
+ rules={{ required: props.texts.termsRequiredText }}
264
+ />
266
265
  )}
267
266
  {props.showNewsletterOption && (
268
- <div className="py-2">
269
- <Controller
270
- control={control}
271
- name="newsletter_accepted"
272
- render={({ field }) => (
273
- <HawaCheckbox
274
- id="newsletter_accepted"
275
- label={props.texts.subscribeToNewsletter}
276
- onChange={field.onChange}
277
- />
278
- )}
279
- />
280
- </div>
267
+ <Controller
268
+ control={control}
269
+ name="newsletter_accepted"
270
+ render={({ field }) => (
271
+ <HawaCheckbox
272
+ id="newsletter_accepted"
273
+ label={props.texts.subscribeToNewsletter}
274
+ onChange={field.onChange}
275
+ />
276
+ )}
277
+ />
281
278
  )}
282
279
  <HawaButton
283
280
  isLoading={props.isLoading}
@@ -1,3 +1,4 @@
1
+ import clsx from "clsx"
1
2
  import React, { useEffect, useState } from "react"
2
3
 
3
4
  type TCheckBoxTypes = {
@@ -19,11 +20,11 @@ export const HawaCheckbox: React.FunctionComponent<TCheckBoxTypes> = (
19
20
  }, [val])
20
21
  return (
21
22
  <div
22
- className={
23
+ className={clsx(
23
24
  props.centered
24
25
  ? "flex h-full items-center justify-center"
25
26
  : "flex h-full items-start "
26
- }
27
+ )}
27
28
  >
28
29
  <input
29
30
  type="checkbox"
@@ -49,6 +49,7 @@ export const HawaMenu: React.FunctionComponent<TMenuTypes> = ({
49
49
  handleClose()
50
50
  }
51
51
  }
52
+ console.log("ref is", ref.current?.getBoundingClientRect())
52
53
  document.addEventListener("click", handleClickOutside, true)
53
54
  return () => {
54
55
  document.removeEventListener("click", handleClickOutside, true)
@@ -63,8 +64,8 @@ export const HawaMenu: React.FunctionComponent<TMenuTypes> = ({
63
64
  "bottom-left": "bottom-12 left-0",
64
65
  }
65
66
  let animationStyles = {
66
- opened: "max-h-fit",
67
- closed: "h-0 ",
67
+ opened: "max-h-fit h-max visible opacity-100 block",
68
+ closed: "h-0 invisible opacity-0 hidden",
68
69
  }
69
70
  return (
70
71
  <div
@@ -48,7 +48,7 @@ export const HawaPhoneInput: React.FunctionComponent<HawaPhoneInputTypes> = (
48
48
  {props.label}
49
49
  </label>
50
50
  )}
51
- <div className="flex flex-row">
51
+ <div dir="ltr" className="flex flex-row">
52
52
  <Select
53
53
  styles={{
54
54
  input: (base) => ({
@@ -18,7 +18,7 @@ const Option: React.FunctionComponent<OptionTypes> = ({
18
18
  }) => (
19
19
  <div
20
20
  ref={innerRef}
21
- className="m-2 flex flex-row items-center justify-between rounded p-1 px-3 hover:bg-blue-200"
21
+ className="m-2 flex flex-row items-center justify-between rounded p-1 px-3 hover:bg-buttonPrimary-500 hover:text-white"
22
22
  {...innerProps}
23
23
  >
24
24
  {children}
@@ -1,8 +1,6 @@
1
1
  import clsx from "clsx"
2
2
  import React, { useState } from "react"
3
3
 
4
- // TODO: add option to increase space between tabs and content
5
- // TODO: make the blued border rounded
6
4
  type TabsTypes = {
7
5
  options?: any
8
6
  onChangeTab?: any
@@ -11,10 +9,12 @@ type TabsTypes = {
11
9
  orientation?: "horizontal" | "vertical"
12
10
  direction?: "rtl" | "ltr"
13
11
  marginBetween?: any
12
+ width?: "full" | "normal"
14
13
  }
15
14
  export const HawaTabs: React.FunctionComponent<TabsTypes> = ({
16
15
  orientation = "horizontal",
17
16
  direction = "ltr",
17
+ width = "normal",
18
18
  marginBetween = 0,
19
19
  ...props
20
20
  }) => {
@@ -29,7 +29,11 @@ export const HawaTabs: React.FunctionComponent<TabsTypes> = ({
29
29
  vertical:
30
30
  "inline-block py-2 px-4 rounded-none rounded-br-none rounded-tl-none hover:text-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 dark:hover:text-white",
31
31
  horizontal:
32
- "inline-block py-2 px-4 rounded rounded-br-none rounded-bl-none hover:text-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 dark:hover:text-white",
32
+ "bg-gray-100 inline-block py-2 px-4 rounded rounded-br-none rounded-bl-none hover:text-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 dark:hover:text-white",
33
+ }
34
+ let widthStyles = {
35
+ full: "w-full min-w-full",
36
+ normal: "w-fit",
33
37
  }
34
38
  console.log("selected i : ", selectedOption)
35
39
  console.log("selected object : ", props.options[selectedOption])
@@ -51,7 +55,7 @@ export const HawaTabs: React.FunctionComponent<TabsTypes> = ({
51
55
  vertical:
52
56
  "sticky top-2 h-fit flex flex-col w-fit flex-wrap rounded border-b-buttonPrimary-500 bg-gray-100 text-center text-sm font-medium text-gray-500 dark:text-gray-400",
53
57
  horizontal:
54
- "flex w-fit flex-wrap rounded rounded-br-none rounded-bl-none border-b-buttonPrimary-500 bg-gray-100 text-center text-sm font-medium text-gray-500 dark:text-gray-400",
58
+ "flex w-fit flex-wrap rounded rounded-br-none rounded-bl-none border-b-buttonPrimary-500 text-center text-sm font-medium text-gray-500 dark:text-gray-400",
55
59
  }
56
60
  return (
57
61
  <div
@@ -59,6 +63,7 @@ export const HawaTabs: React.FunctionComponent<TabsTypes> = ({
59
63
  className={clsx(
60
64
  containerStyle[orientation],
61
65
  props.options[selectedOption] ? "border-b-2" : "border-b-0"
66
+ // "bg-red-400"
62
67
  )}
63
68
  >
64
69
  <ul
@@ -78,7 +83,8 @@ export const HawaTabs: React.FunctionComponent<TabsTypes> = ({
78
83
  ? direction === "rtl"
79
84
  ? "rounded-none rounded-r border-l-2"
80
85
  : "rounded-none rounded-l border-r-2"
81
- : "border-b-2"
86
+ : "border-b-2",
87
+ widthStyles[width]
82
88
  )}
83
89
  >
84
90
  {/*
@@ -17,6 +17,7 @@ type TextFieldTypes = {
17
17
  inputProps?: any
18
18
  onChange?: any
19
19
  ref?: any
20
+ icon?: any
20
21
  }
21
22
 
22
23
  export const HawaTextField: React.FunctionComponent<TextFieldTypes> = ({
@@ -36,6 +37,10 @@ export const HawaTextField: React.FunctionComponent<TextFieldTypes> = ({
36
37
  }
37
38
 
38
39
  let defaultStyle = "flex h-fit max-h-fit flex-col justify-center"
40
+ let defaultInputStyle =
41
+ "block w-full rounded border border-gray-300 bg-gray-50 p-2 text-sm text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
42
+ // "mb-0 block w-full rounded border border-gray-300 bg-gray-50 p-2 text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500",
43
+
39
44
  return (
40
45
  <div
41
46
  // ref={props.ref}
@@ -53,7 +58,7 @@ export const HawaTextField: React.FunctionComponent<TextFieldTypes> = ({
53
58
  <textarea
54
59
  id="message"
55
60
  rows={4}
56
- className="block w-full rounded border border-gray-300 bg-gray-50 p-2.5 text-sm text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
61
+ className={defaultInputStyle}
57
62
  onChange={props.onChange}
58
63
  type={props.type}
59
64
  aria-label={props.label}
@@ -62,32 +67,22 @@ export const HawaTextField: React.FunctionComponent<TextFieldTypes> = ({
62
67
  value={props.value}
63
68
  {...props}
64
69
  />
65
- ) : props.type === "search" ? (
70
+ ) : (
66
71
  <div className="relative">
67
- <div className="absolute top-1/2 left-3 -translate-y-1/2">
68
- <FaSearch color="gray" />
69
- </div>
70
72
  <input
71
73
  {...props}
72
- className="mb-0 block w-full rounded border border-gray-300 bg-gray-50 p-2.5 pl-10 text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
73
- />
74
- </div>
75
- ) : (
76
- <div>
77
- <input
78
- onChange={props.onChange}
79
- type={props.type}
80
- aria-label={props.label}
81
- placeholder={props.placeholder}
82
- defaultValue={props.defaultValue}
83
- value={props.value}
84
- className="mb-0 block w-full rounded border border-gray-300 bg-gray-50 p-2.5 text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
74
+ className={clsx(defaultInputStyle, props.icon ? "pr-10" : "")}
85
75
  />
76
+ {props.icon && (
77
+ <div className="absolute top-1/2 right-3 -translate-y-1/2">
78
+ {props.icon}
79
+ </div>
80
+ )}
86
81
  </div>
87
82
  )}
88
83
 
89
84
  {props.helperText && (
90
- <p className="mb-1 mt-1 text-xs text-red-600 dark:text-red-500">
85
+ <p className="mb-0 mt-1 text-xs text-red-600 dark:text-red-500">
91
86
  {/* <span className="font-medium">Oh, snapp!</span> */}
92
87
  {props.helperText}
93
88
  </p>
@@ -5,8 +5,9 @@ import { HawaMenu } from "../elements"
5
5
  import { HiMenu } from "react-icons/hi"
6
6
  import useBreakpoint from "../hooks/useBreakpoint"
7
7
  import { FaChevronRight } from "react-icons/fa"
8
- // TODO: add ability to control the width of the drawer
9
8
  // TODO: when no navbar, the drawer can't be opened
9
+ // TODO: when no pagetitle, navbar gets messy
10
+ // TODO: the user menu avatar clickable area is exceeding the topbar
10
11
  type HawaAppLayoutTypes = {
11
12
  drawerItems: {
12
13
  label: string
@@ -46,6 +47,7 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
46
47
  const [openSideMenu, setOpenSideMenu] = useState(true)
47
48
  const [openSubItem, setOpenSubitem] = useState("")
48
49
  const { isOpen, onClose, onOpen } = useDiscloser(false)
50
+ const [keepOpen, setKeepOpen] = useState(true)
49
51
  const ref = useRef(null)
50
52
  const isRTL = direction === "rtl"
51
53
  let size
@@ -54,7 +56,6 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
54
56
  } else {
55
57
  size = 1200
56
58
  }
57
- const [keepOpen, setKeepOpen] = useState(false)
58
59
  useEffect(() => {
59
60
  const handleClickOutside = (event) => {
60
61
  if (ref.current && !ref.current.contains(event.target) && !keepOpen) {
@@ -165,7 +166,7 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
165
166
  handleOpen={onOpen}
166
167
  open={isOpen}
167
168
  >
168
- <div className="relative h-8 w-8 cursor-pointer overflow-hidden rounded-full bg-gray-100 dark:bg-gray-600">
169
+ <div className="relative h-8 w-8 cursor-pointer overflow-hidden rounded-full dark:bg-gray-600">
169
170
  <svg
170
171
  className="absolute -left-1 h-10 w-10 text-gray-400"
171
172
  fill="currentColor"
@@ -338,12 +339,19 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
338
339
  onClick={() => {
339
340
  dItem.subItems
340
341
  ? openSubItem === dItem.slug
341
- ? setOpenSubitem("")
342
+ ? // ||
343
+ // dItem.subItems.find(
344
+ // (e) => e.slug === props.currentPage
345
+ // )
346
+ setOpenSubitem("")
342
347
  : setOpenSubitem(dItem.slug)
343
348
  : dItem.action()
344
349
  }}
345
350
  className={clsx(
346
- props.currentPage === dItem.slug
351
+ props.currentPage === dItem.slug ||
352
+ dItem.subItems?.find(
353
+ (e) => e.slug === props.currentPage
354
+ )
347
355
  ? "bg-buttonPrimary-500 text-white"
348
356
  : "hover:bg-layoutPrimary-300",
349
357
  "m-2 my-1 flex cursor-pointer flex-row items-center justify-between overflow-x-clip rounded p-2 pl-3 transition-all ",
@@ -367,7 +375,11 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
367
375
  <div
368
376
  className={clsx(
369
377
  openSubItem && dItem.slug === openSubItem
370
- ? "-rotate-90"
378
+ ? // ||
379
+ // dItem.subItems.find(
380
+ // (e) => e.slug === props.currentPage
381
+ // )
382
+ "-rotate-90"
371
383
  : "rotate-90"
372
384
  )}
373
385
  >
@@ -382,6 +394,9 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
382
394
  "flex flex-col gap-0 whitespace-nowrap bg-layoutPrimary-300",
383
395
  "m-1 cursor-pointer rounded p-1",
384
396
  "overflow-clip transition-all",
397
+ // dItem.subItems.find(
398
+ // (e) => e.slug === props.currentPage
399
+ // ) ||
385
400
  openSubItem == dItem.slug && openSideMenu
386
401
  ? ""
387
402
  : "my-0 py-0",
@@ -389,6 +404,9 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
389
404
  )}
390
405
  style={{
391
406
  height:
407
+ // dItem.subItems.find(
408
+ // (e) => e.slug === props.currentPage
409
+ // ) ||
392
410
  openSubItem == dItem.slug && openSideMenu
393
411
  ? 6 + 33 * dItem.subItems?.length
394
412
  : 0,
@@ -397,11 +415,17 @@ export const HawaAppLayout: React.FunctionComponent<HawaAppLayoutTypes> = ({
397
415
  {dItem.subItems?.map((subIt) => (
398
416
  <div
399
417
  className={clsx(
400
- "flex flex-row gap-2 overflow-x-clip rounded p-2 px-4 text-xs hover:bg-layoutPrimary-500",
401
- isRTL ? "text-right" : "text-left"
418
+ "flex flex-row gap-2 overflow-x-clip rounded p-2 px-2 text-xs",
419
+ isRTL ? "text-right" : "text-left",
420
+ props.currentPage === subIt.slug
421
+ ? "bg-buttonPrimary-500 text-white hover:bg-buttonPrimary-500"
422
+ : "hover:bg-layoutPrimary-500"
402
423
  )}
403
424
  dir={direction}
404
- onClick={() => subIt.action()}
425
+ onClick={() => {
426
+ subIt.action()
427
+ // setOpenSubitem(dItem.slug)
428
+ }}
405
429
  >
406
430
  <div className="flex items-center justify-center">
407
431
  {subIt.icon}
@@ -12,7 +12,7 @@ export const HawaContainer: React.FunctionComponent<ContainerTypes> = ({
12
12
  maxWidth = "normal",
13
13
  variant = "contained",
14
14
  centered = false,
15
- direction = "rtl",
15
+ direction = "ltr",
16
16
  ...props
17
17
  }) => {
18
18
  let defaultStyle = "flex w-full flex-col rounded p-4"
package/src/styles.css CHANGED
@@ -385,7 +385,7 @@ video {
385
385
  --button-secondary-500: #ffc011;
386
386
  --button-secondary-700: #b48d24;
387
387
 
388
- --border-radius: 13px;
388
+ --border-radius: 0px;
389
389
  }
390
390
  input[type="number"]::-webkit-inner-spin-button,
391
391
  input[type="number"]::-webkit-outer-spin-button {
@@ -608,8 +608,8 @@ video {
608
608
  .top-2 {
609
609
  top: 0.5rem;
610
610
  }
611
- .left-3 {
612
- left: 0.75rem;
611
+ .right-3 {
612
+ right: 0.75rem;
613
613
  }
614
614
  .-top-10 {
615
615
  top: -2.5rem;
@@ -851,6 +851,10 @@ video {
851
851
  .h-11 {
852
852
  height: 2.75rem;
853
853
  }
854
+ .h-max {
855
+ height: -moz-max-content;
856
+ height: max-content;
857
+ }
854
858
  .h-0 {
855
859
  height: 0px;
856
860
  }
@@ -961,6 +965,9 @@ video {
961
965
  .w-40 {
962
966
  width: 10rem;
963
967
  }
968
+ .min-w-full {
969
+ min-width: 100%;
970
+ }
964
971
  .min-w-min {
965
972
  min-width: -moz-min-content;
966
973
  min-width: min-content;
@@ -1611,12 +1618,15 @@ video {
1611
1618
  .pr-3 {
1612
1619
  padding-right: 0.75rem;
1613
1620
  }
1614
- .pl-10 {
1615
- padding-left: 2.5rem;
1621
+ .pr-10 {
1622
+ padding-right: 2.5rem;
1616
1623
  }
1617
1624
  .pl-3 {
1618
1625
  padding-left: 0.75rem;
1619
1626
  }
1627
+ .pb-2 {
1628
+ padding-bottom: 0.5rem;
1629
+ }
1620
1630
  .pt-0 {
1621
1631
  padding-top: 0px;
1622
1632
  }
package/src/tailwind.css CHANGED
@@ -14,7 +14,7 @@
14
14
  --button-secondary-500: #ffc011;
15
15
  --button-secondary-700: #b48d24;
16
16
 
17
- --border-radius: 13px;
17
+ --border-radius: 0px;
18
18
  }
19
19
  input[type="number"]::-webkit-inner-spin-button,
20
20
  input[type="number"]::-webkit-outer-spin-button {