px-react-ui-components 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 (75) hide show
  1. package/.babelrc +3 -0
  2. package/README.md +126 -0
  3. package/dist/components/MyAlert/MyAlert.css +113 -0
  4. package/dist/components/MyAlert/MyAlert.js +109 -0
  5. package/dist/components/MyContainer/MyContainer.js +59 -0
  6. package/dist/components/MyContainer/MyContainer.module.css +110 -0
  7. package/dist/components/MyContainer/MyContainerBody.js +9 -0
  8. package/dist/components/MyContainer/MyContainerFooter.js +9 -0
  9. package/dist/components/MyContainer/MyContainerRight.js +10 -0
  10. package/dist/components/MyEditor/MyEditor.js +292 -0
  11. package/dist/components/MyEditor/MyEditor.scss +277 -0
  12. package/dist/components/MyFileUpload/MyFileUpload.js +288 -0
  13. package/dist/components/MyFileUpload/MyFileUpload.module.css +86 -0
  14. package/dist/components/MyImageCropper/MyImageCropper.js +95 -0
  15. package/dist/components/MyInput/MyInput.js +768 -0
  16. package/dist/components/MyInput/MyInput.module.css +420 -0
  17. package/dist/components/MyMaps/YandexMaps.js +162 -0
  18. package/dist/components/MyMenu/MenuItem.js +55 -0
  19. package/dist/components/MyMenu/MyMenu.module.css +102 -0
  20. package/dist/components/MyModal/MyModal.css +83 -0
  21. package/dist/components/MyModal/MyModal.js +71 -0
  22. package/dist/components/MyModal/MyModalBody.js +9 -0
  23. package/dist/components/MyModal/MyModalFooter.js +9 -0
  24. package/dist/components/MyNotFound/MyNotFound.css +22 -0
  25. package/dist/components/MyNotFound/MyNotFound.js +20 -0
  26. package/dist/components/MyScrollableCard/MyScrollableCard.js +74 -0
  27. package/dist/components/MyTable/MyTable.js +310 -0
  28. package/dist/components/MyTable/MyTable.module.css +350 -0
  29. package/dist/components/MyTable/MyTableBody.js +9 -0
  30. package/dist/components/MyTable/MyTableHead.js +9 -0
  31. package/dist/components/MyTabs/MyTabPane.js +17 -0
  32. package/dist/components/MyTabs/MyTabs.css +105 -0
  33. package/dist/components/MyTabs/MyTabs.js +66 -0
  34. package/dist/components/MyWaiting/MyWaiting.css +28 -0
  35. package/dist/components/MyWaiting/MyWaiting.js +27 -0
  36. package/dist/components/MyZoomImage/MyZoomImage.css +0 -0
  37. package/dist/components/MyZoomImage/MyZoomImage.js +108 -0
  38. package/dist/index.js +15 -0
  39. package/package.json +44 -0
  40. package/src/components/MyAlert/MyAlert.css +113 -0
  41. package/src/components/MyAlert/MyAlert.jsx +96 -0
  42. package/src/components/MyContainer/MyContainer.jsx +90 -0
  43. package/src/components/MyContainer/MyContainer.module.css +110 -0
  44. package/src/components/MyContainer/MyContainerBody.jsx +8 -0
  45. package/src/components/MyContainer/MyContainerFooter.jsx +8 -0
  46. package/src/components/MyContainer/MyContainerRight.jsx +11 -0
  47. package/src/components/MyEditor/MyEditor.jsx +252 -0
  48. package/src/components/MyEditor/MyEditor.scss +277 -0
  49. package/src/components/MyFileUpload/MyFileUpload.jsx +373 -0
  50. package/src/components/MyFileUpload/MyFileUpload.module.css +86 -0
  51. package/src/components/MyImageCropper/MyImageCropper.jsx +108 -0
  52. package/src/components/MyInput/MyInput.jsx +896 -0
  53. package/src/components/MyInput/MyInput.module.css +420 -0
  54. package/src/components/MyMaps/YandexMaps.jsx +186 -0
  55. package/src/components/MyMenu/MenuItem.jsx +62 -0
  56. package/src/components/MyMenu/MyMenu.module.css +102 -0
  57. package/src/components/MyModal/MyModal.css +83 -0
  58. package/src/components/MyModal/MyModal.jsx +78 -0
  59. package/src/components/MyModal/MyModalBody.jsx +8 -0
  60. package/src/components/MyModal/MyModalFooter.jsx +8 -0
  61. package/src/components/MyNotFound/MyNotFound.css +22 -0
  62. package/src/components/MyNotFound/MyNotFound.jsx +11 -0
  63. package/src/components/MyScrollableCard/MyScrollableCard.jsx +86 -0
  64. package/src/components/MyTable/MyTable.jsx +458 -0
  65. package/src/components/MyTable/MyTable.module.css +350 -0
  66. package/src/components/MyTable/MyTableBody.jsx +8 -0
  67. package/src/components/MyTable/MyTableHead.jsx +10 -0
  68. package/src/components/MyTabs/MyTabPane.jsx +9 -0
  69. package/src/components/MyTabs/MyTabs.css +105 -0
  70. package/src/components/MyTabs/MyTabs.jsx +63 -0
  71. package/src/components/MyWaiting/MyWaiting.css +28 -0
  72. package/src/components/MyWaiting/MyWaiting.jsx +27 -0
  73. package/src/components/MyZoomImage/MyZoomImage.css +0 -0
  74. package/src/components/MyZoomImage/MyZoomImage.jsx +139 -0
  75. package/src/index.js +15 -0
