open-index/open-npm huggingface dataset:
npm package: @l_h5_tool/eslint-config
Description: 基于 [@antfu/eslint-config](https://github.com/antfu/eslint-config) 的可组合 ESLint 配置。
Latest version: 0.0.5

# @l_h5_tool/eslint-config

基于 [@antfu/eslint-config](https://github.com/antfu/eslint-config) 的可组合 ESLint 配置。

## 特性

- 🎨 **灵活组合** - 通过工厂函数自由组合 TypeScript、Vue、React
- 📦 **预设配置** - 提供常用的预设配置
- 🔧 **统一规则** - 项目内统一的 lint 规则和 ignores
- 🚀 **开箱即用** - 基于社区最佳实践

## 安装

```bash
pnpm add -D @l_h5_tool/eslint-config
```

## 使用方式

### 方式 1: 使用预设（推荐）

直接使用预定义的配置，简单明了：

```typescript
// eslint.config.ts
import { allConfig, reactConfig, tsConfig, vueConfig } from '@l_h5_tool/eslint-config';

// Vue 项目
export default vueConfig;

// React 项目
export default reactConfig;

// Vue + React 项目
export default allConfig;

// 纯 TypeScript 项目
export default tsConfig;
```

### 方式 2: 工厂函数

需要自定义配置时使用：

```typescript
// eslint.config.ts
import { createConfig } from '@l_h5_tool/eslint-config';

export default createConfig({
  vue: true, // 启用 Vue 支持
  react: true, // 启用 React 支持
  // typescript 默认启用
});
```

### 方式 3: 扩展规则

工厂函数支持传入额外的配置：

```typescript
import { createConfig } from '@l_h5_tool/eslint-config';

export default createConfig(
  {
    vue: true,
    // 自定义规则
    rules: {
      'no-console': 'warn',
    },
    // 额外的 ignores
    ignores: ['**/temp/**'],
  },
  // 可以继续传入更多自定义配置
  {
    files: ['**/*.test.ts'],
    rules: {
      'no-console': 'off',
    },
  },
);
```

## 配置说明

### 默认 ignores

```javascript
['**/node_modules/**', '**/dist/**', '**/.turbo/**', '**/coverage/**'];
```

### 默认规则

```
{
  'unused-imports/no-unused-vars': [
    'error',
    {
      vars: 'all',
      varsIgnorePattern: '^_',   // 以 _ 开头的变量不检查
      args: 'none',               // 允许未使用的函数参数
      ignoreRestSiblings: true,
    },
  ]
}
```

## 示例

### Vue 3 项目

```typescript
// apps/vue_main/eslint.config.ts
import { vueConfig } from '@l_h5_tool/eslint-config';

export default vueConfig;
```

### 组件库（Vue + React）

```typescript
// ui/h5_shoelace_ui/eslint.config.ts
import { allConfig } from '@l_h5_tool/eslint-config';

export default allConfig;
```

### 工具包（纯 TS）

```typescript
// internal/utils/eslint.config.ts
import { tsConfig } from '@l_h5_tool/eslint-config';

export default tsConfig;
```

## API

### createConfig(options?, ...userConfigs)

- **options**: `OptionsConfig & TypedFlatConfigItem` - @antfu/eslint-config 的配置选项
- **userConfigs**: `TypedFlatConfigItem[]` - 额外的自定义配置

### 预设配置

- **tsConfig** - TypeScript only
- **vueConfig** - TypeScript + Vue
- **reactConfig** - TypeScript + React
- **allConfig** - TypeScript + Vue + React

### IDE使用

```
推荐使用pnpm包管理器
webstorm设置：在 WebStorm 中，进入 Settings（或 Preferences），然后找到 Languages & Frameworks → JavaScript → Package Manager，选择 pnpm。
```

## License

MIT
npm package: @la-batcave/emails
Description: Package npm centralisant les templates email de La Batcave. Render des composants React Email en HTML string, provider-agnostic.
Latest version: 0.1.4

# @la-batcave/emails

Package npm centralisant les templates email de La Batcave. Render des composants React Email en HTML string, provider-agnostic.

## Installation

```bash
pnpm add @la-batcave/emails
```

Peer dependencies : `react`, `react-dom` (v18 ou v19).

## Usage

```ts
import { renderMagicLink } from "@la-batcave/emails";

const html = await renderMagicLink({
  code: "482931",
  url: "https://auth.btcv.fr/verify?token=abc",
  serviceName: "La Batcave Auth",
});
// html est un string HTML prêt à envoyer via Resend, SMTP, Cloudflare, etc.
```

## Templates disponibles

### Magic Link

Fonction : `renderMagicLink(props): Promise<string>`
Composant : `MagicLinkEmail`
Type : `MagicLinkProps`

| Prop | Type | Description |
|------|------|-------------|
| `code` | `string` | Code OTP 6 chiffres |
| `url` | `string` | Lien magique cliquable |
| `serviceName` | `string` | Nom du service affiché dans le header |

Contenu : titre, code OTP en gros caractères, bouton CTA, mention d'expiration (15 min), footer disclaimer.

## Architecture

```
src/
  components/
    layout.tsx      # Layout de base : fond sombre, header serviceName, footer
    button.tsx      # Bouton CTA (fond #eabd1a, texte #121212)
    footer.tsx      # Footer : disclaimer + copyright BTCV
  templates/
    magic-link.tsx  # Template magic link + renderMagicLink()
  index.ts          # Point d'entrée public
```

Chaque template :
- Exporte un composant React (pour le preview et l'usage avancé)
- Exporte un default export du composant (requis par le dev server React Email)
- Exporte une fonction `render*()` async qui retourne du HTML string via `@react-email/render`

Les composants partagés (`Layout`, `Button`, `Footer`) sont dans `src/components/` et réutilisés par tous les templates.

## Design

Dark theme. Palette :

| Token | Valeur | Usage |
|-------|--------|-------|
| `primary` | `#eabd1a` | Boutons, accents |
| `background` | `#121212` | Fond de l'email |
| `surface` | `#1e1e1e` | Conteneur central |
| `text` | `#f0f0f0` | Texte principal |
| `textMuted` | `#a0a0a0` | Texte secondaire |
| `border` | `#2a2a2a` | Séparateurs |

## Ajouter un nouveau template

1. Creer `src/templates/mon-template.tsx`
2. Importer `Layout`, `Button`, `Footer` depuis `../components/`
3. Exporter le composant React en named + default export
4. Exporter une fonction `renderMonTemplate()` async
5. Ré-exporter depuis `src/index.ts`
6. Ajouter des tests dans `src/__tests__/`

## Scripts

| Commande | Description |
|----------|-------------|
| `pnpm dev` | Lance le preview React Email sur localhost:3000 |
| `pnpm build` | Build avec tsup (ESM + CJS + types dans dist/) |
| `pnpm test` | Lance les tests avec vitest |

## Build

tsup produit :
- `dist/index.mjs` (ESM)
- `dist/index.js` (CJS)
- `dist/index.d.ts` (types)

Le package est configuré avec `"type": "module"` et des exports conditionnels dans `package.json`.