@sikka/hawa 0.0.247 → 0.0.249
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/dist/styles.css +25 -3
- package/es/elements/DragDropImages.d.ts +5 -4
- package/es/elements/FloatingCommentExec.d.ts +4 -0
- package/es/elements/UserFeedback.d.ts +1 -0
- package/es/elements/index.d.ts +1 -0
- package/es/index.es.js +3 -58
- package/lib/elements/DragDropImages.d.ts +5 -4
- package/lib/elements/FloatingCommentExec.d.ts +4 -0
- package/lib/elements/UserFeedback.d.ts +1 -0
- package/lib/elements/index.d.ts +1 -0
- package/lib/index.js +3 -58
- package/package.json +5 -1
- package/src/elements/DragDropImages.tsx +28 -11
- package/src/elements/FloatingCommentExec.tsx +106 -0
- package/src/elements/HawaAlert.tsx +6 -3
- package/src/elements/UserFeedback.tsx +108 -38
- package/src/elements/index.ts +1 -0
- package/src/styles.css +25 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sikka/hawa",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.249",
|
|
4
4
|
"description": "SaaS Oriented UI Kit",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.es.js",
|
|
@@ -81,6 +81,10 @@
|
|
|
81
81
|
"webpack": "^5.75.0",
|
|
82
82
|
"tailwindcss": "^3.3.3"
|
|
83
83
|
},
|
|
84
|
+
"peerDependencies": {
|
|
85
|
+
"react-dom": ">=17.0.1",
|
|
86
|
+
"react": ">=17.0.1"
|
|
87
|
+
},
|
|
84
88
|
"resolutions": {
|
|
85
89
|
"@storybook/react/webpack": "^5",
|
|
86
90
|
"@storybook/core-common/webpack": "^5",
|
|
@@ -2,6 +2,8 @@ import React, { useEffect, useState } from "react"
|
|
|
2
2
|
import { useDropzone } from "react-dropzone"
|
|
3
3
|
import { HawaAlert } from "./HawaAlert"
|
|
4
4
|
import { HawaButton } from "./HawaButton"
|
|
5
|
+
import { TbDragDrop } from "react-icons/tb"
|
|
6
|
+
import clsx from "clsx"
|
|
5
7
|
//TODO: This element needs more improvements and testing
|
|
6
8
|
type DragDropImagesTypes = {
|
|
7
9
|
/** The text label above the component. Consistant with the other form input fields */
|
|
@@ -19,10 +21,11 @@ type DragDropImagesTypes = {
|
|
|
19
21
|
errorMessages: string
|
|
20
22
|
/** The translation object, use this to replace the default text with any translated text you want.*/
|
|
21
23
|
texts: {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
errorUploading: any
|
|
25
|
+
clickHereToUpload: any
|
|
26
|
+
maxFileSize: any
|
|
27
|
+
tooManyFiles: any
|
|
28
|
+
fileTooLarge: any
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
|
|
@@ -102,7 +105,7 @@ export const DragDropImages: React.FunctionComponent<DragDropImagesTypes> = ({
|
|
|
102
105
|
)
|
|
103
106
|
})
|
|
104
107
|
const thumbs = files?.map((file: any, index: any) => (
|
|
105
|
-
<div className="relative m-3 rounded
|
|
108
|
+
<div className="relative m-3 rounded ">
|
|
106
109
|
<button
|
|
107
110
|
onClick={(e) => {
|
|
108
111
|
e.stopPropagation()
|
|
@@ -158,11 +161,17 @@ export const DragDropImages: React.FunctionComponent<DragDropImagesTypes> = ({
|
|
|
158
161
|
)}
|
|
159
162
|
<div
|
|
160
163
|
{...getRootProps({})}
|
|
161
|
-
className=
|
|
164
|
+
className={clsx(
|
|
165
|
+
"flex flex-col justify-center rounded border border-dashed border-black transition-all hover:bg-gray-100 ",
|
|
166
|
+
isDragActive ? "bg-layoutPrimary-500" : "bg-white"
|
|
167
|
+
)}
|
|
162
168
|
>
|
|
163
169
|
<input {...getInputProps()} />
|
|
164
|
-
<div className="pt-4 text-center">
|
|
165
|
-
|
|
170
|
+
<div className="flex flex-col items-center justify-center gap-2 pt-4 text-center">
|
|
171
|
+
<TbDragDrop size={22} />
|
|
172
|
+
{<texts.clickHereToUpload />}
|
|
173
|
+
</div>
|
|
174
|
+
<div className="py-4 text-center text-xs">
|
|
166
175
|
{texts.maxFileSize} {max}
|
|
167
176
|
</div>
|
|
168
177
|
<div className="flex justify-center ">
|
|
@@ -190,11 +199,19 @@ export const DragDropImages: React.FunctionComponent<DragDropImagesTypes> = ({
|
|
|
190
199
|
{thumbs}
|
|
191
200
|
</aside>
|
|
192
201
|
) : null}
|
|
193
|
-
<div className="px-
|
|
202
|
+
<div className="px-4">
|
|
194
203
|
{fileRejections[0]?.errors[0]?.code === "too-many-files" ? (
|
|
195
|
-
<HawaAlert
|
|
204
|
+
<HawaAlert
|
|
205
|
+
title={texts.errorUploading}
|
|
206
|
+
text={texts.tooManyFiles}
|
|
207
|
+
severity="error"
|
|
208
|
+
/>
|
|
196
209
|
) : fileRejections[0]?.errors[0]?.code === "file-too-large" ? (
|
|
197
|
-
<HawaAlert
|
|
210
|
+
<HawaAlert
|
|
211
|
+
title={texts.errorUploading}
|
|
212
|
+
text={texts.fileTooLarge}
|
|
213
|
+
severity="error"
|
|
214
|
+
/>
|
|
198
215
|
) : (
|
|
199
216
|
errs
|
|
200
217
|
)}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import React, { useRef, useState, useEffect, FC } from "react"
|
|
2
|
+
import ReactDOMServer from "react-dom/server"
|
|
3
|
+
import { AiOutlineClose } from "react-icons/ai"
|
|
4
|
+
|
|
5
|
+
let base64 =
|
|
6
|
+
"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"
|
|
7
|
+
|
|
8
|
+
type ComponentTypes = {}
|
|
9
|
+
const Property = (props) => {
|
|
10
|
+
return (
|
|
11
|
+
<div
|
|
12
|
+
className="border-box mr-[10px] flex h-[32px] w-fit min-w-[32px] items-center justify-center rounded bg-gray-300 p-2 transition-all hover:opacity-50"
|
|
13
|
+
onMouseDown={props.onMouseDown}
|
|
14
|
+
>
|
|
15
|
+
{props.name}
|
|
16
|
+
</div>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const Image = (props) => {
|
|
21
|
+
return (
|
|
22
|
+
<div className="group relative w-fit">
|
|
23
|
+
<img src={`data:image/pngg;charset=utf-8;base64,${base64}`} />
|
|
24
|
+
<div className="absolute right-0 top-0 text-red-900 opacity-0 transition-all hover:opacity-50 group-hover:opacity-100">
|
|
25
|
+
<AiOutlineClose />
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const styles = {
|
|
32
|
+
bold: "B",
|
|
33
|
+
italic: "I",
|
|
34
|
+
underline: "U",
|
|
35
|
+
strikeThrough: "S",
|
|
36
|
+
subscript: "SubS",
|
|
37
|
+
superscript: "SuperS",
|
|
38
|
+
removeFormat: "Plain",
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const FloatingCommentExec: React.FC<ComponentTypes> = (props) => {
|
|
42
|
+
return (
|
|
43
|
+
<div className="align-center box-border flex h-min w-[400px] flex-col items-center justify-center rounded shadow-md">
|
|
44
|
+
<div className={"flex w-full flex-row justify-start p-2"}>
|
|
45
|
+
{Object.entries(styles).map(([id, acronym]) => {
|
|
46
|
+
return (
|
|
47
|
+
<Property
|
|
48
|
+
name={acronym}
|
|
49
|
+
key={`property-${id}`}
|
|
50
|
+
onMouseDown={(event) => {
|
|
51
|
+
event.preventDefault()
|
|
52
|
+
document.execCommand(id, false, null)
|
|
53
|
+
console.log(`Executing ${id}`)
|
|
54
|
+
// perform(id)
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
)
|
|
58
|
+
})}
|
|
59
|
+
<Property
|
|
60
|
+
name="Image"
|
|
61
|
+
key={`property-insertImage`}
|
|
62
|
+
onMouseDown={(event) => {
|
|
63
|
+
event.preventDefault()
|
|
64
|
+
let html = ReactDOMServer.renderToString(<Image />)
|
|
65
|
+
document.execCommand("insertHTML", false, html)
|
|
66
|
+
|
|
67
|
+
// const byteCharacters = atob(base64)
|
|
68
|
+
// const byteNumbers = new Array(byteCharacters.length)
|
|
69
|
+
// for (let i = 0; i < byteCharacters.length; i++) {
|
|
70
|
+
// byteNumbers[i] = byteCharacters.charCodeAt(i)
|
|
71
|
+
// }
|
|
72
|
+
// const byteArray = new Uint8Array(byteNumbers)
|
|
73
|
+
// const blob = new Blob([byteArray], { type: "image/png" })
|
|
74
|
+
|
|
75
|
+
// let url = URL.createObjectURL(blob)
|
|
76
|
+
|
|
77
|
+
// document.execCommand("insertImage", false, url)
|
|
78
|
+
}}
|
|
79
|
+
/>
|
|
80
|
+
</div>
|
|
81
|
+
<div className="h-[1px] w-full bg-slate-600"> </div>
|
|
82
|
+
|
|
83
|
+
<div className=" box-border w-full p-2">
|
|
84
|
+
<div
|
|
85
|
+
contentEditable="true"
|
|
86
|
+
className="rtl h-[150px] w-full resize-none overflow-auto overflow-x-hidden border-none font-['Arial'] text-[16px] outline-none"
|
|
87
|
+
|
|
88
|
+
// onKeyDown={(event) => {
|
|
89
|
+
// if (event.key == "Tab") {
|
|
90
|
+
// event.preventDefault()
|
|
91
|
+
// document.execCommand("indent", false, null)
|
|
92
|
+
// return
|
|
93
|
+
// }
|
|
94
|
+
// }}
|
|
95
|
+
></div>
|
|
96
|
+
</div>
|
|
97
|
+
<div className="h-[1px] w-full bg-slate-600"> </div>
|
|
98
|
+
<button
|
|
99
|
+
className="my-1 rounded bg-cyan-800 p-2 py-1 text-white"
|
|
100
|
+
onClick={() => {}}
|
|
101
|
+
>
|
|
102
|
+
Submit
|
|
103
|
+
</button>
|
|
104
|
+
</div>
|
|
105
|
+
)
|
|
106
|
+
}
|
|
@@ -105,7 +105,7 @@ export const HawaAlert: React.FunctionComponent<AlertTypes> = ({
|
|
|
105
105
|
<div ref={alertRef}>
|
|
106
106
|
<div
|
|
107
107
|
className={clsx(
|
|
108
|
-
"mb-4 flex flex-col rounded p-4 text-sm",
|
|
108
|
+
"relative mb-4 flex flex-col rounded p-4 text-sm transition-all",
|
|
109
109
|
styleVariant[variant][props.severity],
|
|
110
110
|
closed ? "opacity-0" : "opacity-100"
|
|
111
111
|
)}
|
|
@@ -114,6 +114,7 @@ export const HawaAlert: React.FunctionComponent<AlertTypes> = ({
|
|
|
114
114
|
>
|
|
115
115
|
<span className="font-medium">{props.title}</span>
|
|
116
116
|
<span>{" " + props.text}</span>
|
|
117
|
+
|
|
117
118
|
{props.actions && (
|
|
118
119
|
<div className="mt-2 flex flex-row gap-2">
|
|
119
120
|
{props.actions.map((act, index) => (
|
|
@@ -130,12 +131,14 @@ export const HawaAlert: React.FunctionComponent<AlertTypes> = ({
|
|
|
130
131
|
)}
|
|
131
132
|
<button
|
|
132
133
|
type="button"
|
|
133
|
-
className="absolute right-
|
|
134
|
+
className="absolute right-4 top-4 inline-flex h-8 w-8 translate-y-1 rounded p-1.5 text-gray-400 hover:bg-gray-100 hover:text-gray-900 focus:ring-2 focus:ring-gray-300 dark:bg-gray-800 dark:text-gray-500 dark:hover:bg-gray-700 dark:hover:text-white"
|
|
134
135
|
data-dismiss-target="#alert-default"
|
|
135
136
|
aria-label="Close"
|
|
136
137
|
onClick={() => {
|
|
137
138
|
setClosed(true)
|
|
138
|
-
|
|
139
|
+
setTimeout(() => {
|
|
140
|
+
alertRef.current.removeChild(alertRef.current.children[0])
|
|
141
|
+
}, 200)
|
|
139
142
|
}}
|
|
140
143
|
>
|
|
141
144
|
<span className="sr-only">Close</span>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import clsx from "clsx"
|
|
2
|
+
import { FC, useEffect, useRef, useState } from "react"
|
|
3
|
+
import { HawaButton } from "./HawaButton"
|
|
2
4
|
|
|
3
5
|
type ComponentTypes = {
|
|
4
6
|
title?: string
|
|
@@ -8,50 +10,118 @@ type ComponentTypes = {
|
|
|
8
10
|
least: string
|
|
9
11
|
most: string
|
|
10
12
|
}
|
|
13
|
+
position?: "bottom-right" | "bottom-left"
|
|
11
14
|
onOptionClicked?: (option) => void
|
|
12
15
|
}
|
|
13
|
-
export const UserFeedback: FC<ComponentTypes> = ({
|
|
16
|
+
export const UserFeedback: FC<ComponentTypes> = ({
|
|
17
|
+
position = "bottom-right",
|
|
18
|
+
...props
|
|
19
|
+
}) => {
|
|
20
|
+
const [closed, setClosed] = useState(false)
|
|
21
|
+
const [answered, setAnswered] = useState(false)
|
|
22
|
+
const [clickedOption, setClickedOption] = useState(null)
|
|
23
|
+
const [closingTimer, setClosingTimer] = useState(5)
|
|
24
|
+
const popUpRef = useRef(null)
|
|
25
|
+
|
|
26
|
+
const boxPosition = {
|
|
27
|
+
"bottom-right": "right-4",
|
|
28
|
+
"bottom-left": "left-4",
|
|
29
|
+
}
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
//To change opacity and hide the component
|
|
32
|
+
const timeoutHide = setTimeout(() => {
|
|
33
|
+
setClosingTimer(closingTimer - 1)
|
|
34
|
+
}, 1000)
|
|
35
|
+
|
|
36
|
+
return () => {
|
|
37
|
+
clearTimeout(timeoutHide)
|
|
38
|
+
}
|
|
39
|
+
}, [closingTimer])
|
|
40
|
+
|
|
41
|
+
const slowClose = () => {
|
|
42
|
+
setClosed(true)
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
popUpRef.current.removeChild(popUpRef.current.children[0])
|
|
45
|
+
}, 200)
|
|
46
|
+
}
|
|
14
47
|
return (
|
|
15
|
-
<div
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
48
|
+
<div
|
|
49
|
+
ref={popUpRef}
|
|
50
|
+
className={clsx("fixed bottom-4", boxPosition[position])}
|
|
51
|
+
>
|
|
52
|
+
<div
|
|
53
|
+
className={clsx(
|
|
54
|
+
"relative flex w-full max-w-sm flex-col gap-2 rounded bg-white p-4 shadow-md transition-all",
|
|
55
|
+
closed ? "opacity-0" : "opacity-100"
|
|
56
|
+
)}
|
|
23
57
|
>
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
58
|
+
<div className="absolute left-2 top-2 p-1.5 text-sm">{props.title}</div>
|
|
59
|
+
<button
|
|
60
|
+
type="button"
|
|
61
|
+
className="absolute right-2 top-2 inline-flex h-8 w-8 rounded p-1.5 text-gray-400 hover:bg-gray-100 hover:text-gray-900 focus:ring-2 focus:ring-gray-300 dark:bg-gray-800 dark:text-gray-500 dark:hover:bg-gray-700 dark:hover:text-white"
|
|
62
|
+
data-dismiss-target="#toast-default"
|
|
63
|
+
aria-label="Close"
|
|
64
|
+
onClick={() => slowClose()}
|
|
30
65
|
>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</button>
|
|
38
|
-
<div className="mt-8">{props.question}</div>
|
|
39
|
-
<div className="flex w-full flex-row gap-1 rounded">
|
|
40
|
-
{props.options.map((op) => (
|
|
41
|
-
<span
|
|
42
|
-
onClick={() => props.onOptionClicked(op)}
|
|
43
|
-
className="w-full cursor-pointer rounded border bg-white p-4 text-center transition-all hover:bg-gray-100"
|
|
66
|
+
<svg
|
|
67
|
+
aria-hidden="true"
|
|
68
|
+
className="h-5 w-5"
|
|
69
|
+
fill="currentColor"
|
|
70
|
+
viewBox="0 0 20 20"
|
|
71
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
44
72
|
>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
<path
|
|
74
|
+
fillRule="evenodd"
|
|
75
|
+
d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
|
|
76
|
+
clipRule="evenodd"
|
|
77
|
+
></path>
|
|
78
|
+
</svg>
|
|
79
|
+
</button>
|
|
80
|
+
<div className="mt-8">{props.question}</div>
|
|
81
|
+
<div className="flex w-full flex-row gap-1 rounded">
|
|
82
|
+
{props.options.map((op) => (
|
|
83
|
+
<span
|
|
84
|
+
onClick={() => {
|
|
85
|
+
props.onOptionClicked(op)
|
|
86
|
+
setClickedOption(op)
|
|
87
|
+
setAnswered(true)
|
|
88
|
+
const timeoutDestroy = setTimeout(() => {
|
|
89
|
+
setClosed(true)
|
|
90
|
+
}, 4800)
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
popUpRef.current.removeChild(popUpRef.current.children[0])
|
|
93
|
+
clearTimeout(timeoutDestroy)
|
|
94
|
+
}, 5300)
|
|
95
|
+
}}
|
|
96
|
+
className={clsx(
|
|
97
|
+
"w-full cursor-pointer rounded border p-4 text-center transition-all ",
|
|
98
|
+
clickedOption === op
|
|
99
|
+
? "bg-gray-500 text-white"
|
|
100
|
+
: "bg-white hover:bg-gray-100"
|
|
101
|
+
)}
|
|
102
|
+
>
|
|
103
|
+
{op}
|
|
104
|
+
</span>
|
|
105
|
+
))}
|
|
53
106
|
</div>
|
|
54
|
-
|
|
107
|
+
{props.texts && (
|
|
108
|
+
<div className=" flex flex-row justify-between text-xs">
|
|
109
|
+
<span>{props.texts.least}</span>
|
|
110
|
+
<span>{props.texts.most}</span>
|
|
111
|
+
</div>
|
|
112
|
+
)}
|
|
113
|
+
{answered && (
|
|
114
|
+
<div className="absolute left-0 top-0 flex h-full w-full flex-col items-center justify-center rounded bg-black bg-opacity-80 p-4 text-center transition-all">
|
|
115
|
+
<span className="font-bold text-white">
|
|
116
|
+
Thank you for your answer. This box will disappear in
|
|
117
|
+
{" " + closingTimer} seconds
|
|
118
|
+
</span>
|
|
119
|
+
<div className="flex flex-row gap-2">
|
|
120
|
+
<HawaButton onClick={() => slowClose()}>Close</HawaButton>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
)}
|
|
124
|
+
</div>
|
|
55
125
|
</div>
|
|
56
126
|
)
|
|
57
127
|
}
|
package/src/elements/index.ts
CHANGED
|
@@ -35,6 +35,7 @@ export * from "./UserFeedback"
|
|
|
35
35
|
export * from "./ArrowCarousel"
|
|
36
36
|
export * from "./FloatingComment"
|
|
37
37
|
export * from "./FloatingCommentSlate"
|
|
38
|
+
export * from "./FloatingCommentExec"
|
|
38
39
|
export * from "./BackToTop"
|
|
39
40
|
// Inputs
|
|
40
41
|
export * from "./HawaTextField"
|
package/src/styles.css
CHANGED
|
@@ -624,6 +624,9 @@ video {
|
|
|
624
624
|
.left-3 {
|
|
625
625
|
left: 0.75rem;
|
|
626
626
|
}
|
|
627
|
+
.left-4 {
|
|
628
|
+
left: 1rem;
|
|
629
|
+
}
|
|
627
630
|
.right-0 {
|
|
628
631
|
right: 0px;
|
|
629
632
|
}
|
|
@@ -636,9 +639,6 @@ video {
|
|
|
636
639
|
.right-4 {
|
|
637
640
|
right: 1rem;
|
|
638
641
|
}
|
|
639
|
-
.right-8 {
|
|
640
|
-
right: 2rem;
|
|
641
|
-
}
|
|
642
642
|
.top-0 {
|
|
643
643
|
top: 0px;
|
|
644
644
|
}
|
|
@@ -1062,6 +1062,9 @@ video {
|
|
|
1062
1062
|
.min-w-\[24px\] {
|
|
1063
1063
|
min-width: 24px;
|
|
1064
1064
|
}
|
|
1065
|
+
.min-w-\[32px\] {
|
|
1066
|
+
min-width: 32px;
|
|
1067
|
+
}
|
|
1065
1068
|
.min-w-fit {
|
|
1066
1069
|
min-width: -moz-fit-content;
|
|
1067
1070
|
min-width: fit-content;
|
|
@@ -1118,6 +1121,10 @@ video {
|
|
|
1118
1121
|
--tw-translate-y: -50%;
|
|
1119
1122
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
1120
1123
|
}
|
|
1124
|
+
.translate-y-1 {
|
|
1125
|
+
--tw-translate-y: 0.25rem;
|
|
1126
|
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
1127
|
+
}
|
|
1121
1128
|
.translate-y-1\/2 {
|
|
1122
1129
|
--tw-translate-y: 50%;
|
|
1123
1130
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
@@ -1659,6 +1666,9 @@ video {
|
|
|
1659
1666
|
.bg-opacity-75 {
|
|
1660
1667
|
--tw-bg-opacity: 0.75;
|
|
1661
1668
|
}
|
|
1669
|
+
.bg-opacity-80 {
|
|
1670
|
+
--tw-bg-opacity: 0.8;
|
|
1671
|
+
}
|
|
1662
1672
|
.bg-none {
|
|
1663
1673
|
background-image: none;
|
|
1664
1674
|
}
|
|
@@ -1759,6 +1769,10 @@ video {
|
|
|
1759
1769
|
padding-top: 0.75rem;
|
|
1760
1770
|
padding-bottom: 0.75rem;
|
|
1761
1771
|
}
|
|
1772
|
+
.py-4 {
|
|
1773
|
+
padding-top: 1rem;
|
|
1774
|
+
padding-bottom: 1rem;
|
|
1775
|
+
}
|
|
1762
1776
|
.py-5 {
|
|
1763
1777
|
padding-top: 1.25rem;
|
|
1764
1778
|
padding-bottom: 1.25rem;
|
|
@@ -1962,6 +1976,10 @@ video {
|
|
|
1962
1976
|
--tw-text-opacity: 1;
|
|
1963
1977
|
color: rgb(185 28 28 / var(--tw-text-opacity));
|
|
1964
1978
|
}
|
|
1979
|
+
.text-red-900 {
|
|
1980
|
+
--tw-text-opacity: 1;
|
|
1981
|
+
color: rgb(127 29 29 / var(--tw-text-opacity));
|
|
1982
|
+
}
|
|
1965
1983
|
.text-white {
|
|
1966
1984
|
--tw-text-opacity: 1;
|
|
1967
1985
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
@@ -2310,6 +2328,10 @@ body {
|
|
|
2310
2328
|
text-decoration-thickness: 2px;
|
|
2311
2329
|
}
|
|
2312
2330
|
|
|
2331
|
+
.hover\:opacity-50:hover {
|
|
2332
|
+
opacity: 0.5;
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2313
2335
|
.hover\:shadow-lg:hover {
|
|
2314
2336
|
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
2315
2337
|
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|