firefly-compiler 0.5.39 → 0.5.41

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 (129) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +158 -157
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +275 -275
  6. package/compiler/Compiler.ff +234 -234
  7. package/compiler/Dependencies.ff +186 -186
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/JsEmitter.ff +1437 -1437
  10. package/compiler/LspHook.ff +202 -202
  11. package/compiler/ModuleCache.ff +178 -178
  12. package/compiler/Workspace.ff +88 -88
  13. package/core/.firefly/include/package.json +5 -5
  14. package/core/.firefly/package.ff +2 -2
  15. package/core/Any.ff +25 -25
  16. package/core/Array.ff +298 -298
  17. package/core/Atomic.ff +63 -63
  18. package/core/Box.ff +7 -7
  19. package/core/BrowserSystem.ff +40 -40
  20. package/core/BuildSystem.ff +156 -156
  21. package/core/Crypto.ff +94 -94
  22. package/core/Equal.ff +41 -41
  23. package/core/Error.ff +25 -25
  24. package/core/HttpClient.ff +142 -142
  25. package/core/Instant.ff +24 -24
  26. package/core/Js.ff +305 -305
  27. package/core/JsSystem.ff +135 -135
  28. package/core/Json.ff +423 -423
  29. package/core/List.ff +482 -482
  30. package/core/Lock.ff +108 -108
  31. package/core/NodeSystem.ff +198 -198
  32. package/core/Ordering.ff +160 -160
  33. package/core/Path.ff +377 -378
  34. package/core/Queue.ff +90 -90
  35. package/core/Random.ff +140 -140
  36. package/core/RbMap.ff +216 -216
  37. package/core/Show.ff +44 -44
  38. package/core/SourceLocation.ff +68 -68
  39. package/core/Task.ff +165 -165
  40. package/experimental/benchmarks/ListGrab.ff +23 -23
  41. package/experimental/benchmarks/ListGrab.java +55 -55
  42. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  43. package/experimental/benchmarks/Pyrotek45.java +64 -64
  44. package/experimental/bidirectional/Bidi.ff +88 -88
  45. package/experimental/lines/Main.ff +40 -40
  46. package/experimental/random/Index.ff +53 -53
  47. package/experimental/random/Process.ff +120 -120
  48. package/experimental/random/RunLength.ff +65 -65
  49. package/experimental/random/Scrape.ff +51 -51
  50. package/experimental/random/Symbols.ff +73 -73
  51. package/experimental/random/Tensor.ff +52 -52
  52. package/experimental/random/Units.ff +36 -36
  53. package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
  54. package/experimental/s3/S3TestPut.ff +16 -16
  55. package/experimental/tests/TestJson.ff +26 -26
  56. package/firefly.sh +0 -0
  57. package/fireflysite/.firefly/package.ff +4 -4
  58. package/fireflysite/CommunityOverview.ff +20 -20
  59. package/fireflysite/CountingButtonDemo.ff +58 -58
  60. package/fireflysite/DocumentParser.ff +325 -325
  61. package/fireflysite/ExamplesOverview.ff +40 -40
  62. package/fireflysite/FrontPage.ff +344 -344
  63. package/fireflysite/GettingStarted.ff +45 -45
  64. package/fireflysite/Guide.ff +456 -456
  65. package/fireflysite/Main.ff +163 -163
  66. package/fireflysite/MatchingPasswordsDemo.ff +82 -82
  67. package/fireflysite/PackagesOverview.ff +49 -49
  68. package/fireflysite/PostgresqlDemo.ff +34 -34
  69. package/fireflysite/ReferenceAll.ff +18 -18
  70. package/fireflysite/ReferenceIntroduction.ff +11 -11
  71. package/fireflysite/Styles.ff +567 -567
  72. package/fireflysite/Test.ff +121 -121
  73. package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
  74. package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
  75. package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
  76. package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
  77. package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -235
  78. package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
  79. package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
  80. package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
  81. package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
  82. package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
  83. package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
  84. package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
  85. package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
  86. package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
  87. package/lsp/.firefly/package.ff +1 -1
  88. package/lsp/CompletionHandler.ff +827 -827
  89. package/lsp/Handler.ff +714 -714
  90. package/lsp/HoverHandler.ff +79 -79
  91. package/lsp/LanguageServer.ff +272 -272
  92. package/lsp/SignatureHelpHandler.ff +55 -55
  93. package/lsp/SymbolHandler.ff +181 -181
  94. package/lsp/TestReferences.ff +17 -17
  95. package/lsp/TestReferencesCase.ff +7 -7
  96. package/lsp/stderr.txt +1 -1
  97. package/lsp/stdout.txt +34 -34
  98. package/lux/.firefly/package.ff +1 -1
  99. package/lux/Css.ff +648 -648
  100. package/lux/CssTest.ff +48 -48
  101. package/lux/Lux.ff +608 -608
  102. package/lux/LuxEvent.ff +79 -79
  103. package/lux/Main.ff +123 -123
  104. package/lux/Main2.ff +143 -143
  105. package/lux/TestDry.ff +28 -28
  106. package/output/js/ff/compiler/Builder.mjs +36 -36
  107. package/output/js/ff/core/Path.mjs +0 -2
  108. package/package.json +1 -1
  109. package/rpc/.firefly/package.ff +1 -1
  110. package/rpc/Rpc.ff +70 -70
  111. package/s3/.firefly/package.ff +1 -1
  112. package/s3/S3.ff +92 -92
  113. package/vscode/LICENSE.txt +21 -21
  114. package/vscode/Prepublish.ff +15 -15
  115. package/vscode/README.md +16 -16
  116. package/vscode/client/package-lock.json +544 -544
  117. package/vscode/client/package.json +22 -22
  118. package/vscode/client/src/extension.ts +104 -104
  119. package/vscode/icons/firefly-icon.svg +10 -10
  120. package/vscode/language-configuration.json +61 -61
  121. package/vscode/package-lock.json +3623 -3623
  122. package/vscode/package.json +1 -1
  123. package/vscode/snippets.json +241 -241
  124. package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
  125. package/webserver/.firefly/include/package.json +5 -5
  126. package/webserver/.firefly/package.ff +2 -2
  127. package/webserver/WebServer.ff +647 -647
  128. package/websocket/.firefly/package.ff +1 -1
  129. package/websocket/WebSocket.ff +100 -100