@@ -0,0 +1,110 @@
1
+ .container {
2
+ position: relative;
3
+ display: block;
4
+ width: 100%;
5
+ background: #ffff;
6
+ border-radius: 15px;
7
+ }
8
+
9
+ .header {
10
+ position: relative;
11
+ display: block;
12
+ width: 100%;
13
+ padding: 15px;
14
+ padding-left: 20px;
15
+ padding-bottom: 7.5px;
16
+ border-bottom: 1px solid #d0d6de;
17
+ color: #464255;
18
+ }
19
+
20
+ .title {
21
+ margin: 0px !important;
22
+ }
23
+
24
+ .description {
25
+ font-size: 12px;
26
+ }
27
+
28
+ .rightBlock {
29
+ position: absolute;
30
+ right: 15px;
31
+ z-index: 2;
32
+ top: 50%;
33
+ transform: translateY(-50%);
34
+ display: flex;
35
+ flex-direction: row;
36
+ gap: 10px;
37
+ }
38
+
39
+ .rightBlock button {
40
+ display: flex;
41
+ flex-direction: row;
42
+ gap: 10px;
43
+ justify-items: center;
44
+ align-items: center;
45
+ padding: 10px 15px;
46
+ }
47
+
48
+ .body {
49
+ display: block;
50
+ width: 100%;
51
+ padding: 15px;
52
+ }
53
+
54
+ .footer {
55
+ display: block;
56
+ width: 100%;
57
+ padding: 15px;
58
+ border-top: 1px solid #d0d6de;
59
+ }
60
+
61
+ @media screen and (max-width: 768px) {
62
+ .header {
63
+ padding: 10px;
64
+ padding-left: 15px;
65
+ padding-bottom: 5px;
66
+ }
67
+
68
+ .rightBlock {
69
+ position: relative;
70
+ right: auto;
71
+ top: auto;
72
+ transform: none;
73
+ margin-top: 10px;
74
+ justify-content: flex-end;
75
+ }
76
+
77
+ .rightBlock button {
78
+ padding: 8px 12px;
79
+ font-size: 14px;
80
+ }
81
+
82
+ .body {
83
+ padding: 10px;
84
+ }
85
+
86
+ .footer {
87
+ padding: 10px;
88
+ }
89
+ }
90
+
91
+ @media screen and (max-width: 480px) {
92
+ .header {
93
+ padding: 8px;
94
+ padding-left: 12px;
95
+ padding-bottom: 4px;
96
+ }
97
+
98
+ .rightBlock button {
99
+ padding: 6px 10px;
100
+ font-size: 12px;
101
+ }
102
+
103
+ .body {
104
+ padding: 8px;
105
+ }
106
+
107
+ .footer {
108
+ padding: 8px;
109
+ }
110
+ }
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+
3
+ function MyContainerBody({ children }) {
4
+ return (
5
+ <div className="MyContainerTagBody">{children}</div>
6
+ )
7
+ }
8
+ export default MyContainerBody
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+
3
+ function MyContainerFooter({ children }) {
4
+ return (
5
+ <div className="MyContainerTagFooter">{children}</div>
6
+ )
7
+ }
8
+ export default MyContainerFooter
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import styles from "./MyContainer.module.css";
3
+
4
+ function MyContainerRight({ children }) {
5
+ return (
6
+ <div className={"MyContainerTagRight " + styles.rightBlock}>
7
+ {children}
8
+ </div>
9
+ );
10
+ }
11
+ export default MyContainerRight;
@@ -0,0 +1,252 @@
1
+ import React, { useState, useEffect, useRef } from "react";
2
+ import ReactQuill from "react-quill";
3
+ import "react-quill/dist/quill.snow.css";
4
+ import ImageResize from "quill-image-resize";
5
+ import Quill from "quill";
6
+ import QuillTable from "quill-table";
7
+ import katex from "katex";
8
+ import "katex/dist/katex.min.css";
9
+ import "./MyEditor.scss";
10
+
11
+ // KaTeX'i global hale getir
12
+ window.katex = katex;
13
+
14
+ // Özel font listesini tanımla
15
+ const fonts = [
16
+ { label: "Arial", value: "arial" },
17
+ { label: "Comic Sans MS", value: "comic-sans" },
18
+ { label: "Courier New", value: "courier-new" },
19
+ { label: "Georgia", value: "georgia" },
20
+ { label: "Helvetica", value: "helvetica" },
21
+ { label: "Times New Roman", value: "times-new-roman" },
22
+ { label: "Verdana", value: "verdana" },
23
+ { label: "Trebuchet MS", value: "trebuchet-ms" },
24
+ { label: "Garamond", value: "garamond" },
25
+ { label: "Palatino Linotype", value: "palatino-linotype" },
26
+ { label: "Consolas", value: "consolas" },
27
+ { label: "Lucida Console", value: "lucida-console" },
28
+ { label: "Impact", value: "impact" },
29
+ { label: "Brush Script MT", value: "brush-script-mt" },
30
+ { label: "Tahoma", value: "tahoma" },
31
+ { label: "Gill Sans", value: "gill-sans" },
32
+ { label: "Franklin Gothic Medium", value: "franklin-gothic-medium" },
33
+ { label: "Century Gothic", value: "century-gothic" },
34
+ { label: "Bookman Old Style", value: "bookman-old-style" },
35
+ { label: "Candara", value: "candara" },
36
+ { label: "Didot", value: "didot" },
37
+ { label: "Futura", value: "futura" },
38
+ { label: "Rockwell", value: "rockwell" },
39
+ { label: "Baskerville", value: "baskerville" },
40
+ { label: "Bodoni MT", value: "bodoni-mt" },
41
+ { label: "Copperplate", value: "copperplate" },
42
+ { label: "Perpetua", value: "perpetua" },
43
+ { label: "Monaco", value: "monaco" },
44
+ { label: "Century Schoolbook", value: "century-schoolbook" },
45
+ { label: "Segoe UI", value: "segoe-ui" }
46
+ ];
47
+
48
+ // Quill font formatını genişlet
49
+ const Font = Quill.import("formats/font");
50
+ Font.whitelist = fonts.map(f => f.value);
51
+ Quill.register(Font, true);
52
+
53
+ // Quill modüllerini kaydet
54
+ Quill.register("modules/imageResize", ImageResize);
55
+ Quill.register(QuillTable.TableCell);
56
+ Quill.register(QuillTable.TableRow);
57
+ Quill.register(QuillTable.Table);
58
+ Quill.register(QuillTable.Contain);
59
+ Quill.register("modules/table", QuillTable.TableModule);
60
+
61
+ // Formula Embed için düzeltme
62
+ const Embed = Quill.import("blots/embed");
63
+
64
+ class FormulaEmbed extends Embed {
65
+ static create(value) {
66
+ let node = super.create();
67
+ if (value) {
68
+ node.setAttribute("data-value", value);
69
+ try {
70
+ window.katex.render(value, node, { throwOnError: false });
71
+ } catch (err) {
72
+ console.error("KaTeX render error:", err);
73
+ }
74
+ }
75
+ return node;
76
+ }
77
+
78
+ static value(node) {
79
+ return node.getAttribute("data-value");
80
+ }
81
+ }
82
+
83
+ FormulaEmbed.blotName = "formula";
84
+ FormulaEmbed.tagName = "SPAN";
85
+ FormulaEmbed.className = "ql-formula";
86
+ Quill.register("formats/formula", FormulaEmbed);
87
+
88
+ function MyEditor({ value, onChange, style = { height: "300px" } }) {
89
+ const [editorValue, setEditorValue] = useState("");
90
+ const [isFullscreen, setIsFullscreen] = useState(false);
91
+ const editorRef = useRef(null);
92
+ const timeoutRef = useRef(null);
93
+ const isFirstRender = useRef(true);
94
+
95
+ const handleFullscreen = () => {
96
+ setIsFullscreen(!isFullscreen);
97
+ };
98
+
99
+ // Custom buton tanımı
100
+ useEffect(() => {
101
+ const icons = Quill.import('ui/icons');
102
+ icons['fullscreen'] = `<svg viewbox="0 0 18 18">
103
+ <path d="M4,4H0v2h6V0H4V4z M14,4V0h-2v6h6V4H14z M6,14H0v2h4v4h2V14z M14,18h2v-4h4v-2h-6V18z"/>
104
+ </svg>`;
105
+ }, []);
106
+
107
+ useEffect(() => {
108
+ if (isFirstRender.current) {
109
+ isFirstRender.current = false;
110
+ setEditorValue(value || "");
111
+ } else if (value !== editorValue) {
112
+ const editor = editorRef.current?.getEditor();
113
+ if (editor) {
114
+ editor.setContents(editor.clipboard.convert(value || ""));
115
+ }
116
+ }
117
+ }, [value]);
118
+
119
+ const handleChange = (content, delta, source, editor) => {
120
+ const html = editor.getHTML();
121
+ setEditorValue(html);
122
+
123
+ if (timeoutRef.current) {
124
+ clearTimeout(timeoutRef.current);
125
+ }
126
+
127
+ timeoutRef.current = setTimeout(() => {
128
+ if (onChange) onChange({ value: html });
129
+ }, 500);
130
+ };
131
+
132
+ const formats = [
133
+ "header",
134
+ "font",
135
+ "size",
136
+ "bold",
137
+ "italic",
138
+ "underline",
139
+ "strike",
140
+ "blockquote",
141
+ "list",
142
+ "bullet",
143
+ "indent",
144
+ "link",
145
+ "image",
146
+ "color",
147
+ "background",
148
+ "align",
149
+ "script",
150
+ "table",
151
+ "table-cell",
152
+ "table-row",
153
+ "table-header",
154
+ "table-body",
155
+ "formula"
156
+ ];
157
+
158
+ const maxRows = 10;
159
+ const maxCols = 5;
160
+ const tableOptions = [];
161
+ for (let r = 1; r <= maxRows; r++) {
162
+ for (let c = 1; c <= maxCols; c++) {
163
+ tableOptions.push("newtable_" + r + "_" + c);
164
+ }
165
+ }
166
+
167
+ const modules = {
168
+ toolbar: {
169
+ container: [
170
+ [{ font: fonts.map(f => f.value) }],
171
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
172
+ [{ size: ["small", "normal", "large", "huge"] }],
173
+ [{ list: "ordered" }, { list: "bullet" }],
174
+ ["bold", "italic", "underline", "strike"],
175
+ [{ align: [] }],
176
+ [{ color: [] }, { background: [] }],
177
+ [{ script: "sub" }, { script: "super" }],
178
+ ["image"],
179
+ // [{ table: tableOptions }, { table: "append-row" }, { table: "append-col" }],
180
+ // ["formula"]
181
+ ]
182
+ },
183
+ table: {
184
+ operationMenu: true,
185
+ resizable: true,
186
+ tableCellMinWidth: 50,
187
+ tableHeaderRows: 1
188
+ },
189
+ clipboard: {
190
+ matchVisual: false
191
+ },
192
+ imageResize: {
193
+ modules: ["Resize", "DisplaySize"],
194
+ displaySize: true,
195
+ handleStyles: {
196
+ backgroundColor: '#000',
197
+ border: 'none',
198
+ color: '#fff'
199
+ }
200
+ }
201
+ };
202
+
203
+ // Font adlarını gerçek isimleriyle göstermek için toolbar'ı güncelle
204
+ const fontPicker = document.querySelector(".ql-font");
205
+ if (fontPicker) {
206
+ const items = fontPicker.querySelectorAll(".ql-picker-item");
207
+ items.forEach((item, index) => {
208
+ if (fonts[index]) {
209
+ item.innerText = fonts[index].label; // Gerçek font adını göster
210
+ }
211
+ });
212
+
213
+ const pickerLabel = fontPicker.querySelector(".ql-picker-label");
214
+ if (pickerLabel) {
215
+ pickerLabel.innerText = fonts[0].label; // Varsayılan font ismi
216
+ }
217
+ }
218
+
219
+ return (
220
+ <div className={'myEditorContainer ' + (isFullscreen ? 'fullscreen' : '')}>
221
+ <div className="myEditorContainerContent">
222
+ <button
223
+ onClick={handleFullscreen}
224
+ className="myEditorContainerFullscreenButton"
225
+ title={isFullscreen ? "Minimize" : "Maximize"}
226
+ >
227
+ {isFullscreen ? (
228
+ <svg viewBox="0 0 18 18" width="18" height="18">
229
+ <path d="M4,4h2v6H0V8h4V4z M14,4v4h4v2h-6V4H14z M6,14H4v-4H0v-2h6V14z M14,14h-2v-6h6v2h-4V14z" />
230
+ </svg>
231
+ ) : (
232
+ <svg viewBox="0 0 18 18" width="18" height="18">
233
+ <path d="M4,4H0v2h6V0H4V4z M14,4V0h-2v6h6V4H14z M6,14H0v2h4v4h2V14z M14,18h2v-4h4v-2h-6V18z" />
234
+ </svg>
235
+ )}
236
+ </button>
237
+ <ReactQuill
238
+ ref={editorRef}
239
+ theme="snow"
240
+ value={editorValue}
241
+ onChange={handleChange}
242
+ modules={modules}
243
+ formats={formats}
244
+ style={style}
245
+ preserveWhitespace={true}
246
+ />
247
+ </div>
248
+ </div>
249
+ );
250
+ }
251
+
252
+ export default MyEditor;
@@ -0,0 +1,277 @@
1
+ .myEditorContainer {
2
+ &.fullscreen {
3
+ position: fixed;
4
+ z-index: 9999;
5
+ background: white;
6
+ left: 0;
7
+ top: 0;
8
+ width: 100%;
9
+ height: 100%;
10
+ background-color: #091624c0;
11
+
12
+ .myEditorContainerContent {
13
+ position: absolute;
14
+ top: 50%;
15
+ left: 50%;
16
+ transform: translate(-50%, -50%);
17
+ height: 90vh;
18
+ width: 95%;
19
+ background: #fff;
20
+ border-radius: 10px;
21
+ padding: 10px;
22
+
23
+ .myEditorContainerFullscreenButton{
24
+ right: 15px;
25
+ top: 15px;
26
+ background: #7096b1;
27
+ }
28
+
29
+ .quill {
30
+ height: calc(100% - 45px) !important;
31
+ }
32
+ }
33
+ }
34
+
35
+ .myEditorContainerContent {
36
+ position: relative;
37
+ height: 100%;
38
+ width: 100%;
39
+
40
+ .myEditorContainerFullscreenButton{
41
+ position: absolute;
42
+ right: 5px;
43
+ top: 5px;
44
+ z-index: 10000;
45
+ background: #b8c1cf;
46
+ border: none;
47
+ cursor: pointer;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ width: 33px;
52
+ height: 33px;
53
+ padding: 7px;
54
+ border-radius: 5px;
55
+
56
+ svg{
57
+ width: 100%;
58
+ height: 100%;
59
+ }
60
+ }
61
+
62
+ .quill {
63
+ display: inline-block;
64
+ width: 100%;
65
+
66
+ .ql-toolbar {
67
+ border-radius: 10px;
68
+ background: #eaebec;
69
+ // -webkit-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.5);
70
+ // -moz-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.5);
71
+ box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.1);
72
+ padding: 3px !important;
73
+
74
+ .ql-formats {
75
+ margin: 4px;
76
+ background: #d9dce1;
77
+ padding: 2px;
78
+ border-radius: 5px;
79
+ }
80
+ }
81
+
82
+ .ql-container {
83
+ border-radius: 0 0 10px 10px;
84
+ padding-right: 2px;
85
+ }
86
+
87
+ .ql-editor {
88
+ &::-webkit-scrollbar {
89
+ width: 8px;
90
+ height: 8px;
91
+ }
92
+
93
+ &::-webkit-scrollbar-track {
94
+ background: #f1f1f1;
95
+ border-radius: 4px;
96
+ }
97
+
98
+ &::-webkit-scrollbar-thumb {
99
+ background: #888;
100
+ border-radius: 4px;
101
+
102
+ &:hover {
103
+ background: #555;
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ .quill-editor-container .ql-formula {
110
+ display: inline-block;
111
+ vertical-align: middle;
112
+ padding: 0 2px;
113
+ }
114
+
115
+ .quill-editor-container .katex {
116
+ display: inline-block;
117
+ font-size: 1.1em;
118
+ }
119
+
120
+ .ql-snow .ql-picker.ql-font .ql-picker-label::before,
121
+ .ql-snow .ql-picker.ql-font .ql-picker-item::before {
122
+ content: "";
123
+ }
124
+
125
+ .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
126
+ overflow: auto;
127
+ max-height: 300px;
128
+ }
129
+
130
+ .ql-font-arial {
131
+ font-family: Arial, sans-serif !important;
132
+ }
133
+
134
+ .ql-font-comic-sans {
135
+ font-family: "Comic Sans MS", cursive, sans-serif !important;
136
+ }
137
+
138
+ .ql-font-courier-new {
139
+ font-family: "Courier New", Courier, monospace !important;
140
+ }
141
+
142
+ .ql-font-georgia {
143
+ font-family: Georgia, serif !important;
144
+ }
145
+
146
+ .ql-font-helvetica {
147
+ font-family: Helvetica, sans-serif !important;
148
+ }
149
+
150
+ .ql-font-times-new-roman {
151
+ font-family: "Times New Roman", Times, serif !important;
152
+ }
153
+
154
+ .ql-font-verdana {
155
+ font-family: Verdana, sans-serif !important;
156
+ }
157
+
158
+ .ql-font-trebuchet-ms {
159
+ font-family: "Trebuchet MS", sans-serif !important;
160
+ }
161
+
162
+ .ql-font-garamond {
163
+ font-family: Garamond, serif !important;
164
+ }
165
+
166
+ .ql-font-palatino-linotype {
167
+ font-family: "Palatino Linotype", serif !important;
168
+ }
169
+
170
+ .ql-font-consolas {
171
+ font-family: Consolas, monospace !important;
172
+ }
173
+
174
+ .ql-font-lucida-console {
175
+ font-family: "Lucida Console", monospace !important;
176
+ }
177
+
178
+ .ql-font-impact {
179
+ font-family: Impact, sans-serif !important;
180
+ }
181
+
182
+ .ql-font-brush-script-mt {
183
+ font-family: "Brush Script MT", cursive !important;
184
+ }
185
+
186
+ .ql-font-tahoma {
187
+ font-family: Tahoma, sans-serif !important;
188
+ }
189
+
190
+ .ql-font-gill-sans {
191
+ font-family: "Gill Sans", sans-serif !important;
192
+ }
193
+
194
+ .ql-font-franklin-gothic-medium {
195
+ font-family: "Franklin Gothic Medium", sans-serif !important;
196
+ }
197
+
198
+ .ql-font-century-gothic {
199
+ font-family: "Century Gothic", sans-serif !important;
200
+ }
201
+
202
+ .ql-font-bookman-old-style {
203
+ font-family: "Bookman Old Style", serif !important;
204
+ }
205
+
206
+ .ql-font-candara {
207
+ font-family: Candara, sans-serif !important;
208
+ }
209
+
210
+ .ql-font-didot {
211
+ font-family: Didot, serif !important;
212
+ }
213
+
214
+ .ql-font-futura {
215
+ font-family: Futura, sans-serif !important;
216
+ }
217
+
218
+ .ql-font-rockwell {
219
+ font-family: Rockwell, serif !important;
220
+ }
221
+
222
+ .ql-font-baskerville {
223
+ font-family: Baskerville, serif !important;
224
+ }
225
+
226
+ .ql-font-bodoni-mt {
227
+ font-family: "Bodoni MT", serif !important;
228
+ }
229
+
230
+ .ql-font-copperplate {
231
+ font-family: Copperplate, serif !important;
232
+ }
233
+
234
+ .ql-font-perpetua {
235
+ font-family: Perpetua, serif !important;
236
+ }
237
+
238
+ .ql-font-monaco {
239
+ font-family: Monaco, monospace !important;
240
+ }
241
+
242
+ .ql-font-century-schoolbook {
243
+ font-family: "Century Schoolbook", serif !important;
244
+ }
245
+
246
+ .ql-font-segoe-ui {
247
+ font-family: "Segoe UI", sans-serif !important;
248
+ }
249
+
250
+ .ql-snow .ql-toolbar button.ql-fullscreen {
251
+ &:hover .ql-stroke {
252
+ stroke: #06c;
253
+ }
254
+
255
+ .ql-stroke {
256
+ stroke: #444;
257
+ }
258
+ }
259
+ }
260
+ }
261
+
262
+
263
+ .ql-editor table {
264
+ width: 100%;
265
+ border-collapse: collapse;
266
+ }
267
+
268
+ .ql-editor table td,
269
+ .ql-editor table th {
270
+ border: 1px solid #ddd;
271
+ padding: 8px;
272
+ }
273
+
274
+ .ql-editor table th {
275
+ background-color: #f2f2f2;
276
+ text-align: left;
277
+ }