1module Internal.Style exposing (classes, dot, rules)
7 = Class String (List Rule)
12 | Child String (List Rule)
13 | AllChildren String (List Rule)
14 | Supports ( String, String ) (List ( String, String ))
15 | Descriptor String (List Rule)
16 | Adjacent String (List Rule)
96 dot classes.alignBottom
99 dot classes.alignRight
102 dot classes.alignLeft
105 dot classes.alignCenterX
108 dot classes.alignCenterY
114 dot classes.contentTop
117 dot classes.contentBottom
120 dot classes.contentRight
123 dot classes.contentLeft
126 dot classes.contentCenterX
129 dot classes.contentCenterY
142 , imageContainer = "ic"
147 , widthContent = "wc"
149 , widthFillPortion = "wfp"
151 , heightContent = "hc"
153 , heightFillPortion = "hfp"
171 , alignCenterX = "cx"
172 , alignCenterY = "cy"
173 , alignedHorizontally = "ah"
174 , alignedVertically = "av"
177 , spaceEvenly = "sev"
179 , alignContainerRight = "acr"
180 , alignContainerBottom = "acb"
181 , alignContainerCenterX = "accx"
182 , alignContainerCenterY = "accy"
184 -- content alignments
186 , contentBottom = "cb"
187 , contentRight = "cr"
189 , contentCenterX = "ccx"
190 , contentCenterY = "ccy"
193 , noTextSelection = "notxt"
194 , cursorPointer = "cptr"
195 , cursorText = "ctxt"
198 , passPointerEvents = "ppe"
199 , capturePointerEvents = "cpe"
200 , transparent = "clr"
202 , overflowHidden = "oh"
204 -- special state classes
207 -- , hoverOpaque = "hover-opaque"
209 , focusedWithin = "focus-within"
211 -- , focusOpaque = "focus-opaque"
214 -- , activeOpaque = "active-opaque"
217 , scrollbarsX = "sbx"
218 , scrollbarsY = "sby"
225 , borderDashed = "bd"
226 , borderDotted = "bdt"
230 , sizeByCapital = "cap"
233 , textExtraLight = "w2"
235 , textNormalWeight = "w4"
237 , textSemiBold = "w6"
239 , textExtraBold = "w8"
244 , textUnitalicized = "tun"
248 , textJustifyAll = "tja"
256 , inputMultiline = "iml"
257 , inputMultilineParent = "imlp"
258 , inputMultilineFiller = "imlf"
259 , inputMultilineWrapper = "implw"
267{-| The indulgent unicode character version.
270 { root = "style-elements"
282 , widthContent = "width-content"
283 , widthExact = "width-exact"
285 , heightContent = "height-content"
286 , heightExact = "height-exact"
291 , onRight = "on-right"
293 , inFront = "infront"
298 , alignBottom = "ā¤"
301 , alignCenterX = "self-center-x"
302 , alignCenterY = "self-center-y"
305 , spaceEvenly = "space-evenly"
306 , container = "container"
308 -- content alignments
309 , contentTop = "content-top"
310 , contentBottom = "content-bottom"
311 , contentRight = "content-right"
312 , contentLeft = "content-left"
313 , contentCenterX = "content-center-x"
314 , contentCenterY = "content-center-y"
317 , noTextSelection = "no-text-selection"
318 , cursorPointer = "cursor-pointer"
319 , cursorText = "cursor-text"
322 , passPointerEvents = "pass-pointer-events"
323 , capturePointerEvents = "capture-pointer-events"
324 , transparent = "transparent"
328 , scrollbars = "scrollbars"
329 , scrollbarsX = "scrollbars-x"
330 , scrollbarsY = "scrollbars-y"
336 , borderNone = "border-none"
337 , borderDashed = "border-dashed"
338 , borderDotted = "border-dotted"
339 , borderSolid = "border-solid"
342 , textThin = "text-thin"
343 , textExtraLight = "text-extra-light"
344 , textLight = "text-light"
345 , textNormalWeight = "text-normal-weight"
346 , textMedium = "text-medium"
347 , textSemiBold = "text-semi-bold"
349 , textExtraBold = "text-extra-bold"
350 , textHeavy = "text-heavy"
353 , underline = "underline"
354 , textUnitalicized = "text-unitalicized"
357 , textJustify = "text-justify"
358 , textJustifyAll = "text-justify-all"
359 , textCenter = "text-center"
360 , textRight = "text-right"
361 , textLeft = "text-left"
378 , widthContent = "wc"
381 , heightContent = "hc"
394 , alignBottom = "ā¤"
397 , alignCenterX = "self-center-x"
398 , alignCenterY = "self-center-y"
401 , spaceEvenly = "space-evenly"
402 , container = "container"
404 -- content alignments
405 , contentTop = "cā¤"
406 , contentBottom = "cā¤"
407 , contentRight = "cā„"
408 , contentLeft = "cā¤"
409 , contentCenterX = "content-center-x"
410 , contentCenterY = "content-center-y"
413 , noTextSelection = "no-text-selection"
414 , cursorPointer = "cursor-pointer"
415 , cursorText = "cursor-text"
418 , passPointerEvents = "pass-pointer-events"
419 , capturePointerEvents = "capture-pointer-events"
420 , transparent = "transparent"
424 , scrollbars = "scrollbars"
425 , scrollbarsX = "scrollbars-x"
426 , scrollbarsY = "scrollbars-y"
432 , borderNone = "border-none"
433 , borderDashed = "border-dashed"
434 , borderDotted = "border-dotted"
435 , borderSolid = "border-solid"
438 , textThin = "text-thin"
439 , textExtraLight = "text-extra-light"
440 , textLight = "text-light"
441 , textNormalWeight = "text-normal-weight"
442 , textMedium = "text-medium"
443 , textSemiBold = "text-semi-bold"
445 , textExtraBold = "text-extra-bold"
446 , textHeavy = "text-heavy"
450 , textUnitalicized = "text-unitalicized"
453 , textJustify = "text-justify"
454 , textJustifyAll = "text-justify-all"
455 , textCenter = "text-center"
456 , textRight = "text-right"
457 , textLeft = "text-left"
461describeAlignment values =
463 createDescription alignment =
468 [ Descriptor (contentName (Content alignment)) <|
470 , Child (dot classes.any)
471 [ Descriptor (selfName <| Self alignment) indiv
476 List.concatMap createDescription alignments
479gridAlignments values =
481 createDescription alignment =
482 [ Child (dot classes.any)
483 [ Descriptor (selfName <| Self alignment) (values alignment)
488 List.concatMap createDescription alignments
495type ContentDescriptor
511 , props : List ( String, String )
513 , others : List Intermediate
517emptyIntermediate : String -> String -> Intermediate
518emptyIntermediate selector closing =
520 { selector = selector
527renderRules : Intermediate -> List Rule -> Intermediate
528renderRules (Intermediate parent) rulesToRender =
530 generateIntermediates rule rendered =
533 { rendered | props = ( name, val ) :: rendered.props }
535 Supports ( prop, value ) props ->
539 { selector = "@supports (" ++ prop ++ ":" ++ value ++ ") {" ++ parent.selector
547 Adjacent selector adjRules ->
551 (emptyIntermediate (parent.selector ++ " + " ++ selector) "")
556 Child child childRules ->
560 (emptyIntermediate (parent.selector ++ " > " ++ child) "")
565 AllChildren child childRules ->
569 (emptyIntermediate (parent.selector ++ " " ++ child) "")
574 Descriptor descriptor descriptorRules ->
578 (emptyIntermediate (parent.selector ++ descriptor) "")
586 renderRules (emptyIntermediate parent.selector "") batched
590 Intermediate <| List.foldr generateIntermediates parent rulesToRender
593render : List Class -> String
596 renderValues values =
598 |> List.map (\( x, y ) -> " " ++ x ++ ": " ++ y ++ ";")
607 rule.selector ++ " {\n" ++ renderValues rule.props ++ rule.closing ++ "\n}"
609 renderIntermediate (Intermediate rule) =
611 ++ String.join "\n" (List.map renderIntermediate rule.others)
615 (\(Class name styleRules) existing ->
616 renderRules (emptyIntermediate name "") styleRules :: existing
619 |> List.map renderIntermediate
623renderCompact : List Class -> String
624renderCompact styleClasses =
626 renderValues values =
628 |> List.map (\( x, y ) -> x ++ ":" ++ y ++ ";")
637 rule.selector ++ "{" ++ renderValues rule.props ++ rule.closing ++ "}"
639 renderIntermediate (Intermediate rule) =
641 ++ String.concat (List.map renderIntermediate rule.others)
645 (\(Class name styleRules) existing ->
646 renderRules (emptyIntermediate name "") styleRules :: existing
649 |> List.map renderIntermediate
653viewportRules : String
661describeText : String -> List Rule -> Rule
662describeText cls props =
664 (List.map makeImportant props
669 , Child ".el > .text"
675makeImportant : Rule -> Rule
679 Prop name (prop ++ " !important")
690 """@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {"""
695 ++ " { flex-basis: auto !important; } "
700 ++ dot classes.container
701 ++ " { flex-basis: auto !important; }}"
712input[type="search"]::-webkit-search-decoration,
713input[type="search"]::-webkit-search-cancel-button,
714input[type="search"]::-webkit-search-results-button,
715input[type="search"]::-webkit-search-results-decoration {
716 -webkit-appearance:none;
724 -webkit-appearance: none;
725 background: transparent;
740input[type=range]::-moz-range-track {
741 background: transparent;
744input[type=range]::-ms-track {
745 background: transparent;
748input[type=range]::-webkit-slider-runnable-track {
749 background: transparent;
757input[type=range]::-webkit-slider-thumb {
758 -webkit-appearance: none;
762 background-color: black;
766input[type=range]::-moz-range-thumb {
770 background-color: black;
774input[type=range]::-ms-thumb {
778 background-color: black;
782input[type=range][orient=vertical]{
783 writing-mode: bt-lr; /* IE */
784 -webkit-appearance: slider-vertical; /* WebKit */
792 border: 6px solid rgb(174, 121, 15) !important;
794.explain > .""" ++ classes.any ++ """ {
795 border: 4px dashed rgb(0, 151, 167) !important;
799 border: none !important;
801.explain > .ctr > .""" ++ classes.any ++ """ {
802 border: 4px dashed rgb(0, 151, 167) !important;
812 Class (".border-" ++ String.fromInt x) [ Prop "border-width" (String.fromInt x ++ "px") ]
817 Class (".font-size-" ++ String.fromInt i) [ Prop "font-size" (String.fromInt i ++ "px") ]
822 Class (".p-" ++ String.fromInt i) [ Prop "padding" (String.fromInt i ++ "px") ]
826 -- Common Font Variants
828 [ Prop "font-variant" "small-caps"
830 , Class ".v-smcp-off"
831 [ Prop "font-variant" "normal"
835 -- , fontVariant "smcp"
848 [ Class (".v-" ++ var)
849 [ Prop "font-feature-settings" ("\"" ++ var ++ "\"")
851 , Class (".v-" ++ var ++ "-off")
852 [ Prop "font-feature-settings" ("\"" ++ var ++ "\" 0")
860 ++ renderCompact (baseSheet ++ commonValues)
864 [ Prop "display" "flex"
865 , Prop "flex-direction" "column"
866 , Prop "white-space" "pre"
867 , Descriptor (dot classes.hasBehind)
869 , Child (dot classes.behind)
870 [ Prop "z-index" "-1"
873 , Descriptor (dot classes.seButton)
874 -- Special default for text in a button.
875 -- This is overridden is they put the text inside an `el`
876 [ Child (dot classes.text)
877 [ Descriptor (dot classes.heightFill)
878 [ Prop "flex-grow" "0"
880 , Descriptor (dot classes.widthFill)
881 [ Prop "align-self" "auto !important"
885 , Child (dot classes.heightContent)
886 [ Prop "height" "auto"
888 , Child (dot classes.heightFill)
889 [ Prop "flex-grow" "100000"
891 , Child (dot classes.widthFill)
892 [ -- alignLeft, alignRight, centerX are overridden by width.
893 -- Prop "align-self" "stretch !important"
896 , Child (dot classes.widthFillPortion)
897 [ Prop "width" "100%"
899 , Child (dot classes.widthContent)
900 [ Prop "align-self" "flex-start"
903 -- , Child (dot classes.widthFill)
904 -- [ Prop "align-self" "stretch"
905 -- , Descriptor (dot classes.alignedHorizontally)
906 -- [ Prop "width" "100%"
909 , describeAlignment <|
913 ( [ Prop "justify-content" "flex-start" ]
914 , [ Prop "margin-bottom" "auto !important"
915 , Prop "margin-top" "0 !important"
920 ( [ Prop "justify-content" "flex-end" ]
921 , [ Prop "margin-top" "auto !important"
922 , Prop "margin-bottom" "0 !important"
927 ( [ Prop "align-items" "flex-end" ]
928 , [ Prop "align-self" "flex-end" ]
932 ( [ Prop "align-items" "flex-start" ]
933 , [ Prop "align-self" "flex-start" ]
937 ( [ Prop "align-items" "center" ]
938 , [ Prop "align-self" "center"
943 ( [ -- Prop "justify-content" "center"
944 Child (dot classes.any)
945 [ Prop "margin-top" "auto"
946 , Prop "margin-bottom" "auto"
949 , [ Prop "margin-top" "auto !important"
950 , Prop "margin-bottom" "auto !important"
958 [ Prop "height" "100%"
962 , Class (dot classes.any ++ dot classes.single ++ dot classes.imageContainer)
963 [ Prop "display" "block"
964 , Descriptor (dot classes.heightFill)
966 [ Prop "max-height" "100%"
967 , Prop "object-fit" "cover"
970 , Descriptor (dot classes.widthFill)
972 [ Prop "max-width" "100%"
973 , Prop "object-fit" "cover"
977 , Class (dot classes.any ++ ":focus")
978 [ Prop "outline" "none"
980 , Class (dot classes.root)
981 [ Prop "width" "100%"
982 , Prop "height" "auto"
983 , Prop "min-height" "100%"
987 -- ++ dot classes.single
988 ++ dot classes.heightFill
990 [ Prop "height" "100%"
991 , Child (dot classes.heightFill)
992 [ Prop "height" "100%"
995 , Child (dot classes.inFront)
996 [ Descriptor (dot classes.nearby)
997 [ Prop "position" "fixed"
998 , Prop "z-index" "20"
1002 , Class (dot classes.nearby)
1003 [ Prop "position" "relative"
1004 , Prop "border" "none"
1005 , Prop "display" "flex"
1006 , Prop "flex-direction" "row"
1007 , Prop "flex-basis" "auto"
1008 , Descriptor (dot classes.single)
1011 (\fn -> List.map fn locations) <|
1015 Descriptor (dot classes.above)
1016 [ Prop "position" "absolute"
1017 , Prop "bottom" "100%"
1019 , Prop "width" "100%"
1020 , Prop "z-index" "20"
1021 , Prop "margin" "0 !important"
1022 , Child (dot classes.heightFill)
1023 [ Prop "height" "auto"
1025 , Child (dot classes.widthFill)
1026 [ Prop "width" "100%"
1028 , Prop "pointer-events" "none"
1030 [ Prop "pointer-events" "auto"
1035 Descriptor (dot classes.below)
1036 [ Prop "position" "absolute"
1040 , Prop "width" "100%"
1041 , Prop "z-index" "20"
1042 , Prop "margin" "0 !important"
1043 , Prop "pointer-events" "none"
1045 [ Prop "pointer-events" "auto"
1047 , Child (dot classes.heightFill)
1048 [ Prop "height" "auto"
1053 Descriptor (dot classes.onRight)
1054 [ Prop "position" "absolute"
1055 , Prop "left" "100%"
1057 , Prop "height" "100%"
1058 , Prop "margin" "0 !important"
1059 , Prop "z-index" "20"
1060 , Prop "pointer-events" "none"
1062 [ Prop "pointer-events" "auto"
1067 Descriptor (dot classes.onLeft)
1068 [ Prop "position" "absolute"
1069 , Prop "right" "100%"
1071 , Prop "height" "100%"
1072 , Prop "margin" "0 !important"
1073 , Prop "z-index" "20"
1074 , Prop "pointer-events" "none"
1076 [ Prop "pointer-events" "auto"
1081 Descriptor (dot classes.inFront)
1082 [ Prop "position" "absolute"
1083 , Prop "width" "100%"
1084 , Prop "height" "100%"
1087 , Prop "margin" "0 !important"
1088 , Prop "pointer-events" "none"
1090 [ Prop "pointer-events" "auto"
1095 Descriptor (dot classes.behind)
1096 [ Prop "position" "absolute"
1097 , Prop "width" "100%"
1098 , Prop "height" "100%"
1101 , Prop "margin" "0 !important"
1102 , Prop "z-index" "0"
1103 , Prop "pointer-events" "none"
1105 [ Prop "pointer-events" "auto"
1109 , Class (dot classes.any)
1110 [ Prop "position" "relative"
1111 , Prop "border" "none"
1112 , Prop "flex-shrink" "0"
1113 , Prop "display" "flex"
1114 , Prop "flex-direction" "row"
1115 , Prop "flex-basis" "auto"
1116 , Prop "resize" "none"
1117 , Prop "font-feature-settings" "inherit"
1119 -- , Prop "flex-basis" "0%"
1120 , Prop "box-sizing" "border-box"
1122 , Prop "padding" "0"
1123 , Prop "border-width" "0"
1124 , Prop "border-style" "solid"
1126 -- inheritable font properties
1127 , Prop "font-size" "inherit"
1128 , Prop "color" "inherit"
1129 , Prop "font-family" "inherit"
1130 , Prop "line-height" "1"
1131 , Prop "font-weight" "inherit"
1133 -- Text decoration is *mandatorily inherited* in the css spec.
1134 -- There's no way to change this. How crazy is that?
1135 , Prop "text-decoration" "none"
1136 , Prop "font-style" "inherit"
1137 , Descriptor (dot classes.wrapped)
1138 [ Prop "flex-wrap" "wrap"
1140 , Descriptor (dot classes.noTextSelection)
1141 [ Prop "-moz-user-select" "none"
1142 , Prop "-webkit-user-select" "none"
1143 , Prop "-ms-user-select" "none"
1144 , Prop "user-select" "none"
1146 , Descriptor (dot classes.cursorPointer)
1147 [ Prop "cursor" "pointer"
1149 , Descriptor (dot classes.cursorText)
1150 [ Prop "cursor" "text"
1152 , Descriptor (dot classes.passPointerEvents)
1153 [ Prop "pointer-events" "none !important"
1155 , Descriptor (dot classes.capturePointerEvents)
1156 [ Prop "pointer-events" "auto !important"
1158 , Descriptor (dot classes.transparent)
1159 [ Prop "opacity" "0"
1161 , Descriptor (dot classes.opaque)
1162 [ Prop "opacity" "1"
1164 , Descriptor (dot (classes.hover ++ classes.transparent) ++ ":hover")
1165 [ Prop "opacity" "0"
1167 , Descriptor (dot (classes.hover ++ classes.opaque) ++ ":hover")
1168 [ Prop "opacity" "1"
1170 , Descriptor (dot (classes.focus ++ classes.transparent) ++ ":focus")
1171 [ Prop "opacity" "0"
1173 , Descriptor (dot (classes.focus ++ classes.opaque) ++ ":focus")
1174 [ Prop "opacity" "1"
1176 , Descriptor (dot (classes.active ++ classes.transparent) ++ ":active")
1177 [ Prop "opacity" "0"
1179 , Descriptor (dot (classes.active ++ classes.opaque) ++ ":active")
1180 [ Prop "opacity" "1"
1182 , Descriptor (dot classes.transition)
1184 (String.join ", " <|
1185 List.map (\x -> x ++ " 160ms")
1189 , "background-color"
1195 , Descriptor (dot classes.scrollbars)
1196 [ Prop "overflow" "auto"
1197 , Prop "flex-shrink" "1"
1199 , Descriptor (dot classes.scrollbarsX)
1200 [ Prop "overflow-x" "auto"
1201 , Descriptor (dot classes.row)
1202 [ Prop "flex-shrink" "1"
1205 , Descriptor (dot classes.scrollbarsY)
1206 [ Prop "overflow-y" "auto"
1207 , Descriptor (dot classes.column)
1208 [ Prop "flex-shrink" "1"
1210 , Descriptor (dot classes.single)
1211 [ Prop "flex-shrink" "1"
1214 , Descriptor (dot classes.clip)
1215 [ Prop "overflow" "hidden"
1217 , Descriptor (dot classes.clipX)
1218 [ Prop "overflow-x" "hidden"
1220 , Descriptor (dot classes.clipY)
1221 [ Prop "overflow-y" "hidden"
1223 , Descriptor (dot classes.widthContent)
1224 [ Prop "width" "auto"
1226 , Descriptor (dot classes.borderNone)
1227 [ Prop "border-width" "0"
1229 , Descriptor (dot classes.borderDashed)
1230 [ Prop "border-style" "dashed"
1232 , Descriptor (dot classes.borderDotted)
1233 [ Prop "border-style" "dotted"
1235 , Descriptor (dot classes.borderSolid)
1236 [ Prop "border-style" "solid"
1238 , Descriptor (dot classes.text)
1239 [ Prop "white-space" "pre"
1240 , Prop "display" "inline-block"
1242 , Descriptor (dot classes.inputText)
1243 -- chrome and safari have a minimum recognized line height for text input of 1.05
1244 -- If it's 1, it bumps up to something like 1.2
1245 [ Prop "line-height" "1.05"
1246 , Prop "background" "transparent"
1247 , Prop "text-align" "inherit"
1249 , Descriptor (dot classes.single)
1251 , Descriptor (dot classes.row)
1252 [ Prop "display" "flex"
1253 , Prop "flex-direction" "row"
1254 , Child (dot classes.any)
1255 [ Prop "flex-basis" "0%"
1256 , Descriptor (dot classes.widthExact)
1257 [ Prop "flex-basis" "auto"
1259 , Descriptor (dot classes.link)
1260 [ Prop "flex-basis" "auto"
1263 , Child (dot classes.heightFill)
1264 [ -- alignTop, centerY, and alignBottom need to be disabled
1265 Prop "align-self" "stretch !important"
1267 , Child (dot classes.heightFillPortion)
1268 [ -- alignTop, centerY, and alignBottom need to be disabled
1269 Prop "align-self" "stretch !important"
1272 -- TODO:: This may be necessary..should it move to classes.heightFIll?
1273 -- , Child (dot classes.heightFillBetween)
1274 -- [ Prop "align-self" "stretch"
1275 -- , Descriptor ".aligned-vertically"
1276 -- [ Prop "height" "100%"
1279 , Child (dot classes.widthFill)
1280 [ Prop "flex-grow" "100000"
1282 , Child (dot classes.container)
1283 [ Prop "flex-grow" "0"
1284 , Prop "flex-basis" "auto"
1285 , Prop "align-self" "stretch"
1288 -- , Child "alignLeft:last-of-type.align-container-left"
1289 -- [ Prop "flex-grow" "1"
1291 -- alignRight -> <u>
1293 , Child ("u:first-of-type." ++ classes.alignContainerRight)
1294 [ Prop "flex-grow" "1"
1298 , Child ("s:first-of-type." ++ classes.alignContainerCenterX)
1299 [ Prop "flex-grow" "1"
1300 , Child (dot classes.alignCenterX)
1301 [ Prop "margin-left" "auto !important"
1304 , Child ("s:last-of-type." ++ classes.alignContainerCenterX)
1305 [ Prop "flex-grow" "1"
1306 , Child (dot classes.alignCenterX)
1307 [ Prop "margin-right" "auto !important"
1312 , Child ("s:only-of-type." ++ classes.alignContainerCenterX)
1313 [ Prop "flex-grow" "1"
1314 , Child (dot classes.alignCenterY)
1315 [ Prop "margin-top" "auto !important"
1316 , Prop "margin-bottom" "auto !important"
1320 -- alignBottom's after a centerX should not grow
1322 ("s:last-of-type." ++ classes.alignContainerCenterX ++ " ~ u")
1323 [ Prop "flex-grow" "0"
1326 -- centerX's after an alignBottom should be ignored
1327 , Child ("u:first-of-type." ++ classes.alignContainerRight ++ " ~ s." ++ classes.alignContainerCenterX)
1328 -- Bottom alignment always overrides center alignment
1329 [ Prop "flex-grow" "0"
1331 , describeAlignment <|
1335 ( [ Prop "align-items" "flex-start" ]
1336 , [ Prop "align-self" "flex-start"
1341 ( [ Prop "align-items" "flex-end" ]
1342 , [ Prop "align-self" "flex-end"
1347 ( [ Prop "justify-content" "flex-end"
1353 ( [ Prop "justify-content" "flex-start"
1359 ( [ Prop "justify-content" "center"
1365 ( [ Prop "align-items" "center" ]
1366 , [ Prop "align-self" "center"
1370 -- Must be below the alignment rules or else it interferes
1371 , Descriptor (dot classes.spaceEvenly)
1372 [ Prop "justify-content" "space-between"
1374 , Descriptor (dot classes.inputLabel)
1375 [ Prop "align-items" "baseline"
1378 , Descriptor (dot classes.column)
1379 [ Prop "display" "flex"
1380 , Prop "flex-direction" "column"
1381 , Child (dot classes.any)
1382 -- *Note* - While rows have flex-basis 0%,
1383 -- which allows for the children of a row to default to their content size
1384 -- This apparently is a different story for columns.
1385 -- Safari has an issue if this is flex-basis: 0%, as it goes entirely to 0,
1386 -- instead of the expected content size.
1387 -- So we add `min-height: min-content`, which isn't supported by IE, but works for all other browsers!
1388 -- Separately, 0% is different than 0px, but only for columns
1389 -- In columns, 0% will actually be calculated as `auto` for columns
1390 -- So, 0px is the one we want.
1391 [ Prop "flex-basis" "0px"
1392 , Prop "min-height" "min-content"
1393 , Descriptor (dot classes.heightExact)
1394 [ Prop "flex-basis" "auto"
1397 , Child (dot classes.heightFill)
1398 [ Prop "flex-grow" "100000"
1400 , Child (dot classes.widthFill)
1401 [ -- alignLeft, alignRight, centerX need to be disabled
1402 -- Prop "align-self" "stretch !important"
1405 , Child (dot classes.widthFillPortion)
1406 [ -- alignLeft, alignRight, centerX need to be disabled
1407 -- Prop "align-self" "stretch !important"
1411 -- TODO:: This might be necessary, maybe it should move to widthFill?
1412 -- , Child (dot classes.widthFill)
1413 -- [ Prop "align-self" "stretch"
1414 -- , Descriptor (dot classes.alignedHorizontally)
1415 -- [ Prop "width" "100%"
1418 , Child (dot classes.widthContent)
1419 [ Prop "align-self" "flex-start"
1422 -- , Child "alignTop:last-of-type.align-container-top"
1423 -- [ Prop "flex-grow" "1"
1425 , Child ("u:first-of-type." ++ classes.alignContainerBottom)
1426 [ Prop "flex-grow" "1"
1430 -- alignBottom -> <u>
1432 , Child ("s:first-of-type." ++ classes.alignContainerCenterY)
1433 [ Prop "flex-grow" "1"
1434 , Child (dot classes.alignCenterY)
1435 [ Prop "margin-top" "auto !important"
1436 , Prop "margin-bottom" "0 !important"
1439 , Child ("s:last-of-type." ++ classes.alignContainerCenterY)
1440 [ Prop "flex-grow" "1"
1441 , Child (dot classes.alignCenterY)
1442 [ Prop "margin-bottom" "auto !important"
1443 , Prop "margin-top" "0 !important"
1448 , Child ("s:only-of-type." ++ classes.alignContainerCenterY)
1449 [ Prop "flex-grow" "1"
1450 , Child (dot classes.alignCenterY)
1451 [ Prop "margin-top" "auto !important"
1452 , Prop "margin-bottom" "auto !important"
1456 -- alignBottom's after a centerY should not grow
1457 , Child ("s:last-of-type." ++ classes.alignContainerCenterY ++ " ~ u")
1458 [ Prop "flex-grow" "0"
1461 -- centerY's after an alignBottom should be ignored
1462 , Child ("u:first-of-type." ++ classes.alignContainerBottom ++ " ~ s." ++ classes.alignContainerCenterY)
1463 -- Bottom alignment always overrides center alignment
1464 [ Prop "flex-grow" "0"
1466 , describeAlignment <|
1470 ( [ Prop "justify-content" "flex-start" ]
1471 , [ Prop "margin-bottom" "auto" ]
1475 ( [ Prop "justify-content" "flex-end" ]
1476 , [ Prop "margin-top" "auto" ]
1480 ( [ Prop "align-items" "flex-end" ]
1481 , [ Prop "align-self" "flex-end" ]
1485 ( [ Prop "align-items" "flex-start" ]
1486 , [ Prop "align-self" "flex-start" ]
1490 ( [ Prop "align-items" "center" ]
1491 , [ Prop "align-self" "center"
1496 ( [ Prop "justify-content" "center" ]
1499 , Child (dot classes.container)
1500 [ Prop "flex-grow" "0"
1501 , Prop "flex-basis" "auto"
1502 , Prop "width" "100%"
1503 , Prop "align-self" "stretch !important"
1505 , Descriptor (dot classes.spaceEvenly)
1506 [ Prop "justify-content" "space-between"
1509 , Descriptor (dot classes.grid)
1510 [ Prop "display" "-ms-grid"
1512 [ Child (dot classes.any)
1513 [ Prop "width" "100%"
1516 , Supports ( "display", "grid" )
1517 [ ( "display", "grid" )
1523 [ Prop "justify-content" "flex-start" ]
1526 [ Prop "justify-content" "flex-end" ]
1529 [ Prop "align-items" "flex-end" ]
1532 [ Prop "align-items" "flex-start" ]
1535 [ Prop "align-items" "center" ]
1538 [ Prop "justify-content" "center" ]
1540 , Descriptor (dot classes.page)
1541 [ Prop "display" "block"
1542 , Child (dot <| classes.any ++ ":first-child")
1543 [ Prop "margin" "0 !important"
1546 -- clear spacing of any subsequent element if an element is float-left
1547 , Child (dot <| classes.any ++ selfName (Self Left) ++ ":first-child + ." ++ classes.any)
1548 [ Prop "margin" "0 !important"
1550 , Child (dot <| classes.any ++ selfName (Self Right) ++ ":first-child + ." ++ classes.any)
1551 [ Prop "margin" "0 !important"
1553 , describeAlignment <|
1568 , [ Prop "float" "right"
1569 , Descriptor "::after"
1570 [ Prop "content" "\"\""
1571 , Prop "display" "table"
1572 , Prop "clear" "both"
1579 , [ Prop "float" "left"
1580 , Descriptor "::after"
1581 [ Prop "content" "\"\""
1582 , Prop "display" "table"
1583 , Prop "clear" "both"
1598 , Descriptor (dot classes.inputMultiline)
1599 [ Prop "white-space" "pre-wrap !important"
1600 , Prop "height" "100%"
1601 , Prop "width" "100%"
1602 , Prop "background-color" "transparent"
1604 , Descriptor (dot classes.inputMultilineWrapper)
1606 -- This allows multiline input to anchor scrolling to the bottom of the node
1607 -- when in a scrolling viewport, and the user is adding content.
1608 -- however, it only works in chrome. In firefox, it prevents scrolling.
1610 -- But how crazy is this solution?
1611 -- [ Prop "display" "flex"
1612 -- , Prop "flex-direction" "column-reverse"
1614 [ -- to increase specificity to beat another rule
1615 Descriptor (dot classes.single)
1616 [ Prop "flex-basis" "auto" ]
1618 , Descriptor (dot classes.inputMultilineParent)
1619 [ Prop "white-space" "pre-wrap !important"
1620 , Prop "cursor" "text"
1621 , Child (dot classes.inputMultilineFiller)
1622 [ Prop "white-space" "pre-wrap !important"
1623 , Prop "color" "transparent"
1626 , Descriptor (dot classes.paragraph)
1627 [ Prop "display" "block"
1628 , Prop "white-space" "normal"
1629 , Prop "overflow-wrap" "break-word"
1630 , Descriptor (dot classes.hasBehind)
1631 [ Prop "z-index" "0"
1632 , Child (dot classes.behind)
1633 [ Prop "z-index" "-1"
1636 , AllChildren (dot classes.text)
1637 [ Prop "display" "inline"
1638 , Prop "white-space" "normal"
1640 , AllChildren (dot classes.paragraph)
1641 [ Prop "display" "inline"
1642 , Descriptor "::after"
1643 [ Prop "content" "none"
1645 , Descriptor "::before"
1646 [ Prop "content" "none"
1649 , AllChildren (dot classes.single)
1650 [ Prop "display" "inline"
1651 , Prop "white-space" "normal"
1653 -- Inline block allows the width of the item to be set
1654 -- but DOES NOT like wrapping text in a standard, normal, sane way.
1655 -- We're sorta counting that if an exact width has been set,
1656 -- people aren't expecting proper text wrapping for this element
1657 , Descriptor (dot classes.widthExact)
1658 [ Prop "display" "inline-block"
1660 , Descriptor (dot classes.inFront)
1661 [ Prop "display" "flex"
1663 , Descriptor (dot classes.behind)
1664 [ Prop "display" "flex"
1666 , Descriptor (dot classes.above)
1667 [ Prop "display" "flex"
1669 , Descriptor (dot classes.below)
1670 [ Prop "display" "flex"
1672 , Descriptor (dot classes.onRight)
1673 [ Prop "display" "flex"
1675 , Descriptor (dot classes.onLeft)
1676 [ Prop "display" "flex"
1678 , Child (dot classes.text)
1679 [ Prop "display" "inline"
1680 , Prop "white-space" "normal"
1683 , Child (dot classes.row)
1684 [ Prop "display" "inline"
1686 , Child (dot classes.column)
1687 [ Prop "display" "inline-flex"
1689 , Child (dot classes.grid)
1690 [ Prop "display" "inline-grid"
1692 , describeAlignment <|
1707 , [ Prop "float" "right" ]
1712 , [ Prop "float" "left" ]
1725 , Descriptor ".hidden"
1726 [ Prop "display" "none"
1728 , Descriptor (dot classes.textThin)
1729 [ Prop "font-weight" "100"
1731 , Descriptor (dot classes.textExtraLight)
1732 [ Prop "font-weight" "200"
1734 , Descriptor (dot classes.textLight)
1735 [ Prop "font-weight" "300"
1737 , Descriptor (dot classes.textNormalWeight)
1738 [ Prop "font-weight" "400"
1740 , Descriptor (dot classes.textMedium)
1741 [ Prop "font-weight" "500"
1743 , Descriptor (dot classes.textSemiBold)
1744 [ Prop "font-weight" "600"
1746 , Descriptor (dot classes.bold)
1747 [ Prop "font-weight" "700"
1749 , Descriptor (dot classes.textExtraBold)
1750 [ Prop "font-weight" "800"
1752 , Descriptor (dot classes.textHeavy)
1753 [ Prop "font-weight" "900"
1755 , Descriptor (dot classes.italic)
1756 [ Prop "font-style" "italic"
1758 , Descriptor (dot classes.strike)
1759 [ Prop "text-decoration" "line-through"
1761 , Descriptor (dot classes.underline)
1762 [ Prop "text-decoration" "underline"
1763 , Prop "text-decoration-skip-ink" "auto"
1764 , Prop "text-decoration-skip" "ink"
1766 , Descriptor (dot classes.underline ++ dot classes.strike)
1767 [ Prop "text-decoration" "line-through underline"
1768 , Prop "text-decoration-skip-ink" "auto"
1769 , Prop "text-decoration-skip" "ink"
1771 , Descriptor (dot classes.textUnitalicized)
1772 [ Prop "font-style" "normal"
1774 , Descriptor (dot classes.textJustify)
1775 [ Prop "text-align" "justify"
1777 , Descriptor (dot classes.textJustifyAll)
1778 [ Prop "text-align" "justify-all"
1780 , Descriptor (dot classes.textCenter)
1781 [ Prop "text-align" "center"
1783 , Descriptor (dot classes.textRight)
1784 [ Prop "text-align" "right"
1786 , Descriptor (dot classes.textLeft)
1787 [ Prop "text-align" "left"
1789 , Descriptor ".modal"
1790 [ Prop "position" "fixed"
1793 , Prop "width" "100%"
1794 , Prop "height" "100%"
1795 , Prop "pointer-events" "none"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list