@@ -1,567 +1,567 @@
1
- import Css from ff:lux
2
-
3
- mobileMediaQuery: String = "@media only screen and (max-width: 840px)"
4
- mobileOrTabletMediaQuery: String = "@media only screen and (max-width: 1140px)"
5
-
6
- pageCss: CssClass = CssClass(
7
- [
8
- Css.display("flex")
9
- Css.flexDirection("column")
10
- Css.minHeight("100vh")
11
- Css.fontFamily("'Firefly Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif")
12
- Css.textRendering("optimizeLegibility")
13
- ]
14
- [
15
- CssNest("*:focus-visible", [
16
- Css.outline("2px solid #ecc45e")
17
- Css.outlineOffset("2px")
18
- ], [])
19
- ]
20
- []
21
- )
22
-
23
- whiteLinkCss: CssClass = CssClass(
24
- [
25
- Css.color("#000000")
26
- Css.textDecoration("none")
27
- Css.fontWeight("600")
28
- ]
29
- [
30
- CssNest("&:hover", [Css.textDecoration("underline")], [])
31
- CssNest("&[aria-current='page']", [Css.color("#000000")], [])
32
- ]
33
- []
34
- )
35
-
36
- greenLinkCss: CssClass = CssClass(
37
- [
38
- Css.color("#4ec9b0")
39
- Css.textDecoration("none")
40
- ]
41
- [
42
- CssNest("&:hover", [Css.textDecoration("underline")], [])
43
- ]
44
- []
45
- )
46
-
47
- searchInputCss: CssClass = CssClass(
48
- [
49
- Css.appearance("none")
50
- Css.boxSizing("border-box")
51
- Css.marginLeft("20px")
52
- Css.marginRight("25px")
53
- Css.width("calc(100% - 20px - 25px)")
54
- Css.display("flex")
55
- Css.border("none")
56
- Css.borderBottom("2px solid #000000")
57
- Css.backgroundColor("#ffffff50")
58
- Css.color("#000000")
59
- Css.height("34px")
60
- Css.fontSize("16px")
61
- Css.borderRadius("0")
62
- Css.paddingLeft("5px")
63
- Css.paddingRight("5px")
64
- Css.paddingTop("0")
65
- Css.paddingBottom("0")
66
- Css.marginBottom("20px")
67
- ]
68
- [
69
- CssNest("&::placeholder", [
70
- Css.color("#000000")
71
- Css.opacity("unset")
72
- Css.fontSize("16px")
73
- ], [])
74
- CssNest("&:focus::placeholder", [
75
- Css.opacity("0")
76
- ], [])
77
- ]
78
- []
79
- )
80
-
81
- guideCss: CssClass = CssClass(
82
- [
83
- Css.display("flex")
84
- Css.minHeight("100vh")
85
- ]
86
- []
87
- []
88
- )
89
-
90
- guideTopbarCss: CssClass = CssClass(
91
- [
92
- Css.display("none")
93
- Css.justifyContent("space-between")
94
- Css.alignItems("center")
95
- Css.backgroundColor("#ecc45e")
96
- Css.color("#000000")
97
- Css.position("fixed")
98
- Css.top("0")
99
- Css.left("0")
100
- Css.right("0")
101
- Css.height("76px")
102
- ]
103
- [
104
- CssNest(mobileOrTabletMediaQuery, [
105
- Css.display("flex")
106
- ], [])
107
- ]
108
- []
109
- )
110
-
111
- guideTopbarLogoCss: CssClass = CssClass(
112
- [
113
- Css.display("flex")
114
- Css.gap("20px")
115
- Css.alignItems("center")
116
- Css.justifyContent("center")
117
- Css.fontSize("25px")
118
- Css.letterSpacing("5px")
119
- Css.textTransform("uppercase")
120
- Css.color("inherit")
121
- Css.textDecoration("none")
122
- Css.height("70px")
123
- Css.paddingLeft("20px")
124
- ]
125
- [
126
- CssNest("&>img", [Css.width("70px")], [])
127
- ]
128
- []
129
- )
130
-
131
- guideTopbarButtonCss: CssClass = CssClass(
132
- [
133
- Css.display("none")
134
- Css.appearance("none")
135
- Css.border("none")
136
- Css.outline("none")
137
- Css.background("""url('data:image/svg+xml,<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(%23clip0_788_122)"><rect x="4" y="9" width="25" height="2" rx="1" fill="%23000000"/><rect x="4" y="17" width="25" height="2" rx="1" fill="%23000000"/><rect x="4" y="25" width="25" height="2" rx="1" fill="%23000000"/></g><defs><clipPath id="clip0_788_122"><rect width="50" height="50" fill="white"/></clipPath></defs></svg>') no-repeat center""")
138
- Css.backgroundSize("60px 60px")
139
- Css.backgroundPosition("20px 16px")
140
- Css.fontSize("20px")
141
- Css.cursor("pointer")
142
- Css.webkitTapHighlightColor("transparent")
143
- Css.padding("0")
144
- Css.margin("0")
145
- Css.height("76px")
146
- Css.width("76px")
147
- Css.marginLeft("auto")
148
- ]
149
- [
150
- CssNest(mobileOrTabletMediaQuery, [
151
- Css.display("block")
152
- ], [])
153
- ]
154
- []
155
- )
156
-
157
- guideSidebarButtonCss: CssClass = CssClass(
158
- [
159
- Css.position("fixed")
160
- Css.bottom("-68px")
161
- Css.right("-65px")
162
- Css.width("70px")
163
- Css.height("70px")
164
- Css.padding("0")
165
- Css.boxSizing("border-box")
166
- Css.background("""url('data:image/svg+xml,<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(%23clip0_788_122)"><rect x="4" y="9" width="30" height="3" rx="1" fill="%23ecc45e"/><rect x="4" y="17" width="21" height="3" rx="1" fill="%23ecc45e"/><rect x="4" y="25" width="13" height="3" rx="1" fill="%23ecc45e"/></g><defs><clipPath id="clip0_788_122"><rect width="50" height="50" fill="white"/></clipPath></defs></svg>') no-repeat center""")
167
- Css.backgroundSize("70px 70px")
168
- Css.appearance("none")
169
- Css.border("none")
170
- Css.outline("none")
171
- Css.transformOrigin("top left")
172
- Css.transform("rotate(180deg) scale(0, 0)")
173
- Css.transition("100ms transform")
174
- ]
175
- [
176
- CssNest(mobileOrTabletMediaQuery, [
177
- Css.display("block")
178
- Css.transform("rotate(180deg) scale(1, 1)")
179
- ], [])
180
- ]
181
- []
182
- )
183
-
184
- guideSidebarButtonOpenCss: CssClass = CssClass(
185
- []
186
- [
187
- CssNest(mobileOrTabletMediaQuery, [
188
- Css.transform("rotate(180deg) scale(0, 1)")
189
- ], [])
190
- ]
191
- []
192
- )
193
-
194
- guideSidebarBackdropCss: CssClass = CssClass(
195
- [
196
- Css.display("none")
197
- Css.position("fixed")
198
- Css.top("0")
199
- Css.bottom("0px")
200
- Css.left("0")
201
- Css.right("0px")
202
- Css.backgroundColor("rgba(20, 20, 0, 0.6)")
203
- Css.touchAction("none")
204
- ]
205
- []
206
- []
207
- )
208
-
209
- guideSidebarBackdropOpenCss: CssClass = CssClass(
210
- []
211
- [
212
- CssNest(mobileOrTabletMediaQuery, [
213
- Css.display("block")
214
- ], [])
215
- ]
216
- []
217
- )
218
-
219
- guideSidebarCss: CssClass = CssClass(
220
- [
221
- Css.position("fixed")
222
- Css.top("0")
223
- Css.bottom("0")
224
- Css.left("0")
225
- Css.width("300px")
226
- Css.boxSizing("border-box")
227
- Css.paddingTop("10px")
228
- Css.backgroundColor("#ecc45e")
229
- Css.overflowY("auto")
230
- Css.transition("200ms transform")
231
- Css.scrollbarWidth("thin")
232
- Css.scrollbarColor("#333333 #ecc45e")
233
- ]
234
- [
235
- CssNest(mobileOrTabletMediaQuery, [
236
- Css.order("2")
237
- Css.width("calc(100% - 50px)")
238
- Css.maxWidth("300px")
239
- Css.minHeight("auto")
240
- Css.height("auto")
241
- Css.paddingTop("20px")
242
- Css.paddingBottom("20px")
243
- Css.transform("translateX(-110%)")
244
- Css.outline("1px solid rgba(0, 0, 0, 0.15)")
245
- ], [])
246
- CssNest("& *:focus-visible", [
247
- Css.outline("2px solid #000000")
248
- Css.outlineOffset("2px")
249
- ], [])
250
- ]
251
- []
252
- )
253
-
254
- guideSidebarOpenCss: CssClass = CssClass(
255
- []
256
- [
257
- CssNest(mobileOrTabletMediaQuery, [
258
- Css.transform("translateX(0)")
259
- ], [])
260
- ]
261
- []
262
- )
263
-
264
- guideSidebarLogoCss: CssClass = CssClass(
265
- [
266
- Css.display("flex")
267
- Css.gap("20px")
268
- Css.alignItems("center")
269
- Css.justifyContent("center")
270
- Css.fontSize("30px")
271
- Css.letterSpacing("5px")
272
- Css.textTransform("uppercase")
273
- Css.color("inherit")
274
- Css.textDecoration("none")
275
- Css.height("100px")
276
- ]
277
- [
278
- CssNest("&>img", [Css.width("100px")], [])
279
- CssNest("&>div", [Css.width("145px")], [])
280
- CssNest(mobileOrTabletMediaQuery, [
281
- Css.display("none")
282
- ], [])
283
- ]
284
- []
285
- )
286
-
287
- guideSidebarUl1Css: CssClass = CssClass(
288
- [
289
- Css.display("flex")
290
- Css.flexDirection("column")
291
- Css.gap("35px")
292
- Css.listStyle("none")
293
- Css.margin("0px")
294
- Css.padding("20px")
295
- Css.opacity("0.85")
296
- Css.transition("100ms opacity")
297
- ]
298
- [
299
- CssNest(mobileOrTabletMediaQuery, [
300
- Css.opacity("1.00")
301
- ], [])
302
- CssNest("&:hover", [
303
- Css.opacity("1.00")
304
- ], [])
305
- ]
306
- []
307
- )
308
-
309
- guideSidebarLi1Css: CssClass = CssClass(
310
- [
311
- Css.listStyle("none")
312
- Css.fontSize("17px")
313
- ]
314
- []
315
- []
316
- )
317
-
318
- guideSidebarUl2Css: CssClass = CssClass(
319
- [
320
- Css.display("flex")
321
- Css.flexDirection("column")
322
- Css.gap("15px")
323
- Css.listStyle("none")
324
- Css.margin("0px")
325
- Css.paddingLeft("15px")
326
- Css.paddingTop("20px")
327
- Css.paddingRight("0")
328
- Css.paddingBottom("5px")
329
- Css.fontSize("17px")
330
- ]
331
- []
332
- []
333
- )
334
-
335
- guideSidebarLi2Css: CssClass = CssClass(
336
- [
337
- Css.listStyle("none")
338
- ]
339
- []
340
- []
341
- )
342
-
343
- guideMainCss: CssClass = CssClass(
344
- [
345
- Css.flex("1")
346
- Css.display("flex")
347
- Css.justifyContent("center")
348
- Css.marginLeft("300px")
349
- Css.paddingLeft("20px")
350
- Css.paddingRight("calc(max(20px, 25vw - 300px))")
351
- Css.paddingTop("80px")
352
- Css.paddingBottom("80px")
353
- Css.position("relative")
354
- Css.boxSizing("content-box")
355
- Css.color("#333333")
356
- Css.fontWeight("500")
357
- ]
358
- [
359
- CssNest(mobileOrTabletMediaQuery, [
360
- Css.marginLeft("0")
361
- Css.paddingLeft("20px")
362
- Css.paddingRight("20px")
363
- Css.paddingTop("120px")
364
- Css.paddingBottom("70px")
365
- ], [])
366
- ]
367
- []
368
- )
369
-
370
- guideDocumentCss: CssClass = CssClass(
371
- [
372
- Css.maxWidth("800px")
373
- Css.width("100%")
374
- Css.fontSize("17px")
375
- Css.lineHeight("1.7")
376
- ]
377
- []
378
- []
379
- )
380
-
381
- guideSplitCss: CssClass = CssClass(
382
- [
383
- Css.display("flex")
384
- Css.gap("30px")
385
- Css.justifyContent("space-between")
386
- Css.alignItems("stretch")
387
- Css.marginTop("170px")
388
- Css.marginBottom("170px")
389
- ]
390
- [
391
- CssNest("&>div:first-child", [
392
- Css.width("calc(345px - 15px)")
393
- Css.paddingTop("10px")
394
- Css.paddingBottom("15px")
395
- ], [])
396
- CssNest("&>div:last-child", [
397
- Css.width("calc(455px - 15px)")
398
- ], [])
399
- CssNest("&>div>:first-child", [
400
- Css.marginTop("0")
401
- ], [])
402
- CssNest("&>div>:last-child", [
403
- Css.marginBottom("0")
404
- ], [])
405
- CssNest("&>div>pre", [
406
- Css.overflowX("hidden")
407
- Css.minHeight("100%")
408
- ], [])
409
- CssNest(mobileMediaQuery, [
410
- Css.flexDirection("column")
411
- ], [
412
- CssNest("&>div:first-child", [
413
- Css.width("auto")
414
- ], [])
415
- CssNest("&>div:last-child", [
416
- Css.width("auto")
417
- ], [])
418
- CssNest("&>div>pre", [
419
- Css.overflowX("auto")
420
- ], [])
421
- ])
422
- ]
423
- []
424
- )
425
-
426
- guideSplitHeadingCss: CssClass = CssClass(
427
- [
428
- Css.fontSize("23px")
429
- Css.fontWeight("600")
430
- Css.margin("0")
431
- ]
432
- [
433
- CssNest(mobileMediaQuery, [
434
- Css.fontSize("21px")
435
- ], [])
436
- ]
437
- []
438
- )
439
-
440
- guideH1Css: CssClass = CssClass(
441
- [
442
- Css.fontSize("32px")
443
- Css.fontWeight("600")
444
- Css.marginTop("0px")
445
- ]
446
- [
447
- CssNest(mobileMediaQuery, [
448
- Css.fontSize("26px")
449
- ], [])
450
- ]
451
- []
452
- )
453
-
454
- guideH2Css: CssClass = CssClass(
455
- [
456
- Css.fontSize("28px")
457
- Css.fontWeight("600")
458
- Css.marginTop("70px")
459
- ]
460
- [
461
- CssNest(mobileMediaQuery, [
462
- Css.fontSize("23px")
463
- ], [])
464
- ]
465
- []
466
- )
467
-
468
- guideCodeCss: CssClass = CssClass(
469
- [
470
- Css.fontFamily("'Firefly Mono', monospace")
471
- Css.fontSize("15px")
472
- Css.lineHeight("1.3")
473
- Css.color("#000000")
474
- Css.whiteSpace("pre-wrap")
475
- Css.wordBreak("break-all")
476
- ]
477
- [
478
- CssNest(mobileMediaQuery, [
479
- Css.fontSize("14px")
480
- Css.lineHeight("1.4")
481
- ], [])
482
- CssNest("pre>&", [
483
- Css.color("#4ec9b0")
484
- Css.whiteSpace("pre")
485
- ], [])
486
- ]
487
- []
488
- )
489
-
490
- guideCodeBlockCss: CssClass = CssClass(
491
- [
492
- Css.lineHeight("1.3")
493
- Css.background("#1f1f1f")
494
- Css.padding("20px 25px")
495
- Css.margin("30px 0")
496
- Css.borderRadius("5px")
497
- Css.boxSizing("border-box")
498
- Css.overflowX("auto")
499
- Css.maxWidth("100%")
500
- ]
501
- [
502
- CssNest(mobileMediaQuery, [
503
- Css.maxWidth("calc(100vw)")
504
- Css.marginLeft("-20px")
505
- Css.marginRight("-20px")
506
- Css.borderRadius("0")
507
- Css.borderLeft("none")
508
- Css.borderRight("none")
509
- Css.padding("20px 20px")
510
- Css.lineHeight("1.4")
511
- ], [])
512
- ]
513
- []
514
- )
515
-
516
- guideLinkCss: CssClass = CssClass(
517
- [
518
- Css.color("#000000")
519
- Css.textDecoration("2px #ecc45e underline")
520
- Css.fontWeight("600")
521
- ]
522
- [
523
- CssNest("&:hover", [
524
- Css.textDecoration("2px #ecc45e underline")
525
- ], [])
526
- ]
527
- []
528
- )
529
-
530
- guideNextButtonCss: CssClass = CssClass(
531
- [
532
- Css.marginTop("100px")
533
- ]
534
- []
535
- []
536
- )
537
-
538
- guideButtonCss: CssClass = CssClass(
539
- [
540
- Css.padding("15px 30px")
541
- Css.borderRadius("5px")
542
- Css.background("#ecc45e")
543
- Css.color("#000000")
544
- Css.border("2px solid black")
545
- Css.textDecoration("none")
546
- Css.fontSize("17px")
547
- Css.fontWeight("600")
548
- ]
549
- [
550
- CssNest(mobileMediaQuery, [
551
- Css.fontSize("15px")
552
- ], [])
553
- CssNest("&::after", [
554
- Css.content("' →'")
555
- ], [])
556
- ]
557
- []
558
- )
559
-
560
- codeCommentCss: CssClass = CssClass([Css.color("#757c8a")], [], [])
561
- codeStringCss: CssClass = CssClass([Css.color("#ce9178")], [], [])
562
- codeNumberCss: CssClass = CssClass([Css.color("#b5cea8")], [], [])
563
- codeKeywordCss: CssClass = CssClass([Css.color("#569cd6")], [], [])
564
- codeTypeCss: CssClass = CssClass([Css.color("#4ec9b0")], [], [])
565
- codeVariableCss: CssClass = CssClass([Css.color("#9cdcfe")], [], [])
566
- codeCallCss: CssClass = CssClass([Css.color("#dcdcaa")], [], [])
567
- codeOtherCss: CssClass = CssClass([Css.color("#cccccc")], [], [])
1
+ import Css from ff:lux
2
+
3
+ mobileMediaQuery: String = "@media only screen and (max-width: 840px)"
4
+ mobileOrTabletMediaQuery: String = "@media only screen and (max-width: 1140px)"
5
+
6
+ pageCss: CssClass = CssClass(
7
+ [
8
+ Css.display("flex")
9
+ Css.flexDirection("column")
10
+ Css.minHeight("100vh")
11
+ Css.fontFamily("'Firefly Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif")
12
+ Css.textRendering("optimizeLegibility")
13
+ ]
14
+ [
15
+ CssNest("*:focus-visible", [
16
+ Css.outline("2px solid #ecc45e")
17
+ Css.outlineOffset("2px")
18
+ ], [])
19
+ ]
20
+ []
21
+ )
22
+
23
+ whiteLinkCss: CssClass = CssClass(
24
+ [
25
+ Css.color("#000000")
26
+ Css.textDecoration("none")
27
+ Css.fontWeight("600")
28
+ ]
29
+ [
30
+ CssNest("&:hover", [Css.textDecoration("underline")], [])
31
+ CssNest("&[aria-current='page']", [Css.color("#000000")], [])
32
+ ]
33
+ []
34
+ )
35
+
36
+ greenLinkCss: CssClass = CssClass(
37
+ [
38
+ Css.color("#4ec9b0")
39
+ Css.textDecoration("none")
40
+ ]
41
+ [
42
+ CssNest("&:hover", [Css.textDecoration("underline")], [])
43
+ ]
44
+ []
45
+ )
46
+
47
+ searchInputCss: CssClass = CssClass(
48
+ [
49
+ Css.appearance("none")
50
+ Css.boxSizing("border-box")
51
+ Css.marginLeft("20px")
52
+ Css.marginRight("25px")
53
+ Css.width("calc(100% - 20px - 25px)")
54
+ Css.display("flex")
55
+ Css.border("none")
56
+ Css.borderBottom("2px solid #000000")
57
+ Css.backgroundColor("#ffffff50")
58
+ Css.color("#000000")
59
+ Css.height("34px")
60
+ Css.fontSize("16px")
61
+ Css.borderRadius("0")
62
+ Css.paddingLeft("5px")
63
+ Css.paddingRight("5px")
64
+ Css.paddingTop("0")
65
+ Css.paddingBottom("0")
66
+ Css.marginBottom("20px")
67
+ ]
68
+ [
69
+ CssNest("&::placeholder", [
70
+ Css.color("#000000")
71
+ Css.opacity("unset")
72
+ Css.fontSize("16px")
73
+ ], [])
74
+ CssNest("&:focus::placeholder", [
75
+ Css.opacity("0")
76
+ ], [])
77
+ ]
78
+ []
79
+ )
80
+
81
+ guideCss: CssClass = CssClass(
82
+ [
83
+ Css.display("flex")
84
+ Css.minHeight("100vh")
85
+ ]
86
+ []
87
+ []
88
+ )
89
+
90
+ guideTopbarCss: CssClass = CssClass(
91
+ [
92
+ Css.display("none")
93
+ Css.justifyContent("space-between")
94
+ Css.alignItems("center")
95
+ Css.backgroundColor("#ecc45e")
96
+ Css.color("#000000")
97
+ Css.position("fixed")
98
+ Css.top("0")
99
+ Css.left("0")
100
+ Css.right("0")
101
+ Css.height("76px")
102
+ ]
103
+ [
104
+ CssNest(mobileOrTabletMediaQuery, [
105
+ Css.display("flex")
106
+ ], [])
107
+ ]
108
+ []
109
+ )
110
+
111
+ guideTopbarLogoCss: CssClass = CssClass(
112
+ [
113
+ Css.display("flex")
114
+ Css.gap("20px")
115
+ Css.alignItems("center")
116
+ Css.justifyContent("center")
117
+ Css.fontSize("25px")
118
+ Css.letterSpacing("5px")
119
+ Css.textTransform("uppercase")
120
+ Css.color("inherit")
121
+ Css.textDecoration("none")
122
+ Css.height("70px")
123
+ Css.paddingLeft("20px")
124
+ ]
125
+ [
126
+ CssNest("&>img", [Css.width("70px")], [])
127
+ ]
128
+ []
129
+ )
130
+
131
+ guideTopbarButtonCss: CssClass = CssClass(
132
+ [
133
+ Css.display("none")
134
+ Css.appearance("none")
135
+ Css.border("none")
136
+ Css.outline("none")
137
+ Css.background("""url('data:image/svg+xml,<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(%23clip0_788_122)"><rect x="4" y="9" width="25" height="2" rx="1" fill="%23000000"/><rect x="4" y="17" width="25" height="2" rx="1" fill="%23000000"/><rect x="4" y="25" width="25" height="2" rx="1" fill="%23000000"/></g><defs><clipPath id="clip0_788_122"><rect width="50" height="50" fill="white"/></clipPath></defs></svg>') no-repeat center""")
138
+ Css.backgroundSize("60px 60px")
139
+ Css.backgroundPosition("20px 16px")
140
+ Css.fontSize("20px")
141
+ Css.cursor("pointer")
142
+ Css.webkitTapHighlightColor("transparent")
143
+ Css.padding("0")
144
+ Css.margin("0")
145
+ Css.height("76px")
146
+ Css.width("76px")
147
+ Css.marginLeft("auto")
148
+ ]
149
+ [
150
+ CssNest(mobileOrTabletMediaQuery, [
151
+ Css.display("block")
152
+ ], [])
153
+ ]
154
+ []
155
+ )
156
+
157
+ guideSidebarButtonCss: CssClass = CssClass(
158
+ [
159
+ Css.position("fixed")
160
+ Css.bottom("-68px")
161
+ Css.right("-65px")
162
+ Css.width("70px")
163
+ Css.height("70px")
164
+ Css.padding("0")
165
+ Css.boxSizing("border-box")
166
+ Css.background("""url('data:image/svg+xml,<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(%23clip0_788_122)"><rect x="4" y="9" width="30" height="3" rx="1" fill="%23ecc45e"/><rect x="4" y="17" width="21" height="3" rx="1" fill="%23ecc45e"/><rect x="4" y="25" width="13" height="3" rx="1" fill="%23ecc45e"/></g><defs><clipPath id="clip0_788_122"><rect width="50" height="50" fill="white"/></clipPath></defs></svg>') no-repeat center""")
167
+ Css.backgroundSize("70px 70px")
168
+ Css.appearance("none")
169
+ Css.border("none")
170
+ Css.outline("none")
171
+ Css.transformOrigin("top left")
172
+ Css.transform("rotate(180deg) scale(0, 0)")
173
+ Css.transition("100ms transform")
174
+ ]
175
+ [
176
+ CssNest(mobileOrTabletMediaQuery, [
177
+ Css.display("block")
178
+ Css.transform("rotate(180deg) scale(1, 1)")
179
+ ], [])
180
+ ]
181
+ []
182
+ )
183
+
184
+ guideSidebarButtonOpenCss: CssClass = CssClass(
185
+ []
186
+ [
187
+ CssNest(mobileOrTabletMediaQuery, [
188
+ Css.transform("rotate(180deg) scale(0, 1)")
189
+ ], [])
190
+ ]
191
+ []
192
+ )
193
+
194
+ guideSidebarBackdropCss: CssClass = CssClass(
195
+ [
196
+ Css.display("none")
197
+ Css.position("fixed")
198
+ Css.top("0")
199
+ Css.bottom("0px")
200
+ Css.left("0")
201
+ Css.right("0px")
202
+ Css.backgroundColor("rgba(20, 20, 0, 0.6)")
203
+ Css.touchAction("none")
204
+ ]
205
+ []
206
+ []
207
+ )
208
+
209
+ guideSidebarBackdropOpenCss: CssClass = CssClass(
210
+ []
211
+ [
212
+ CssNest(mobileOrTabletMediaQuery, [
213
+ Css.display("block")
214
+ ], [])
215
+ ]
216
+ []
217
+ )
218
+
219
+ guideSidebarCss: CssClass = CssClass(
220
+ [
221
+ Css.position("fixed")
222
+ Css.top("0")
223
+ Css.bottom("0")
224
+ Css.left("0")
225
+ Css.width("300px")
226
+ Css.boxSizing("border-box")
227
+ Css.paddingTop("10px")
228
+ Css.backgroundColor("#ecc45e")
229
+ Css.overflowY("auto")
230
+ Css.transition("200ms transform")
231
+ Css.scrollbarWidth("thin")
232
+ Css.scrollbarColor("#333333 #ecc45e")
233
+ ]
234
+ [
235
+ CssNest(mobileOrTabletMediaQuery, [
236
+ Css.order("2")
237
+ Css.width("calc(100% - 50px)")
238
+ Css.maxWidth("300px")
239
+ Css.minHeight("auto")
240
+ Css.height("auto")
241
+ Css.paddingTop("20px")
242
+ Css.paddingBottom("20px")
243
+ Css.transform("translateX(-110%)")
244
+ Css.outline("1px solid rgba(0, 0, 0, 0.15)")
245
+ ], [])
246
+ CssNest("& *:focus-visible", [
247
+ Css.outline("2px solid #000000")
248
+ Css.outlineOffset("2px")
249
+ ], [])
250
+ ]
251
+ []
252
+ )
253
+
254
+ guideSidebarOpenCss: CssClass = CssClass(
255
+ []
256
+ [
257
+ CssNest(mobileOrTabletMediaQuery, [
258
+ Css.transform("translateX(0)")
259
+ ], [])
260
+ ]
261
+ []
262
+ )
263
+
264
+ guideSidebarLogoCss: CssClass = CssClass(
265
+ [
266
+ Css.display("flex")
267
+ Css.gap("20px")
268
+ Css.alignItems("center")
269
+ Css.justifyContent("center")
270
+ Css.fontSize("30px")
271
+ Css.letterSpacing("5px")
272
+ Css.textTransform("uppercase")
273
+ Css.color("inherit")
274
+ Css.textDecoration("none")
275
+ Css.height("100px")
276
+ ]
277
+ [
278
+ CssNest("&>img", [Css.width("100px")], [])
279
+ CssNest("&>div", [Css.width("145px")], [])
280
+ CssNest(mobileOrTabletMediaQuery, [
281
+ Css.display("none")
282
+ ], [])
283
+ ]
284
+ []
285
+ )
286
+
287
+ guideSidebarUl1Css: CssClass = CssClass(
288
+ [
289
+ Css.display("flex")
290
+ Css.flexDirection("column")
291
+ Css.gap("35px")
292
+ Css.listStyle("none")
293
+ Css.margin("0px")
294
+ Css.padding("20px")
295
+ Css.opacity("0.85")
296
+ Css.transition("100ms opacity")
297
+ ]
298
+ [
299
+ CssNest(mobileOrTabletMediaQuery, [
300
+ Css.opacity("1.00")
301
+ ], [])
302
+ CssNest("&:hover", [
303
+ Css.opacity("1.00")
304
+ ], [])
305
+ ]
306
+ []
307
+ )
308
+
309
+ guideSidebarLi1Css: CssClass = CssClass(
310
+ [
311
+ Css.listStyle("none")
312
+ Css.fontSize("17px")
313
+ ]
314
+ []
315
+ []
316
+ )
317
+
318
+ guideSidebarUl2Css: CssClass = CssClass(
319
+ [
320
+ Css.display("flex")
321
+ Css.flexDirection("column")
322
+ Css.gap("15px")
323
+ Css.listStyle("none")
324
+ Css.margin("0px")
325
+ Css.paddingLeft("15px")
326
+ Css.paddingTop("20px")
327
+ Css.paddingRight("0")
328
+ Css.paddingBottom("5px")
329
+ Css.fontSize("17px")
330
+ ]
331
+ []
332
+ []
333
+ )
334
+
335
+ guideSidebarLi2Css: CssClass = CssClass(
336
+ [
337
+ Css.listStyle("none")
338
+ ]
339
+ []
340
+ []
341
+ )
342
+
343
+ guideMainCss: CssClass = CssClass(
344
+ [
345
+ Css.flex("1")
346
+ Css.display("flex")
347
+ Css.justifyContent("center")
348
+ Css.marginLeft("300px")
349
+ Css.paddingLeft("20px")
350
+ Css.paddingRight("calc(max(20px, 25vw - 300px))")
351
+ Css.paddingTop("80px")
352
+ Css.paddingBottom("80px")
353
+ Css.position("relative")
354
+ Css.boxSizing("content-box")
355
+ Css.color("#333333")
356
+ Css.fontWeight("500")
357
+ ]
358
+ [
359
+ CssNest(mobileOrTabletMediaQuery, [
360
+ Css.marginLeft("0")
361
+ Css.paddingLeft("20px")
362
+ Css.paddingRight("20px")
363
+ Css.paddingTop("120px")
364
+ Css.paddingBottom("70px")
365
+ ], [])
366
+ ]
367
+ []
368
+ )
369
+
370
+ guideDocumentCss: CssClass = CssClass(
371
+ [
372
+ Css.maxWidth("800px")
373
+ Css.width("100%")
374
+ Css.fontSize("17px")
375
+ Css.lineHeight("1.7")
376
+ ]
377
+ []
378
+ []
379
+ )
380
+
381
+ guideSplitCss: CssClass = CssClass(
382
+ [
383
+ Css.display("flex")
384
+ Css.gap("30px")
385
+ Css.justifyContent("space-between")
386
+ Css.alignItems("stretch")
387
+ Css.marginTop("170px")
388
+ Css.marginBottom("170px")
389
+ ]
390
+ [
391
+ CssNest("&>div:first-child", [
392
+ Css.width("calc(345px - 15px)")
393
+ Css.paddingTop("10px")
394
+ Css.paddingBottom("15px")
395
+ ], [])
396
+ CssNest("&>div:last-child", [
397
+ Css.width("calc(455px - 15px)")
398
+ ], [])
399
+ CssNest("&>div>:first-child", [
400
+ Css.marginTop("0")
401
+ ], [])
402
+ CssNest("&>div>:last-child", [
403
+ Css.marginBottom("0")
404
+ ], [])
405
+ CssNest("&>div>pre", [
406
+ Css.overflowX("hidden")
407
+ Css.minHeight("100%")
408
+ ], [])
409
+ CssNest(mobileMediaQuery, [
410
+ Css.flexDirection("column")
411
+ ], [
412
+ CssNest("&>div:first-child", [
413
+ Css.width("auto")
414
+ ], [])
415
+ CssNest("&>div:last-child", [
416
+ Css.width("auto")
417
+ ], [])
418
+ CssNest("&>div>pre", [
419
+ Css.overflowX("auto")
420
+ ], [])
421
+ ])
422
+ ]
423
+ []
424
+ )
425
+
426
+ guideSplitHeadingCss: CssClass = CssClass(
427
+ [
428
+ Css.fontSize("23px")
429
+ Css.fontWeight("600")
430
+ Css.margin("0")
431
+ ]
432
+ [
433
+ CssNest(mobileMediaQuery, [
434
+ Css.fontSize("21px")
435
+ ], [])
436
+ ]
437
+ []
438
+ )
439
+
440
+ guideH1Css: CssClass = CssClass(
441
+ [
442
+ Css.fontSize("32px")
443
+ Css.fontWeight("600")
444
+ Css.marginTop("0px")
445
+ ]
446
+ [
447
+ CssNest(mobileMediaQuery, [
448
+ Css.fontSize("26px")
449
+ ], [])
450
+ ]
451
+ []
452
+ )
453
+
454
+ guideH2Css: CssClass = CssClass(
455
+ [
456
+ Css.fontSize("28px")
457
+ Css.fontWeight("600")
458
+ Css.marginTop("70px")
459
+ ]
460
+ [
461
+ CssNest(mobileMediaQuery, [
462
+ Css.fontSize("23px")
463
+ ], [])
464
+ ]
465
+ []
466
+ )
467
+
468
+ guideCodeCss: CssClass = CssClass(
469
+ [
470
+ Css.fontFamily("'Firefly Mono', monospace")
471
+ Css.fontSize("15px")
472
+ Css.lineHeight("1.3")
473
+ Css.color("#000000")
474
+ Css.whiteSpace("pre-wrap")
475
+ Css.wordBreak("break-all")
476
+ ]
477
+ [
478
+ CssNest(mobileMediaQuery, [
479
+ Css.fontSize("14px")
480
+ Css.lineHeight("1.4")
481
+ ], [])
482
+ CssNest("pre>&", [
483
+ Css.color("#4ec9b0")
484
+ Css.whiteSpace("pre")
485
+ ], [])
486
+ ]
487
+ []
488
+ )
489
+
490
+ guideCodeBlockCss: CssClass = CssClass(
491
+ [
492
+ Css.lineHeight("1.3")
493
+ Css.background("#1f1f1f")
494
+ Css.padding("20px 25px")
495
+ Css.margin("30px 0")
496
+ Css.borderRadius("5px")
497
+ Css.boxSizing("border-box")
498
+ Css.overflowX("auto")
499
+ Css.maxWidth("100%")
500
+ ]
501
+ [
502
+ CssNest(mobileMediaQuery, [
503
+ Css.maxWidth("calc(100vw)")
504
+ Css.marginLeft("-20px")
505
+ Css.marginRight("-20px")
506
+ Css.borderRadius("0")
507
+ Css.borderLeft("none")
508
+ Css.borderRight("none")
509
+ Css.padding("20px 20px")
510
+ Css.lineHeight("1.4")
511
+ ], [])
512
+ ]
513
+ []
514
+ )
515
+
516
+ guideLinkCss: CssClass = CssClass(
517
+ [
518
+ Css.color("#000000")
519
+ Css.textDecoration("2px #ecc45e underline")
520
+ Css.fontWeight("600")
521
+ ]
522
+ [
523
+ CssNest("&:hover", [
524
+ Css.textDecoration("2px #ecc45e underline")
525
+ ], [])
526
+ ]
527
+ []
528
+ )
529
+
530
+ guideNextButtonCss: CssClass = CssClass(
531
+ [
532
+ Css.marginTop("100px")
533
+ ]
534
+ []
535
+ []
536
+ )
537
+
538
+ guideButtonCss: CssClass = CssClass(
539
+ [
540
+ Css.padding("15px 30px")
541
+ Css.borderRadius("5px")
542
+ Css.background("#ecc45e")
543
+ Css.color("#000000")
544
+ Css.border("2px solid black")
545
+ Css.textDecoration("none")
546
+ Css.fontSize("17px")
547
+ Css.fontWeight("600")
548
+ ]
549
+ [
550
+ CssNest(mobileMediaQuery, [
551
+ Css.fontSize("15px")
552
+ ], [])
553
+ CssNest("&::after", [
554
+ Css.content("' →'")
555
+ ], [])
556
+ ]
557
+ []
558
+ )
559
+
560
+ codeCommentCss: CssClass = CssClass([Css.color("#757c8a")], [], [])
561
+ codeStringCss: CssClass = CssClass([Css.color("#ce9178")], [], [])
562
+ codeNumberCss: CssClass = CssClass([Css.color("#b5cea8")], [], [])
563
+ codeKeywordCss: CssClass = CssClass([Css.color("#569cd6")], [], [])
564
+ codeTypeCss: CssClass = CssClass([Css.color("#4ec9b0")], [], [])
565
+ codeVariableCss: CssClass = CssClass([Css.color("#9cdcfe")], [], [])
566
+ codeCallCss: CssClass = CssClass([Css.color("#dcdcaa")], [], [])
567
+ codeOtherCss: CssClass = CssClass([Css.color("#cccccc")], [], [])