munchboka-edutools 0.1.13__py3-none-any.whl

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.

Potentially problematic release.


This version of munchboka-edutools might be problematic. Click here for more details.

Files changed (149) hide show
  1. munchboka_edutools/__init__.py +184 -0
  2. munchboka_edutools/_plotmath_shim.py +126 -0
  3. munchboka_edutools/_version.py +2 -0
  4. munchboka_edutools/directives/__init__.py +1 -0
  5. munchboka_edutools/directives/admonitions.py +389 -0
  6. munchboka_edutools/directives/cas_popup.py +272 -0
  7. munchboka_edutools/directives/clear.py +103 -0
  8. munchboka_edutools/directives/dialogue.py +137 -0
  9. munchboka_edutools/directives/escape_room.py +296 -0
  10. munchboka_edutools/directives/factor_tree.py +549 -0
  11. munchboka_edutools/directives/ggb.py +209 -0
  12. munchboka_edutools/directives/ggb_icon.py +105 -0
  13. munchboka_edutools/directives/ggb_popup.py +165 -0
  14. munchboka_edutools/directives/horner.py +324 -0
  15. munchboka_edutools/directives/interactive_code.py +75 -0
  16. munchboka_edutools/directives/jeopardy.py +252 -0
  17. munchboka_edutools/directives/multi_plot.py +1126 -0
  18. munchboka_edutools/directives/pair_puzzle.py +191 -0
  19. munchboka_edutools/directives/parsons.py +109 -0
  20. munchboka_edutools/directives/plot.py +3105 -0
  21. munchboka_edutools/directives/poly_icon.py +111 -0
  22. munchboka_edutools/directives/polydiv.py +344 -0
  23. munchboka_edutools/directives/popup.py +245 -0
  24. munchboka_edutools/directives/quiz.py +291 -0
  25. munchboka_edutools/directives/signchart.py +516 -0
  26. munchboka_edutools/directives/timed_quiz.py +436 -0
  27. munchboka_edutools/directives/turtle.py +157 -0
  28. munchboka_edutools/static/css/admonitions.css +2012 -0
  29. munchboka_edutools/static/css/cas_popup.css +242 -0
  30. munchboka_edutools/static/css/code_mirror_themes/github_dark_cm.css +112 -0
  31. munchboka_edutools/static/css/code_mirror_themes/github_dark_default_cm.css +40 -0
  32. munchboka_edutools/static/css/code_mirror_themes/github_dark_high_contrast_cm.css +141 -0
  33. munchboka_edutools/static/css/code_mirror_themes/github_light_cm.css +120 -0
  34. munchboka_edutools/static/css/code_mirror_themes/github_light_default_cm.css +108 -0
  35. munchboka_edutools/static/css/code_mirror_themes/one_dark_cm.css +121 -0
  36. munchboka_edutools/static/css/dialogue.css +92 -0
  37. munchboka_edutools/static/css/escapeRoom/escape-room.css +223 -0
  38. munchboka_edutools/static/css/figures.css +274 -0
  39. munchboka_edutools/static/css/general_style.css +74 -0
  40. munchboka_edutools/static/css/github-dark-high-contrast.css +141 -0
  41. munchboka_edutools/static/css/github-dark.css +112 -0
  42. munchboka_edutools/static/css/github-light.css +120 -0
  43. munchboka_edutools/static/css/interactive_code/style.css +575 -0
  44. munchboka_edutools/static/css/interactive_code.css +582 -0
  45. munchboka_edutools/static/css/jeopardy.css +529 -0
  46. munchboka_edutools/static/css/pairPuzzle/style.css +177 -0
  47. munchboka_edutools/static/css/parsons/parsonsPuzzle.css +331 -0
  48. munchboka_edutools/static/css/popup.css +115 -0
  49. munchboka_edutools/static/css/quiz.css +312 -0
  50. munchboka_edutools/static/css/timedQuiz.css +375 -0
  51. munchboka_edutools/static/icons/ggb/mode_evaluate.svg +1 -0
  52. munchboka_edutools/static/icons/ggb/mode_extremum.svg +1 -0
  53. munchboka_edutools/static/icons/ggb/mode_intersect.svg +1 -0
  54. munchboka_edutools/static/icons/ggb/mode_nsolve.svg +1 -0
  55. munchboka_edutools/static/icons/ggb/mode_numeric.svg +1 -0
  56. munchboka_edutools/static/icons/ggb/mode_point.svg +1 -0
  57. munchboka_edutools/static/icons/ggb/mode_solve.svg +1 -0
  58. munchboka_edutools/static/icons/misc/windows-logo.svg +1 -0
  59. munchboka_edutools/static/icons/outline/dark_mode/academic.svg +3 -0
  60. munchboka_edutools/static/icons/outline/dark_mode/backward.svg +3 -0
  61. munchboka_edutools/static/icons/outline/dark_mode/book.svg +3 -0
  62. munchboka_edutools/static/icons/outline/dark_mode/chat_bubble.svg +3 -0
  63. munchboka_edutools/static/icons/outline/dark_mode/check.svg +3 -0
  64. munchboka_edutools/static/icons/outline/dark_mode/cmd_line.svg +3 -0
  65. munchboka_edutools/static/icons/outline/dark_mode/file.svg +1 -0
  66. munchboka_edutools/static/icons/outline/dark_mode/fire.svg +4 -0
  67. munchboka_edutools/static/icons/outline/dark_mode/key.svg +3 -0
  68. munchboka_edutools/static/icons/outline/dark_mode/magnifying.svg +3 -0
  69. munchboka_edutools/static/icons/outline/dark_mode/pencil_square.svg +3 -0
  70. munchboka_edutools/static/icons/outline/dark_mode/play.svg +3 -0
  71. munchboka_edutools/static/icons/outline/dark_mode/question.svg +3 -0
  72. munchboka_edutools/static/icons/outline/dark_mode/square_check.svg +1 -0
  73. munchboka_edutools/static/icons/outline/dark_mode/stop.svg +3 -0
  74. munchboka_edutools/static/icons/outline/dark_mode/summary.svg +3 -0
  75. munchboka_edutools/static/icons/outline/dark_mode/undo.svg +3 -0
  76. munchboka_edutools/static/icons/outline/dark_mode/unlock.svg +3 -0
  77. munchboka_edutools/static/icons/outline/light_mode/academic.svg +3 -0
  78. munchboka_edutools/static/icons/outline/light_mode/backward.svg +3 -0
  79. munchboka_edutools/static/icons/outline/light_mode/book.svg +3 -0
  80. munchboka_edutools/static/icons/outline/light_mode/chat_bubble.svg +3 -0
  81. munchboka_edutools/static/icons/outline/light_mode/check.svg +3 -0
  82. munchboka_edutools/static/icons/outline/light_mode/cmd_line.svg +3 -0
  83. munchboka_edutools/static/icons/outline/light_mode/file.svg +1 -0
  84. munchboka_edutools/static/icons/outline/light_mode/fire.svg +4 -0
  85. munchboka_edutools/static/icons/outline/light_mode/key.svg +3 -0
  86. munchboka_edutools/static/icons/outline/light_mode/magnifying.svg +3 -0
  87. munchboka_edutools/static/icons/outline/light_mode/pencil_square.svg +3 -0
  88. munchboka_edutools/static/icons/outline/light_mode/play.svg +3 -0
  89. munchboka_edutools/static/icons/outline/light_mode/question.svg +3 -0
  90. munchboka_edutools/static/icons/outline/light_mode/square_check.svg +1 -0
  91. munchboka_edutools/static/icons/outline/light_mode/stop.svg +3 -0
  92. munchboka_edutools/static/icons/outline/light_mode/summary.svg +3 -0
  93. munchboka_edutools/static/icons/outline/light_mode/undo.svg +3 -0
  94. munchboka_edutools/static/icons/outline/light_mode/unlock.svg +3 -0
  95. munchboka_edutools/static/icons/polyicons/cubicdown.svg +3 -0
  96. munchboka_edutools/static/icons/polyicons/cubicup.svg +3 -0
  97. munchboka_edutools/static/icons/polyicons/frown.svg +3 -0
  98. munchboka_edutools/static/icons/polyicons/smile.svg +3 -0
  99. munchboka_edutools/static/icons/solid/dark_mode/academic.svg +5 -0
  100. munchboka_edutools/static/icons/solid/dark_mode/backward.svg +3 -0
  101. munchboka_edutools/static/icons/solid/dark_mode/book.svg +3 -0
  102. munchboka_edutools/static/icons/solid/dark_mode/brain.svg +1 -0
  103. munchboka_edutools/static/icons/solid/dark_mode/file.svg +1 -0
  104. munchboka_edutools/static/icons/solid/dark_mode/fire.svg +3 -0
  105. munchboka_edutools/static/icons/solid/dark_mode/key.svg +3 -0
  106. munchboka_edutools/static/icons/solid/dark_mode/pencil_square.svg +4 -0
  107. munchboka_edutools/static/icons/solid/dark_mode/play.svg +3 -0
  108. munchboka_edutools/static/icons/solid/dark_mode/python.svg +1 -0
  109. munchboka_edutools/static/icons/solid/dark_mode/scroll.svg +1 -0
  110. munchboka_edutools/static/icons/solid/dark_mode/stop.svg +3 -0
  111. munchboka_edutools/static/icons/solid/light_mode/academic.svg +5 -0
  112. munchboka_edutools/static/icons/solid/light_mode/backward.svg +3 -0
  113. munchboka_edutools/static/icons/solid/light_mode/book.svg +3 -0
  114. munchboka_edutools/static/icons/solid/light_mode/brain.svg +1 -0
  115. munchboka_edutools/static/icons/solid/light_mode/file.svg +1 -0
  116. munchboka_edutools/static/icons/solid/light_mode/fire.svg +3 -0
  117. munchboka_edutools/static/icons/solid/light_mode/key.svg +3 -0
  118. munchboka_edutools/static/icons/solid/light_mode/pencil_square.svg +4 -0
  119. munchboka_edutools/static/icons/solid/light_mode/play.svg +3 -0
  120. munchboka_edutools/static/icons/solid/light_mode/python.svg +1 -0
  121. munchboka_edutools/static/icons/solid/light_mode/scroll.svg +1 -0
  122. munchboka_edutools/static/icons/solid/light_mode/stop.svg +3 -0
  123. munchboka_edutools/static/icons/stickers/edit.svg +1 -0
  124. munchboka_edutools/static/icons/stickers/pencil_square.svg +3 -0
  125. munchboka_edutools/static/js/casThemeManager.js +99 -0
  126. munchboka_edutools/static/js/escapeRoom/escape-room.js +219 -0
  127. munchboka_edutools/static/js/geogebra-setup.js +6 -0
  128. munchboka_edutools/static/js/highlight-init.js +6 -0
  129. munchboka_edutools/static/js/interactiveCode/codeEditor.js +632 -0
  130. munchboka_edutools/static/js/interactiveCode/interactiveCodeSetup.js +348 -0
  131. munchboka_edutools/static/js/interactiveCode/pythonRunner.js +336 -0
  132. munchboka_edutools/static/js/interactiveCode/turtleCode.js +203 -0
  133. munchboka_edutools/static/js/interactiveCode/workerManager.js +353 -0
  134. munchboka_edutools/static/js/jeopardy.js +523 -0
  135. munchboka_edutools/static/js/pairPuzzle/draggableItem.js +64 -0
  136. munchboka_edutools/static/js/pairPuzzle/dropZone.js +119 -0
  137. munchboka_edutools/static/js/pairPuzzle/game.js +160 -0
  138. munchboka_edutools/static/js/parsons/parsonsPuzzle.js +641 -0
  139. munchboka_edutools/static/js/popup.js +85 -0
  140. munchboka_edutools/static/js/quiz.js +422 -0
  141. munchboka_edutools/static/js/skulpt/skulpt.js +35721 -0
  142. munchboka_edutools/static/js/timedQuiz/multipleChoiceQuestion.js +184 -0
  143. munchboka_edutools/static/js/timedQuiz/timedMultipleChoiceQuiz.js +244 -0
  144. munchboka_edutools/static/js/timedQuiz/utils.js +6 -0
  145. munchboka_edutools/static/js/utils.js +3 -0
  146. munchboka_edutools-0.1.13.dist-info/METADATA +108 -0
  147. munchboka_edutools-0.1.13.dist-info/RECORD +149 -0
  148. munchboka_edutools-0.1.13.dist-info/WHEEL +4 -0
  149. munchboka_edutools-0.1.13.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,331 @@
