ProseCode Collapse

長いコードブロックを折りたたみ可能にし、スペースを節約します。

使用法

コードブロックをcode-collapseコンポーネントでラップして、折りたたみ可能なコードブロックを表示します。

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@theme static {
  --font-sans: 'Public Sans', sans-serif;

  --breakpoint-3xl: 1920px;

  --color-green-50: #EFFDF5;
  --color-green-100: #D9FBE8;
  --color-green-200: #B3F5D1;
  --color-green-300: #75EDAE;
  --color-green-400: #00DC82;
  --color-green-500: #00C16A;
  --color-green-600: #00A155;
  --color-green-700: #007F45;
  --color-green-800: #016538;
  --color-green-900: #0A5331;
  --color-green-950: #052E16;
}
::code-collapse

```css [app/assets/css/main.css]
@ import“tailwindcss”;
@ import "@ nuxt/ui";

@ theme static {
  ——font—sans:'Public Sans'、サンセリフ体;

  ——ブレークポイント—3xl:1920px;

  ——色緑50:#EFFDF5;
  ——色緑100:#D9FBE8;
  ——色緑200:#B3F5D1;
  ——色緑300:#75EDAE;
  ——色緑400 #00DC82;
  ——色緑500 #00C16A;
  ——色緑600 #00A155;
  ——色緑700:#007F45;
  ——カラーグリーン800:#016538;
  ——色緑900:#0A5331;
  ——色緑950:#052E16;
}
```

::

API

Props

Prop Default Type
icon
appConfig.ui.icons.chevronDown
any

The icon displayed to toggle the code.

name
t('prose.codeCollapse.name')
string

The name displayed in the trigger label.

openText
t('prose.codeCollapse.openText')
string

The text displayed when the code is collapsed.

closeText
t('prose.codeCollapse.closeText')
string

The text displayed when the code is expanded.

open
false
boolean
ui
{ root?: SlotClass; footer?: SlotClass; trigger?: SlotClass; triggerIcon?: SlotClass; }

スロット

Slot Type
default
{}

Theme

app.config.ts
export default defineAppConfig({
  ui: {
    prose: {
      codeCollapse: {
        slots: {
          root: 'relative my-5 bg-muted [&>div]:my-0 [&_pre]:max-h-[80vh] [&_pre]:pb-12',
          footer: 'h-16 absolute inset-x-px bottom-px rounded-b-md flex items-center justify-center',
          trigger: 'group',
          triggerIcon: 'group-data-[state=open]:rotate-180'
        },
        variants: {
          open: {
            true: {
              root: 'rounded-md'
            },
            false: {
              root: 'max-h-[200px] overflow-hidden rounded-b-md [&_pre]:overflow-hidden',
              footer: 'inset-x-0 bottom-0 border border-t-0 border-muted bg-linear-to-t from-muted'
            }
          }
        }
      }
    }
  }
})
vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      ui: {
        prose: {
          codeCollapse: {
            slots: {
              root: 'relative my-5 bg-muted [&>div]:my-0 [&_pre]:max-h-[80vh] [&_pre]:pb-12',
              footer: 'h-16 absolute inset-x-px bottom-px rounded-b-md flex items-center justify-center',
              trigger: 'group',
              triggerIcon: 'group-data-[state=open]:rotate-180'
            },
            variants: {
              open: {
                true: {
                  root: 'rounded-md'
                },
                false: {
                  root: 'max-h-[200px] overflow-hidden rounded-b-md [&_pre]:overflow-hidden',
                  footer: 'inset-x-0 bottom-0 border border-t-0 border-muted bg-linear-to-t from-muted'
                }
              }
            }
          }
        }
      }
    })
  ]
})

Changelog

No recent changes