الوثائقDocumentationMdxCode

الكود

إتقان استخدام الكود في ملفات MDX

يستخدم opendocs مكتبة rehype-pretty-code للتعامل مع الكود داخل ملفات MDX. يتيح لك ذلك تخصيص طريقة عرض الكود بدرجة كبيرة!

لمزيد من المعلومات، راجع الوثائق الرسمية والأمثلة!

العناوين

مثال:

apps/web/src/index.tsx
import { App } from './App';

الكود:

```js title="apps/web/src/index.tsx"
import { App } from './App';
```

تمييز الكود

مثال:

module.exports = {
  theme: {
    extend: {
      colors: {
        warning: "hsl(var(--warning))",
        "warning-foreground": "hsl(var(--warning-foreground))",
      },
    },
  },
}

الكود:

```js
module.exports = {
  theme: {
    extend: {
      colors: {
        warning: "hsl(var(--warning))",
        "warning-foreground": "hsl(var(--warning-foreground))",
      },
    },
  },
}
```

تمييز الكود داخل السطر

مثال:

نتيجة [1, 2, 3].join('-') هي '1-2-3'.

الكود:

The result of `[1, 2, 3].join('-'){:js}` is `'1-2-3'{:js}`.

تمييز الكود داخل السطر مع فهم السياق

على سبيل المثال، إذا كان لديك مقطع الكود التالي:

function getStringLength(str) {
  return str.length;
}

عندما نشير إلى getStringLength بوصفها دالة، يمكننا تلوينها على هذا الأساس. وينطبق الأمر نفسه على function، أو str مقابل str، إلخ. يتيح ذلك ربط الكود داخل السطر دلالياً بأقرب كتلة كود يشير إليها.

الكود:

When we refer to `getStringLength{:.entity.name.function}` as a function,
we can color it as such. Same with `function{:.keyword}`, or
`str{:.variable.parameter}` vs. `str{:.variable.other.object}`, etc. This allows
semantically link inline code to the nearest block of code it refers to.

تمييز الكلمات

مثال:

relative w-full pl-12 rounded-lg border

الكود:

```css /pl-12/ /border/
relative w-full pl-12 rounded-lg border
```

تمييز الأسطر

مثال:

module.exports = {
  theme: {
    extend: {
      colors: {
        warning: "hsl(var(--warning))",
        "warning-foreground": "hsl(var(--warning-foreground))",
      },
    },
  },
}

الكود:

```js {2-4,6}
module.exports = {
  theme: {
    extend: {
      colors: {
        warning: "hsl(var(--warning))",
        "warning-foreground": "hsl(var(--warning-foreground))",
      },
    },
  },
}
```

ترقيم الأسطر

مثال:

module.exports = {
  theme: {
    extend: {
      colors: {
        warning: "hsl(var(--warning))",
        "warning-foreground": "hsl(var(--warning-foreground))",
      },
    },
  },
}

الكود:

```js showLineNumbers
module.exports = {
  theme: {
    extend: {
      colors: {
        warning: "hsl(var(--warning))",
        "warning-foreground": "hsl(var(--warning-foreground))",
      },
    },
  },
}
```

Diff

مثال:

const alertVariants = cva(
- "relative w-full rounded-lg border",
+ "relative w-full pl-12 rounded-lg border"
)

الكود:

```diff
const alertVariants = cva(
- "relative w-full rounded-lg border",
+ "relative w-full pl-12 rounded-lg border"
)
```

تمييز ANSI

مثال:

  vite v5.0.0 dev server running at:
 
  > Local: http://localhost:3000/
  > Network: use `--host` to expose
 
  ready in 125ms.
 
8:38:02 PM [vite] hmr update /src/App.jsx

ANSI داخل السطر: > Local: http://localhost:3000/

الكود:

```ansi
  vite v5.0.0 dev server running at:
 
  > Local: http://localhost:3000/
  > Network: use `--host` to expose
 
  ready in 125ms.
 
8:38:02 PM [vite] hmr update /src/App.jsx
```
 
Inline ANSI: `> Local: http://localhost:3000/{:ansi}`

تمييز مجموعات الكلمات حسب المعرّف

ضع معرّفاً بعد # بعد الكلمات. يتيح لك ذلك تلوين الأحرف بشكل مختلف اعتماداً على المعرّف المحدد.

مثال:

const [age, setAge] = useState(50);
const [name, setName] = useState("Taylor");

الكود:

```js /age/#v /name/#v /setAge/#s /setName/#s /50/#i /"Taylor"/#i
const [age, setAge] = useState(50);
const [name, setName] = useState("Taylor");
```

لتغيير الأنماط أو إضافة أنماط جديدة:

apps/web/src/styles/mdx.css
[data-chars-id='v'] {
  @apply !text-pink-300 bg-rose-800/50 font-bold;
}