md2x 0.7.3 → 0.7.5

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 (141) hide show
  1. package/README.md +17 -7
  2. package/dist/chunks/chunk-54X5GPSM.js +1552 -0
  3. package/dist/chunks/chunk-US45GBOT.js +415 -0
  4. package/dist/chunks/docx-exporter-7C6T4DFB.js +1 -0
  5. package/dist/core-worker.js +1764 -0
  6. package/dist/index.js +1 -1
  7. package/dist/md2x.js +7 -5
  8. package/dist/renderer/core-worker-browser.js +1775 -0
  9. package/dist/renderer/live-runtime-canvas.js +24 -0
  10. package/dist/renderer/live-runtime-core.js +14 -0
  11. package/dist/renderer/live-runtime-dot.js +27 -0
  12. package/dist/renderer/live-runtime-html.js +14 -0
  13. package/dist/renderer/live-runtime-infographic.js +593 -0
  14. package/dist/renderer/live-runtime-md2x.js +24 -0
  15. package/dist/renderer/live-runtime-mermaid.js +14 -0
  16. package/dist/renderer/live-runtime-svg.js +14 -0
  17. package/dist/renderer/live-runtime-vega.js +218 -0
  18. package/dist/renderer/puppeteer-render.html +9 -1
  19. package/dist/renderer/puppeteer-runtime-core.js +14 -0
  20. package/dist/types/node/src/host/browser-renderer.d.ts +1 -175
  21. package/dist/types/node/src/host/core.d.ts +59 -0
  22. package/dist/types/node/src/host/index.d.ts +4 -47
  23. package/dist/types/node/src/host/node-exporter.d.ts +1 -84
  24. package/dist/types/node/src/host/node-platform.d.ts +1 -23
  25. package/dist/types/node/src/host/templates-data.d.ts +5 -0
  26. package/dist/types/node/src/host/themes-data.d.ts +2385 -0
  27. package/dist/types/node/src/host/types.d.ts +251 -0
  28. package/dist/types/node/src/index.d.ts +2 -3
  29. package/dist/types/src/types/index.d.ts +1 -1
  30. package/dist/types/src/types/render.d.ts +12 -0
  31. package/package.json +10 -2
  32. package/dist/chunks/chunk-2LPNL4GA.js +0 -1
  33. package/dist/chunks/chunk-3P5X57NT.js +0 -262
  34. package/dist/chunks/chunk-3VL755NO.js +0 -1
  35. package/dist/chunks/chunk-5DPTQTJJ.js +0 -1
  36. package/dist/chunks/chunk-AK6TXLWO.js +0 -1
  37. package/dist/chunks/chunk-CN4F5HOV.js +0 -5
  38. package/dist/chunks/chunk-CVKZIRZW.js +0 -5
  39. package/dist/chunks/chunk-DFROP2PD.js +0 -11
  40. package/dist/chunks/chunk-DJGIYXVP.js +0 -3
  41. package/dist/chunks/chunk-EFKQH5UR.js +0 -108
  42. package/dist/chunks/chunk-IENSDROB.js +0 -1
  43. package/dist/chunks/chunk-LLCWR7UA.js +0 -1
  44. package/dist/chunks/chunk-MHCTK6WW.js +0 -1
  45. package/dist/chunks/chunk-NM6J3ND7.js +0 -1
  46. package/dist/chunks/chunk-PARPCLXM.js +0 -1
  47. package/dist/chunks/chunk-PUOHPY5L.js +0 -16
  48. package/dist/chunks/chunk-R65AQGTF.js +0 -1
  49. package/dist/chunks/chunk-R6G2575A.js +0 -3
  50. package/dist/chunks/chunk-RLHZRADD.js +0 -1391
  51. package/dist/chunks/chunk-TRGQPVRY.js +0 -2
  52. package/dist/chunks/chunk-URO5RPHJ.js +0 -9
  53. package/dist/chunks/chunk-YFL3W3OS.js +0 -1
  54. package/dist/chunks/chunk-Z4LVGK7Y.js +0 -1
  55. package/dist/chunks/docx-exporter-ZZ76JXFU.js +0 -1
  56. package/dist/chunks/rehype-highlight-Y4Q4RX67.js +0 -1
  57. package/dist/chunks/rehype-katex-FXTCTSUE.js +0 -1
  58. package/dist/chunks/rehype-stringify-4CQSSRDL.js +0 -1
  59. package/dist/chunks/remark-gfm-BUZ4SLP3.js +0 -1
  60. package/dist/chunks/remark-math-HEZQAPFK.js +0 -1
  61. package/dist/chunks/remark-parse-QC7TSXTK.js +0 -1
  62. package/dist/chunks/remark-rehype-C2LX643P.js +0 -1
  63. package/dist/chunks/remark-super-sub-EP2AQS54.js +0 -1
  64. package/dist/chunks/theme-manager-AZBU2SLL.js +0 -1
  65. package/dist/chunks/theme-to-css-GLV3WYDU.js +0 -85
  66. package/dist/chunks/unified-PU53JLVJ.js +0 -1
  67. package/dist/chunks/unist-util-visit-SBSD62C6.js +0 -1
  68. package/dist/renderer/puppeteer-render-worker.js +0 -830
  69. package/dist/templates/html/example.html +0 -35
  70. package/dist/templates/svelte/example.svelte +0 -18
  71. package/dist/templates/vue/PrinterComponent.vue +0 -875
  72. package/dist/templates/vue/example.vue +0 -17
  73. package/dist/templates/vue/mapLibre.vue +0 -371
  74. package/dist/themes/code-themes/business-contrast.json +0 -31
  75. package/dist/themes/code-themes/colorful.json +0 -32
  76. package/dist/themes/code-themes/cool-modern.json +0 -31
  77. package/dist/themes/code-themes/high-contrast.json +0 -31
  78. package/dist/themes/code-themes/light-clean.json +0 -31
  79. package/dist/themes/code-themes/warm-book.json +0 -31
  80. package/dist/themes/color-schemes/candy.json +0 -34
  81. package/dist/themes/color-schemes/cool.json +0 -34
  82. package/dist/themes/color-schemes/coral.json +0 -34
  83. package/dist/themes/color-schemes/dino.json +0 -34
  84. package/dist/themes/color-schemes/forest.json +0 -34
  85. package/dist/themes/color-schemes/garden.json +0 -34
  86. package/dist/themes/color-schemes/neutral.json +0 -34
  87. package/dist/themes/color-schemes/ocean.json +0 -34
  88. package/dist/themes/color-schemes/rainbow.json +0 -43
  89. package/dist/themes/color-schemes/sakura.json +0 -34
  90. package/dist/themes/color-schemes/sepia.json +0 -34
  91. package/dist/themes/color-schemes/space.json +0 -34
  92. package/dist/themes/color-schemes/starry.json +0 -34
  93. package/dist/themes/color-schemes/sunset.json +0 -34
  94. package/dist/themes/color-schemes/warm.json +0 -34
  95. package/dist/themes/font-config.json +0 -184
  96. package/dist/themes/layout-schemes/academic.json +0 -40
  97. package/dist/themes/layout-schemes/book.json +0 -40
  98. package/dist/themes/layout-schemes/document.json +0 -40
  99. package/dist/themes/layout-schemes/magazine.json +0 -40
  100. package/dist/themes/layout-schemes/student.json +0 -40
  101. package/dist/themes/layout-schemes/technical.json +0 -40
  102. package/dist/themes/presets/academic.json +0 -24
  103. package/dist/themes/presets/business.json +0 -22
  104. package/dist/themes/presets/candy.json +0 -23
  105. package/dist/themes/presets/century.json +0 -22
  106. package/dist/themes/presets/coral.json +0 -22
  107. package/dist/themes/presets/default.json +0 -22
  108. package/dist/themes/presets/dinosaur.json +0 -23
  109. package/dist/themes/presets/elegant.json +0 -22
  110. package/dist/themes/presets/forest.json +0 -22
  111. package/dist/themes/presets/garamond.json +0 -22
  112. package/dist/themes/presets/garden.json +0 -23
  113. package/dist/themes/presets/handwritten.json +0 -23
  114. package/dist/themes/presets/heiti.json +0 -22
  115. package/dist/themes/presets/magazine.json +0 -24
  116. package/dist/themes/presets/manuscript.json +0 -22
  117. package/dist/themes/presets/minimal.json +0 -22
  118. package/dist/themes/presets/mixed.json +0 -24
  119. package/dist/themes/presets/newspaper.json +0 -24
  120. package/dist/themes/presets/ocean.json +0 -22
  121. package/dist/themes/presets/palatino.json +0 -22
  122. package/dist/themes/presets/rainbow.json +0 -23
  123. package/dist/themes/presets/space.json +0 -23
  124. package/dist/themes/presets/starry.json +0 -23
  125. package/dist/themes/presets/sunset.json +0 -22
  126. package/dist/themes/presets/swiss.json +0 -22
  127. package/dist/themes/presets/technical.json +0 -22
  128. package/dist/themes/presets/typewriter.json +0 -23
  129. package/dist/themes/presets/verdana.json +0 -22
  130. package/dist/themes/presets/water.json +0 -22
  131. package/dist/themes/registry.json +0 -270
  132. package/dist/themes/table-styles/academic.json +0 -30
  133. package/dist/themes/table-styles/borderless.json +0 -26
  134. package/dist/themes/table-styles/compact.json +0 -24
  135. package/dist/themes/table-styles/grid.json +0 -22
  136. package/dist/themes/table-styles/high-contrast.json +0 -22
  137. package/dist/themes/table-styles/minimal-gray.json +0 -26
  138. package/dist/themes/table-styles/modern-tech.json +0 -34
  139. package/dist/themes/table-styles/professional.json +0 -34
  140. package/dist/themes/table-styles/zebra.json +0 -22
  141. package/dist/types/src/utils/theme-to-css.d.ts +0 -171
