diff --git a/packages/fuselage-tokens/typography.js b/packages/fuselage-tokens/typography.js index b5a8f879ce..e857ed34d1 100644 --- a/packages/fuselage-tokens/typography.js +++ b/packages/fuselage-tokens/typography.js @@ -26,60 +26,58 @@ const fontMono = [ ]; export default { - h1: { - fontFamily: fontSans, - fontSize: 22, - fontWeight: 400, - letterSpacing: 0, - lineHeight: 32, + fontFamilies: { + sans: fontSans, + mono: fontMono, }, - s1: { - fontFamily: fontSans, - fontSize: 16, - fontWeight: 400, - letterSpacing: 0, - lineHeight: 22, - }, - s2: { - fontFamily: fontSans, - fontSize: 16, - fontWeight: 500, - letterSpacing: 0, - lineHeight: 22, - }, - p1: { - fontFamily: fontSans, - fontSize: 14, - fontWeight: 400, - letterSpacing: 0, - lineHeight: 20, - }, - p2: { - fontFamily: fontSans, - fontSize: 14, - fontWeight: 500, - letterSpacing: 0, - lineHeight: 20, - }, - c1: { - fontFamily: fontSans, - fontSize: 12, - fontWeight: 400, - letterSpacing: 0, - lineHeight: 16, - }, - c2: { - fontFamily: fontSans, - fontSize: 12, - fontWeight: 600, - letterSpacing: 0, - lineHeight: 16, - }, - micro: { - fontFamily: fontSans, - fontSize: 10, - fontWeight: 600, - letterSpacing: 0.2, - lineHeight: 12, + fontScales: { + h1: { + fontSize: 22, + fontWeight: 400, + letterSpacing: 0, + lineHeight: 32, + }, + s1: { + fontSize: 16, + fontWeight: 400, + letterSpacing: 0, + lineHeight: 22, + }, + s2: { + fontSize: 16, + fontWeight: 500, + letterSpacing: 0, + lineHeight: 22, + }, + p1: { + fontSize: 14, + fontWeight: 400, + letterSpacing: 0, + lineHeight: 20, + }, + p2: { + fontSize: 14, + fontWeight: 500, + letterSpacing: 0, + lineHeight: 20, + }, + c1: { + fontSize: 12, + fontWeight: 400, + letterSpacing: 0, + lineHeight: 16, + }, + c2: { + fontSize: 12, + fontWeight: 600, + letterSpacing: 0, + lineHeight: 16, + }, + micro: { + fontSize: 10, + fontWeight: 600, + letterSpacing: 0.2, + lineHeight: 12, + }, }, } diff --git a/packages/fuselage-tokens/typography.scss b/packages/fuselage-tokens/typography.scss index a4f8cc9244..002f84f98e 100644 --- a/packages/fuselage-tokens/typography.scss +++ b/packages/fuselage-tokens/typography.scss @@ -1,4 +1,4 @@ -$font-sans: +$-font-sans: Inter, -apple-system, BlinkMacSystemFont, @@ -15,7 +15,7 @@ $font-sans: Arial, sans-serif; -$font-mono: +$-font-mono: Menlo, Monaco, Consolas, @@ -23,58 +23,55 @@ $font-mono: 'Courier New', monospace; -$typography: ( +$font-families: ( + sans: $-font-sans, + mono: $-font-mono, +); + +$font-scales: ( h1: ( - font-family: $font-sans, font-size: 22, font-weight: 400, letter-spacing: 0, line-height: 32, ), s1: ( - font-family: $font-sans, font-size: 16, font-weight: 400, letter-spacing: 0, line-height: 22, ), s2: ( - font-family: $font-sans, font-size: 16, font-weight: 500, letter-spacing: 0, line-height: 22, ), p1: ( - font-family: $font-sans, font-size: 14, font-weight: 400, letter-spacing: 0, line-height: 20, ), p2: ( - font-family: $font-sans, font-size: 14, font-weight: 500, letter-spacing: 0, line-height: 20, ), c1: ( - font-family: $font-sans, font-size: 12, font-weight: 400, letter-spacing: 0, line-height: 16, ), c2: ( - font-family: $font-sans, font-size: 12, font-weight: 600, letter-spacing: 0, line-height: 16, ), micro: ( - font-family: $font-sans, font-size: 10, font-weight: 600, letter-spacing: 0.2, diff --git a/packages/fuselage-ui-kit/src/Section.js b/packages/fuselage-ui-kit/src/Section.js index 7de8b50ac7..e3d9a19cd2 100644 --- a/packages/fuselage-ui-kit/src/Section.js +++ b/packages/fuselage-ui-kit/src/Section.js @@ -38,7 +38,7 @@ const Fields = ({ fields, parser }) => ( export const Section = ({ blockId, appId, text, fields, accessory, parser }) => - {text && {parser.text(text)}} + {text && {parser.text(text)}} {fields && } { accessory && < Flex.Item grow={0}> diff --git a/packages/fuselage-ui-kit/src/index.js b/packages/fuselage-ui-kit/src/index.js index a52ee63260..77bbb5d866 100644 --- a/packages/fuselage-ui-kit/src/index.js +++ b/packages/fuselage-ui-kit/src/index.js @@ -124,7 +124,7 @@ class MessageParser extends UiKitParserMessage { ELEMENT_TYPES.PLAIN_TEXT, ELEMENT_TYPES.MARKDOWN, ].includes(element.type) ? ( - + {this.renderContext(element, BLOCK_CONTEXT.CONTEXT, this)} ) diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align.png deleted file mode 100644 index c22affdcd3..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align_Content.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align_Content.png deleted file mode 100644 index 331af1c932..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align_Content.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align_Items.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align_Items.png deleted file mode 100644 index 56bfedbab9..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Align_Items.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Basis.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Basis.png deleted file mode 100644 index fe792e8e39..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Basis.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Default.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Default.png deleted file mode 100644 index cf0364b354..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Default.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Direction.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Direction.png deleted file mode 100644 index 7744e17d8d..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Direction.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Grow.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Grow.png deleted file mode 100644 index fe792e8e39..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Grow.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Justify_Content.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Justify_Content.png deleted file mode 100644 index 15d59ba557..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Justify_Content.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Order.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Order.png deleted file mode 100644 index 439919a820..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Order.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Shrink.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Shrink.png deleted file mode 100644 index fe792e8e39..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Shrink.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Wrap.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Wrap.png deleted file mode 100644 index d47f800325..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Modifiers_Flex_Wrap.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Plain_Text_Text_colors.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Plain_Text_Text_colors.png deleted file mode 100644 index bd3b1796b0..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Plain_Text_Text_colors.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Plain_Text_Text_styles.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Plain_Text_Text_styles.png deleted file mode 100644 index e5365f90c5..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Plain_Text_Text_styles.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Background_colors.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Background_colors.png new file mode 100644 index 0000000000..c6dad5d296 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Background_colors.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Border_radii.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Border_radii.png new file mode 100644 index 0000000000..01b09814fe Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Border_radii.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Borders.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Borders.png new file mode 100644 index 0000000000..b5dcf9881f Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Borders.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Colors.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Colors.png new file mode 100644 index 0000000000..ca0342e67e Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Colors.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Display.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Display.png new file mode 100644 index 0000000000..1509258f66 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Display.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_families.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_families.png new file mode 100644 index 0000000000..fe364e8182 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_families.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_scales.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_scales.png new file mode 100644 index 0000000000..75d00225b6 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_scales.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_sizes.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_sizes.png new file mode 100644 index 0000000000..0944617b3c Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_sizes.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_styles.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_styles.png new file mode 100644 index 0000000000..7e99c54c57 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_styles.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_weights.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_weights.png new file mode 100644 index 0000000000..cd7f8fcbef Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Font_weights.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Heights.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Heights.png new file mode 100644 index 0000000000..60a340af92 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Heights.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Inset.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Inset.png new file mode 100644 index 0000000000..f847307f06 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Inset.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Invisible.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Invisible.png new file mode 100644 index 0000000000..1633469bd6 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Invisible.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Letter_spacing.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Letter_spacing.png new file mode 100644 index 0000000000..85426b661c Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Letter_spacing.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Line_heights.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Line_heights.png new file mode 100644 index 0000000000..d6daab6d4e Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Line_heights.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Margins.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Margins.png new file mode 100644 index 0000000000..eeb5932481 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Margins.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Opacity.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Opacity.png new file mode 100644 index 0000000000..b962b34827 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Opacity.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Paddings.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Paddings.png new file mode 100644 index 0000000000..f0616560b3 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Paddings.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Position.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Position.png new file mode 100644 index 0000000000..3b1d014ecb Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Position.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Sizes.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Sizes.png new file mode 100644 index 0000000000..5bff4b8f05 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Sizes.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_alignment.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_alignment.png new file mode 100644 index 0000000000..e6b8da75a7 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_alignment.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_decoration.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_decoration.png new file mode 100644 index 0000000000..f220609012 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_decoration.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_transform.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_transform.png new file mode 100644 index 0000000000..4b40b3fedf Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Text_transform.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Vertical_alignment.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Vertical_alignment.png new file mode 100644 index 0000000000..11e77d4aab Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Vertical_alignment.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Widths.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Widths.png new file mode 100644 index 0000000000..3b980f65fd Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Widths.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_With_rich_content.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_With_rich_content.png new file mode 100644 index 0000000000..f3b284a57b Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_With_rich_content.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_With_truncated_text.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_With_truncated_text.png new file mode 100644 index 0000000000..3baacdf192 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_With_truncated_text.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Z_index.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Z_index.png new file mode 100644 index 0000000000..657ef1328a Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_Z_index.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_is_prop.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_is_prop.png similarity index 100% rename from packages/fuselage/.loki/reference/chrome_iphone7_Box_is_prop.png rename to packages/fuselage/.loki/reference/chrome_iphone7_Box_Props_is_prop.png diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_abbr.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_abbr.png deleted file mode 100644 index db9eb1381c..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_abbr.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_b.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_b.png deleted file mode 100644 index 50bed6b789..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_b.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_blockquote_and_cite.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_blockquote_and_cite.png deleted file mode 100644 index 74ef47dd4b..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_blockquote_and_cite.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_code.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_code.png deleted file mode 100644 index bb35aa81a3..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_code.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_default.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_default.png deleted file mode 100644 index c328da9904..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_default.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_del_and_ins.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_del_and_ins.png deleted file mode 100644 index 8a0a660ca4..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_del_and_ins.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_dfn.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_dfn.png deleted file mode 100644 index feb7850e47..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_dfn.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_dl.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_dl.png deleted file mode 100644 index deb2ea3ee5..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_dl.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_em.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_em.png deleted file mode 100644 index 93f1e77ff0..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_em.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_hx.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_hx.png deleted file mode 100644 index f87c18f92e..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_hx.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_i.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_i.png deleted file mode 100644 index 45ef306c4b..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_i.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_kbd.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_kbd.png deleted file mode 100644 index d98f4fbb3b..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_kbd.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_ol.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_ol.png deleted file mode 100644 index 0da4f464ad..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_ol.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_p.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_p.png deleted file mode 100644 index 2c9f7af3da..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_p.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_pre.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_pre.png deleted file mode 100644 index dd64dc11d0..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_pre.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_pre_with_code.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_pre_with_code.png deleted file mode 100644 index f3d1521aa8..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_pre_with_code.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_q_and_cite.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_q_and_cite.png deleted file mode 100644 index ace6ba23aa..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_q_and_cite.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_small.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_small.png deleted file mode 100644 index 80efb1bc71..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_small.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_strong.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_strong.png deleted file mode 100644 index 0522da2747..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_strong.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_sup_and_sub.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_sup_and_sub.png deleted file mode 100644 index f8a59bfcac..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_sup_and_sub.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_table_complex.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_table_complex.png deleted file mode 100644 index ddcf7ff176..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_table_complex.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_table_simple.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_table_simple.png deleted file mode 100644 index 9bdd06b8f0..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_table_simple.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_ul.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_ul.png deleted file mode 100644 index ef92f25f0c..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_ul.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_var.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_var.png deleted file mode 100644 index cda9aa6c73..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_var.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_a.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_a.png similarity index 100% rename from packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_a.png rename to packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_a.png diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_abbr.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_abbr.png new file mode 100644 index 0000000000..96ad8ea0db Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_abbr.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_b.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_b.png new file mode 100644 index 0000000000..30bdb6e2ac Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_b.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_blockquote_and_cite.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_blockquote_and_cite.png new file mode 100644 index 0000000000..534c1e602d Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_blockquote_and_cite.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_code.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_code.png new file mode 100644 index 0000000000..da0a7fed93 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_code.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_del_and_ins.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_del_and_ins.png new file mode 100644 index 0000000000..c8e94899c3 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_del_and_ins.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_dfn.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_dfn.png new file mode 100644 index 0000000000..65e1f7a6d9 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_dfn.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_dl.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_dl.png new file mode 100644 index 0000000000..496a201a15 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_dl.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_em.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_em.png new file mode 100644 index 0000000000..2dd4db4856 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_em.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_hx.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_hx.png new file mode 100644 index 0000000000..f6ac3b4153 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_hx.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_i.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_i.png new file mode 100644 index 0000000000..cef6bab75a Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_i.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_kbd.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_kbd.png new file mode 100644 index 0000000000..21e6bf6915 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_kbd.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_ol.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_ol.png new file mode 100644 index 0000000000..6897af429b Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_ol.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_p.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_p.png new file mode 100644 index 0000000000..bba9b11559 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_p.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_pre.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_pre.png new file mode 100644 index 0000000000..bcdff808b3 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_pre.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_pre_with_code.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_pre_with_code.png new file mode 100644 index 0000000000..904a35b463 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_pre_with_code.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_q_and_cite.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_q_and_cite.png new file mode 100644 index 0000000000..f5f5adb095 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_q_and_cite.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_small.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_small.png new file mode 100644 index 0000000000..20c824a170 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_small.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_strong.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_strong.png new file mode 100644 index 0000000000..4d70fa3fe7 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_strong.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_sup_and_sub.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_sup_and_sub.png new file mode 100644 index 0000000000..c864ebc648 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_sup_and_sub.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_table_complex.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_table_complex.png new file mode 100644 index 0000000000..5ca8cffcfd Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_table_complex.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_table_simple.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_table_simple.png new file mode 100644 index 0000000000..f33209c4ab Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_table_simple.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_time.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_time.png similarity index 100% rename from packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_Text_time.png rename to packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_time.png diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_ul.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_ul.png new file mode 100644 index 0000000000..a3a18e547c Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_ul.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_var.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_var.png new file mode 100644 index 0000000000..dc9ae589fc Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_iphone7_Box_Rich_content_var.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_componentClassName_prop.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_componentClassName_prop.png deleted file mode 100644 index 633b7aa6b7..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_componentClassName_prop.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Box_invisible_prop.png b/packages/fuselage/.loki/reference/chrome_iphone7_Box_invisible_prop.png deleted file mode 100644 index b280b3194c..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Box_invisible_prop.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Forms_Inputs_SelectInput_States.png b/packages/fuselage/.loki/reference/chrome_iphone7_Forms_Inputs_SelectInput_States.png index 1b7235f0f3..e350c07358 100644 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Forms_Inputs_SelectInput_States.png and b/packages/fuselage/.loki/reference/chrome_iphone7_Forms_Inputs_SelectInput_States.png differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Default.png b/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Default.png deleted file mode 100644 index 004fc9c5a9..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Default.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Rich_text.png b/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Rich_text.png deleted file mode 100644 index 8075a7d91c..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Rich_text.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Skeleton.png b/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Skeleton.png deleted file mode 100644 index 92dcf08cce..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_iphone7_Typography_Paragraph_Skeleton.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align.png deleted file mode 100644 index dc453b7e59..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align_Content.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align_Content.png deleted file mode 100644 index be57999574..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align_Content.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align_Items.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align_Items.png deleted file mode 100644 index d59b92bcdc..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Align_Items.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Basis.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Basis.png deleted file mode 100644 index 119a06f1b0..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Basis.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Default.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Default.png deleted file mode 100644 index 7f79faabfc..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Default.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Direction.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Direction.png deleted file mode 100644 index c24408314f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Direction.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Grow.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Grow.png deleted file mode 100644 index 6374b30bcb..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Grow.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Justify_Content.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Justify_Content.png deleted file mode 100644 index d57ccbd149..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Justify_Content.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Order.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Order.png deleted file mode 100644 index b20799fa07..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Order.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Shrink.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Shrink.png deleted file mode 100644 index 6374b30bcb..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Shrink.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Wrap.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Wrap.png deleted file mode 100644 index 8e45fdac4f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Modifiers_Flex_Wrap.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Plain_Text_Text_colors.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Plain_Text_Text_colors.png deleted file mode 100644 index f4d8744ecc..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Plain_Text_Text_colors.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Plain_Text_Text_styles.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Plain_Text_Text_styles.png deleted file mode 100644 index 34b8dc3d5f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Plain_Text_Text_styles.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Background_colors.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Background_colors.png new file mode 100644 index 0000000000..233318f88c Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Background_colors.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Border_radii.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Border_radii.png new file mode 100644 index 0000000000..a390a82b19 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Border_radii.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Borders.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Borders.png new file mode 100644 index 0000000000..d449946052 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Borders.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Colors.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Colors.png new file mode 100644 index 0000000000..51cc3228e5 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Colors.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Display.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Display.png new file mode 100644 index 0000000000..17d002249e Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Display.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_families.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_families.png new file mode 100644 index 0000000000..1fc7fee887 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_families.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_scales.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_scales.png new file mode 100644 index 0000000000..82df6d39e1 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_scales.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_sizes.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_sizes.png new file mode 100644 index 0000000000..04b8fd43b7 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_sizes.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_styles.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_styles.png new file mode 100644 index 0000000000..30e9277758 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_styles.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_weights.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_weights.png new file mode 100644 index 0000000000..1c1d953792 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Font_weights.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Heights.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Heights.png new file mode 100644 index 0000000000..7689c54803 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Heights.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Inset.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Inset.png new file mode 100644 index 0000000000..44fd30ca21 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Inset.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Invisible.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Invisible.png new file mode 100644 index 0000000000..34d9a08aa6 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Invisible.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Letter_spacing.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Letter_spacing.png new file mode 100644 index 0000000000..3593cec9ee Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Letter_spacing.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Line_heights.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Line_heights.png new file mode 100644 index 0000000000..ff2c61f22e Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Line_heights.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Margins.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Margins.png new file mode 100644 index 0000000000..d925cd11d5 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Margins.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Opacity.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Opacity.png new file mode 100644 index 0000000000..706bdb0334 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Opacity.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Paddings.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Paddings.png new file mode 100644 index 0000000000..bf0103f456 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Paddings.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Position.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Position.png new file mode 100644 index 0000000000..b0d063b805 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Position.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Sizes.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Sizes.png new file mode 100644 index 0000000000..58f8b83e01 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Sizes.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_alignment.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_alignment.png new file mode 100644 index 0000000000..769e481b68 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_alignment.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_decoration.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_decoration.png new file mode 100644 index 0000000000..fdf91d2141 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_decoration.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_transform.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_transform.png new file mode 100644 index 0000000000..fcd5cd127f Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Text_transform.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Vertical_alignment.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Vertical_alignment.png new file mode 100644 index 0000000000..65fcd8f43c Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Vertical_alignment.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Widths.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Widths.png new file mode 100644 index 0000000000..fdc8f97001 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Widths.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_With_rich_content.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_With_rich_content.png new file mode 100644 index 0000000000..712a4467ec Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_With_rich_content.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_With_truncated_text.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_With_truncated_text.png new file mode 100644 index 0000000000..f7db794425 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_With_truncated_text.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Z_index.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Z_index.png new file mode 100644 index 0000000000..7b3c1800bb Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_Z_index.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_is_prop.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Props_is_prop.png similarity index 100% rename from packages/fuselage/.loki/reference/chrome_laptop_Box_is_prop.png rename to packages/fuselage/.loki/reference/chrome_laptop_Box_Props_is_prop.png diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_abbr.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_abbr.png deleted file mode 100644 index c5e2558783..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_abbr.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_b.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_b.png deleted file mode 100644 index 5aedf049c1..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_b.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_blockquote_and_cite.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_blockquote_and_cite.png deleted file mode 100644 index 5deabb717e..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_blockquote_and_cite.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_code.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_code.png deleted file mode 100644 index 0dbd5178fa..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_code.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_default.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_default.png deleted file mode 100644 index 8dc92bc8ff..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_default.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_del_and_ins.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_del_and_ins.png deleted file mode 100644 index 35f6c1fdf9..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_del_and_ins.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_dfn.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_dfn.png deleted file mode 100644 index 4f908bd38e..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_dfn.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_dl.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_dl.png deleted file mode 100644 index 39d79b50c1..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_dl.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_em.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_em.png deleted file mode 100644 index 5cc2c9fb6f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_em.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_hx.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_hx.png deleted file mode 100644 index 3f8ab1fe81..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_hx.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_i.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_i.png deleted file mode 100644 index 32713ff44e..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_i.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_kbd.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_kbd.png deleted file mode 100644 index 5199a0e81f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_kbd.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_ol.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_ol.png deleted file mode 100644 index 476e479eea..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_ol.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_p.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_p.png deleted file mode 100644 index 1bec996463..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_p.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_pre.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_pre.png deleted file mode 100644 index 943a8fb0f1..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_pre.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_pre_with_code.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_pre_with_code.png deleted file mode 100644 index fccc4fe917..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_pre_with_code.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_q_and_cite.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_q_and_cite.png deleted file mode 100644 index cefe42b3a8..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_q_and_cite.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_small.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_small.png deleted file mode 100644 index b38528be19..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_small.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_strong.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_strong.png deleted file mode 100644 index 6cbd954be3..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_strong.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_sup_and_sub.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_sup_and_sub.png deleted file mode 100644 index 35f8396d60..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_sup_and_sub.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_table_complex.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_table_complex.png deleted file mode 100644 index b24e5cc114..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_table_complex.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_table_simple.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_table_simple.png deleted file mode 100644 index 851296fbe0..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_table_simple.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_ul.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_ul.png deleted file mode 100644 index e851103298..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_ul.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_var.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_var.png deleted file mode 100644 index df86616a2f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_var.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_a.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_a.png similarity index 100% rename from packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_a.png rename to packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_a.png diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_abbr.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_abbr.png new file mode 100644 index 0000000000..62a3f448c9 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_abbr.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_b.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_b.png new file mode 100644 index 0000000000..fd0d5a78c7 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_b.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_blockquote_and_cite.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_blockquote_and_cite.png new file mode 100644 index 0000000000..3cd81b6af3 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_blockquote_and_cite.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_code.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_code.png new file mode 100644 index 0000000000..42bb76a848 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_code.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_del_and_ins.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_del_and_ins.png new file mode 100644 index 0000000000..15520bcc53 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_del_and_ins.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_dfn.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_dfn.png new file mode 100644 index 0000000000..34f59e5801 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_dfn.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_dl.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_dl.png new file mode 100644 index 0000000000..4bb39d69d3 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_dl.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_em.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_em.png new file mode 100644 index 0000000000..cd9252ded8 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_em.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_hx.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_hx.png new file mode 100644 index 0000000000..e997c63eaa Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_hx.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_i.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_i.png new file mode 100644 index 0000000000..e49c663cad Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_i.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_kbd.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_kbd.png new file mode 100644 index 0000000000..9e50992e13 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_kbd.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_ol.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_ol.png new file mode 100644 index 0000000000..1ea1737c76 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_ol.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_p.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_p.png new file mode 100644 index 0000000000..bfbcc687f6 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_p.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_pre.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_pre.png new file mode 100644 index 0000000000..a68f91670a Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_pre.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_pre_with_code.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_pre_with_code.png new file mode 100644 index 0000000000..7527db858c Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_pre_with_code.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_q_and_cite.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_q_and_cite.png new file mode 100644 index 0000000000..c99624ada6 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_q_and_cite.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_small.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_small.png new file mode 100644 index 0000000000..2580894127 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_small.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_strong.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_strong.png new file mode 100644 index 0000000000..c826714566 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_strong.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_sup_and_sub.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_sup_and_sub.png new file mode 100644 index 0000000000..e656552715 Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_sup_and_sub.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_table_complex.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_table_complex.png new file mode 100644 index 0000000000..e41e348b2d Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_table_complex.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_table_simple.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_table_simple.png new file mode 100644 index 0000000000..7c75583bbe Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_table_simple.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_time.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_time.png similarity index 100% rename from packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_Text_time.png rename to packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_time.png diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_ul.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_ul.png new file mode 100644 index 0000000000..911aa454bb Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_ul.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_var.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_var.png new file mode 100644 index 0000000000..ea68883caf Binary files /dev/null and b/packages/fuselage/.loki/reference/chrome_laptop_Box_Rich_content_var.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_componentClassName_prop.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_componentClassName_prop.png deleted file mode 100644 index eae826980f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_componentClassName_prop.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Box_invisible_prop.png b/packages/fuselage/.loki/reference/chrome_laptop_Box_invisible_prop.png deleted file mode 100644 index 9d4888448d..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Box_invisible_prop.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Forms_Inputs_SelectInput_States.png b/packages/fuselage/.loki/reference/chrome_laptop_Forms_Inputs_SelectInput_States.png index 2962a07112..f7bcff9375 100644 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Forms_Inputs_SelectInput_States.png and b/packages/fuselage/.loki/reference/chrome_laptop_Forms_Inputs_SelectInput_States.png differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Default.png b/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Default.png deleted file mode 100644 index 01f36e9b8f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Default.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Rich_text.png b/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Rich_text.png deleted file mode 100644 index 106dc7ca0f..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Rich_text.png and /dev/null differ diff --git a/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Skeleton.png b/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Skeleton.png deleted file mode 100644 index ce5629f213..0000000000 Binary files a/packages/fuselage/.loki/reference/chrome_laptop_Typography_Paragraph_Skeleton.png and /dev/null differ diff --git a/packages/fuselage/.storybook/helpers.js b/packages/fuselage/.storybook/helpers.js index 685eeb36b9..88998242f3 100644 --- a/packages/fuselage/.storybook/helpers.js +++ b/packages/fuselage/.storybook/helpers.js @@ -3,20 +3,20 @@ import React from 'react'; import { Box, Text } from '../src'; export function PropsVariationSection({ component: Component, common = {}, xAxis = {}, yAxis = {} }) { - return + return {Object.keys(xAxis).map((xVariation, key) => - {xVariation})} + {xVariation})} {Object.entries(yAxis).map(([yVariation, yProps], y) => ( - {yVariation} - {Object.values(xAxis).map((xProps, x) => - + {yVariation} + {Object.values(xAxis).map((xProps, x) => + )} diff --git a/packages/fuselage/package.json b/packages/fuselage/package.json index fc7fbcb096..01b23702df 100644 --- a/packages/fuselage/package.json +++ b/packages/fuselage/package.json @@ -45,7 +45,9 @@ "dependencies": { "@rocket.chat/css-in-js": "^0.8.0", "@rocket.chat/fuselage-tokens": "^0.8.0", - "@rocket.chat/icons": "^0.8.0" + "@rocket.chat/icons": "^0.8.0", + "invariant": "^2.2.4", + "mem": "^6.1.0" }, "devDependencies": { "@babel/core": "^7.4.5", diff --git a/packages/fuselage/src/components/Accordion/Item.js b/packages/fuselage/src/components/Accordion/Item.js index 00a75c7bfd..911026bcde 100644 --- a/packages/fuselage/src/components/Accordion/Item.js +++ b/packages/fuselage/src/components/Accordion/Item.js @@ -80,18 +80,18 @@ export function Item({ const barProps = noncollapsible ? nonCollapsibleProps : collapsibleProps; - return - {title && - {title} + return + {title && + {title} {!noncollapsible && <> {(disabled || onToggleEnabled) - && + && } } } - + {children} ; diff --git a/packages/fuselage/src/components/Accordion/Item.stories.mdx b/packages/fuselage/src/components/Accordion/Item.stories.mdx index efaf45fe2c..af461e85c9 100644 --- a/packages/fuselage/src/components/Accordion/Item.stories.mdx +++ b/packages/fuselage/src/components/Accordion/Item.stories.mdx @@ -14,7 +14,7 @@ A collapsible panel. - Content + Content @@ -28,7 +28,7 @@ A collapsible panel. - Content + Content @@ -40,7 +40,7 @@ A collapsible panel. - Content + Content @@ -56,7 +56,7 @@ is non - Content + Content @@ -70,7 +70,7 @@ is non - Content + Content @@ -82,7 +82,7 @@ is non - Content + Content diff --git a/packages/fuselage/src/components/Accordion/index.js b/packages/fuselage/src/components/Accordion/index.js index 84b5854d1b..105f901743 100644 --- a/packages/fuselage/src/components/Accordion/index.js +++ b/packages/fuselage/src/components/Accordion/index.js @@ -5,7 +5,7 @@ import { Item } from './Item'; import { Box } from '../Box'; export function Accordion(props) { - return ; + return ; } Accordion.propTypes = { diff --git a/packages/fuselage/src/components/Accordion/stories.mdx b/packages/fuselage/src/components/Accordion/stories.mdx index d7ced91fb8..1f6bcd8961 100644 --- a/packages/fuselage/src/components/Accordion/stories.mdx +++ b/packages/fuselage/src/components/Accordion/stories.mdx @@ -14,13 +14,13 @@ sections of content. - Content #1 + Content #1 - Content #2 + Content #2 - Content #3 + Content #3 diff --git a/packages/fuselage/src/components/AutoComplete/index.js b/packages/fuselage/src/components/AutoComplete/index.js index f0797ea76f..95408a5536 100644 --- a/packages/fuselage/src/components/AutoComplete/index.js +++ b/packages/fuselage/src/components/AutoComplete/index.js @@ -1,17 +1,32 @@ import React, { useState, useEffect, useRef } from 'react'; -import { Icon } from '../Icon'; -import { Margins, Chip, InputBox, Options, OptionAvatar } from '../..'; import { Box, PositionAnimated } from '../Box'; -import { useCursor } from '../Options'; +import { Chip } from '../Chip'; +import { Icon } from '../Icon'; +import { useCursor, Options, OptionAvatar } from '../Options'; +import { InputBox } from '../InputBox'; + +const Item = (props) => ; + +const Container = React.forwardRef(({ children, ...props }, ref) => + {children.map((c, i) => {c})} +); + +const Addon = (props) => ; -const Item = ({ children }) => {children}; -const Container = React.forwardRef(({ children, ...props }, ref) => {children.map((c, i) => {c})}); -const Addon = Box.extend('rcx-autocomplete__addon', 'div'); const SelectedOptions = React.memo((props) => ); -// const Focus = React.forwardRef((props, ref) => ); -const prevent = (e) => e.preventDefault() & e.stopPropagation(); -export const AutoComplete = function AutoComplete({ + +const prevent = (e) => { + e.preventDefault(); + e.stopPropagation(); +}; + +export function AutoComplete({ value, filter, setFilter = () => {}, @@ -34,8 +49,9 @@ export const AutoComplete = function AutoComplete({ setInternalValue([...currentValue, value]); }; - useEffect(() => onChange(currentValue), [currentValue.join()]); - + useEffect(() => { + onChange(currentValue); + }, [currentValue, onChange]); const [cursor, handleKeyDown, setCursor, reset, [visible, hide, show]] = useCursor(value, options, onChange); @@ -44,7 +60,7 @@ export const AutoComplete = function AutoComplete({ return ( ref.current.focus()}> - setFilter(e.currentTarget.value)} onBlur={hide} onFocus={show} onKeyDown={handleKeyDown} placeholder={placeholder} style={{ order: 1 }} mod-undecorated value={value}/> + setFilter(e.currentTarget.value)} onBlur={hide} onFocus={show} onKeyDown={handleKeyDown} placeholder={placeholder} order={1} rcx-input-box--undecorated value={value}/> {currentValue.map((value) => prevent(e) & internalChanged(value) && false} children={getLabel(options.find((option) => getValue(option) === value))}/>)} }/> @@ -53,19 +69,4 @@ export const AutoComplete = function AutoComplete({ ); -}; - -// export const AutoCompleteExample = () => { -// const [options, setOptions] = useState([]); -// const [filter, setFilter] = useState(''); -// const [value, setValue] = useState([]); - -// useEffect(() => { -// (async () => { -// const result = await Promise.resolve([]); -// setOptions(result); -// })(); -// }, [filter]); - -// return ; -// }; +} diff --git a/packages/fuselage/src/components/Avatar/index.js b/packages/fuselage/src/components/Avatar/index.js index 0d4d9bf415..34f3985370 100644 --- a/packages/fuselage/src/components/Avatar/index.js +++ b/packages/fuselage/src/components/Avatar/index.js @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React, { useContext, createContext } from 'react'; -import { sizePropType } from '../../propTypes/sizes'; import { Box } from '../Box'; +import { sizePropType } from '../../styles/props/layout'; const AvatarContext = createContext({ baseUrl: '', @@ -19,7 +19,7 @@ export function Avatar({ return @@ -47,7 +47,7 @@ Avatar.propTypes = { }; const AvatarStack = ({ children, ...props }) => - + {React.Children.toArray(children).reverse()} ; diff --git a/packages/fuselage/src/components/Box/AnimatedVisibility/index.js b/packages/fuselage/src/components/Box/AnimatedVisibility/index.js index 4981f957eb..72e32a0aa0 100644 --- a/packages/fuselage/src/components/Box/AnimatedVisibility/index.js +++ b/packages/fuselage/src/components/Box/AnimatedVisibility/index.js @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import React, { useEffect, useState } from 'react'; import { PropsProvider } from '../PropsContext'; -import { useCss } from '../useCss'; export function AnimatedVisibility({ children, visibility: propVisibility = AnimatedVisibility.HIDDEN }) { const [visibility, setVisibility] = useState(propVisibility); @@ -23,7 +22,7 @@ export function AnimatedVisibility({ children, visibility: propVisibility = Anim }); }, [propVisibility]); - const animatedVisibilityClassName = useCss([ + const animatedVisibilityStyles = [ css` animation-duration: 230ms; animation-duration: var(--rcx-theme-transition-duration, 230ms);; @@ -54,7 +53,7 @@ export function AnimatedVisibility({ children, visibility: propVisibility = Anim } ` }; `, - ], [visibility]); + ]; const handleAnimationEnd = useMutableCallback(() => setVisibility((visibility) => { if (visibility === AnimatedVisibility.HIDING) { @@ -73,7 +72,7 @@ export function AnimatedVisibility({ children, visibility: propVisibility = Anim } return ({ - className: [className, animatedVisibilityClassName].filter(Boolean).join(' '), + className: [className, ...animatedVisibilityStyles], ...props, onAnimationEnd: handleAnimationEnd, })} memoized />; diff --git a/packages/fuselage/src/components/Box/Flex/stories.mdx b/packages/fuselage/src/components/Box/Flex/stories.mdx deleted file mode 100644 index 5916467cf9..0000000000 --- a/packages/fuselage/src/components/Box/Flex/stories.mdx +++ /dev/null @@ -1,209 +0,0 @@ -import { Meta, Preview, Props, Story } from '@storybook/addon-docs/blocks'; - -import { Box, Flex, Tile } from '../../..'; - - - -# Flex - - - - - - {Array.from({ length: 3 }, (_, i) => - - #{i + 1} - - )} - - - - - -## Flex.Container - - - -### Direction - - - - - - {Array.from({ length: 3 }, (_, i) => - - #{i + 1} - - )} - - - - - -### Wrap - - - - - - {Array.from({ length: 12 }, (_, i) => - - #{i + 1} - - )} - - - - - -### Justify content - - - - - - {Array.from({ length: 3 }, (_, i) => - - #{i + 1} - - )} - - - - - -### Align items - - - - - - {Array.from({ length: 3 }, (_, i) => - - #{i + 1} - - )} - - - - - -### Align content - - - - - - {Array.from({ length: 12 }, (_, i) => - - #{i + 1} - - )} - - - - - -## Flex.Item - - - -### Order - - - - - - - #1 - - - #2 - - - #3 - - - - - - -### Grow - - - - - - - #1 - - - #2 - - - #3 - - - - - - -### Shrink - - - - - - - #1 - - - #2 - - - #3 - - - - - - -### Basis - - - - - - - #1 - - - #2 - - - #3 - - - - - - -### Align - - - - - - - #1 - - - #2 - - - #3 - - - - - diff --git a/packages/fuselage/src/components/Box/Margins/index.js b/packages/fuselage/src/components/Box/Margins/index.js index 001a6cad63..b56251e08f 100644 --- a/packages/fuselage/src/components/Box/Margins/index.js +++ b/packages/fuselage/src/components/Box/Margins/index.js @@ -1,7 +1,8 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { PropsProvider } from '../PropsContext'; -import { marginPropType } from '../../../propTypes/margins'; +import { marginPropType } from '../../../styles/props/spaces'; export function Margins({ children, @@ -26,11 +27,11 @@ export function Margins({ } Margins.propTypes = { - all: marginPropType, - block: marginPropType, - blockStart: marginPropType, - blockEnd: marginPropType, - inline: marginPropType, - inlineStart: marginPropType, - inlineEnd: marginPropType, + all: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + block: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + blockStart: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + blockEnd: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + inline: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + inlineStart: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + inlineEnd: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), }; diff --git a/packages/fuselage/src/components/Box/PlainText.stories.mdx b/packages/fuselage/src/components/Box/PlainText.stories.mdx deleted file mode 100644 index 5211515ea0..0000000000 --- a/packages/fuselage/src/components/Box/PlainText.stories.mdx +++ /dev/null @@ -1,41 +0,0 @@ -import { Meta, Preview, Props, Story } from '@storybook/addon-docs/blocks'; -import { Box } from '../..'; - - - -# Box - -### Text styles - - - - <> - H1 - S1 - S2 - P1 - P2 - C1 - C2 - Micro - - - - -### Text colors - - - - <> - Default - Info - Hint - Disabled - Alternative - Primary - Success - Danger - Warning - - - diff --git a/packages/fuselage/src/components/Box/Position/index.js b/packages/fuselage/src/components/Box/Position/index.js index bd2edef997..aa4ecdbcee 100644 --- a/packages/fuselage/src/components/Box/Position/index.js +++ b/packages/fuselage/src/components/Box/Position/index.js @@ -9,7 +9,6 @@ import React, { import ReactDOM from 'react-dom'; import { AnimatedVisibility } from '../AnimatedVisibility'; -import { useCss } from '../useCss'; const top = (top) => ({ top }); const left = (left) => ({ left }); @@ -114,17 +113,19 @@ export const Position = ({ anchor, width = 'stretch', style, className, children useEffect(() => () => document.body.removeChild(portalContainer), []); - const positionClassName = useCss(css` - position: fixed; - z-index: 9999; - transition: none; - `, []); - return ReactDOM.createPortal( React.cloneElement(children, { ref, style: { ...position, ...children.props.style, ...style }, - className: [className, positionClassName, children.props.className].filter(Boolean).join(' '), + className: [ + className, + css` + position: fixed; + z-index: 9999; + transition: none; + `, + children.props.className, + ], }), portalContainer, ); diff --git a/packages/fuselage/src/components/Box/RichText.stories.mdx b/packages/fuselage/src/components/Box/RichText.stories.mdx deleted file mode 100644 index f98c47ec2a..0000000000 --- a/packages/fuselage/src/components/Box/RichText.stories.mdx +++ /dev/null @@ -1,333 +0,0 @@ -import { Meta, Preview, Props, Story } from '@storybook/addon-docs/blocks'; -import { Box } from '../..'; - - - -# Box - -### Rich text - -#### Inline - - - - - default - - - - - - - - strong importance - - - - - - - - emphasis - - - - - - - - bring attention - - - - - - - - technical terms, foreign language phrases, or fictional character thoughts - - - - - - - - <> - Normal
- Visited
- Active
- Hovered
- -
-
-
- - - - - The problem with quotes found on the internet is that they are often not true. Abraham Lincoln - - - - - - - - inline code - - - - - - - - - - - - - - - - Definition: description. - - - - - - - - SDK - - - - - - - - deleted inserted - - - - - - - - superscript subscript - - - - - - - - Ctrl + Alt + Del - - - - - - - - x² + y² = r² - - - - - - - - small text - - - - -#### Block - - - - - <> -

Heading 1

-

Heading 2

-

Heading 3

-

Heading 4

-
Heading 5
-
Heading 6
- -
-
-
- - - - -

Paragraph

-
-
-
- - - - -
    -
  • unordered list item 1
  • -
  • unordered list item 2
  • -
  • unordered list item 3
  • -
-
-
-
- - - - -
    -
  1. ordered list item 1
  2. -
  3. ordered list item 2
  4. -
  5. ordered list item 3
  6. -
-
-
-
- - - - -
-
description list term 1
-
description list description 1
-
description list term 2
-
description list description 2
-
description list term 3
-
description list description 3
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column 1Column 2Column 3
Item 1 of row 1Item 2 of row 1Item 3 of row 1
Item 1 of row 2Item 2 of row 2Item 3 of row 2
Item 1 of row 3Item 2 of row 3Item 3 of row 3
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Caption
Column 1Column 2Column 3
Column 1Column 2Column 3
Item 1 of row 1Item 2 of row 1Item 3 of row 1
Item 1 of row 2Item 2 of row 2Item 3 of row 2
Item 1 of row 3Item 2 of row 3Item 3 of row 3
-
-
-
- - - - -
-

- Words can be like X-rays, if you use them properly — they’ll go through anything. - You read and you’re pierced. -

-
— Aldous Huxley, Brave New World
-
-
-
-
- - - - -
-        # A UNINTENDED LOL-ZONE: SORRY FOR THIS{'\n'}
-        # ------------+----------+-------------{'\n'}
-        #      /\O    |    _O    |      O      {'\n'}
-        #       /\/   |   //|_   |     /_      {'\n'}
-        #      /\     |    |     |     |\      {'\n'}
-        #     /  \    |   /|     |    / |      {'\n'}
-        #   LOL  LOL  |   LLOL   |  LOLLOL     {'\n'}
-        # ------------+----------+-------------{'\n'}
-        # BLACK MAGIC FULL FEATURED ENABLED
-      
-
-
-
- - - - -
-        
-          # A UNINTENDED LOL-ZONE: SORRY FOR THIS{'\n'}
-          # ------------+----------+-------------{'\n'}
-          #      /\O    |    _O    |      O      {'\n'}
-          #       /\/   |   //|_   |     /_      {'\n'}
-          #      /\     |    |     |     |\      {'\n'}
-          #     /  \    |   /|     |    / |      {'\n'}
-          #   LOL  LOL  |   LLOL   |  LOLLOL     {'\n'}
-          # ------------+----------+-------------{'\n'}
-          # BLACK MAGIC FULL FEATURED ENABLED
-        
-      
-
-
-
diff --git a/packages/fuselage/src/components/Box/Scrollable/index.js b/packages/fuselage/src/components/Box/Scrollable/index.js index 0e59ba5d43..4de0d62254 100644 --- a/packages/fuselage/src/components/Box/Scrollable/index.js +++ b/packages/fuselage/src/components/Box/Scrollable/index.js @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import React, { useRef } from 'react'; import { PropsProvider } from '../PropsContext'; -import { useCss } from '../useCss'; const getTouchingEdges = (element) => ({ top: !element.scrollTop, @@ -29,35 +28,6 @@ const pollTouchingEdges = (element, touchingEdgesRef, onScrollContent) => { }; export function Scrollable({ children, horizontal, vertical, smooth, onScrollContent }) { - const scrollableClassName = useCss([ - css` - position: relative; - - &::-webkit-scrollbar { - width: ${ 4 / 16 }rem; - height: ${ 4 / 16 }rem; - } - - &::-webkit-scrollbar-track { - background-color: transparent; - } - - &::-webkit-scrollbar-thumb { - background-color: rgba(0, 0, 0, 0.05); - background-color: var(--rcx-theme-scrollbar-thumb-color, rgba(0, 0, 0, 0.05)); - } - - &:hover::-webkit-scrollbar-thumb { - background-color: rgba(0, 0, 0, 0.15); - background-color: var(--rcx-theme-scrollbar-thumb-hover-color, rgba(0, 0, 0, 0.15)); - } - `, - (horizontal && css`overflow-x: auto !important;`) - || (vertical && css`overflow-y: auto !important;`) - || css`overflow: auto !important;`, - smooth && css`scroll-behavior: smooth !important;`, - ], [horizontal, vertical, smooth]); - const scrollTimeoutRef = useRef(); const touchingEdgesRef = useRef({}); @@ -76,7 +46,35 @@ export function Scrollable({ children, horizontal, vertical, smooth, onScrollCon }); return ({ - className: [className, scrollableClassName].filter(Boolean).join(' '), + className: [ + className, + css` + position: relative; + + &::-webkit-scrollbar { + width: ${ 4 / 16 }rem; + height: ${ 4 / 16 }rem; + } + + &::-webkit-scrollbar-track { + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.05); + background-color: var(--rcx-theme-scrollbar-thumb-color, rgba(0, 0, 0, 0.05)); + } + + &:hover::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.15); + background-color: var(--rcx-theme-scrollbar-thumb-hover-color, rgba(0, 0, 0, 0.15)); + } + `, + (horizontal && css`overflow-x: auto !important;`) + || (vertical && css`overflow-y: auto !important;`) + || css`overflow: auto !important;`, + smooth && css`scroll-behavior: smooth !important;`, + ], onScroll: onScrollContent ? handleScroll : undefined, ...props, })} memoized />; diff --git a/packages/fuselage/src/components/Box/index.js b/packages/fuselage/src/components/Box/index.js index d236b289df..bed34efaaa 100644 --- a/packages/fuselage/src/components/Box/index.js +++ b/packages/fuselage/src/components/Box/index.js @@ -3,23 +3,20 @@ import React, { createElement, forwardRef, memo, useContext } from 'react'; import { PropsContext } from './PropsContext'; import { useStyleSheet } from './useStyleSheet'; -import { useMergedProps } from './useMergedProps'; -import { marginPropType } from '../../propTypes/margins'; -import { paddingPropType } from '../../propTypes/paddings'; -import { sizePropType } from '../../propTypes/sizes'; +import { mergeProps } from './mergeProps'; +import { marginPropType, paddingPropType } from '../../styles/props/spaces'; +import { colorPropType } from '../../styles/props/colors'; +import { fontFamilyPropType, fontScalePropType } from '../../styles/props/typography'; +import { sizePropType } from '../../styles/props/layout'; +import { insetPropType } from '../../styles/props/position'; export const Box = memo(forwardRef(function Box(props, ref) { useStyleSheet(); const contextProps = useContext(PropsContext); - const mergedProps = useMergedProps(props, contextProps, ref); + const { is, ...mergedProps } = mergeProps(props, contextProps, ref); - const children = createElement(mergedProps.is || 'div', { - ...mergedProps, - is: undefined, - className: Array.from(new Set(mergedProps.className)).filter(Boolean).join(' '), - style: mergedProps.style, - }); + const children = createElement(is || 'div', mergedProps); if (contextProps) { return ; @@ -28,65 +25,80 @@ export const Box = memo(forwardRef(function Box(props, ref) { return children; })); -Box.defaultProps = { - invisible: false, - is: 'div', -}; - Box.propTypes = { - className: PropTypes.string, - componentClassName: PropTypes.string, - invisible: PropTypes.bool, - is: PropTypes.elementType.isRequired, - richText: PropTypes.oneOf(['inline', 'block']), - style: PropTypes.object, - textColor: PropTypes.oneOf([ - 'default', 'info', 'hint', 'disabled', 'alternative', - 'primary', 'success', 'danger', 'warning', - ]), - textStyle: PropTypes.oneOf([ - 'h1', 's1', 's2', 'p1', 'p2', 'c1', 'c2', 'micro', + is: PropTypes.elementType, + className: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.func, + PropTypes.arrayOf(PropTypes.oneOfType([ + PropTypes.string, + PropTypes.func, + ])), ]), + style: PropTypes.object, + componentClassName: PropTypes.string, // Spaces - m: marginPropType, - margin: marginPropType, - mb: marginPropType, - marginBlock: marginPropType, - mbs: marginPropType, - marginBlockStart: marginPropType, - mbe: marginPropType, - marginBlockEnd: marginPropType, - mi: marginPropType, - marginInline: marginPropType, - mis: marginPropType, - marginInlineStart: marginPropType, - mie: marginPropType, - marginInlineEnd: marginPropType, - p: paddingPropType, - padding: paddingPropType, - pb: paddingPropType, - paddingBlock: paddingPropType, - pbs: paddingPropType, - paddingBlockStart: paddingPropType, - pbe: paddingPropType, - paddingBlockEnd: paddingPropType, - pi: paddingPropType, - paddingInline: paddingPropType, - pis: paddingPropType, - paddingInlineStart: paddingPropType, - pie: paddingPropType, - paddingInlineEnd: paddingPropType, + m: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + margin: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + mb: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + marginBlock: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + mbs: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + marginBlockStart: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + mbe: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + marginBlockEnd: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + mi: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + marginInline: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + mis: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + marginInlineStart: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + mie: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + marginInlineEnd: PropTypes.oneOfType([marginPropType, PropTypes.string, PropTypes.number]), + p: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + padding: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + pb: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + paddingBlock: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + pbs: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + paddingBlockStart: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + pbe: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + paddingBlockEnd: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + pi: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + paddingInline: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + pis: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + paddingInlineStart: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + pie: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + paddingInlineEnd: PropTypes.oneOfType([paddingPropType, PropTypes.string, PropTypes.number]), + + // Color + + color: PropTypes.oneOfType([colorPropType, PropTypes.string]), + backgroundColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + opacity: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), + + // Typography + fontFamily: PropTypes.oneOfType([fontFamilyPropType, PropTypes.string]), + fontSize: PropTypes.oneOfType([fontScalePropType, sizePropType, PropTypes.string, PropTypes.number]), + fontWeight: PropTypes.oneOfType([fontScalePropType, PropTypes.string]), + lineHeight: PropTypes.oneOfType([fontScalePropType, sizePropType, PropTypes.string, PropTypes.number]), + letterSpacing: PropTypes.oneOfType([fontScalePropType, PropTypes.string, PropTypes.number]), + fontScale: fontScalePropType, + fontStyle: PropTypes.string, + textAlign: PropTypes.string, + textTransform: PropTypes.string, + textDecorationLine: PropTypes.string, // Layout - w: sizePropType, - width: sizePropType, - minWidth: sizePropType, - maxWidth: sizePropType, - h: sizePropType, - height: sizePropType, - minHeight: sizePropType, - maxHeight: sizePropType, + w: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + width: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + minWidth: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + maxWidth: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + h: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + height: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + minHeight: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + maxHeight: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + size: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + minSize: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + maxSize: PropTypes.oneOfType([sizePropType, PropTypes.string, PropTypes.number]), + htmlSize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), display: PropTypes.string, verticalAlign: PropTypes.string, overflow: PropTypes.string, @@ -106,15 +118,108 @@ Box.propTypes = { justifySelf: PropTypes.string, alignSelf: PropTypes.string, order: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), -}; -Box.extend = (componentClassName, is) => { - const BoxExtension = forwardRef((props, ref) => - ); + // Borders + border: PropTypes.string, + borderBlock: PropTypes.string, + borderBlockStart: PropTypes.string, + borderBlockEnd: PropTypes.string, + borderInline: PropTypes.string, + borderInlineStart: PropTypes.string, + borderInlineEnd: PropTypes.string, + borderWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderBlockWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderBlockStartWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderBlockEndWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderInlineWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderInlineStartWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderInlineEndWidth: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x1', 'x2', 'x4']), + PropTypes.string, + PropTypes.number, + ]), + borderStyle: PropTypes.string, + borderBlockStyle: PropTypes.string, + borderBlockStartStyle: PropTypes.string, + borderBlockEndStyle: PropTypes.string, + borderInlineStyle: PropTypes.string, + borderInlineStartStyle: PropTypes.string, + borderInlineEndStyle: PropTypes.string, + borderColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderBlockColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderBlockStartColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderBlockEndColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderInlineColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderInlineStartColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderInlineEndColor: PropTypes.oneOfType([colorPropType, PropTypes.string]), + borderRadius: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x2', 'x4', 'full']), + PropTypes.string, + PropTypes.number, + ]), + borderStartStartRadius: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x2', 'x4', 'full']), + PropTypes.string, + PropTypes.number, + ]), + borderStartEndRadius: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x2', 'x4', 'full']), + PropTypes.string, + PropTypes.number, + ]), + borderEndStartRadius: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x2', 'x4', 'full']), + PropTypes.string, + PropTypes.number, + ]), + borderEndEndRadius: PropTypes.oneOfType([ + PropTypes.oneOf(['none', 'x2', 'x4', 'full']), + PropTypes.string, + PropTypes.number, + ]), - BoxExtension.displayName = componentClassName; + // Inset + position: PropTypes.string, + zIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + inset: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), + insetBlock: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), + insetBlockStart: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), + insetBlockEnd: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), + insetInline: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), + insetInlineStart: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), + insetInlineEnd: PropTypes.oneOfType([insetPropType, PropTypes.string, PropTypes.number]), - return BoxExtension; + // Special + invisible: PropTypes.bool, + withRichContent: PropTypes.bool, + withTruncatedText: PropTypes.bool, + richText: PropTypes.oneOf(['inline', 'block']), + textColor: colorPropType, + textStyle: fontScalePropType, }; export * from './PropsContext'; diff --git a/packages/fuselage/src/components/Box/mapClassNames.js b/packages/fuselage/src/components/Box/mapClassNames.js new file mode 100644 index 0000000000..6b8be3d0c7 --- /dev/null +++ b/packages/fuselage/src/components/Box/mapClassNames.js @@ -0,0 +1,48 @@ +export const mapClassNames = ({ className, componentClassName, ...props }) => { + const modifierClassNames = []; + + if (componentClassName) { + console.warn('The `componentClassName` property is deprecated; prefer `rcx-*` properties'); + } + + for (const [name, value] of Object.entries(props)) { + if (name.slice(0, 4) === 'mod-') { + console.warn('`mod-*` properties are deprecated; prefer `rcx-*` properties'); + + delete props[name]; + + if (value === true) { + modifierClassNames.push(`${ componentClassName }--${ name.slice(4) }`); + continue; + } + + if (value) { + modifierClassNames.push(`${ componentClassName }--${ name.slice(4) }-${ value }`); + } + + continue; + } + + if (name.slice(0, 4) === 'rcx-') { + delete props[name]; + + if (value === true) { + modifierClassNames.push(name); + continue; + } + + if (value) { + modifierClassNames.push(`${ name }-${ value }`); + } + } + } + + return { + className: [ + componentClassName, + ...modifierClassNames, + ...className, + ], + ...props, + }; +}; diff --git a/packages/fuselage/src/components/Box/mergeProps.js b/packages/fuselage/src/components/Box/mergeProps.js new file mode 100644 index 0000000000..91110d497f --- /dev/null +++ b/packages/fuselage/src/components/Box/mergeProps.js @@ -0,0 +1,75 @@ +import { createSelector, transpile, referenceRules } from '@rocket.chat/css-in-js'; + +import { mapClassNames } from './mapClassNames'; +import { mapSpaceProps } from '../../styles/props/spaces'; +import { mapLayoutProps } from '../../styles/props/layout'; +import { mapFlexBoxProps } from '../../styles/props/flexBox'; +import { mapColorProps } from '../../styles/props/colors'; +import { mapTypographyProps } from '../../styles/props/typography'; +import { mapBorderProps } from '../../styles/props/borders'; +import { mapPositionProps } from '../../styles/props/position'; +import { mapSpecialProps } from '../../styles/props/special'; + +export const mergeProps = (props, contextProps, ref) => { + const initialProps = { + ref, + ...contextProps, + ...props, + className: [ + 'rcx-box', + ...Array.isArray(contextProps?.className) ? contextProps?.className : [contextProps?.className], + ...Array.isArray(props.className) ? props.className : [props.className], + ], + style: { + ...contextProps?.style, + ...props.style, + }, + }; + + const mergedProps = [ + mapSpecialProps, + mapClassNames, + mapSpaceProps, + mapLayoutProps, + mapColorProps, + mapTypographyProps, + mapFlexBoxProps, + mapBorderProps, + mapPositionProps, + ].reduce((props, transform) => transform(props), initialProps); + + const rules = []; + + mergedProps.className = Array.from( + new Set( + mergedProps.className.map((className) => { + if (typeof className === 'function') { + rules.push(className(rules)); + return undefined; + } + + if (typeof className === 'string') { + return className; + } + + return undefined; + }).filter(Boolean), + ), + ); + + mergedProps.className = mergedProps.className.join(' '); + + const content = rules.filter(Boolean).join('') || undefined; + + if (!content) { + return mergedProps; + } + + const [className, encodedClassName] = createSelector(content); + const parsedRules = transpile(`.rcx-box.${ encodedClassName }`, content); + referenceRules(parsedRules); + + mergedProps.className += ` ${ className }`; + + return mergedProps; +}; diff --git a/packages/fuselage/src/components/Box/props.stories.mdx b/packages/fuselage/src/components/Box/props.stories.mdx new file mode 100644 index 0000000000..03542e374e --- /dev/null +++ b/packages/fuselage/src/components/Box/props.stories.mdx @@ -0,0 +1,653 @@ +import { css } from '@rocket.chat/css-in-js'; +import { Meta, Preview, Props, Story } from '@storybook/addon-docs/blocks'; +import { Box, Button } from '../..'; + + + +# Box + +## Props + +Most of the props are designed to change styles by creating CSS rules at runtime. + + + +### `is` prop + +The `is` prop allows `Box` to render any component capable of handling common DOM attributes, specially `className` and +`style`. + + + + A Box rendering a Button + + + +### Space + +#### Margins + + + + {React.Children.map(fn().props.children, (child) => + {React.cloneElement(child, { bg:'primary-200' }, )} + )} + + ]} + > + <> + + + + + + + + + + + + + + + + + + +#### Paddings + + + + {React.Children.map(fn().props.children, (child) => + {React.cloneElement(child, { bg:'primary-200' }, )} + )} + + ]} + > + <> + + + + + + + + + + + + + + + + + + +### Color + +#### Colors + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg: 'neutral-200', m: 'x4', p: 'x4' }, child.props.color))} + + ]} + > + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#### Background colors + + + + {React.Children.map(fn().props.children, (child) => React.cloneElement(child, { m: 'x4', size: 'x32' }))} + + ]} + > + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#### Opacity + + + React.cloneElement(fn(), { size: 'x32', bg: 'neutral-500' })]} + > + + + + +### Typography + +#### Font families + + + + <> + The quick brown fox jumps over the lazy dog + The quick brown fox jumps over the lazy dog + + + + +#### Font sizes + + + + <> + x12 + x16 + x20 + x24 + x32 + h1 + s1 + s2 + p1 + p2 + c1 + c2 + micro + + + + +#### Font weights + + + + <> + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + h1 + s1 + s2 + p1 + p2 + c1 + c2 + micro + + + + +#### Line heights + + + + <> + 1 + 1.25 + 1.5 + 2 + h1 + s1 + s2 + p1 + p2 + c1 + c2 + micro + + + + +#### Letter spacing + + + + <> + 4px + -4px + h1 + s1 + s2 + p1 + p2 + c1 + c2 + micro + + + + +#### Font scales + + + + <> + h1 + s1 + s2 + p1 + p2 + c1 + c2 + micro + + + + +#### Font styles + + + + <> + normal + italic + + + + +#### Text alignment + + + + <> + start + end + center + justify + + + + +#### Text transform + + + + <> + none + uppercase + lowercase + capitalize + + + + +#### Text decoration + + + + <> + none + underline + overline + line-through + + + + +### Layout + +#### Widths + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg:'primary-200', h: 'x32', m: 'x4' }))} + + ]} + > + <> + + + + + + + + +#### Heights + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg:'primary-200', w: 'x32', m: 'x4' }))} + + ]} + > + <> + + + + + + + + +#### Sizes + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg:'primary-200', m: 'x4' }))} + + ]} + > + <> + + + + + + + +#### Display + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { children: child.props.display }))} + + ]} + > + <> + + + + + + + + + + + +#### Vertical alignment + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { display: 'inline', children: child.props.verticalAlign }))} + + ]} + > + + + + + + + + + + + + +### Borders + +#### Borders + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg:'primary-200', size: 'x32', m: 'x16' }))} + + ]} + > + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#### Border radii + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg:'primary-200', size: 'x32', m: 'x16' }))} + + ]} + > + <> + + + + + + + + + +### Position + +#### Position + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg:'primary-200', size: 'x32', m: 'x16' }))} + + ]} + > + <> + + + + + + + + + +#### Z-index + + + + {React.Children.map(fn().props.children, (child) => + React.cloneElement(child, { bg: 'primary-200', borderWidth: 'x4', size: 'x32', m: 'neg-x2' }))} + + ]} + > + <> + + + + + + + + +#### Inset + + + + {React.Children.map(fn().props.children, (child) => + {React.cloneElement(child, { bg:'primary-200', position: 'absolute', minSize: 'x16' })} + )} + + ]} + > + <> + + + + + + + + + + + + + + + + +### Special + +#### Invisible + + + + {React.Children.map(fn(), (child) => + {React.cloneElement(child, { bg:'primary-200', size: 'x16' })} + )} + + ]} + > + + + + +#### With rich content + + + + +

This text is strong

+

This text has emphasis

+

This is subscript and superscript

+
+
+
+ +#### With truncated text + + + + + This text is truncated. + + + diff --git a/packages/fuselage/src/components/Box/richContent.stories.mdx b/packages/fuselage/src/components/Box/richContent.stories.mdx new file mode 100644 index 0000000000..e5da01e591 --- /dev/null +++ b/packages/fuselage/src/components/Box/richContent.stories.mdx @@ -0,0 +1,283 @@ +import { Meta, Preview, Props, Story } from '@storybook/addon-docs/blocks'; +import { Box } from '../..'; + + {fn()} + ]} +/> + +# Box + +## Rich content + +Here is how rich content will be rendered, in details. + +### Inline + + + + strong importance + + + + + + emphasis + + + + + + bring attention + + + + + + technical terms, foreign language phrases, or fictional character thoughts + + + + + + <> + Normal
+ Visited
+ Active
+ Hovered
+ +
+
+ + + + The problem with quotes found on the internet is that they are often not true. Abraham Lincoln + + + + + + inline code + + + + + + + + + + + + Definition: description. + + + + + + SDK + + + + + + deleted inserted + + + + + + superscript subscript + + + + + + Ctrl + Alt + Del + + + + + + x² + y² = r² + + + + + + small text + + + +#### Block + + + + <> +

Heading 1

+

Heading 2

+

Heading 3

+

Heading 4

+
Heading 5
+
Heading 6
+ +
+
+ + + +

Paragraph

+
+
+ + + +
    +
  • unordered list item 1
  • +
  • unordered list item 2
  • +
  • unordered list item 3
  • +
+
+
+ + + +
    +
  1. ordered list item 1
  2. +
  3. ordered list item 2
  4. +
  5. ordered list item 3
  6. +
+
+
+ + + +
+
description list term 1
+
description list description 1
+
description list term 2
+
description list description 2
+
description list term 3
+
description list description 3
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Column 1Column 2Column 3
Item 1 of row 1Item 2 of row 1Item 3 of row 1
Item 1 of row 2Item 2 of row 2Item 3 of row 2
Item 1 of row 3Item 2 of row 3Item 3 of row 3
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Caption
Column 1Column 2Column 3
Column 1Column 2Column 3
Item 1 of row 1Item 2 of row 1Item 3 of row 1
Item 1 of row 2Item 2 of row 2Item 3 of row 2
Item 1 of row 3Item 2 of row 3Item 3 of row 3
+
+
+ + + +
+

+ Words can be like X-rays, if you use them properly — they’ll go through anything. + You read and you’re pierced. +

+
— Aldous Huxley, Brave New World
+
+
+
+ + + +
+      # A UNINTENDED LOL-ZONE: SORRY FOR THIS{'\n'}
+      # ------------+----------+-------------{'\n'}
+      #      /\O    |    _O    |      O      {'\n'}
+      #       /\/   |   //|_   |     /_      {'\n'}
+      #      /\     |    |     |     |\      {'\n'}
+      #     /  \    |   /|     |    / |      {'\n'}
+      #   LOL  LOL  |   LLOL   |  LOLLOL     {'\n'}
+      # ------------+----------+-------------{'\n'}
+      # BLACK MAGIC FULL FEATURED ENABLED
+    
+
+
+ + + +
+      
+        # A UNINTENDED LOL-ZONE: SORRY FOR THIS{'\n'}
+        # ------------+----------+-------------{'\n'}
+        #      /\O    |    _O    |      O      {'\n'}
+        #       /\/   |   //|_   |     /_      {'\n'}
+        #      /\     |    |     |     |\      {'\n'}
+        #     /  \    |   /|     |    / |      {'\n'}
+        #   LOL  LOL  |   LLOL   |  LOLLOL     {'\n'}
+        # ------------+----------+-------------{'\n'}
+        # BLACK MAGIC FULL FEATURED ENABLED
+      
+    
+
+
diff --git a/packages/fuselage/src/components/Box/stories.mdx b/packages/fuselage/src/components/Box/stories.mdx index 17bdb00a62..f9c5e7a3e2 100644 --- a/packages/fuselage/src/components/Box/stories.mdx +++ b/packages/fuselage/src/components/Box/stories.mdx @@ -1,60 +1,29 @@ import { Meta, Preview, Props, Story } from '@storybook/addon-docs/blocks'; import { Box, Button } from '../..'; - + # Box -A primitive component with normalized styles. - - - -### `is` prop - -The `is` prop allows `Box` to render any component capable of handling common DOM attributes, specially `className` and -`style`. - - - - A Box rendering a Button - - +A primitive component with normalized styles and a lot of props for prototyping. ### `invisible` prop The `Box` can be hidden using the boolean prop `invisible`. - - - <> - Visible - Invisible - - - - -### `componentClassName` prop and modifier props +### `rcx-` prefixed props -Following the [BEM convention](http://getbem.com/), `Box` elements can have a `componentClassName` comprising the block -and element parts while the modifiers are appended via props prefixed with `mod-`. The generated class name will be -appended to the `className` prop value and `rcx-box` class names coming from components named `Box` modifiers. +As the class names used in Fuselage are prefixed by `rcx-`, props named as `rcx-*` are automatically converted into +values appended to the `className` prop. For instance, ```jsx - + ``` is rendered as ```html -
+
``` - - - - - Component with generated className - - - diff --git a/packages/fuselage/src/components/Box/styles.scss b/packages/fuselage/src/components/Box/styles.scss index d6b1451448..be6852295d 100644 --- a/packages/fuselage/src/components/Box/styles.scss +++ b/packages/fuselage/src/components/Box/styles.scss @@ -1,56 +1,7 @@ -@use '../../styles/colors.scss'; -@use '../../styles/lengths.scss'; -@use '../../styles/typography.scss'; - .rcx-box { &, &::before, &::after { @extend %box; } - - &--invisible { - visibility: hidden; - - opacity: 0; - } - - @each $text-style in typography.$font-scales { - &--text-style-#{ $text-style } { - @include typography.use-font-scale($text-style); - } - } - - &--text-style-headline { - @include typography.use-font-scale(h1); - } - - &--text-style-subtitle { - @include typography.use-font-scale(s1); - } - - &--text-style-paragraph { - @include typography.use-font-scale(p1); - } - - &--text-style-caption { - @include typography.use-font-scale(c1); - } - - @each $text-color in colors.$foreground-types { - &--text-color-#{ $text-color } { - color: colors.foreground($text-color); - } - } - - &--inline { - color: colors.foreground(default); - @extend %--with-inline-elements; - } - - &--block { - color: colors.foreground(default); - @extend %--with-inline-elements; - @extend %--with-block-elements; - } } diff --git a/packages/fuselage/src/components/Box/useCss.js b/packages/fuselage/src/components/Box/useCss.js deleted file mode 100644 index 9fe36a89b5..0000000000 --- a/packages/fuselage/src/components/Box/useCss.js +++ /dev/null @@ -1,28 +0,0 @@ -import { referenceRules, transpile, createSelector } from '@rocket.chat/css-in-js'; -import { useLayoutEffect, useMemo } from 'react'; - -export const useCss = (css, deps) => { - const [className, rules] = useMemo(() => { - if (!css) { - return []; - } - - const cssFns = (Array.isArray(css) ? css : [css]).filter(Boolean); - const rules = []; - rules.push(...cssFns.map((cssFn) => cssFn(rules))); - const content = rules.filter(Boolean).join('') || undefined; - - if (!content) { - return []; - } - - const [className, encodedClassName] = createSelector(content); - - return [className, transpile(`.rcx-box.${ encodedClassName }`, content)]; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, deps); - - useLayoutEffect(() => rules && referenceRules(rules), [rules]); - - return className; -}; diff --git a/packages/fuselage/src/components/Box/useFlexBoxProps.js b/packages/fuselage/src/components/Box/useFlexBoxProps.js deleted file mode 100644 index c269251488..0000000000 --- a/packages/fuselage/src/components/Box/useFlexBoxProps.js +++ /dev/null @@ -1,56 +0,0 @@ -import { css } from '@rocket.chat/css-in-js'; - -import { useCss } from './useCss'; - -export const useFlexBoxProps = ({ - className, - alignItems, - alignContent, - justifyItems, - justifyContent, - flexWrap, - flexDirection, - flexGrow, - flexShrink, - flexBasis, - justifySelf, - alignSelf, - order, - ...props -}) => { - const flexBoxClassName = useCss([ - alignItems !== undefined && css`align-items: ${ alignItems } !important;`, - alignContent !== undefined && css`align-content: ${ alignContent } !important;`, - justifyItems !== undefined && css`justify-items: ${ justifyItems } !important;`, - justifyContent !== undefined && css`justify-content: ${ justifyContent } !important;`, - flexWrap !== undefined && css`flex-wrap: ${ flexWrap } !important;`, - flexDirection !== undefined && css`flex-direction: ${ flexDirection } !important;`, - flexGrow !== undefined && css`flex-grow: ${ flexGrow } !important;`, - flexShrink !== undefined && css`flex-shrink: ${ flexShrink } !important;`, - flexBasis !== undefined && css`flex-basis: ${ flexBasis } !important;`, - justifySelf !== undefined && css`justify-self: ${ justifySelf } !important;`, - alignSelf !== undefined && css`align-self: ${ alignSelf } !important;`, - order !== undefined && css`order: ${ order } !important;`, - ], [ - alignItems, - alignContent, - justifyItems, - justifyContent, - flexWrap, - flexDirection, - flexGrow, - flexShrink, - flexBasis, - justifySelf, - alignSelf, - order, - ]); - - return { - className: [ - ...className, - flexBoxClassName, - ], - ...props, - }; -}; diff --git a/packages/fuselage/src/components/Box/useLayoutProps.js b/packages/fuselage/src/components/Box/useLayoutProps.js deleted file mode 100644 index 315d7e8a01..0000000000 --- a/packages/fuselage/src/components/Box/useLayoutProps.js +++ /dev/null @@ -1,56 +0,0 @@ -import { css } from '@rocket.chat/css-in-js'; - -import { useCss } from './useCss'; -import { getSizeValue } from '../../propTypes/sizes'; - -export const useLayoutProps = ({ - className, - w, - width = w, - minWidth, - maxWidth, - h, - height = h, - minHeight, - maxHeight, - display, - verticalAlign, - overflow, - overflowX, - overflowY, - ...props -}) => { - const layoutClassName = useCss([ - width && css`width: ${ getSizeValue(width) } !important;`, - minWidth && css`min-width: ${ getSizeValue(minWidth) } !important;`, - maxWidth && css`max-width: ${ getSizeValue(maxWidth) } !important;`, - height && css`height: ${ getSizeValue(height) } !important;`, - minHeight && css`min-height: ${ getSizeValue(minHeight) } !important;`, - maxHeight && css`max-height: ${ getSizeValue(maxHeight) } !important;`, - display && css`display: ${ display } !important;`, - verticalAlign && css`vertical-align: ${ verticalAlign } !important;`, - overflow && css`overflow: ${ overflow } !important;`, - overflowX && css`overflow-x: ${ overflowX } !important;`, - overflowY && css`overflow-y: ${ overflowY } !important;`, - ], [ - width, - minWidth, - maxWidth, - height, - minHeight, - maxHeight, - display, - verticalAlign, - overflow, - overflowX, - overflowY, - ]); - - return { - className: [ - ...className, - layoutClassName, - ], - ...props, - }; -}; diff --git a/packages/fuselage/src/components/Box/useMergedProps.js b/packages/fuselage/src/components/Box/useMergedProps.js deleted file mode 100644 index 02f8a37852..0000000000 --- a/packages/fuselage/src/components/Box/useMergedProps.js +++ /dev/null @@ -1,68 +0,0 @@ -import { useSpaceProps } from './useSpaceProps'; -import { useLayoutProps } from './useLayoutProps'; -import { useFlexBoxProps } from './useFlexBoxProps'; - -const useBoxClassNames = ({ className, invisible, richText, textColor, textStyle, ...props }) => ({ - className: [ - 'rcx-box', - !!invisible && 'rcx-box--invisible', - richText === 'inline' && 'rcx-box--inline', - richText === 'block' && 'rcx-box--block', - textColor && `rcx-box--text-color-${ textColor }`, - textStyle && `rcx-box--text-style-${ textStyle }`, - ...className, - ], - ...props, -}); - -const useModifierClassNames = ({ className, componentClassName, ...props }) => { - const modifierClassNames = []; - - for (const [name, value] of Object.entries(props)) { - if (name.slice(0, 4) === 'mod-') { - delete props[name]; - - if (value === true) { - modifierClassNames.push(`${ componentClassName }--${ name.slice(4) }`); - continue; - } - - if (value) { - modifierClassNames.push(`${ componentClassName }--${ name.slice(4) }-${ value }`); - } - } - } - - return { - className: [ - componentClassName, - ...modifierClassNames, - ...className, - ], - ...props, - }; -}; - -export const useMergedProps = (props, contextProps, ref) => { - const initialProps = { - ref, - ...contextProps, - ...props, - className: [ - ...Array.isArray(contextProps?.className) ? contextProps?.className : [contextProps?.className], - ...Array.isArray(props.className) ? props.className : [props.className], - ], - style: { - ...contextProps?.style, - ...props.style, - }, - }; - - return [ - useBoxClassNames, - useModifierClassNames, - useSpaceProps, - useLayoutProps, - useFlexBoxProps, - ].reduceRight((props, transform) => transform(props), initialProps); -}; diff --git a/packages/fuselage/src/components/Box/useSpaceProps.js b/packages/fuselage/src/components/Box/useSpaceProps.js deleted file mode 100644 index 2a13a29037..0000000000 --- a/packages/fuselage/src/components/Box/useSpaceProps.js +++ /dev/null @@ -1,246 +0,0 @@ -import { css } from '@rocket.chat/css-in-js'; - -import { getMarginValue } from '../../propTypes/margins'; -import { getPaddingValue } from '../../propTypes/paddings'; -import { useCss } from './useCss'; - -const getMarginBlock = (() => { - if (window.CSS && window.CSS.supports('margin-block: auto')) { - return (value) => css`margin-block: ${ value } !important;`; - } - - if (window.CSS && window.CSS.supports('margin-block-start: auto') && window.CSS.supports('margin-block-end: auto')) { - return (value) => css` - margin-block-start: ${ value } !important; - margin-block-end: ${ value } !important; - `; - } - - return (value) => css` - margin-top: ${ value } !important; - margin-bottom: ${ value } !important; - `; -})(); - -const getMarginBlockStart = (() => { - if (window.CSS && window.CSS.supports('margin-block-start: auto')) { - return (value) => css`margin-block-start: ${ value } !important;`; - } - - return (value) => css`margin-top: ${ value } !important;`; -})(); - -const getMarginBlockEnd = (() => { - if (window.CSS && window.CSS.supports('margin-block-end: auto')) { - return (value) => css`margin-block-end: ${ value } !important;`; - } - - return (value) => css`margin-bottom: ${ value } !important;`; -})(); - -const getMarginInline = (() => { - if (window.CSS && window.CSS.supports('margin-inline: auto')) { - return (value) => css`margin-inline: ${ value } !important;`; - } - - if (window.CSS && window.CSS.supports('margin-inline-start: auto') && window.CSS.supports('margin-inline-end: auto')) { - return (value) => css` - margin-inline-start: ${ value } !important; - margin-inline-end: ${ value } !important; - `; - } - - return (value) => css` - margin-left: ${ value } !important; - margin-right: ${ value } !important; - `; -})(); - -const getMarginInlineStart = (() => { - if (window.CSS && window.CSS.supports('margin-inline-start: auto')) { - return (value) => css`margin-inline-start: ${ value } !important;`; - } - - return (value) => css` - [dir=ltr] & { - margin-left: ${ value } !important; - } - - [dir=rtl] & { - margin-right: ${ value } !important; - } - `; -})(); - -const getMarginInlineEnd = (() => { - if (window.CSS && window.CSS.supports('margin-inline-end: auto')) { - return (value) => css`margin-inline-end: ${ value } !important;`; - } - - return (value) => css` - [dir=ltr] & { - margin-right: ${ value } !important; - } - - [dir=rtl] & { - margin-left: ${ value } !important; - } - `; -})(); - -const getPaddingBlock = (() => { - if (window.CSS && window.CSS.supports('padding-block: auto')) { - return (value) => css`padding-block: ${ value } !important;`; - } - - if (window.CSS && window.CSS.supports('padding-block-start: auto') && window.CSS.supports('padding-block-end: auto')) { - return (value) => css` - padding-block-start: ${ value } !important; - padding-block-end: ${ value } !important; - `; - } - - return (value) => css` - padding-top: ${ value } !important; - padding-bottom: ${ value } !important; - `; -})(); - -const getPaddingBlockStart = (() => { - if (window.CSS && window.CSS.supports('padding-block-start: auto')) { - return (value) => css`padding-block-start: ${ value } !important;`; - } - - return (value) => css`padding-top: ${ value } !important;`; -})(); - -const getPaddingBlockEnd = (() => { - if (window.CSS && window.CSS.supports('padding-block-end: auto')) { - return (value) => css`padding-block-end: ${ value } !important;`; - } - - return (value) => css`padding-bottom: ${ value } !important;`; -})(); - -const getPaddingInline = (() => { - if (window.CSS && window.CSS.supports('padding-inline: auto')) { - return (value) => css`padding-inline: ${ value } !important;`; - } - - if (window.CSS && window.CSS.supports('padding-inline-start: auto') && window.CSS.supports('padding-inline-end: auto')) { - return (value) => css` - padding-inline-start: ${ value } !important; - padding-inline-end: ${ value } !important; - `; - } - - return (value) => css` - padding-left: ${ value } !important; - padding-right: ${ value } !important; - `; -})(); - -const getPaddingInlineStart = (() => { - if (window.CSS && window.CSS.supports('padding-inline-start: auto')) { - return (value) => css`padding-inline-start: ${ value } !important;`; - } - - return (value) => css` - [dir=ltr] & { - padding-left: ${ value } !important; - } - - [dir=rtl] & { - padding-right: ${ value } !important; - } - `; -})(); - -const getPaddingInlineEnd = (() => { - if (window.CSS && window.CSS.supports('padding-inline-end: auto')) { - return (value) => css`padding-inline-end: ${ value } !important;`; - } - - return (value) => css` - [dir=ltr] & { - padding-right: ${ value } !important; - } - - [dir=rtl] & { - padding-left: ${ value } !important; - } - `; -})(); - -export const useSpaceProps = ({ - className, - m, - margin = m, - mi, - marginInline = mi, - mis, - marginInlineStart = mis, - mie, - marginInlineEnd = mie, - mb, - marginBlock = mb, - mbs, - marginBlockStart = mbs, - mbe, - marginBlockEnd = mbe, - p, - padding = p, - pi, - paddingInline = pi, - pis, - paddingInlineStart = pis, - pie, - paddingInlineEnd = pie, - pb, - paddingBlock = pb, - pbs, - paddingBlockStart = pbs, - pbe, - paddingBlockEnd = pbe, - ...props -}) => { - const spacesClassName = useCss([ - margin !== undefined && css`margin: ${ getMarginValue(margin) } !important;`, - marginBlock !== undefined && getMarginBlock(getMarginValue(marginBlock)), - marginBlockStart !== undefined && getMarginBlockStart(getMarginValue(marginBlockStart)), - marginBlockEnd !== undefined && getMarginBlockEnd(getMarginValue(marginBlockEnd)), - marginInline !== undefined && getMarginInline(getMarginValue(marginInline)), - marginInlineStart !== undefined && getMarginInlineStart(getMarginValue(marginInlineStart)), - marginInlineEnd !== undefined && getMarginInlineEnd(getMarginValue(marginInlineEnd)), - padding !== undefined && css`padding: ${ getPaddingValue(padding) } !important;`, - paddingBlock !== undefined && getPaddingBlock(getPaddingValue(paddingBlock)), - paddingBlockStart !== undefined && getPaddingBlockStart(getPaddingValue(paddingBlockStart)), - paddingBlockEnd !== undefined && getPaddingBlockEnd(getPaddingValue(paddingBlockEnd)), - paddingInline !== undefined && getPaddingInline(getPaddingValue(paddingInline)), - paddingInlineStart !== undefined && getPaddingInlineStart(getPaddingValue(paddingInlineStart)), - paddingInlineEnd !== undefined && getPaddingInlineEnd(getPaddingValue(paddingInlineEnd)), - ], [ - margin, - marginBlock, - marginBlockStart, - marginBlockEnd, - marginInline, - marginInlineStart, - marginInlineEnd, - padding, - paddingInline, - paddingInlineStart, - paddingInlineEnd, - paddingBlock, - paddingBlockStart, - paddingBlockEnd, - ]); - - return { - className: [ - ...className, - spacesClassName, - ], - ...props, - }; -}; diff --git a/packages/fuselage/src/components/Button/index.js b/packages/fuselage/src/components/Button/index.js index 24787478f2..83ac70c6b2 100644 --- a/packages/fuselage/src/components/Button/index.js +++ b/packages/fuselage/src/components/Button/index.js @@ -24,16 +24,16 @@ export const Button = forwardRef(function Button({ || {}; return ({ - className: [className, 'rcx-button-group__item'].filter(Boolean).join(' '), + className: [className, 'rcx-button-group__item'], })} /> ; } diff --git a/packages/fuselage/src/components/Callout/index.js b/packages/fuselage/src/components/Callout/index.js index cbe27fae8c..d8487aaaef 100644 --- a/packages/fuselage/src/components/Callout/index.js +++ b/packages/fuselage/src/components/Callout/index.js @@ -15,11 +15,11 @@ export function Callout({ || (type === 'warning' && 'warning') || (type === 'danger' && 'ban'); - return + return - - {title && {title}} - {children && + + {title && {title}} + {children && {children} } diff --git a/packages/fuselage/src/components/CheckBox/index.js b/packages/fuselage/src/components/CheckBox/index.js index 46c4228789..896b49ad44 100644 --- a/packages/fuselage/src/components/CheckBox/index.js +++ b/packages/fuselage/src/components/CheckBox/index.js @@ -36,10 +36,10 @@ export const CheckBox = forwardRef(function CheckBox({ onChange && onChange.call(innerRef.current, event); }, [innerRef, indeterminate, onChange]); - return + return -