1
+ /* Define color variables for each mode */
2
+ :root {
3
+ --parsons-puzzle-background-color: #f9f9f9 !important;
4
+ --parsons-puzzle-border-color: #ccc;
5
+ --parsons-puzzle-draggable-background-color: #ffffff;
6
+ --parsons-puzzle-drop-area-background-color: #ffffff;
7
+ --parsons-puzzle-drop-area-border-color: #007bff;
8
+ --parsons-puzzle-text-color: #24292f;
9
+ --parsons-puzzle-hover-background-color: #e9ecef;
10
+ --parsons-puzzle-hover-border-color: #0056b3;
11
+ --parsons-puzzle-placeholder-background-color: #bcbbbb;
12
+ --parsons-puzzle-placeholder-border-color: #999;
13
+ --parsons-puzzle-button-background-color-check: #28a745;
14
+ --parsons-puzzle-button-background-color-reset: #ffc107;
15
+ --parsons-puzzle-button-text-color: black;
16
+ --parsons-puzzle-modal-background-color: #fefefe;
17
+ --parsons-puzzle-modal-border-color: #888;
18
+ --parsons-puzzle-draggable-item-background-color: #e8e8e8;
19
+ --parsons-puzzle-draggable-item-border-color: #007bff;
20
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
21
+ --parsons-puzzle-toast-success-background-color: rgba(25, 135, 84, 0.9);
22
+ --parsons-puzzle-toast-success-text-color: #ffffff;
23
+ --parsons-puzzle-toast-error-background-color: rgba(220, 53, 69, 0.9);
24
+ --parsons-puzzle-toast-error-text-color: #ffffff;
25
+ /* If you use a "primary" color elsewhere: */
26
+ --parsons-puzzle-primary-color: #007bff;
27
+ }
28
+
29
+ /* Dark mode variables */
30
+ [data-mode="dark"] {
31
+ --parsons-puzzle-background-color: #202020 !important;
32
+ --parsons-puzzle-border-color: #ccc;
33
+ --parsons-puzzle-draggable-background-color: #141923;
34
+ --parsons-puzzle-drop-area-background-color: #3b3b3b;
35
+ --parsons-puzzle-drop-area-border-color: #007bff;
36
+ --parsons-puzzle-text-color: #ffffff;
37
+ --parsons-puzzle-hover-background-color: #333333;
38
+ --parsons-puzzle-hover-border-color: #0056b3;
39
+ --parsons-puzzle-placeholder-background-color: #000000;
40
+ --parsons-puzzle-placeholder-border-color: #999;
41
+ --parsons-puzzle-button-background-color-check: #28a745;
42
+ --parsons-puzzle-button-background-color-reset: #ffc107;
43
+ --parsons-puzzle-button-text-color: black;
44
+ --parsons-puzzle-modal-background-color: #181818;
45
+ --parsons-puzzle-modal-border-color: #888;
46
+ --parsons-puzzle-draggable-item-background-color: #252d40;
47
+ --parsons-puzzle-draggable-item-border-color: #1b1b1b;
48
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
49
+ }
50
+
51
+ /* Auto mode using system preferences */
52
+ @media (prefers-color-scheme: light) {
53
+ [data-mode="auto"] {
54
+ --parsons-puzzle-background-color: #f9f9f9 !important;
55
+ --parsons-puzzle-border-color: #ccc;
56
+ --parsons-puzzle-draggable-background-color: #ffffff;
57
+ --parsons-puzzle-drop-area-background-color: #ffffff;
58
+ --parsons-puzzle-drop-area-border-color: #007bff;
59
+ --parsons-puzzle-text-color: #24292f;
60
+ --parsons-puzzle-hover-background-color: #e9ecef;
61
+ --parsons-puzzle-hover-border-color: #0056b3;
62
+ --parsons-puzzle-placeholder-background-color: #bcbbbb;
63
+ --parsons-puzzle-placeholder-border-color: #999;
64
+ --parsons-puzzle-button-background-color-check: #28a745;
65
+ --parsons-puzzle-button-background-color-reset: #ffc107;
66
+ --parsons-puzzle-button-text-color: black;
67
+ --parsons-puzzle-modal-background-color: #fefefe;
68
+ --parsons-puzzle-modal-border-color: #888;
69
+ --parsons-puzzle-draggable-item-background-color: #e8e8e8;
70
+ --parsons-puzzle-draggable-item-border-color: #007bff;
71
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
72
+ }
73
+ }
74
+
75
+ @media (prefers-color-scheme: dark) {
76
+ [data-mode="auto"] {
77
+ --parsons-puzzle-background-color: #202020 !important;
78
+ --parsons-puzzle-border-color: #ccc;
79
+ --parsons-puzzle-draggable-background-color: #141923;
80
+ --parsons-puzzle-drop-area-background-color: #3b3b3b;
81
+ --parsons-puzzle-drop-area-border-color: #007bff;
82
+ --parsons-puzzle-text-color: #ffffff;
83
+ --parsons-puzzle-hover-background-color: #333333;
84
+ --parsons-puzzle-hover-border-color: #0056b3;
85
+ --parsons-puzzle-placeholder-background-color: #000000;
86
+ --parsons-puzzle-placeholder-border-color: #999;
87
+ --parsons-puzzle-button-background-color-check: #28a745;
88
+ --parsons-puzzle-button-background-color-reset: #ffc107;
89
+ --parsons-puzzle-button-text-color: black;
90
+ --parsons-puzzle-modal-background-color: #181818;
91
+ --parsons-puzzle-modal-border-color: #888;
92
+ --parsons-puzzle-draggable-item-background-color: #252d40;
93
+ --parsons-puzzle-draggable-item-border-color: #1b1b1b;
94
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
95
+ }
96
+ }
97
+
98
+ /* Main container for Parsons puzzle */
99
+ .puzzle-container {
100
+ display: flex;
101
+ flex-direction: column;
102
+ align-items: flex-start;
103
+ padding: 20px;
104
+ border: 1px solid var(--parsons-puzzle-border-color);
105
+ border-radius: 8px;
106
+ background-color: var(--parsons-puzzle-background-color) !important;
107
+ position: relative;
108
+ }
109
+
110
+ /* Draggable code area (alternate) */
111
+ /* .draggable-code {
112
+ width: 100%;
113
+ background-color: var(--parsons-puzzle-draggable-background-color);
114
+ padding: 10px;
115
+ border: 1px solid var(--parsons-puzzle-border-color);
116
+ border-radius: 8px;
117
+ margin-bottom: 15px;
118
+ } */
119
+
120
+ /* Draggable items */
121
+ .draggable-code {
122
+ background-color: var(--parsons-puzzle-draggable-background-color) !important;
123
+ color: var(--parsons-puzzle-text-color);
124
+ border: 2px solid var(--parsons-puzzle-primary-color);
125
+ padding: 10px 15px;
126
+ margin-bottom: 10px;
127
+ border-radius: 5px;
128
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
129
+ cursor: grab;
130
+ display: inline-block;
131
+ white-space: normal;
132
+ width: 100%;
133
+ height: auto;
134
+ max-width: 100%;
135
+ box-sizing: border-box;
136
+ transition: all 0.2s ease;
137
+ }
138
+
139
+ /* .pairing-puzzle-container .draggable-code {
140
+ background-color: var(--parsons-puzzle-draggable-background-color) !important;
141
+ color: var(--parsons-puzzle-text-color);
142
+ border: 2px solid var(--parsons-puzzle-primary-color);
143
+ padding: 10px 15px;
144
+ margin-bottom: 10px;
145
+ border-radius: 5px;
146
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
147
+ cursor: grab;
148
+ display: inline-block;
149
+ width: 100%;
150
+ white-space: nowrap;
151
+ overflow: visible;
152
+ text-overflow: ellipsis;
153
+ box-sizing: border-box;
154
+ transition: all 0.2s ease;
155
+ } */
156
+
157
+ /* Drop area */
158
+ .drop-area {
159
+ width: 100%;
160
+ background-color: var(--parsons-puzzle-drop-area-background-color) !important;
161
+ border: 2px dashed var(--parsons-puzzle-drop-area-border-color);
162
+ min-height: 150px;
163
+ padding: 10px;
164
+ border-radius: 8px;
165
+ position: relative;
166
+ margin-bottom: 15px;
167
+ }
168
+
169
+ /* General draggable item styles */
170
+ .draggable {
171
+ background-color: var(--parsons-puzzle-draggable-item-background-color) !important;
172
+ color: var(--parsons-puzzle-text-color);
173
+ border: 1px solid var(--parsons-puzzle-draggable-item-border-color);
174
+ padding: 5px;
175
+ margin-bottom: 5px;
176
+ border-radius: 3px;
177
+ cursor: grab;
178
+ }
179
+
180
+ /* Placeholder in drop area */
181
+ .placeholder {
182
+ height: 50px;
183
+ margin-bottom: 5px;
184
+ background-color: var(--parsons-puzzle-placeholder-background-color) !important;
185
+ border: 1px dashed var(--parsons-puzzle-placeholder-border-color);
186
+ width: 100%;
187
+ padding: 5px;
188
+ box-sizing: border-box;
189
+ text-align: center;
190
+ }
191
+
192
+ /* Dragging styles (commented out) */
193
+ /* .draggable:active {
194
+ background-color: #e0f7fa;
195
+ opacity: 1;
196
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
197
+ transform: scale(1.01);
198
+ border: 2px solid #007bff;
199
+ cursor: grabbing;
200
+ color: #000000;
201
+ transition: all 0.2s ease;
202
+ opacity: 0.9;
203
+ } */
204
+
205
+ /* Drop area hover effect */
206
+ /* .drop-area.dragover {
207
+ background-color: var(--parsons-puzzle-hover-background-color);
208
+ border-color: var(--parsons-puzzle-hover-border-color);
209
+ } */
210
+
211
+ /* Feedback when dragging */
212
+ /* .dragging {
213
+ display: block;
214
+ background-color: #e0f7fa;
215
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
216
+ transform: scale(1.05);
217
+ transition: all 0.2s ease;
218
+ opacity: 0.9 !important;
219
+ } */
220
+
221
+ /* Code block styles */
222
+ pre.highlight {
223
+ margin: 0;
224
+ padding: 0;
225
+ background: transparent;
226
+ border: none;
227
+ font-family: inherit;
228
+ white-space: pre-wrap;
229
+ word-wrap: break-word;
230
+ }
231
+
232
+ /* Button styles */
233
+ .button-check-solution {
234
+ background-color: var(--parsons-puzzle-button-background-color-check);
235
+ color: var(--parsons-puzzle-button-text-color) !important;
236
+ }
237
+
238
+ .button-reset-puzzle {
239
+ background-color: var(--parsons-puzzle-button-background-color-reset);
240
+ color: var(--parsons-puzzle-button-text-color) !important;
241
+ }
242
+
243
+ /* Modal container (hidden by default) */
244
+ .modal {
245
+ display: none;
246
+ position: fixed;
247
+ z-index: 1000;
248
+ left: 0;
249
+ top: 0;
250
+ width: 100%;
251
+ height: 100%;
252
+ overflow: auto;
253
+ background-color: rgba(0,0,0,0.4);
254
+ }
255
+
256
+ /* Modal content */
257
+ .modal-content {
258
+ background-color: var(--parsons-puzzle-modal-background-color);
259
+ margin: 15% auto;
260
+ padding: 20px;
261
+ border: 1px solid var(--parsons-puzzle-modal-border-color);
262
+ width: 80%;
263
+ border-radius: 5px;
264
+ }
265
+
266
+ /* Close button */
267
+ .close {
268
+ color: #aaa;
269
+ float: right;
270
+ font-size: 28px;
271
+ font-weight: bold;
272
+ }
273
+
274
+ .close:hover,
275
+ .close:focus {
276
+ color: black;
277
+ text-decoration: none;
278
+ cursor: pointer;
279
+ }
280
+
281
+ /* Copy button */
282
+ .button-copy-code {
283
+ margin-top: 10px;
284
+ padding: 10px 20px;
285
+ background-color: #007bff;
286
+ color: white;
287
+ border: none;
288
+ border-radius: 5px;
289
+ cursor: pointer;
290
+ }
291
+
292
+ .button-copy-code:hover {
293
+ background-color: #0056b3;
294
+ }
295
+
296
+ .button-container {
297
+ display: flex;
298
+ gap: 10px;
299
+ margin-top: 5px;
300
+ }
301
+
302
+ /* Toast Notification */
303
+ .toast {
304
+ position: absolute;
305
+ padding: 15px;
306
+ border-radius: 8px;
307
+ z-index: 1000;
308
+ display: none;
309
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
310
+ font-size: 30px;
311
+ text-align: center;
312
+ }
313
+
314
+ /* Success Toast */
315
+ .toast-success {
316
+ background-color: var(--parsons-puzzle-toast-success-background-color);
317
+ color: var(--parsons-puzzle-toast-success-text-color);
318
+ }
319
+
320
+ /* Error Toast */
321
+ .toast-error {
322
+ background-color: var(--parsons-puzzle-toast-error-background-color);
323
+ color: var(--parsons-puzzle-toast-error-text-color);
324
+ }
325
+
326
+ /* Toast Message */
327
+ .toast p {
328
+ margin: 0;
329
+ font-size: 16px;
330
+ font-weight: bold;
331
+ }
@@ -0,0 +1,115 @@
1
+ /* =======================
2
+ Wrapper & Trigger
3
+ ======================= */
4
+
5
+ .popup-wrapper {
6
+ display: inline-block;
7
+ position: relative;
8
+ }
9
+
10
+ .popup-trigger {
11
+ cursor: pointer;
12
+ border-bottom: 1px dashed #4a86e8;
13
+ color: #1a73e8;
14
+ transition: color 0.2s, border-color 0.2s;
15
+ }
16
+
17
+ .popup-trigger:hover {
18
+ color: #0d5bcd;
19
+ border-bottom-color: #0d5bcd;
20
+ }
21
+
22
+ /* =======================
23
+ Bubble Base Style
24
+ ======================= */
25
+
26
+ .popup-bubble {
27
+ position: absolute;
28
+ top: calc(100% + 6px);
29
+ left: 0;
30
+ background: #333;
31
+ color: white;
32
+ padding: 0.75em 1em;
33
+ border-radius: 8px;
34
+ font-size: 0.95em;
35
+ line-height: 1.5;
36
+ z-index: 1000;
37
+ max-width: 500px;
38
+ width: max-content;
39
+ white-space: normal;
40
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
41
+ transition: opacity 0.2s ease, transform 0.2s ease;
42
+ transform: translateY(4px);
43
+ opacity: 0;
44
+ pointer-events: none;
45
+ }
46
+
47
+ /* =======================
48
+ Show when active
49
+ ======================= */
50
+
51
+ .popup-bubble[style*="display: block"] {
52
+ opacity: 1;
53
+ pointer-events: auto;
54
+ transform: translateY(0);
55
+ }
56
+
57
+ /* =======================
58
+ Light Mode
59
+ ======================= */
60
+
61
+ [data-mode="light"] .popup-bubble {
62
+ background: #f9f9f9;
63
+ color: #222;
64
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
65
+ }
66
+
67
+ [data-mode="light"] .popup-trigger {
68
+ color: #0023d1;
69
+ border-bottom-color: #8f00d1;
70
+ }
71
+
72
+ /* =======================
73
+ Dark Mode
74
+ ======================= */
75
+
76
+ [data-mode="dark"] .popup-bubble {
77
+ background: #1e1e1e !important;
78
+ color: #e0e0e0;
79
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
80
+ }
81
+
82
+ [data-mode="dark"] .popup-trigger {
83
+ color: #66b5ff;
84
+ border-bottom-color: #66b5ff;
85
+ }
86
+
87
+ /* =======================
88
+ Auto (respects OS)
89
+ ======================= */
90
+
91
+ @media (prefers-color-scheme: dark) {
92
+ [data-mode="auto"] .popup-bubble {
93
+ background: #1e1e1e !important;
94
+ color: #e0e0e0;
95
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
96
+ }
97
+
98
+ [data-mode="auto"] .popup-trigger {
99
+ color: #66b5ff;
100
+ border-bottom-color: #66b5ff;
101
+ }
102
+
103
+ [data-mode="auto"] .popup-trigger:hover {
104
+ color: #7ac1ff;
105
+ border-bottom-color: #7ac1ff;
106
+ }
107
+ }
108
+
109
+ @media (prefers-color-scheme: light) {
110
+ [data-mode="auto"] .popup-bubble {
111
+ background: #f9f9f9;
112
+ color: #222;
113
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
114
+ }
115
+ }