@1money/component-ui 0.0.23 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/Table/interface.d.ts +2 -1
- package/es/components/Table/renderers/EmptyState.d.ts +2 -1
- package/es/components/Table/renderers/EmptyState.js +15 -8
- package/es/components/Table/style/Table.css +1 -1
- package/es/index.css +1 -1
- package/es/stories/docs/ComponentDocsPage.js +234 -0
- package/es/stories/docs/componentDocMeta.js +97 -0
- package/es/stories/docs/storybook-docs.css +79 -0
- package/lib/components/Table/interface.d.ts +2 -1
- package/lib/components/Table/renderers/EmptyState.d.ts +2 -1
- package/lib/components/Table/renderers/EmptyState.js +15 -7
- package/lib/components/Table/style/Table.css +1 -1
- package/lib/index.css +1 -1
- package/lib/stories/docs/ComponentDocsPage.js +244 -0
- package/lib/stories/docs/componentDocMeta.js +104 -0
- package/lib/stories/docs/storybook-docs.css +79 -0
- package/package.json +23 -8
- package/scripts/mcp-server/README.md +267 -0
- package/scripts/mcp-server/bin.mjs +2 -0
- package/scripts/mcp-server/drift.json +5 -0
- package/scripts/mcp-server/examples.generated.json +2651 -0
- package/scripts/mcp-server/index.generated.json +18098 -0
- package/scripts/mcp-server/index.mjs +308 -26
- package/scripts/mcp-server/tools/get-examples.mjs +125 -0
- package/scripts/mcp-server/tools/get-library-info.mjs +25 -0
- package/scripts/mcp-server/tools/get-symbol.mjs +232 -0
- package/scripts/mcp-server/tools/get-token.mjs +60 -0
- package/scripts/mcp-server/tools/list-icons.mjs +38 -0
- package/scripts/mcp-server/tools/list-symbols.mjs +46 -0
- package/scripts/mcp-server/tools/resolve-import.mjs +125 -0
- package/scripts/mcp-server/tools/search-symbols.mjs +79 -0
- package/.agents/skills/1money-component-dev/SKILL.md +0 -224
- package/.agents/skills/1money-component-dev/checklist.md +0 -159
- package/.agents/skills/1money-component-dev/references/ComponentPatterns.md +0 -478
- package/.agents/skills/1money-component-dev/references/FigmaExtractionChecklist.md +0 -144
- package/.agents/skills/1money-component-dev/references/HooksGuide.md +0 -360
- package/.agents/skills/1money-component-dev/references/SemanticColors.md +0 -215
- package/.agents/skills/1money-component-dev/references/StyleSystemAPI.md +0 -389
- package/.claude/settings.local.json +0 -120
- package/.claude/skills/1money-component-dev/SKILL.md +0 -229
- package/.claude/skills/1money-component-dev/checklist.md +0 -159
- package/.claude/skills/1money-component-dev/references/ComponentPatterns.md +0 -478
- package/.claude/skills/1money-component-dev/references/FigmaExtractionChecklist.md +0 -144
- package/.claude/skills/1money-component-dev/references/HooksGuide.md +0 -360
- package/.claude/skills/1money-component-dev/references/SemanticColors.md +0 -215
- package/.claude/skills/1money-component-dev/references/StyleSystemAPI.md +0 -389
- package/.claude/skills/1money-component-review/SKILL.md +0 -316
- package/.claude/skills/component-pipeline/SKILL.md +0 -116
- package/.claude/skills/component-pipeline/checklist.md +0 -125
- package/.hintrc +0 -13
- package/@types/global.d.ts +0 -28
- package/AGENTS.md +0 -546
- package/CLAUDE.md +0 -1
- package/jest.setup.d.ts +0 -1
- package/jest.setup.ts +0 -1
- package/patches/primereact.patch +0 -323
- package/patches/react-pro-sidebar.patch +0 -6421
- package/public/favicon.ico +0 -0
- package/public/fonts/Aeonik/Aeonik-Air.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-AirItalic.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-Black.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-BlackItalic.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-Bold.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-BoldItalic.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-Light.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-LightItalic.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-Medium.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-MediumItalic.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-Regular.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-RegularItalic.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-Thin.ttf +0 -0
- package/public/fonts/Aeonik/Aeonik-ThinItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-Black.ttf +0 -0
- package/public/fonts/Inter/Inter-BlackItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-Bold.ttf +0 -0
- package/public/fonts/Inter/Inter-BoldItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-ExtraBold.ttf +0 -0
- package/public/fonts/Inter/Inter-ExtraBoldItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-ExtraLight.ttf +0 -0
- package/public/fonts/Inter/Inter-ExtraLightItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-Italic.ttf +0 -0
- package/public/fonts/Inter/Inter-Light.ttf +0 -0
- package/public/fonts/Inter/Inter-LightItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-Medium.ttf +0 -0
- package/public/fonts/Inter/Inter-MediumItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-Regular.ttf +0 -0
- package/public/fonts/Inter/Inter-SemiBold.ttf +0 -0
- package/public/fonts/Inter/Inter-SemiBoldItalic.ttf +0 -0
- package/public/fonts/Inter/Inter-Thin.ttf +0 -0
- package/public/fonts/Inter/Inter-ThinItalic.ttf +0 -0
- package/public/fonts/Outfit/Outfit-Black.ttf +0 -0
- package/public/fonts/Outfit/Outfit-Bold.ttf +0 -0
- package/public/fonts/Outfit/Outfit-ExtraBold.ttf +0 -0
- package/public/fonts/Outfit/Outfit-ExtraLight.ttf +0 -0
- package/public/fonts/Outfit/Outfit-Light.ttf +0 -0
- package/public/fonts/Outfit/Outfit-Medium.ttf +0 -0
- package/public/fonts/Outfit/Outfit-Regular.ttf +0 -0
- package/public/fonts/Outfit/Outfit-SemiBold.ttf +0 -0
- package/public/fonts/Outfit/Outfit-Thin.ttf +0 -0
- package/public/github-mark.svg +0 -3
- package/public/tokens/GYEN.svg +0 -9
- package/public/tokens/PYUSD.svg +0 -9
- package/public/tokens/USDT.svg +0 -6
- package/scripts/mcp-server/resources.d.mts +0 -1
- package/scripts/mcp-server/resources.mjs +0 -102
- package/test/jsdom-global-register.d.ts +0 -1
- package/test/jsdom-global-register.js +0 -1
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: component-pipeline
|
|
3
|
-
description: Use when building a new component from a Figma design end-to-end in @1money/components-ui, from extraction through implementation, polish, and validation.
|
|
4
|
-
metadata:
|
|
5
|
-
requires:
|
|
6
|
-
- 1money-component-dev
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# component-pipeline
|
|
10
|
-
|
|
11
|
-
## Activation
|
|
12
|
-
|
|
13
|
-
**Act when**: User invokes `/component-pipeline` with a Figma URL to build a new component for `@1money/components-ui`.
|
|
14
|
-
**Goal**: Orchestrate the full pipeline — confirm inputs, delegate implementation to `1money-component-dev`, polish output against repo conventions, register exports, and validate.
|
|
15
|
-
|
|
16
|
-
## Resources
|
|
17
|
-
|
|
18
|
-
- **Polish Checklist**: `checklist.md`
|
|
19
|
-
- **Implementation Skill**: `1money-component-dev` (handles Figma extraction, scaffolding, and implementation)
|
|
20
|
-
|
|
21
|
-
## Inputs
|
|
22
|
-
|
|
23
|
-
- **Figma URL** (required): Design source URL for the component.
|
|
24
|
-
- **Component Name** (optional): PascalCase name. If not provided, derive from Figma frame name.
|
|
25
|
-
|
|
26
|
-
## Workflow
|
|
27
|
-
|
|
28
|
-
```dot
|
|
29
|
-
digraph pipeline {
|
|
30
|
-
"Phase 0:\nPrerequisites" -> "Phase 1:\nConfirm Inputs";
|
|
31
|
-
"Phase 1:\nConfirm Inputs" -> "Phase 2:\nScaffold & Implement";
|
|
32
|
-
"Phase 2:\nScaffold & Implement" -> "Phase 3:\nPolish";
|
|
33
|
-
"Phase 3:\nPolish" -> "All checks pass?" [label="walk checklist.md"];
|
|
34
|
-
"All checks pass?" -> "Phase 4:\nRegister Exports" [label="yes"];
|
|
35
|
-
"All checks pass?" -> "Fix violations" [label="no"];
|
|
36
|
-
"Fix violations" -> "Phase 3:\nPolish";
|
|
37
|
-
"Phase 4:\nRegister Exports" -> "Phase 5:\nValidate";
|
|
38
|
-
"Phase 5:\nValidate" -> "Lint/test pass?" [label="pnpm lint && pnpm test"];
|
|
39
|
-
"Lint/test pass?" -> "Present to user" [label="yes"];
|
|
40
|
-
"Lint/test pass?" -> "Fix errors" [label="no (max 3 retries)"];
|
|
41
|
-
"Fix errors" -> "Phase 5:\nValidate";
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Phase 0 — Prerequisites
|
|
46
|
-
|
|
47
|
-
Before starting, verify all three conditions. If any fails, stop and inform the user:
|
|
48
|
-
|
|
49
|
-
1. Component does not already exist: check `src/components/{Name}/` does not exist.
|
|
50
|
-
2. `@1money/hooks` is available: check `node_modules/@1money/hooks` exists.
|
|
51
|
-
3. Figma MCP is accessible: attempt a simple `mcp__figma__get_metadata` call on the provided URL.
|
|
52
|
-
|
|
53
|
-
### Phase 1 — Confirm Inputs *(gate — do not proceed until resolved)*
|
|
54
|
-
|
|
55
|
-
1. **Figma URL**: If not provided as argument, ask the user now.
|
|
56
|
-
2. **Component Name**: If not provided, derive from the Figma frame name. Validate it is PascalCase. If the name conflicts with an existing PrimeReact component already in the library, suggest appending `Beta`.
|
|
57
|
-
3. **Output Mode**: Ask only if ambiguous. Default is `Code`.
|
|
58
|
-
|
|
59
|
-
### Phase 2 — Scaffold & Implement
|
|
60
|
-
|
|
61
|
-
Invoke the `1money-component-dev` skill with:
|
|
62
|
-
- Figma URL from Phase 1
|
|
63
|
-
- Component Name from Phase 1
|
|
64
|
-
- Output Mode: `Code`
|
|
65
|
-
|
|
66
|
-
This skill handles everything: Figma extraction via MCP, token mapping, file scaffolding (8 files), variant DSL, hooks, classnames, and its own internal checklist.
|
|
67
|
-
|
|
68
|
-
Wait for `1money-component-dev` to complete before proceeding.
|
|
69
|
-
|
|
70
|
-
### Phase 3 — Polish *(mandatory)*
|
|
71
|
-
|
|
72
|
-
Walk through `checklist.md` item by item. For each item:
|
|
73
|
-
1. Read the generated file
|
|
74
|
-
2. Compare against the reference pattern (listed in the checklist)
|
|
75
|
-
3. If violation found: fix it immediately
|
|
76
|
-
4. Move to next item
|
|
77
|
-
|
|
78
|
-
This phase catches what `1money-component-dev` may miss — the precise code style and conventions of this specific repo, verified against actual Button, Checkbox, and Tag source files.
|
|
79
|
-
|
|
80
|
-
**Do not skip this phase.** Even if `1money-component-dev` ran its own checklist, the polish checklist verifies against the actual codebase patterns, not template expectations.
|
|
81
|
-
|
|
82
|
-
### Phase 4 — Register Exports
|
|
83
|
-
|
|
84
|
-
1. **Read `src/index.ts` first** — do not assume a barrel pattern. Match the existing style exactly.
|
|
85
|
-
2. Add an import statement for the new component, matching the format of existing imports.
|
|
86
|
-
3. If the file has export statements, add matching exports and a type export for the Props interface (e.g., `export type { {Name}Props } from './components/{Name}'`). If it only has imports (current state), add only an import.
|
|
87
|
-
4. **Check `package.json` exports**: If the component is not already listed in the `"exports"` field, add a tree-shakeable entry:
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
"./{Name}": {
|
|
91
|
-
"types": "./es/components/{Name}/index.d.ts",
|
|
92
|
-
"import": "./es/components/{Name}/index.js",
|
|
93
|
-
"require": "./lib/components/{Name}/index.js"
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Phase 5 — Validate
|
|
98
|
-
|
|
99
|
-
1. Run `pnpm lint`. If errors, fix and re-run (max 3 attempts).
|
|
100
|
-
2. Run `pnpm test`. If snapshot failures are expected (new component), update with `pnpm test -- -u`. If real failures, fix.
|
|
101
|
-
3. Run `pnpm dev` briefly to verify Storybook compiles without errors for the new component, then stop the server.
|
|
102
|
-
4. Present the completed component to the user for review: list all created/modified files and summarize what was built.
|
|
103
|
-
|
|
104
|
-
## Error Handling
|
|
105
|
-
|
|
106
|
-
- **Phase 0 failure**: Stop and inform user which prerequisite failed.
|
|
107
|
-
- **Phase 2 failure** (MCP errors, skill issues): Report details to user and ask how to proceed.
|
|
108
|
-
- **Phase 3 violations**: Fix inline — do not ask user for each violation.
|
|
109
|
-
- **Phase 5 lint/test failures**: Fix and retry up to 3 times, then surface to user.
|
|
110
|
-
|
|
111
|
-
## Constraints
|
|
112
|
-
|
|
113
|
-
- **Do NOT invoke** `figma-1money-codegen` — it targets consumer code (`@1money/components-ui` usage), not this library's internals.
|
|
114
|
-
- **Do NOT invoke** `1money-front-code-review` — it targets consumer code patterns and would produce false positives.
|
|
115
|
-
- **Do NOT duplicate** content from `1money-component-dev` — this skill orchestrates, it does not re-implement.
|
|
116
|
-
- **Always read before writing** `src/index.ts` — match the actual barrel pattern, not template expectations.
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# Component Pipeline Polish Checklist
|
|
2
|
-
|
|
3
|
-
Walk through each item after `1money-component-dev` completes. Read the generated file, compare against the reference, fix violations inline.
|
|
4
|
-
|
|
5
|
-
## classnames Utility
|
|
6
|
-
|
|
7
|
-
Reference: `src/components/Button/Button.tsx`
|
|
8
|
-
|
|
9
|
-
- [ ] Imports `classnames` (default export) from `@/utils/classnames`
|
|
10
|
-
- [ ] Imports `joinCls` (named export) from `@/utils/classnames`
|
|
11
|
-
- [ ] Creates `classes` via `const classes = classnames(prefixCls)`
|
|
12
|
-
- [ ] Root element className uses `classes(void 0, joinCls(classes(variant), classes(size), className))`
|
|
13
|
-
- [ ] Variant modifier classes use `classes('variant-name')`
|
|
14
|
-
- [ ] Sub-element classes use `classes('sub-element-name')`
|
|
15
|
-
|
|
16
|
-
## Variant DSL (SCSS)
|
|
17
|
-
|
|
18
|
-
Reference: `src/components/Button/style/Button.scss`
|
|
19
|
-
|
|
20
|
-
- [ ] Schema generated via `om-variant-schema($component, $key1, $key2, ...)` — not hand-written
|
|
21
|
-
- [ ] Schema variable named `${component}-variant-schema` (e.g., `$button-beta-variant-schema`)
|
|
22
|
-
- [ ] Variants map variable named `${component}-variants` (e.g., `$button-beta-variants`)
|
|
23
|
-
- [ ] All variant names are quoted strings (e.g., `'primary'`, `'white'`)
|
|
24
|
-
- [ ] `om-variant-default` called on root selector with default variant name and schema
|
|
25
|
-
- [ ] `om-variant-classes` called with `$default:` param to skip the default variant
|
|
26
|
-
- [ ] Base styles consume variant values via `var(--om-{component}-{key})` — not direct token calls
|
|
27
|
-
|
|
28
|
-
## Size Variants (SCSS)
|
|
29
|
-
|
|
30
|
-
Reference: `src/components/Button/style/Button.scss`
|
|
31
|
-
|
|
32
|
-
- [ ] Size variants use `&-{size}` nesting (e.g., `&-medium`, `&-small`)
|
|
33
|
-
- [ ] Size variants are separate from color Variant DSL
|
|
34
|
-
- [ ] Padding uses `om-component-padding()` token function
|
|
35
|
-
- [ ] Border radius uses `om-radius()` token function
|
|
36
|
-
- [ ] Typography uses `@include om-typography(label, {size})`
|
|
37
|
-
|
|
38
|
-
## Disabled & Hover States (SCSS)
|
|
39
|
-
|
|
40
|
-
Reference: `src/components/Checkbox/style/Checkbox.scss`, `src/components/Button/style/Button.scss`
|
|
41
|
-
|
|
42
|
-
- [ ] Disabled state targets `.p-disabled` class (PrimeReact convention)
|
|
43
|
-
- [ ] Disabled styles match Figma design exactly — no invented opacity or color dimming
|
|
44
|
-
- [ ] Hover states use `&:hover:not(.p-disabled)` guard
|
|
45
|
-
|
|
46
|
-
## Hooks
|
|
47
|
-
|
|
48
|
-
Reference: `src/components/Checkbox/Checkbox.tsx`
|
|
49
|
-
|
|
50
|
-
- [ ] Controlled/uncontrolled components use `useControlledState` from `@1money/hooks`
|
|
51
|
-
- [ ] Event handlers use `useEventCallback` or `useMemoizedFn` from `@1money/hooks`
|
|
52
|
-
- [ ] No `useCallback` with long dependency arrays
|
|
53
|
-
- [ ] All hooks imported from `@1money/hooks` — not from `@1money/components-ui` or external packages
|
|
54
|
-
|
|
55
|
-
## Component Structure
|
|
56
|
-
|
|
57
|
-
Reference: All existing components
|
|
58
|
-
|
|
59
|
-
- [ ] Default export wrapped in `memo()`: `export default memo({Name})`
|
|
60
|
-
- [ ] Named export also available: `export const {Name}: FC<...> = ...`
|
|
61
|
-
- [ ] `prefixCls` prop has default matching kebab-case component name
|
|
62
|
-
- [ ] Remaining PrimeReact props spread via `{...rest}`
|
|
63
|
-
- [ ] Constants extracted — no magic strings
|
|
64
|
-
|
|
65
|
-
## Stories
|
|
66
|
-
|
|
67
|
-
Reference: `src/components/Button/Button.stories.tsx`
|
|
68
|
-
|
|
69
|
-
- [ ] Style imported via `import './style';` (not full path)
|
|
70
|
-
- [ ] Variant constants defined as `as const` arrays outside the story (e.g., `const COLORS = [...] as const`)
|
|
71
|
-
- [ ] `AllVariants` story has `tags: ['!autodocs', 'dev']`
|
|
72
|
-
- [ ] `AllVariants` shows matrix of all size x variant combinations
|
|
73
|
-
- [ ] Meta has `tags: ['autodocs']`
|
|
74
|
-
- [ ] Mock handlers use `fn()` from `@storybook/test`
|
|
75
|
-
|
|
76
|
-
## Tests
|
|
77
|
-
|
|
78
|
-
Reference: `src/components/Spinner/__test__/index.test.tsx`
|
|
79
|
-
|
|
80
|
-
- [ ] Imports `jsdom-global/register` as first import
|
|
81
|
-
- [ ] Console error suppression for `Could not parse CSS stylesheet` and `findDOMNode is deprecated`
|
|
82
|
-
- [ ] Mocks `lottie-web` if component dependency chain includes it
|
|
83
|
-
- [ ] Has `describe('{Name}')` with at least `it('renders correctly')` + `toMatchSnapshot()`
|
|
84
|
-
|
|
85
|
-
## SCSS Foundation
|
|
86
|
-
|
|
87
|
-
Reference: All component SCSS files
|
|
88
|
-
|
|
89
|
-
- [ ] First line: `@use '@/styles/api' as *;`
|
|
90
|
-
- [ ] `$component: '{kebab-name}';` defined at top
|
|
91
|
-
- [ ] Root selector: `.#{$prefix}-#{$component}`
|
|
92
|
-
- [ ] Zero raw hex values
|
|
93
|
-
- [ ] Zero raw pixel values for design tokens (spacing, radius, heights)
|
|
94
|
-
- [ ] Zero raw font-family declarations
|
|
95
|
-
- [ ] No `om-color()` usage (removed, compile-time error)
|
|
96
|
-
- [ ] No `om-sx` usage (business code only, not component SCSS)
|
|
97
|
-
|
|
98
|
-
## Icons
|
|
99
|
-
|
|
100
|
-
Reference: `src/components/Tag/Tag.tsx`
|
|
101
|
-
|
|
102
|
-
- [ ] All icons use `<Icons name="..." />` from `@/components/Icons`
|
|
103
|
-
- [ ] Icon props typed as `IconName` from `@/components/Icons` — not `string` or `ReactNode`
|
|
104
|
-
- [ ] No inline SVGs or external icon libraries (exception: custom icons specific to component like Checkbox check/minus)
|
|
105
|
-
|
|
106
|
-
## Barrel Exports
|
|
107
|
-
|
|
108
|
-
Reference: `src/index.ts` (read actual file first)
|
|
109
|
-
|
|
110
|
-
- [ ] Import statement added matching existing format in `src/index.ts`
|
|
111
|
-
- [ ] Export pattern matches actual file structure — only imports, no exports (exports defined in component index.ts)
|
|
112
|
-
- [ ] `package.json` exports entry exists for tree-shakeable import
|
|
113
|
-
|
|
114
|
-
## Anti-Pattern Scan
|
|
115
|
-
|
|
116
|
-
Scan all generated files for these violations:
|
|
117
|
-
|
|
118
|
-
- [ ] No `om-sx` in component SCSS
|
|
119
|
-
- [ ] No `om-color()` anywhere
|
|
120
|
-
- [ ] No raw `useState` where `useControlledState` or `useSafeState` should be used
|
|
121
|
-
- [ ] No hooks imported from `@1money/components-ui` (use `@1money/hooks`)
|
|
122
|
-
- [ ] No inline SVGs for icons that exist in `Icons` component (except custom component-specific icons)
|
|
123
|
-
- [ ] No `enum` — only union types + `as const`
|
|
124
|
-
- [ ] No `type` for object structures — only `interface`
|
|
125
|
-
- [ ] No imports from `@1money/components-ui` inside the library
|
package/.hintrc
DELETED
package/@types/global.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
declare module '*.css';
|
|
2
|
-
|
|
3
|
-
declare module '*.less';
|
|
4
|
-
|
|
5
|
-
declare module '*.scss';
|
|
6
|
-
|
|
7
|
-
declare module '*.sass';
|
|
8
|
-
|
|
9
|
-
declare module '*.svg';
|
|
10
|
-
|
|
11
|
-
declare module '*.png';
|
|
12
|
-
|
|
13
|
-
declare module '*.jpg';
|
|
14
|
-
|
|
15
|
-
declare module '*.jpeg';
|
|
16
|
-
|
|
17
|
-
declare module '*.gif';
|
|
18
|
-
|
|
19
|
-
declare module '*.md' {
|
|
20
|
-
const content: string;
|
|
21
|
-
export default content;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
declare namespace JSX {
|
|
25
|
-
interface Element {
|
|
26
|
-
[elemName: string]: any;
|
|
27
|
-
}
|
|
28
|
-
}
|