Script
Description
A component for adding script tags to your pages. Supports external scripts, inline scripts, modules, and JSON-LD with validation and sanitization.
Import
import { Script } from '@components/common/Script';
Basic Usage
import { Script } from '@components/common/Script';
// External script
<Script src="/path/to/script.js" />
// Inline script
<Script>
{`console.log('Hello World');`}
</Script>
Script Component Props
| Prop | Type | Default | Description |
|---|---|---|---|
| src | string | - | External script URL |
| async | boolean | false | Load script asynchronously |
| defer | boolean | false | Defer script execution |
| type | string | 'text/javascript' | Script type (module, importmap, etc.) |
| crossOrigin | 'anonymous' | 'use-credentials' | - | CORS settings |
| integrity | string | - | Subresource integrity hash |
| nonce | string | - | Content Security Policy nonce |
| fetchPriority | 'high' | 'low' | 'auto' | 'auto' | Resource fetch priority |
Helper Components
ScriptExternal
For loading external JavaScript files:
import { ScriptExternal } from '@components/common/Script';
<ScriptExternal
src="https://cdn.example.com/script.js"
async={true}
/>
ScriptModule
For ES modules:
import { ScriptModule } from '@components/common/Script';
// External module
<ScriptModule src="/path/to/module.js" />
// Inline module
<ScriptModule>
{`import { something } from './module.js';`}
</ScriptModule>
ScriptInline
For inline JavaScript:
import { ScriptInline } from '@components/common/Script';
<ScriptInline>
{`
console.log('Inline script');
window.myVar = 'value';
`}
</ScriptInline>
ScriptJSON
For JSON-LD structured data:
import { ScriptJSON } from '@components/common/Script';
<ScriptJSON
id="product-schema"
data={{
"@context": "https://schema.org",
"@type": "Product",
"name": "Product Name",
"price": "99.99"
}}
/>