From 95b443ea0de494998a0b3619208002068c329425 Mon Sep 17 00:00:00 2001 From: Myles Scolnick Date: Mon, 12 Aug 2024 11:01:40 -0400 Subject: [PATCH 1/3] Revert "Revert "improvement: cleanup markdown, use prose (#1892)" (#1950)" This reverts commit f1b0c84fe5f01a97637a0b2142cea8716f4f48c7. --- frontend/package.json | 1 + frontend/pnpm-lock.yaml | 37 ++++++ .../components/editor/output/JsonOutput.tsx | 2 +- .../src/components/editor/output/Outputs.css | 2 + frontend/src/core/MarimoApp.tsx | 5 + frontend/src/css/app/reset.css | 16 --- frontend/src/css/md.css | 107 ++---------------- frontend/src/css/table.css | 21 +--- .../src/plugins/layout/AccordionPlugin.tsx | 13 +-- frontend/tailwind.config.js | 28 +++++ marimo/_output/md.py | 14 ++- marimo/_plugins/core/web_component.py | 2 +- tests/_islands/snapshots/island-no-code.txt | 2 +- tests/_islands/snapshots/island.txt | 2 +- tests/_output/test_md.py | 10 +- 15 files changed, 118 insertions(+), 144 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index df4a0832c3e..7ef76ca72b3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -68,6 +68,7 @@ "@react-aria/focus": "^3.17.1", "@replit/codemirror-vim": "^6.2.1", "@storybook/addon-styling": "^1.3.7", + "@tailwindcss/typography": "^0.5.13", "@tanstack/react-table": "^8.19.2", "@textea/json-viewer": "^3.4.1", "@types/humanize-duration": "^3.27.4", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index ccbe9b460b8..c0ca32a4b94 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -169,7 +169,16 @@ dependencies: version: 6.2.1(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.4) '@storybook/addon-styling': specifier: ^1.3.7 +<<<<<<< HEAD version: 1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.40)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0) +||||||| f1b0c84f (Revert "improvement: cleanup markdown, use prose (#1892)" (#1950)) + version: 1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.39)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0) +======= + version: 1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.39)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0) + '@tailwindcss/typography': + specifier: ^0.5.13 + version: 0.5.13(tailwindcss@3.4.4) +>>>>>>> parent of f1b0c84f (Revert "improvement: cleanup markdown, use prose (#1892)" (#1950)) '@tanstack/react-table': specifier: ^8.19.2 version: 8.19.2(react-dom@18.3.1)(react@18.3.1) @@ -7740,6 +7749,18 @@ packages: '@swc/counter': 0.1.3 dev: true + /@tailwindcss/typography@0.5.13(tailwindcss@3.4.4): + resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.4 + dev: false + /@tanstack/react-table@8.19.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-itoSIAkA/Vsg+bjY23FSemcTyPhc5/1YjYyaMsr9QSH/cdbZnQxHVWrpWn0Sp2BWN71qkzR7e5ye8WuMmwyOjg==} engines: {node: '>=12'} @@ -13701,10 +13722,18 @@ packages: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: false + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: false + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: false @@ -15356,6 +15385,14 @@ packages: postcss: 8.4.40 dev: true + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + /postcss-selector-parser@6.1.0: resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} engines: {node: '>=4'} diff --git a/frontend/src/components/editor/output/JsonOutput.tsx b/frontend/src/components/editor/output/JsonOutput.tsx index feba0c5a7c2..1e3da4d5999 100644 --- a/frontend/src/components/editor/output/JsonOutput.tsx +++ b/frontend/src/components/editor/output/JsonOutput.tsx @@ -1,6 +1,6 @@ /* Copyright 2024 Marimo. All rights reserved. */ import { memo } from "react"; -import { DataType, JsonViewer } from "@textea/json-viewer"; +import { type DataType, JsonViewer } from "@textea/json-viewer"; import { HtmlOutput } from "./HtmlOutput"; import { ImageOutput } from "./ImageOutput"; diff --git a/frontend/src/components/editor/output/Outputs.css b/frontend/src/components/editor/output/Outputs.css index edbc4a98fa5..0f19c625c46 100644 --- a/frontend/src/components/editor/output/Outputs.css +++ b/frontend/src/components/editor/output/Outputs.css @@ -64,6 +64,8 @@ /* Coarse hack to stop children from overflowing; doesn't seem to affect * margin collapse. */ overflow: auto; + + @apply text-xs; } .marimo-json-output .data-key-pair:not(:last-child) { diff --git a/frontend/src/core/MarimoApp.tsx b/frontend/src/core/MarimoApp.tsx index a566227d096..074ec42b96a 100644 --- a/frontend/src/core/MarimoApp.tsx +++ b/frontend/src/core/MarimoApp.tsx @@ -18,6 +18,11 @@ import { Provider as SlotzProvider } from "@marimo-team/react-slotz"; import { slotsController } from "./slots/slots"; import { reactLazyWithPreload } from "@/utils/lazy"; +// Force tailwind classnames +// tailwind only creates css for classnames that exist the FE files +export const FORCE_TW_CLASSES = + "prose prose-sm prose-base prose-lg prose-xl prose-2xl"; + // Lazy imports const LazyHomePage = reactLazyWithPreload( () => import("@/components/pages/home-page"), diff --git a/frontend/src/css/app/reset.css b/frontend/src/css/app/reset.css index db1d1a0cb0f..13a32b39eaf 100644 --- a/frontend/src/css/app/reset.css +++ b/frontend/src/css/app/reset.css @@ -1,15 +1,4 @@ -html { - box-sizing: border-box; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - body { - margin: 0; font-family: var(--text-font); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -25,8 +14,3 @@ body { code { font-family: var(--monospace-font); } - -button { - padding: 0; - margin: 0; -} diff --git a/frontend/src/css/md.css b/frontend/src/css/md.css index 1382ca8f9c8..4f7225aba85 100644 --- a/frontend/src/css/md.css +++ b/frontend/src/css/md.css @@ -1,89 +1,34 @@ -.markdown p, -.markdown .paragraph, -.markdown ol, -.markdown ul, -.markdown span:not(code *, .MuiBox-root) { - /* the not selector makes sure we don't change katex/LaTeX styles */ - line-height: 1.5rem; - font-family: var(--text-font); -} - .markdown p:first-child, .markdown .paragraph:first-child { + /* This is needed when markdown is used inside buttons or labels */ margin-block-start: 0; } .markdown p:last-child, +/* This is needed when markdown is used inside buttons or labels */ .markdown .paragraph:last-child { margin-block-end: 0; } -.markdown h1, -.markdown h2, -.markdown h3 { - font-weight: normal; -} .markdown h1 { - /* provide by the browser, but removed from 'reset' */ - display: block; - font-size: 2rem; - margin-block-end: 0.67rem; - margin-inline: 0 0; text-align: center; } .config-width-full .markdown h1 { - /* In full-width display, centered headings look odd */ + /* In full-width display, we left-align the title */ text-align: start; } -.markdown h2 { - /* provide by the browser, but removed from 'reset' */ - display: block; - font-size: 1.5rem; - margin-block-end: 0.83rem; - margin-inline: 0 0; -} -.markdown h3 { - /* provide by the browser, but removed from 'reset' */ - display: block; - font-size: 1.17rem; - margin-block-end: 1rem; - margin-inline: 0 0; -} - -.markdown p, .markdown .paragraph { - /* provide by the browser, but removed from 'reset' */ - display: block; - margin-block: 1rem 1rem; - margin-inline: 0 0; -} - -.markdown ul { - /* provide by the browser, but removed from 'reset' */ + /* + we convert

to span.paragraph to support nesting, + so we need to apply the same formatting + */ display: block; - list-style-type: disc; margin-block: 1rem 1rem; margin-inline: 0 0; - padding-inline-start: 40px; -} - -.markdown ol { - /* provide by the browser, but removed from 'reset' */ - display: block; - list-style-type: decimal; - margin-block: 1rem 1rem; - margin-inline: 0 0; - padding-inline-start: 40px; -} - -.markdown li { - /* provided by the browser, but removed from 'reset' */ - display: list-itrem; - text-align: -webkit-match-parent; } .markdown h1, @@ -92,39 +37,13 @@ .markdown h4, .markdown h5, .markdown h6 { + font-weight: inherit; font-family: var(--heading-font); } -.markdown pre { - /* source code */ - margin: 30px; - line-height: 1.8rem; - font-family: var(--monospace-font); - overflow: auto; - white-space: pre; -} - -.markdown p code, -.markdown .paragraph code, -.markdown pre code, -.markdown li code { - font-size: 0.875rem; - scroll-margin:; -} - -.markdown sup, -.markdown sub { - vertical-align: baseline; - position: relative; - top: -0.4rem; -} - -.markdown sub { - top: 0.4rem; -} - .markdown a { cursor: pointer; + text-decoration: inherit; @apply text-link; } @@ -138,17 +57,11 @@ @apply text-link-visited; } -.markdown blockquote { - padding: 0 1rem; - - @apply border-l-4; - @apply text-muted-foreground; -} - .mo-label .markdown p, .mo-label-block .markdown p, .mo-label .markdown .paragraph, .mo-label-block .markdown .paragraph { + /* This is needed when markdown is used inside labels */ padding: 0; margin: 0; } diff --git a/frontend/src/css/table.css b/frontend/src/css/table.css index d07bb51fd8e..d2700aa541a 100644 --- a/frontend/src/css/table.css +++ b/frontend/src/css/table.css @@ -1,10 +1,5 @@ .markdown table, table.dataframe { - border: none; - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; - font-size: 0.9375rem; display: block; max-width: 100%; overflow: auto; @@ -12,10 +7,9 @@ table.dataframe { .markdown table thead, table.dataframe thead { - border-bottom: 1px solid; vertical-align: bottom; - @apply border-foreground; + @apply border-input; } .markdown table tbody tr:nth-child(odd), @@ -30,7 +24,7 @@ table.dataframe tbody tr:nth-child(even) { .markdown table tbody tr:hover, table.dataframe tbody tr:hover { - background: var(--yellow-5); + background: var(--yellow-4); } .markdown table tr, @@ -41,15 +35,8 @@ table.dataframe th, table.dataframe td { text-align: right; vertical-align: middle; - padding: 0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; line-height: normal; - white-space: normal; - max-width: none; border: none; - font-size: 0.875rem; -} - -.markdown table th, -table.dataframe th { - font-weight: bold; } diff --git a/frontend/src/plugins/layout/AccordionPlugin.tsx b/frontend/src/plugins/layout/AccordionPlugin.tsx index 90886083e19..ab84c114855 100644 --- a/frontend/src/plugins/layout/AccordionPlugin.tsx +++ b/frontend/src/plugins/layout/AccordionPlugin.tsx @@ -1,5 +1,5 @@ /* Copyright 2024 Marimo. All rights reserved. */ -import React, { PropsWithChildren } from "react"; +import React, { type PropsWithChildren } from "react"; import { Accordion, @@ -8,7 +8,10 @@ import { AccordionTrigger, } from "@/components/ui/accordion"; import { z } from "zod"; -import { IStatelessPlugin, IStatelessPluginProps } from "../stateless-plugin"; +import type { + IStatelessPlugin, + IStatelessPluginProps, +} from "../stateless-plugin"; import { renderHTML } from "../core/RenderHTML"; interface Data { @@ -48,11 +51,7 @@ const AccordionComponent = ({ {React.Children.map(children, (child, index) => { return ( - + {renderHTML({ html: labels[index] })} diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index cce494b0438..9b89bac5c32 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -137,10 +137,38 @@ module.exports = { "2-fit": "repeat(2, minmax(0, max-content))", "3-fit": "repeat(3, minmax(0, max-content))", }, + typography: { + DEFAULT: { + css: { + fontFamily: "var(--text-font)", + color: "inherit", + pre: { + color: "inherit", + background: "inherit", + }, + "code::before": { + content: "", + }, + "code::after": { + content: "", + }, + code: { + fontWeight: 500, + }, + "ul > li::marker": { + color: "hsl(var(--muted-foreground))", + }, + "ol > li::marker": { + color: "hsl(var(--muted-foreground))", + }, + }, + }, + }, }, }, plugins: [ require("tailwindcss-animate"), + require("@tailwindcss/typography"), plugin(({ addUtilities, addVariant }) => { const newUtilities = { ".increase-pointer-area-x": { diff --git a/marimo/_output/md.py b/marimo/_output/md.py index 2bc2b418816..214888fd417 100644 --- a/marimo/_output/md.py +++ b/marimo/_output/md.py @@ -2,6 +2,7 @@ from __future__ import annotations from inspect import cleandoc +from typing import Literal, Optional import markdown # type: ignore @@ -31,8 +32,14 @@ }, } +MarkdownSize = Literal["sm", "base", "lg", "xl", "2xl"] -def _md(text: str, apply_markdown_class: bool = True) -> Html: + +def _md( + text: str, + apply_markdown_class: bool = True, + size: Optional[MarkdownSize] = None, +) -> Html: # cleandoc uniformly strips leading whitespace; useful for # indented multiline strings text = cleandoc(text) @@ -68,7 +75,10 @@ def _md(text: str, apply_markdown_class: bool = True) -> Html: ) if apply_markdown_class: - return Html('' + html_text + "") + classes = ["markdown", "prose"] + if size is not None: + classes.append(f"prose-{size}") + return Html(f'{html_text}') else: return Html(html_text) diff --git a/marimo/_plugins/core/web_component.py b/marimo/_plugins/core/web_component.py index d4772f9d301..2656683e327 100644 --- a/marimo/_plugins/core/web_component.py +++ b/marimo/_plugins/core/web_component.py @@ -82,7 +82,7 @@ def build_ui_plugin( attrs: list[str] = [_build_attr("initial-value", initial_value)] if label is not None and label: - attrs.append(_build_attr("label", _md(label).text)) + attrs.append(_build_attr("label", _md(label, size="sm").text)) else: attrs.append(_build_attr("label", None)) diff --git a/tests/_islands/snapshots/island-no-code.txt b/tests/_islands/snapshots/island-no-code.txt index 4e7407e3e68..5ac4b58143f 100644 --- a/tests/_islands/snapshots/island-no-code.txt +++ b/tests/_islands/snapshots/island-no-code.txt @@ -4,7 +4,7 @@ data-reactive="true" > - Hello, islands! + Hello, islands! \ No newline at end of file diff --git a/tests/_islands/snapshots/island.txt b/tests/_islands/snapshots/island.txt index 4e7407e3e68..5ac4b58143f 100644 --- a/tests/_islands/snapshots/island.txt +++ b/tests/_islands/snapshots/island.txt @@ -4,7 +4,7 @@ data-reactive="true" > - Hello, islands! + Hello, islands! \ No newline at end of file diff --git a/tests/_output/test_md.py b/tests/_output/test_md.py index 21407ea565e..7b144d759f0 100644 --- a/tests/_output/test_md.py +++ b/tests/_output/test_md.py @@ -1,10 +1,12 @@ +from __future__ import annotations + from marimo._output.md import _md def test_md() -> None: # Test basic markdown conversion input_text = "This is **bold** and this is _italic_." - expected_output = 'This is bold and this is italic.' # noqa: E501 + expected_output = 'This is bold and this is italic.' # noqa: E501 assert _md(input_text).text == expected_output # Test disabling markdown class @@ -15,6 +17,12 @@ def test_md() -> None: ) +# def test_md_size() -> None: +# input_text = "This is **bold** and this is _italic_." +# expected_output = 'This is bold and this is italic.' # noqa: E501 +# assert _md(input_text, size="lg").text == expected_output + + def test_md_code_blocks() -> None: # Test code block conversion code_input = "```python\nprint('Hello, world!')\n```" From 0b3fb92331b91e9f4606123c6b1771fa00353d44 Mon Sep 17 00:00:00 2001 From: Myles Scolnick Date: Mon, 12 Aug 2024 11:14:44 -0400 Subject: [PATCH 2/3] fix dark mode --- frontend/pnpm-lock.yaml | 335 +++++++++--------- .../vertical-layout/vertical-layout.tsx | 2 +- frontend/src/core/MarimoApp.tsx | 2 +- marimo/_output/md.py | 2 +- tests/_islands/snapshots/island-no-code.txt | 2 +- tests/_islands/snapshots/island.txt | 2 +- tests/_output/test_md.py | 4 +- 7 files changed, 180 insertions(+), 169 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index c0ca32a4b94..2c8ff6e31d9 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -169,16 +169,10 @@ dependencies: version: 6.2.1(@codemirror/commands@6.6.0)(@codemirror/language@6.10.2)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.28.4) '@storybook/addon-styling': specifier: ^1.3.7 -<<<<<<< HEAD - version: 1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.40)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0) -||||||| f1b0c84f (Revert "improvement: cleanup markdown, use prose (#1892)" (#1950)) - version: 1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.39)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0) -======= version: 1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.39)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0) '@tailwindcss/typography': specifier: ^0.5.13 version: 0.5.13(tailwindcss@3.4.4) ->>>>>>> parent of f1b0c84f (Revert "improvement: cleanup markdown, use prose (#1892)" (#1950)) '@tanstack/react-table': specifier: ^8.19.2 version: 8.19.2(react-dom@18.3.1)(react@18.3.1) @@ -244,7 +238,7 @@ dependencies: version: 0.21.2(vega@5.28.0) cssnano: specifier: ^7.0.3 - version: 7.0.3(postcss@8.4.40) + version: 7.0.3(postcss@8.4.39) date-fns: specifier: ^3.6.0 version: 3.6.0 @@ -456,7 +450,7 @@ devDependencies: version: 3.7.0(vite@5.3.2) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.40) + version: 10.4.19(postcss@8.4.39) blob-polyfill: specifier: ^7.0.20220408 version: 7.0.20220408 @@ -495,7 +489,7 @@ devDependencies: version: 6.2.0 postcss: specifier: ^8.4.39 - version: 8.4.40 + version: 8.4.39 postcss-plugin-namespace: specifier: ^0.0.3 version: 0.0.3 @@ -7002,7 +6996,7 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-styling@1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.40)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0): + /@storybook/addon-styling@1.3.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(less@4.2.0)(postcss@8.4.39)(react-dom@18.3.1)(react@18.3.1)(webpack@5.91.0): resolution: {integrity: sha512-JSBZMOrSw/3rlq5YoEI7Qyq703KSNP0Jd+gxTWu3/tP6245mpjn2dXnR8FvqVxCi+FG4lt2kQyPzgsuwEw1SSA==} deprecated: 'This package has been split into @storybook/addon-styling-webpack and @storybook/addon-themes. More info: https://github.com/storybookjs/addon-styling' hasBin: true @@ -7038,8 +7032,8 @@ packages: css-loader: 6.7.4(webpack@5.91.0) less: 4.2.0 less-loader: 11.1.0(less@4.2.0)(webpack@5.91.0) - postcss: 8.4.40 - postcss-loader: 7.3.0(postcss@8.4.40)(webpack@5.91.0) + postcss: 8.4.39 + postcss-loader: 7.3.0(postcss@8.4.39)(webpack@5.91.0) prettier: 2.8.8 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -7213,7 +7207,7 @@ packages: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@storybook/client-logger': 7.6.14 - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 '@storybook/theming': 7.6.14(react-dom@18.3.1)(react@18.3.1) '@storybook/types': 7.6.14 @@ -7315,6 +7309,13 @@ packages: resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} dependencies: type-fest: 2.19.0 + dev: true + + /@storybook/csf@0.1.7: + resolution: {integrity: sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw==} + dependencies: + type-fest: 2.19.0 + dev: false /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -7350,7 +7351,7 @@ packages: '@storybook/channels': 7.0.12 '@storybook/client-logger': 7.0.12 '@storybook/core-events': 7.0.12 - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 '@storybook/router': 7.0.12(react-dom@18.3.1)(react@18.3.1) '@storybook/theming': 7.0.12(react-dom@18.3.1)(react@18.3.1) @@ -7372,7 +7373,7 @@ packages: '@storybook/channels': 7.6.14 '@storybook/client-logger': 7.6.14 '@storybook/core-events': 7.6.14 - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 '@storybook/router': 7.6.14 '@storybook/theming': 7.6.14(react-dom@18.3.1)(react@18.3.1) @@ -7406,7 +7407,7 @@ packages: '@storybook/channels': 7.6.14 '@storybook/client-logger': 7.6.14 '@storybook/core-events': 7.6.14 - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 '@storybook/types': 7.6.14 '@types/qs': 6.9.7 @@ -7601,7 +7602,7 @@ packages: dependencies: '@storybook/channels': 7.0.12 '@types/babel__core': 7.20.0 - '@types/express': 4.17.21 + '@types/express': 4.17.17 file-system-cache: 2.3.0 dev: false @@ -7610,7 +7611,7 @@ packages: dependencies: '@storybook/channels': 7.6.14 '@types/babel__core': 7.20.0 - '@types/express': 4.17.21 + '@types/express': 4.17.17 file-system-cache: 2.3.0 dev: false @@ -8217,6 +8218,15 @@ packages: '@types/range-parser': 1.2.4 '@types/send': 0.17.1 + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.35 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.1 + dev: false + /@types/express@4.17.21: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: @@ -8224,6 +8234,7 @@ packages: '@types/express-serve-static-core': 4.17.35 '@types/qs': 6.9.7 '@types/serve-static': 1.15.1 + dev: true /@types/fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-IyNhGHu71jH1jCXTHmafuoAAdsbBON3kDh7u/UUhLmjYgN5TYB54e1R8ckTCiIevl2UuZaCsi9XRxineY5yUjw==} @@ -9337,7 +9348,7 @@ packages: engines: {node: '>=4'} dev: false - /autoprefixer@10.4.19(postcss@8.4.40): + /autoprefixer@10.4.19(postcss@8.4.39): resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -9349,7 +9360,7 @@ packages: fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: true @@ -10144,13 +10155,13 @@ packages: type-fest: 1.4.0 dev: true - /css-declaration-sorter@7.2.0(postcss@8.4.40): + /css-declaration-sorter@7.2.0(postcss@8.4.39): resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false /css-font-size-keywords@1.0.0: @@ -10198,12 +10209,12 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.40) - postcss: 8.4.40 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.40) - postcss-modules-local-by-default: 4.0.1(postcss@8.4.40) - postcss-modules-scope: 3.0.0(postcss@8.4.40) - postcss-modules-values: 4.0.0(postcss@8.4.40) + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.39) + postcss-modules-local-by-default: 4.0.1(postcss@8.4.39) + postcss-modules-scope: 3.0.0(postcss@8.4.39) + postcss-modules-values: 4.0.0(postcss@8.4.39) postcss-value-parser: 4.2.0 semver: 7.6.1 webpack: 5.91.0(esbuild@0.18.20) @@ -10256,63 +10267,63 @@ packages: engines: {node: '>=4'} hasBin: true - /cssnano-preset-default@7.0.3(postcss@8.4.40): + /cssnano-preset-default@7.0.3(postcss@8.4.39): resolution: {integrity: sha512-dQ3Ba1p/oewICp/szF1XjFFgql8OlOBrI2YNBUUwhHQnJNoMOcQTa+Bi7jSJN8r/eM1egW0Ud1se/S7qlduWKA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.23.1 - css-declaration-sorter: 7.2.0(postcss@8.4.40) - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 - postcss-calc: 10.0.0(postcss@8.4.40) - postcss-colormin: 7.0.1(postcss@8.4.40) - postcss-convert-values: 7.0.1(postcss@8.4.40) - postcss-discard-comments: 7.0.1(postcss@8.4.40) - postcss-discard-duplicates: 7.0.0(postcss@8.4.40) - postcss-discard-empty: 7.0.0(postcss@8.4.40) - postcss-discard-overridden: 7.0.0(postcss@8.4.40) - postcss-merge-longhand: 7.0.2(postcss@8.4.40) - postcss-merge-rules: 7.0.2(postcss@8.4.40) - postcss-minify-font-values: 7.0.0(postcss@8.4.40) - postcss-minify-gradients: 7.0.0(postcss@8.4.40) - postcss-minify-params: 7.0.1(postcss@8.4.40) - postcss-minify-selectors: 7.0.2(postcss@8.4.40) - postcss-normalize-charset: 7.0.0(postcss@8.4.40) - postcss-normalize-display-values: 7.0.0(postcss@8.4.40) - postcss-normalize-positions: 7.0.0(postcss@8.4.40) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.40) - postcss-normalize-string: 7.0.0(postcss@8.4.40) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.40) - postcss-normalize-unicode: 7.0.1(postcss@8.4.40) - postcss-normalize-url: 7.0.0(postcss@8.4.40) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.40) - postcss-ordered-values: 7.0.1(postcss@8.4.40) - postcss-reduce-initial: 7.0.1(postcss@8.4.40) - postcss-reduce-transforms: 7.0.0(postcss@8.4.40) - postcss-svgo: 7.0.1(postcss@8.4.40) - postcss-unique-selectors: 7.0.1(postcss@8.4.40) - dev: false - - /cssnano-utils@5.0.0(postcss@8.4.40): + css-declaration-sorter: 7.2.0(postcss@8.4.39) + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-calc: 10.0.0(postcss@8.4.39) + postcss-colormin: 7.0.1(postcss@8.4.39) + postcss-convert-values: 7.0.1(postcss@8.4.39) + postcss-discard-comments: 7.0.1(postcss@8.4.39) + postcss-discard-duplicates: 7.0.0(postcss@8.4.39) + postcss-discard-empty: 7.0.0(postcss@8.4.39) + postcss-discard-overridden: 7.0.0(postcss@8.4.39) + postcss-merge-longhand: 7.0.2(postcss@8.4.39) + postcss-merge-rules: 7.0.2(postcss@8.4.39) + postcss-minify-font-values: 7.0.0(postcss@8.4.39) + postcss-minify-gradients: 7.0.0(postcss@8.4.39) + postcss-minify-params: 7.0.1(postcss@8.4.39) + postcss-minify-selectors: 7.0.2(postcss@8.4.39) + postcss-normalize-charset: 7.0.0(postcss@8.4.39) + postcss-normalize-display-values: 7.0.0(postcss@8.4.39) + postcss-normalize-positions: 7.0.0(postcss@8.4.39) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.39) + postcss-normalize-string: 7.0.0(postcss@8.4.39) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.39) + postcss-normalize-unicode: 7.0.1(postcss@8.4.39) + postcss-normalize-url: 7.0.0(postcss@8.4.39) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.39) + postcss-ordered-values: 7.0.1(postcss@8.4.39) + postcss-reduce-initial: 7.0.1(postcss@8.4.39) + postcss-reduce-transforms: 7.0.0(postcss@8.4.39) + postcss-svgo: 7.0.1(postcss@8.4.39) + postcss-unique-selectors: 7.0.1(postcss@8.4.39) + dev: false + + /cssnano-utils@5.0.0(postcss@8.4.39): resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /cssnano@7.0.3(postcss@8.4.40): + /cssnano@7.0.3(postcss@8.4.39): resolution: {integrity: sha512-lsekJctOTqdCn4cNrtrSwsuMR/fHC+oiVMHkp/OugBWtwjH8XJag1/OtGaYJGtz0un1fQcRy4ryfYTQsfh+KSQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - cssnano-preset-default: 7.0.3(postcss@8.4.40) + cssnano-preset-default: 7.0.3(postcss@8.4.39) lilconfig: 3.1.2 - postcss: 8.4.40 + postcss: 8.4.39 dev: false /csso@5.0.5: @@ -12850,13 +12861,13 @@ packages: dependencies: safer-buffer: 2.1.2 - /icss-utils@5.1.0(postcss@8.4.40): + /icss-utils@5.1.0(postcss@8.4.39): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false /ieee754@1.2.1: @@ -15002,18 +15013,18 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss-calc@10.0.0(postcss@8.4.40): + /postcss-calc@10.0.0(postcss@8.4.39): resolution: {integrity: sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 dev: false - /postcss-colormin@7.0.1(postcss@8.4.40): + /postcss-colormin@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: @@ -15022,79 +15033,79 @@ packages: browserslist: 4.23.1 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-convert-values@7.0.1(postcss@8.4.40): + /postcss-convert-values@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-9x2ofb+hYPwHWMlWAzyWys2yMDZYGfkX9LodbaVTmLdlupmtH2AGvj8Up95wzzNPRDEzPIxQIkUaPJew3bT6xA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.23.1 - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-discard-comments@7.0.1(postcss@8.4.40): + /postcss-discard-comments@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 dev: false - /postcss-discard-duplicates@7.0.0(postcss@8.4.40): + /postcss-discard-duplicates@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /postcss-discard-empty@7.0.0(postcss@8.4.40): + /postcss-discard-empty@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /postcss-discard-overridden@7.0.0(postcss@8.4.40): + /postcss-discard-overridden@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /postcss-import@15.1.0(postcss@8.4.40): + /postcss-import@15.1.0(postcss@8.4.39): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.40): + /postcss-js@4.0.1(postcss@8.4.39): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.40 + postcss: 8.4.39 - /postcss-load-config@4.0.1(postcss@8.4.40): + /postcss-load-config@4.0.1(postcss@8.4.39): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -15107,10 +15118,10 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.40 + postcss: 8.4.39 yaml: 2.2.2 - /postcss-loader@7.3.0(postcss@8.4.40)(webpack@5.91.0): + /postcss-loader@7.3.0(postcss@8.4.39)(webpack@5.91.0): resolution: {integrity: sha512-qLAFjvR2BFNz1H930P7mj1iuWJFjGey/nVhimfOAAQ1ZyPpcClAxP8+A55Sl8mBvM+K2a9Pjgdj10KpANWrNfw==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -15120,23 +15131,23 @@ packages: cosmiconfig: 8.2.0 jiti: 1.21.0 klona: 2.0.6 - postcss: 8.4.40 + postcss: 8.4.39 semver: 7.6.1 webpack: 5.91.0(esbuild@0.18.20) dev: false - /postcss-merge-longhand@7.0.2(postcss@8.4.40): + /postcss-merge-longhand@7.0.2(postcss@8.4.39): resolution: {integrity: sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - stylehacks: 7.0.2(postcss@8.4.40) + stylehacks: 7.0.2(postcss@8.4.39) dev: false - /postcss-merge-rules@7.0.2(postcss@8.4.40): + /postcss-merge-rules@7.0.2(postcss@8.4.39): resolution: {integrity: sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: @@ -15144,204 +15155,204 @@ packages: dependencies: browserslist: 4.23.1 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser: 6.1.0 dev: false - /postcss-minify-font-values@7.0.0(postcss@8.4.40): + /postcss-minify-font-values@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-gradients@7.0.0(postcss@8.4.40): + /postcss-minify-gradients@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-params@7.0.1(postcss@8.4.40): + /postcss-minify-params@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.23.1 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-selectors@7.0.2(postcss@8.4.40): + /postcss-minify-selectors@7.0.2(postcss@8.4.39): resolution: {integrity: sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: cssesc: 3.0.0 - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 dev: false - /postcss-modules-extract-imports@3.0.0(postcss@8.4.40): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.39): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /postcss-modules-local-by-default@4.0.1(postcss@8.4.40): + /postcss-modules-local-by-default@4.0.1(postcss@8.4.39): resolution: {integrity: sha512-Zr/dB+IlXaEqdoslLHhhqecwj73vc3rDmOpsBNBEVk7P2aqAlz+Ijy0fFbU5Ie9PtreDOIgGa9MsLWakVGl+fA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.40) - postcss: 8.4.40 + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 dev: false - /postcss-modules-scope@3.0.0(postcss@8.4.40): + /postcss-modules-scope@3.0.0(postcss@8.4.39): resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 dev: false - /postcss-modules-values@4.0.0(postcss@8.4.40): + /postcss-modules-values@4.0.0(postcss@8.4.39): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.40) - postcss: 8.4.40 + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 dev: false - /postcss-nested@6.0.1(postcss@8.4.40): + /postcss-nested@6.0.1(postcss@8.4.39): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - /postcss-normalize-charset@7.0.0(postcss@8.4.40): + /postcss-normalize-charset@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /postcss-normalize-display-values@7.0.0(postcss@8.4.40): + /postcss-normalize-display-values@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-positions@7.0.0(postcss@8.4.40): + /postcss-normalize-positions@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-repeat-style@7.0.0(postcss@8.4.40): + /postcss-normalize-repeat-style@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-string@7.0.0(postcss@8.4.40): + /postcss-normalize-string@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-timing-functions@7.0.0(postcss@8.4.40): + /postcss-normalize-timing-functions@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-unicode@7.0.1(postcss@8.4.40): + /postcss-normalize-unicode@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.23.1 - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-url@7.0.0(postcss@8.4.40): + /postcss-normalize-url@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-whitespace@7.0.0(postcss@8.4.40): + /postcss-normalize-whitespace@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false - /postcss-ordered-values@7.0.1(postcss@8.4.40): + /postcss-ordered-values@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false @@ -15351,7 +15362,7 @@ packages: postcss: 7.0.39 dev: true - /postcss-reduce-initial@7.0.1(postcss@8.4.40): + /postcss-reduce-initial@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: @@ -15359,16 +15370,16 @@ packages: dependencies: browserslist: 4.23.1 caniuse-api: 3.0.0 - postcss: 8.4.40 + postcss: 8.4.39 dev: false - /postcss-reduce-transforms@7.0.0(postcss@8.4.40): + /postcss-reduce-transforms@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 dev: false @@ -15376,13 +15387,13 @@ packages: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true - /postcss-safe-parser@7.0.0(postcss@8.4.40): + /postcss-safe-parser@7.0.0(postcss@8.4.39): resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 dev: true /postcss-selector-parser@6.0.10: @@ -15400,24 +15411,24 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-svgo@7.0.1(postcss@8.4.40): + /postcss-svgo@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} engines: {node: ^18.12.0 || ^20.9.0 || >= 18} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 svgo: 3.3.2 dev: false - /postcss-unique-selectors@7.0.1(postcss@8.4.40): + /postcss-unique-selectors@7.0.1(postcss@8.4.39): resolution: {integrity: sha512-MH7QE/eKUftTB5ta40xcHLl7hkZjgDFydpfTK+QWXeHxghVt3VoPqYL5/G+zYZPPIs+8GuqFXSTgxBSoB1RZtQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 dev: false @@ -15432,8 +15443,8 @@ packages: source-map: 0.6.1 dev: true - /postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + /postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -16532,7 +16543,7 @@ packages: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.8.0 loader-utils: 2.0.4 - postcss: 8.4.40 + postcss: 8.4.39 source-map: 0.6.1 dev: false @@ -17286,14 +17297,14 @@ packages: inline-style-parser: 0.2.3 dev: false - /stylehacks@7.0.2(postcss@8.4.40): + /stylehacks@7.0.2(postcss@8.4.39): resolution: {integrity: sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.23.1 - postcss: 8.4.40 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 dev: false @@ -17348,9 +17359,9 @@ packages: micromatch: 4.0.7 normalize-path: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.40 + postcss: 8.4.39 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 7.0.0(postcss@8.4.40) + postcss-safe-parser: 7.0.0(postcss@8.4.39) postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -17547,11 +17558,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.1(postcss@8.4.40) - postcss-nested: 6.0.1(postcss@8.4.40) + postcss: 8.4.39 + postcss-import: 15.1.0(postcss@8.4.39) + postcss-js: 4.0.1(postcss@8.4.39) + postcss-load-config: 4.0.1(postcss@8.4.39) + postcss-nested: 6.0.1(postcss@8.4.39) postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.32.0 @@ -18793,7 +18804,7 @@ packages: '@types/node': 20.14.9 esbuild: 0.21.5 less: 4.2.0 - postcss: 8.4.40 + postcss: 8.4.39 rollup: 4.14.0 optionalDependencies: fsevents: 2.3.3 diff --git a/frontend/src/components/editor/renderers/vertical-layout/vertical-layout.tsx b/frontend/src/components/editor/renderers/vertical-layout/vertical-layout.tsx index d0211419d3d..4dfd9b18556 100644 --- a/frontend/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +++ b/frontend/src/components/editor/renderers/vertical-layout/vertical-layout.tsx @@ -52,7 +52,7 @@ const VerticalLayoutRenderer: React.FC = ({ const [showCode, setShowCode] = useState(() => { // Default to showing code if the notebook is static or wasm return showCodeDefault === null - ? isStaticNotebook() || isWasm() + ? isStaticNotebook() || isWasm() || kioskMode : showCodeDefault === "true"; }); diff --git a/frontend/src/core/MarimoApp.tsx b/frontend/src/core/MarimoApp.tsx index 074ec42b96a..8eb9734a71f 100644 --- a/frontend/src/core/MarimoApp.tsx +++ b/frontend/src/core/MarimoApp.tsx @@ -21,7 +21,7 @@ import { reactLazyWithPreload } from "@/utils/lazy"; // Force tailwind classnames // tailwind only creates css for classnames that exist the FE files export const FORCE_TW_CLASSES = - "prose prose-sm prose-base prose-lg prose-xl prose-2xl"; + "prose prose-sm prose-base prose-lg prose-xl prose-2xl dark:prose-invert"; // Lazy imports const LazyHomePage = reactLazyWithPreload( diff --git a/marimo/_output/md.py b/marimo/_output/md.py index 214888fd417..f51fa4b29dd 100644 --- a/marimo/_output/md.py +++ b/marimo/_output/md.py @@ -75,7 +75,7 @@ def _md( ) if apply_markdown_class: - classes = ["markdown", "prose"] + classes = ["markdown", "prose", "dark:prose-invert"] if size is not None: classes.append(f"prose-{size}") return Html(f'{html_text}') diff --git a/tests/_islands/snapshots/island-no-code.txt b/tests/_islands/snapshots/island-no-code.txt index 5ac4b58143f..590c37d1188 100644 --- a/tests/_islands/snapshots/island-no-code.txt +++ b/tests/_islands/snapshots/island-no-code.txt @@ -4,7 +4,7 @@ data-reactive="true" > - Hello, islands! + Hello, islands! \ No newline at end of file diff --git a/tests/_islands/snapshots/island.txt b/tests/_islands/snapshots/island.txt index 5ac4b58143f..590c37d1188 100644 --- a/tests/_islands/snapshots/island.txt +++ b/tests/_islands/snapshots/island.txt @@ -4,7 +4,7 @@ data-reactive="true" > - Hello, islands! + Hello, islands! \ No newline at end of file diff --git a/tests/_output/test_md.py b/tests/_output/test_md.py index 7b144d759f0..9fe4c1a953d 100644 --- a/tests/_output/test_md.py +++ b/tests/_output/test_md.py @@ -6,7 +6,7 @@ def test_md() -> None: # Test basic markdown conversion input_text = "This is **bold** and this is _italic_." - expected_output = 'This is bold and this is italic.' # noqa: E501 + expected_output = 'This is bold and this is italic.' # noqa: E501 assert _md(input_text).text == expected_output # Test disabling markdown class @@ -19,7 +19,7 @@ def test_md() -> None: # def test_md_size() -> None: # input_text = "This is **bold** and this is _italic_." -# expected_output = 'This is bold and this is italic.' # noqa: E501 +# expected_output = 'This is bold and this is italic.' # noqa: E501 # assert _md(input_text, size="lg").text == expected_output From 2696b2352e89502c091e2f16e48a72930910a51e Mon Sep 17 00:00:00 2001 From: Myles Scolnick Date: Mon, 12 Aug 2024 11:16:50 -0400 Subject: [PATCH 3/3] dedupe --- frontend/pnpm-lock.yaml | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 2c8ff6e31d9..0519b067982 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -7207,7 +7207,7 @@ packages: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@storybook/client-logger': 7.6.14 - '@storybook/csf': 0.1.7 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 '@storybook/theming': 7.6.14(react-dom@18.3.1)(react@18.3.1) '@storybook/types': 7.6.14 @@ -7309,13 +7309,6 @@ packages: resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} dependencies: type-fest: 2.19.0 - dev: true - - /@storybook/csf@0.1.7: - resolution: {integrity: sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw==} - dependencies: - type-fest: 2.19.0 - dev: false /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -7351,7 +7344,7 @@ packages: '@storybook/channels': 7.0.12 '@storybook/client-logger': 7.0.12 '@storybook/core-events': 7.0.12 - '@storybook/csf': 0.1.7 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 '@storybook/router': 7.0.12(react-dom@18.3.1)(react@18.3.1) '@storybook/theming': 7.0.12(react-dom@18.3.1)(react@18.3.1) @@ -7373,7 +7366,7 @@ packages: '@storybook/channels': 7.6.14 '@storybook/client-logger': 7.6.14 '@storybook/core-events': 7.6.14 - '@storybook/csf': 0.1.7 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 '@storybook/router': 7.6.14 '@storybook/theming': 7.6.14(react-dom@18.3.1)(react@18.3.1) @@ -7407,7 +7400,7 @@ packages: '@storybook/channels': 7.6.14 '@storybook/client-logger': 7.6.14 '@storybook/core-events': 7.6.14 - '@storybook/csf': 0.1.7 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 '@storybook/types': 7.6.14 '@types/qs': 6.9.7 @@ -7602,7 +7595,7 @@ packages: dependencies: '@storybook/channels': 7.0.12 '@types/babel__core': 7.20.0 - '@types/express': 4.17.17 + '@types/express': 4.17.21 file-system-cache: 2.3.0 dev: false @@ -7611,7 +7604,7 @@ packages: dependencies: '@storybook/channels': 7.6.14 '@types/babel__core': 7.20.0 - '@types/express': 4.17.17 + '@types/express': 4.17.21 file-system-cache: 2.3.0 dev: false @@ -8218,15 +8211,6 @@ packages: '@types/range-parser': 1.2.4 '@types/send': 0.17.1 - /@types/express@4.17.17: - resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} - dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.35 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.1 - dev: false - /@types/express@4.17.21: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: @@ -8234,7 +8218,6 @@ packages: '@types/express-serve-static-core': 4.17.35 '@types/qs': 6.9.7 '@types/serve-static': 1.15.1 - dev: true /@types/fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-IyNhGHu71jH1jCXTHmafuoAAdsbBON3kDh7u/UUhLmjYgN5TYB54e1R8ckTCiIevl2UuZaCsi9XRxineY5yUjw==}