200 lines
7.5 KiB
TypeScript
200 lines
7.5 KiB
TypeScript
import { html, css } from '@design.estate/dees-element';
|
|
import '@design.estate/dees-wcctools/demotools';
|
|
import './dees-panel.js';
|
|
|
|
export const demoFunc = () => html`
|
|
<dees-demowrapper>
|
|
<style>
|
|
${css`
|
|
.demo-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 24px;
|
|
padding: 24px;
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
dees-panel {
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
dees-panel:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.demo-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
gap: 24px;
|
|
}
|
|
|
|
.result-display {
|
|
margin-top: 16px;
|
|
padding: 12px;
|
|
background: rgba(0, 105, 242, 0.1);
|
|
border-radius: 4px;
|
|
font-family: monospace;
|
|
font-size: 14px;
|
|
}
|
|
`}
|
|
</style>
|
|
|
|
<div class="demo-container">
|
|
<dees-panel .title=${'1. Basic Radio Groups'} .subtitle=${'Simple string options for common use cases'}>
|
|
<div class="demo-grid">
|
|
<dees-input-radiogroup
|
|
.label=${'Subscription Plan'}
|
|
.options=${['Basic - $9/month', 'Pro - $29/month', 'Enterprise - $99/month']}
|
|
.selectedOption=${'Pro - $29/month'}
|
|
.description=${'Choose your subscription tier'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Priority Level'}
|
|
.options=${['High', 'Medium', 'Low']}
|
|
.selectedOption=${'Medium'}
|
|
.required=${true}
|
|
></dees-input-radiogroup>
|
|
</div>
|
|
</dees-panel>
|
|
|
|
<dees-panel .title=${'2. Horizontal Layout'} .subtitle=${'Radio groups with horizontal arrangement'}>
|
|
<dees-input-radiogroup
|
|
.label=${'Do you agree with the terms?'}
|
|
.options=${['Yes', 'No', 'Maybe']}
|
|
.direction=${'horizontal'}
|
|
.selectedOption=${'Yes'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Experience Level'}
|
|
.options=${['Beginner', 'Intermediate', 'Expert']}
|
|
.direction=${'horizontal'}
|
|
.selectedOption=${'Intermediate'}
|
|
.description=${'Select your experience level with web development'}
|
|
></dees-input-radiogroup>
|
|
</dees-panel>
|
|
|
|
<dees-panel .title=${'3. Advanced Options'} .subtitle=${'Using object format with keys and payloads'}>
|
|
<dees-input-radiogroup
|
|
id="advanced-radio"
|
|
.label=${'Select Region'}
|
|
.options=${[
|
|
{ option: 'United States (US East)', key: 'us-east', payload: { region: 'us-east-1', latency: 20 } },
|
|
{ option: 'Europe (Frankfurt)', key: 'eu-central', payload: { region: 'eu-central-1', latency: 50 } },
|
|
{ option: 'Asia Pacific (Singapore)', key: 'ap-southeast', payload: { region: 'ap-southeast-1', latency: 120 } }
|
|
]}
|
|
.selectedOption=${'eu-central'}
|
|
.description=${'Choose the closest region for optimal performance'}
|
|
@change=${(e: CustomEvent) => {
|
|
const display = document.querySelector('#region-result');
|
|
if (display) {
|
|
display.textContent = 'Selected: ' + JSON.stringify(e.detail.value, null, 2);
|
|
}
|
|
}}
|
|
></dees-input-radiogroup>
|
|
<div id="region-result" class="result-display">Selected: { "region": "eu-central-1", "latency": 50 }</div>
|
|
</dees-panel>
|
|
|
|
<dees-panel .title=${'4. Survey Example'} .subtitle=${'Multiple radio groups for surveys and forms'}>
|
|
<div class="demo-grid">
|
|
<dees-input-radiogroup
|
|
.label=${'How satisfied are you?'}
|
|
.options=${['Very Satisfied', 'Satisfied', 'Neutral', 'Dissatisfied', 'Very Dissatisfied']}
|
|
.selectedOption=${'Satisfied'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Would you recommend us?'}
|
|
.options=${['Definitely', 'Probably', 'Not Sure', 'Probably Not', 'Definitely Not']}
|
|
.selectedOption=${'Probably'}
|
|
></dees-input-radiogroup>
|
|
</div>
|
|
</dees-panel>
|
|
|
|
<dees-panel .title=${'5. States & Validation'} .subtitle=${'Different states and validation examples'}>
|
|
<div class="demo-grid">
|
|
<dees-input-radiogroup
|
|
.label=${'Required Selection'}
|
|
.options=${['Option A', 'Option B', 'Option C']}
|
|
.required=${true}
|
|
.description=${'This field is required'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Disabled State'}
|
|
.options=${['Disabled Option 1', 'Disabled Option 2', 'Disabled Option 3']}
|
|
.selectedOption=${'Disabled Option 2'}
|
|
.disabled=${true}
|
|
></dees-input-radiogroup>
|
|
</div>
|
|
</dees-panel>
|
|
|
|
<dees-panel .title=${'6. Settings Example'} .subtitle=${'Common patterns in application settings'}>
|
|
<dees-input-radiogroup
|
|
.label=${'Theme Preference'}
|
|
.options=${[
|
|
{ option: 'Light Theme', key: 'light', payload: 'light' },
|
|
{ option: 'Dark Theme', key: 'dark', payload: 'dark' },
|
|
{ option: 'System Default', key: 'system', payload: 'auto' }
|
|
]}
|
|
.selectedOption=${'dark'}
|
|
.description=${'Choose how the application should appear'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Notification Frequency'}
|
|
.options=${['All Notifications', 'Important Only', 'None']}
|
|
.selectedOption=${'Important Only'}
|
|
.description=${'Control how often you receive notifications'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Language'}
|
|
.options=${['English', 'German', 'French', 'Spanish', 'Japanese']}
|
|
.selectedOption=${'English'}
|
|
.direction=${'horizontal'}
|
|
></dees-input-radiogroup>
|
|
</dees-panel>
|
|
|
|
<dees-panel .title=${'7. Form Integration'} .subtitle=${'Works seamlessly with dees-form'}>
|
|
<dees-form>
|
|
<dees-input-text
|
|
.label=${'Product Name'}
|
|
.required=${true}
|
|
.key=${'productName'}
|
|
></dees-input-text>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Product Category'}
|
|
.options=${['Electronics', 'Clothing', 'Books', 'Home & Garden', 'Sports']}
|
|
.required=${true}
|
|
.key=${'category'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Condition'}
|
|
.options=${['New', 'Like New', 'Good', 'Fair', 'Poor']}
|
|
.direction=${'horizontal'}
|
|
.key=${'condition'}
|
|
.selectedOption=${'New'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-input-radiogroup
|
|
.label=${'Shipping Speed'}
|
|
.options=${[
|
|
{ option: 'Standard (5-7 days)', key: 'standard', payload: { days: 7, price: 0 } },
|
|
{ option: 'Express (2-3 days)', key: 'express', payload: { days: 3, price: 10 } },
|
|
{ option: 'Overnight', key: 'overnight', payload: { days: 1, price: 25 } }
|
|
]}
|
|
.selectedOption=${'standard'}
|
|
.key=${'shipping'}
|
|
></dees-input-radiogroup>
|
|
|
|
<dees-form-submit .text=${'Submit Product'}></dees-form-submit>
|
|
</dees-form>
|
|
</dees-panel>
|
|
</div>
|
|
</dees-demowrapper>
|
|
`; |