firefly-compiler 0.4.79 → 0.4.81

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