@@ -1,875 +0,0 @@
1
- <template>
2
- <div>
3
- <div id="modal" :class="modalClass">
4
- <div>
5
- <h3>Quick Tip</h3>
6
- <p>
7
- Press the black button to print. <br />
8
- Red means ready, green means printing and temporarily disabled.
9
- </p>
10
- <button id="okay-button" @click="handleOkayClick">Okay</button>
11
- </div>
12
- </div>
13
-
14
- <div class="printer">
15
- <div>
16
- <p>Zee Printer</p>
17
- <button id="print-button" @click="handlePrintClick">
18
- <div id="print-icon" :class="printIconClass">
19
- <div><div></div></div>
20
- <div></div>
21
- </div>
22
- <div id="print-indicator" :class="printIndicatorClass"></div>
23
- </button>
24
- </div>
25
- <div></div>
26
- <div>
27
- <div id="receipts-wrapper" ref="receiptsWrapperRef">
28
- <div id="receipt-wrapper" ref="receiptWrapperRef">
29
- <div id="receipt-container" :class="{ print: hasPrinted }">
30
- <div class="receipt">
31
- <div class="receipt-header">
32
- <div>
33
- <p>Payment Successful</p>
34
- <p>
35
- <span>11 May 2024</span>
36
- <span>08:30 PM</span>
37
- </p>
38
- </div>
39
- <div></div>
40
- </div>
41
- <div class="receipt-body">
42
- <div>
43
- <div>
44
- <p>1x Jollof Rice & Turkey</p>
45
- <p><span>₦</span>3,500.00</p>
46
- </div>
47
- <div>
48
- <p>1x Zobo Drink</p>
49
- <p><span>₦</span>800.00</p>
50
- </div>
51
- <div>
52
- <p>1x Small Chops Pack</p>
53
- <p><span>₦</span>2,500.00</p>
54
- </div>
55
- </div>
56
- <div>
57
- <div>
58
- <p>Subtotal</p>
59
- <p><span>₦</span>6,800.00</p>
60
- </div>
61
- <div>
62
- <p>VAT (9%)</p>
63
- <p><span>₦</span>612.00</p>
64
- </div>
65
- <div>
66
- <p>Service Fee</p>
67
- <p><span>₦</span>2,500.00</p>
68
- </div>
69
- </div>
70
- </div>
71
- <div class="receipt-footer">
72
- <div>
73
- <p>TOTAL</p>
74
- <p><span>₦</span>7,450.00</p>
75
- </div>
76
- <div>
77
- <div class="emoji">
78
- <div>
79
- <span>
80
- <span><span></span></span>
81
- <span><span></span></span>
82
- </span>
83
- <span><span></span></span>
84
- </div>
85
- </div>
86
- <span>THANK YOU</span>
87
- </div>
88
- </div>
89
- </div>
90
- <div class="cutout">
91
- <div><div></div></div>
92
- </div>
93
- </div>
94
- </div>
95
- </div>
96
- </div>
97
- </div>
98
- </div>
99
- </template>
100
-
101
- <script setup>
102
- import { ref, computed, onMounted } from 'vue'
103
-
104
- const modalClass = ref('fade-in-animation')
105
- const isPrinting = ref(false)
106
- const hasPrinted = ref(false)
107
- const indicatorState = ref('inactive')
108
-
109
- const receiptsWrapperRef = ref(null)
110
- const receiptWrapperRef = ref(null)
111
-
112
- const printerSound = new Audio('./printer.mp3')
113
- printerSound.currentTime = 0
114
-
115
- const printIndicatorClass = computed(() => `${indicatorState.value}-background`)
116
- const printIconClass = computed(() => `${indicatorState.value}-icon`)
117
-
118
- const setPrintIndicator = (state) => {
119
- indicatorState.value = state
120
- }
121
-
122
- const handleOkayClick = () => {
123
- modalClass.value = 'fade-out-animation'
124
- }
125
-
126
- const handlePrintClick = () => {
127
- if (isPrinting.value) return
128
-
129
- isPrinting.value = true
130
-
131
- let newReceipt = null
132
-
133
- printerSound.play()
134
-
135
- setPrintIndicator('active')
136
-
137
- if (hasPrinted.value) {
138
- newReceipt = receiptWrapperRef.value.cloneNode(true)
139
- receiptsWrapperRef.value.appendChild(newReceipt)
140
- } else {
141
- hasPrinted.value = true
142
- }
143
-
144
- setTimeout(() => {
145
- isPrinting.value = false
146
- printerSound.pause()
147
- printerSound.currentTime = 0
148
-
149
- if (newReceipt) {
150
- newReceipt.classList.add('fade-out')
151
-
152
- setTimeout(() => {
153
- newReceipt.remove()
154
- }, 5000)
155
- }
156
-
157
- setPrintIndicator('inactive')
158
- }, 6500)
159
- }
160
-
161
- onMounted(() => {
162
- setPrintIndicator('inactive')
163
- })
164
- </script>
165
-
166
- <style>
167
- @import url("https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&family=Pacifico&display=swap");
168
-
169
- :root {
170
- --color-white: #fff;
171
- --color-black: #000;
172
- --color-red: #ff4444;
173
- --color-brown: #f0ad22;
174
- --color-green: #4dd278;
175
- --color-lemon: #1bd218;
176
- --color-gold-1: #fbe300;
177
- --color-gold-2: #eccd00;
178
- --color-gold-3: #b29300;
179
- --color-gray-1: #f6f6f6;
180
- --color-gray-2: #efefef;
181
- --color-gray-3: #eaeaea;
182
- --color-gray-4: #e8e8e8;
183
- --color-gray-5: #e9e9e9;
184
- --color-gray-6: #e6e2e3;
185
- --color-gray-7: #d7d7d7;
186
- --color-gray-8: #cccccc;
187
- --color-gray-9: #c5c5c5;
188
- --color-gray-10: #bcbcbc;
189
- --color-gray-11: #a1a1a1;
190
- --color-gray-12: #8d8e92;
191
- --color-gray-13: #e1e1e14d;
192
- --color-gray-14: #787878cc;
193
- --color-gray-15: #666669;
194
- --color-gray-16: #3838384d;
195
- --color-gray-17: #0000001a;
196
- --color-gray-18: #000000cc;
197
- --color-gray-20: #1a1a1a;
198
- }
199
-
200
- * {
201
- margin: 0;
202
- padding: 0;
203
- box-sizing: border-box;
204
- }
205
-
206
- html,
207
- body {
208
- height: 100%;
209
- }
210
-
211
- html {
212
- font-size: max(calc(16 * min(100vw / 600, 100vh / 842)), 0rem);
213
- }
214
-
215
- body {
216
- height: 100%;
217
- display: flex;
218
- overflow: hidden;
219
- position: relative;
220
- align-items: center;
221
- justify-content: center;
222
- background-color: var(--color-gray-5);
223
- }
224
-
225
- body::-webkit-scrollbar {
226
- display: none;
227
- }
228
-
229
- p {
230
- margin-bottom: 0 !important;
231
- }
232
-
233
- #modal {
234
- top: 0;
235
- left: 0;
236
- width: 100%;
237
- height: 100%;
238
- z-index: 100;
239
- padding: 20px;
240
- display: flex;
241
- position: fixed;
242
- visibility: hidden;
243
- align-items: center;
244
- flex-direction: column;
245
- justify-content: center;
246
- backdrop-filter: blur(5px);
247
- -webkit-backdrop-filter: blur(5px);
248
- background-color: var(--color-gray-16);
249
- }
250
-
251
- #modal > div {
252
- gap: 25px;
253
- display: flex;
254
- position: relative;
255
- align-items: center;
256
- border-radius: 10px;
257
- flex-direction: column;
258
- justify-content: center;
259
- font-family: "Geist Mono";
260
- }
261
-
262
- #modal > div > h3 {
263
- font-size: 24px;
264
- line-height: 20px;
265
- color: var(--color-black);
266
- }
267
-
268
- #modal > div > p {
269
- font-size: 16px;
270
- line-height: 30px;
271
- text-align: center;
272
- color: var(--color-black);
273
- }
274
-
275
- #okay-button {
276
- border: none;
277
- cursor: pointer;
278
- font-size: 16px;
279
- font-weight: 600;
280
- margin-top: 5px;
281
- padding: 15px 30px;
282
- border-radius: 5px;
283
- transition: 0.3s ease;
284
- color: var(--color-white);
285
- background-color: var(--color-black);
286
- }
287
-
288
- #okay-button:hover {
289
- background-color: #000000cc;
290
- }
291
-
292
- .fade-in-animation {
293
- animation: fade-in 1s ease 1s forwards;
294
- }
295
-
296
- .fade-out-animation {
297
- animation: fade-out 1s ease forwards;
298
- }
299
-
300
- .printer {
301
- display: flex;
302
- height: 44.25rem;
303
- width: 32.1875rem;
304
- position: relative;
305
- align-items: center;
306
- flex-direction: column;
307
- }
308
-
309
- .printer::after {
310
- content: "";
311
- z-index: -2;
312
- top: -0.625rem;
313
- left: 0.625rem;
314
- height: 11.25rem;
315
- width: 33.4375rem;
316
- position: absolute;
317
- filter: blur(1.5rem);
318
- border-radius: 3.75rem;
319
- background: var(--color-gray-7);
320
- background: linear-gradient(
321
- 180deg,
322
- var(--color-gray-7) 0%,
323
- var(--color-gray-14) 70%
324
- );
325
- }
326
-
327
- .printer > div:first-child {
328
- z-index: 20;
329
- width: 100%;
330
- display: flex;
331
- align-items: end;
332
- height: 7.4375rem;
333
- position: relative;
334
- border-radius: 1.0625rem;
335
- justify-content: space-between;
336
- background: var(--color-gray-7);
337
- padding: 0.625rem 0.7rem 0.7rem 1rem;
338
- background-color: var(--color-gray-7);
339
- box-shadow: 0rem 0.125rem 0.03125rem var(--color-gray-11);
340
- background: linear-gradient(
341
- 180deg,
342
- var(--color-gray-7) 0%,
343
- var(--color-gray-1) 25%,
344
- var(--color-gray-7) 45%
345
- );
346
- }
347
-
348
- .printer > div:first-child > p {
349
- font-size: 1.25rem;
350
- font-family: "Pacifico";
351
- margin-bottom: -0.09375rem;
352
- color: var(--color-gray-3);
353
- text-shadow: -0.07rem -0.07rem 0.1875rem var(--color-gray-13),
354
- 0.07rem 0.07rem 0.1875rem var(--color-gray-16);
355
- }
356
-
357
- #print-button {
358
- outline: 0;
359
- border: none;
360
- display: flex;
361
- gap: 0.125rem;
362
- cursor: pointer;
363
- height: 1.625rem;
364
- overflow: hidden;
365
- font-weight: 500;
366
- position: relative;
367
- align-items: center;
368
- justify-content: center;
369
- border-radius: 1.5625rem;
370
- padding: 0 0.5625rem 0 0.5625rem;
371
- border: 0.07rem solid var(--color-gray-4);
372
- background: linear-gradient(145deg, var(--color-gray-20), var(--color-black));
373
- box-shadow: 0.375rem 0.375rem 0.75rem var(--color-gray-9),
374
- -0.375rem -0.375rem 0.75rem var(--color-white);
375
- }
376
-
377
- #print-icon {
378
- display: flex;
379
- height: 0.875rem;
380
- width: 0.9375rem;
381
- position: relative;
382
- align-items: center;
383
- justify-content: center;
384
- }
385
-
386
- #print-icon::before {
387
- left: 50%;
388
- z-index: 3;
389
- content: "";
390
- top: -0.15625rem;
391
- width: 0.15625rem;
392
- height: 1.3125rem;
393
- position: absolute;
394
- border-radius: 0.03125rem;
395
- animation: grow 0.5s ease forwards;
396
- transform: rotate(45deg) translateX(-50%);
397
- }
398
-
399
- #print-icon > div:first-child {
400
- height: 100%;
401
- width: 0.625rem;
402
- position: absolute;
403
- border-radius: 0.03125rem;
404
- transition: background-color 0.5s ease, border 0.5s ease;
405
- }
406
-
407
- #print-icon > div:first-child div {
408
- bottom: 0;
409
- z-index: 2;
410
- width: 100%;
411
- display: flex;
412
- height: 0.25rem;
413
- position: absolute;
414
- justify-content: center;
415
- background-color: var(--color-black);
416
- }
417
-
418
- #print-icon > div:first-child div::before {
419
- width: 70%;
420
- z-index: 2;
421
- content: "";
422
- height: 0.07rem;
423
- position: absolute;
424
- bottom: 0.09375rem;
425
- border-radius: 0.3125rem;
426
- transition: background-color 0.5s ease, border 0.5s ease;
427
- }
428
-
429
- #print-icon > div:last-child {
430
- width: 100%;
431
- position: absolute;
432
- height: 0.40625rem;
433
- border-radius: 0.07rem;
434
- transition: background-color 0.5s ease, border 0.5s ease;
435
- }
436
-
437
- #print-icon > div:last-child::after {
438
- content: "";
439
- top: 0.09375rem;
440
- width: 0.1875rem;
441
- right: 0.15625rem;
442
- position: absolute;
443
- height: 0.09375rem;
444
- border-radius: 0.07rem;
445
- background-color: var(--color-black);
446
- }
447
-
448
- .active-icon#print-icon::before {
449
- display: block;
450
- }
451
-
452
- .active-icon#print-icon > div:first-child {
453
- border: 0.07rem var(--color-lemon) solid;
454
- }
455
-
456
- .active-icon#print-icon > div:first-child div::before,
457
- .active-icon#print-icon > div:last-child {
458
- background-color: var(--color-lemon);
459
- }
460
-
461
- .active-icon#print-icon::before {
462
- animation: grow 0.5s ease forwards;
463
- background: linear-gradient(
464
- 90deg,
465
- var(--color-black) 50%,
466
- var(--color-lemon) 50%
467
- );
468
- }
469
-
470
- .inactive-icon#print-icon::before {
471
- animation: shrink 0.5s ease forwards;
472
- background: linear-gradient(
473
- 90deg,
474
- var(--color-black) 50%,
475
- var(--color-red) 50%
476
- );
477
- }
478
-
479
- .inactive-icon#print-icon > div:first-child {
480
- border: 0.07rem var(--color-red) solid;
481
- }
482
-
483
- .inactive-icon#print-icon > div:first-child div::before,
484
- .inactive-icon#print-icon > div:last-child {
485
- background-color: var(--color-red);
486
- }
487
-
488
- #print-indicator {
489
- width: 0.5rem;
490
- height: 0.5rem;
491
- display: block;
492
- border-radius: 50%;
493
- margin-left: 0.3125rem;
494
- animation: blink 1s infinite;
495
- transition: background-color 0.5s ease, border 0.5s ease;
496
- }
497
-
498
- .active-background {
499
- background: var(--color-lemon);
500
- }
501
-
502
- .inactive-background {
503
- background: var(--color-red);
504
- }
505
-
506
- .printer > div:nth-child(2) {
507
- z-index: -1;
508
- display: flex;
509
- height: 1.5rem;
510
- width: 32.125rem;
511
- position: relative;
512
- margin-top: -0.8125rem;
513
- justify-content: center;
514
- background-color: var(--color-gray-10);
515
- clip-path: polygon(0 0, 100% 0, 99.6% 100%, 0.4% 100%);
516
- }
517
-
518
- .printer > div:last-child {
519
- display: flex;
520
- height: 0.75rem;
521
- width: 31.875rem;
522
- position: relative;
523
- margin-top: -0.07rem;
524
- justify-content: center;
525
- border-radius: 0 0 0.75rem 0.75rem;
526
- background-color: var(--color-gray-10);
527
- }
528
-
529
- .printer > div:last-child > div {
530
- width: 30.125rem;
531
- height: 0.6875rem;
532
- position: absolute;
533
- bottom: 0.34375rem;
534
- background: var(--color-black);
535
- box-shadow: 0rem 0rem 0.3125rem 0.25rem var(--color-gray-8);
536
- border-radius: 0.375rem 0.375rem 0.625rem 0.625rem / 0.375rem 0.375rem
537
- 0.9375rem 0.9375rem;
538
- }
539
-
540
- #receipt-wrapper {
541
- width: 100%;
542
- display: flex;
543
- top: 0.25rem;
544
- overflow: hidden;
545
- position: absolute;
546
- justify-content: center;
547
- padding-bottom: 1.25rem;
548
- transition: opacity 5s linear;
549
- }
550
-
551
- .fade-out {
552
- opacity: 0;
553
- }
554
-
555
- #receipt-container {
556
- width: 91%;
557
- transform: translateY(-100%);
558
- }
559
-
560
- .print {
561
- animation: print 6.5s linear forwards;
562
- }
563
-
564
- .receipt {
565
- width: 100%;
566
- font-size: 1rem;
567
- font-weight: 450;
568
- position: relative;
569
- padding: 0.9375rem 0 0;
570
- margin-bottom: 1.875rem;
571
- font-family: "Geist Mono";
572
- background-color: var(--color-white);
573
- filter: drop-shadow(0 0.25rem 0.3125rem var(--color-gray-17));
574
- }
575
-
576
- .receipt-header {
577
- display: flex;
578
- align-items: center;
579
- padding: 1.375rem 1.375rem;
580
- justify-content: space-between;
581
- border-bottom: 0.07rem solid var(--color-gray-2);
582
- }
583
-
584
- .receipt-header > div:first-child {
585
- display: flex;
586
- gap: 0.4375rem;
587
- flex-direction: column;
588
- }
589
-
590
- .receipt-header > div:first-child > p:first-child {
591
- font-weight: 530;
592
- font-size: 1.1875rem;
593
- letter-spacing: -0.009375rem;
594
- }
595
-
596
- .receipt-header > div:first-child > p:last-child {
597
- gap: 1.125rem;
598
- display: flex;
599
- color: var(--color-gray-12);
600
- }
601
-
602
- .receipt-header > div:last-child {
603
- width: 3.25rem;
604
- height: 3.25rem;
605
- border-radius: 50%;
606
- background-color: var(--color-green);
607
- clip-path: polygon(
608
- 0 0,
609
- 0 100%,
610
- 50% 100%,
611
- 38.38% 80.76%,
612
- 15.3% 55.76%,
613
- 26% 44.23%,
614
- 38.38% 56.5%,
615
- 71.07% 21.15%,
616
- 82.61% 32.69%,
617
- 38.38% 80.76%,
618
- 50% 100%,
619
- 3.4375rem 100%,
620
- 100% 0
621
- );
622
- }
623
-
624
- .receipt-body > div {
625
- gap: 1.125rem;
626
- display: flex;
627
- flex-direction: column;
628
- padding: 1.375rem 1.375rem;
629
- color: var(--color-gray-15);
630
- justify-content: space-between;
631
- border-bottom: 0.07rem solid var(--color-gray-2);
632
- }
633
-
634
- .receipt-footer {
635
- gap: 3.75rem;
636
- display: flex;
637
- flex-direction: column;
638
- justify-content: space-between;
639
- padding: 1.375rem 1.375rem 0.9375rem;
640
- }
641
-
642
- .receipt-body > div > div,
643
- .receipt-footer > div {
644
- display: flex;
645
- align-items: center;
646
- justify-content: space-between;
647
- }
648
-
649
- .receipt-body > div > div > p:last-child > span,
650
- .receipt-footer > div > p:last-child > span {
651
- font-weight: 400;
652
- }
653
-
654
- .receipt-footer > div:last-child {
655
- margin: auto;
656
- display: flex;
657
- gap: 0.625rem;
658
- align-items: center;
659
- font-size: 1.125rem;
660
- }
661
-
662
- .receipt-footer > div > p:last-child {
663
- font-weight: 600;
664
- font-size: 1.1875rem;
665
- }
666
-
667
- .emoji {
668
- width: 1.8125rem;
669
- height: 2.03125rem;
670
- position: relative;
671
- }
672
-
673
- .emoji::after {
674
- bottom: 0;
675
- left: 50%;
676
- width: 80%;
677
- content: "";
678
- height: 0.125rem;
679
- position: absolute;
680
- border-radius: 50%;
681
- filter: blur(0.01875rem);
682
- transform: translateX(-50%);
683
- background-color: var(--color-gray-6);
684
- }
685
-
686
- .emoji > div {
687
- width: 100%;
688
- display: block;
689
- overflow: hidden;
690
- height: 1.8125rem;
691
- position: relative;
692
- border-radius: 50%;
693
- clip-path: circle();
694
- background-color: var(--color-gold-2);
695
- border: 0.07rem var(--color-gold-3) solid;
696
- }
697
-
698
- .emoji > div::before {
699
- content: "";
700
- width: 100%;
701
- height: 100%;
702
- bottom: 0.125rem;
703
- position: absolute;
704
- border-radius: 50%;
705
- background-color: var(--color-gold-1);
706
- }
707
-
708
- .emoji > div > span:first-child {
709
- top: 40%;
710
- left: 50%;
711
- width: 100%;
712
- display: flex;
713
- height: 0.25rem;
714
- position: absolute;
715
- padding: 0 0.1875rem;
716
- transform: translateX(-50%);
717
- justify-content: space-between;
718
- }
719
-
720
- .emoji > div > span:first-child > span {
721
- height: 0.25rem;
722
- width: 0.21875rem;
723
- position: relative;
724
- }
725
-
726
- .emoji > div > span:first-child > span::after {
727
- left: 50%;
728
- content: "";
729
- height: 0.125rem;
730
- width: 0.21875rem;
731
- position: absolute;
732
- bottom: -0.1875rem;
733
- border-radius: 50%;
734
- filter: blur(0.03125rem);
735
- transform: translateX(-50%);
736
- background-color: var(--color-brown);
737
- }
738
-
739
- .emoji > div > span:first-child > span > span {
740
- width: 100%;
741
- height: 100%;
742
- display: block;
743
- border-radius: 50%;
744
- border: 0.07rem var(--color-gold-3) solid;
745
- clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0% 100%);
746
- }
747
-
748
- .emoji > div > span:last-child {
749
- left: 50%;
750
- width: 0.8125rem;
751
- height: 0.8125rem;
752
- bottom: 0.40625rem;
753
- position: absolute;
754
- transform: translateX(-50%);
755
- }
756
-
757
- .emoji > div > span:last-child::after {
758
- left: 50%;
759
- content: "";
760
- width: 0.5rem;
761
- top: -0.375rem;
762
- height: 0.125rem;
763
- position: absolute;
764
- border-radius: 50%;
765
- filter: blur(0.07rem);
766
- transform: translateX(-50%);
767
- background-color: var(--color-white);
768
- }
769
-
770
- .emoji > div > span:last-child > span {
771
- left: 50%;
772
- width: 95%;
773
- height: 100%;
774
- border-radius: 50%;
775
- position: absolute;
776
- transform: translateX(-50%);
777
- border: 0.07rem var(--color-gold-3) solid;
778
- clip-path: polygon(0 85%, 100% 85%, 100% 100%, 0% 100%);
779
- }
780
-
781
- .cutout {
782
- position: relative;
783
- }
784
-
785
- .cutout > div {
786
- width: 100%;
787
- position: relative;
788
- margin-top: -0.07rem;
789
- filter: drop-shadow(0 0.75rem 0.3125rem var(--color-gray-17));
790
- }
791
-
792
- .cutout > div > div {
793
- width: 100%;
794
- height: 2.5rem;
795
- overflow-x: hidden;
796
- transform: translateY(-1.875rem);
797
- background-color: var(--color-white);
798
- mask-image: radial-gradient(
799
- circle at 1.03125rem 2.1875rem,
800
- transparent 0.875rem,
801
- var(--color-black) 0.875rem
802
- );
803
- mask-repeat: repeat-x;
804
- mask-position: -0.78125rem 0;
805
- mask-size: 2.0625rem 2.1875rem;
806
- -webkit-mask-image: radial-gradient(
807
- circle at 1.03125rem 2.1875rem,
808
- transparent 0.875rem,
809
- var(--color-black) 0.875rem
810
- );
811
- -webkit-mask-repeat: repeat-x;
812
- -webkit-mask-position: -0.78125rem 0;
813
- -webkit-mask-size: 2.0625rem 2.1875rem;
814
- }
815
-
816
- @keyframes fade-in {
817
- from {
818
- opacity: 0;
819
- visibility: hidden;
820
- }
821
- to {
822
- opacity: 1;
823
- visibility: visible;
824
- }
825
- }
826
-
827
- @keyframes fade-out {
828
- from {
829
- opacity: 1;
830
- visibility: visible;
831
- }
832
- to {
833
- opacity: 0;
834
- visibility: hidden;
835
- }
836
- }
837
-
838
- @keyframes blink {
839
- 0%,
840
- 50% {
841
- opacity: 1;
842
- }
843
- 51%,
844
- 100% {
845
- opacity: 0.4;
846
- }
847
- }
848
-
849
- @keyframes print {
850
- 0% {
851
- transform: translateY(-100%);
852
- }
853
- 100% {
854
- transform: translateY(0);
855
- }
856
- }
857
-
858
- @keyframes shrink {
859
- 0% {
860
- clip-path: polygon(0 100%, 100% 100%, 100% 0, 0 0);
861
- }
862
- 100% {
863
- clip-path: polygon(0 100%, 100% 100%, 100% 100%, 0 100%);
864
- }
865
- }
866
-
867
- @keyframes grow {
868
- 0% {
869
- clip-path: polygon(0 100%, 100% 100%, 100% 100%, 0 100%);
870
- }
871
- 100% {
872
- clip-path: polygon(0 100%, 100% 100%, 100% 0, 0 0);
873
- }
874
- }
875
- </style>