duck-dev-lib 0.0.74 → 0.0.75
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/fesm2022/{duck-dev-lib-en-HnIDQoqi.mjs → duck-dev-lib-en-BUr6Xr1h.mjs} +27 -3
- package/fesm2022/{duck-dev-lib-en-HnIDQoqi.mjs.map → duck-dev-lib-en-BUr6Xr1h.mjs.map} +1 -1
- package/fesm2022/{duck-dev-lib-ru-CsxjiQCC.mjs → duck-dev-lib-ru-BxtBEpPE.mjs} +27 -3
- package/fesm2022/{duck-dev-lib-ru-CsxjiQCC.mjs.map → duck-dev-lib-ru-BxtBEpPE.mjs.map} +1 -1
- package/fesm2022/duck-dev-lib.mjs +147 -7
- package/fesm2022/duck-dev-lib.mjs.map +1 -1
- package/package.json +1 -1
- package/types/duck-dev-lib.d.ts +35 -1
|
@@ -5788,6 +5788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
5788
5788
|
|
|
5789
5789
|
class QuickStartBlock {
|
|
5790
5790
|
t = inject(TranslocoService);
|
|
5791
|
+
doc = inject(DOCUMENT);
|
|
5791
5792
|
colorViolet = AccentEnumColor.Violet;
|
|
5792
5793
|
colorOrange = AccentEnumColor.Orange;
|
|
5793
5794
|
colorWhite = AccentEnumColor.White;
|
|
@@ -5801,8 +5802,20 @@ class QuickStartBlock {
|
|
|
5801
5802
|
onPreviewTabChange(tab) {
|
|
5802
5803
|
this.activePreviewTab.set(tab);
|
|
5803
5804
|
}
|
|
5805
|
+
downloadDocs() {
|
|
5806
|
+
fetch('docs/NEOBRUTALISM.md')
|
|
5807
|
+
.then((res) => res.blob())
|
|
5808
|
+
.then((blob) => {
|
|
5809
|
+
const url = URL.createObjectURL(blob);
|
|
5810
|
+
const a = this.doc.createElement('a');
|
|
5811
|
+
a.href = url;
|
|
5812
|
+
a.download = 'NEOBRUTALISM.md';
|
|
5813
|
+
a.click();
|
|
5814
|
+
URL.revokeObjectURL(url);
|
|
5815
|
+
});
|
|
5816
|
+
}
|
|
5804
5817
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: QuickStartBlock, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5805
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: QuickStartBlock, isStandalone: true, selector: "app-quick-start-block", ngImport: i0, template: "<div class=\"quick-start\">\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 HERO \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <header class=\"hero\">\n <div class=\"hero__badges\">\n <dd-badge [text]=\"'Angular 21'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Signals'\" [color]=\"colorOrange\" [variant]=\"'soft'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Standalone'\" [color]=\"colorGray\" [variant]=\"'outline'\" [size]=\"'sm'\" />\n </div>\n <h1>{{ 'quickStart.hero.title' | transloco }}</h1>\n <p class=\"hero__subtitle\">{{ 'quickStart.hero.subtitle' | transloco }}</p>\n </header>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 1 \u2014 INSTALL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'01'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.install.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-signal [color]=\"colorViolet\">\n <small>{{ 'quickStart.install.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.install.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.install.cardText' | transloco }}</p>\n </dd-card-signal>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">angular.json</div>\n <pre><code>\"styles\": [\n \"node_modules/duck-dev-lib/styles/variables.scss\",\n \"src/styles.scss\"\n]</code></pre>\n </div>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">app.config.ts</div>\n <pre><code>import {{ '{' }} provideTransloco {{ '}' }} from '@jsverse/transloco';\n\nexport const appConfig = {{ '{' }}\n providers: [\n provideTransloco({{ '{' }}\n config: {{ '{' }} availableLangs: ['en', 'ru'], defaultLang: 'en' {{ '}' }}\n {{ '}' }})\n ]\n{{ '}' }};</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 2 \u2014 PALETTE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'02'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.palette.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.palette.description' | transloco }}</p>\n\n <div class=\"palette-grid\">\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.neutralsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch\" style=\"background: var(--dd-base-0)\">\n <span class=\"swatch__label\">0</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-100)\">\n <span class=\"swatch__label\">100</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-200)\">\n <span class=\"swatch__label\">200</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-300)\">\n <span class=\"swatch__label\">300</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-400)\">\n <span class=\"swatch__label swatch__label--light\">400</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-500)\">\n <span class=\"swatch__label swatch__label--light\">500</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-600)\">\n <span class=\"swatch__label swatch__label--light\">600</span>\n </div>\n </div>\n </div>\n\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.accentsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-secondary)\">\n <span class=\"swatch__label swatch__label--light\">secondary</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-orange)\">\n <span class=\"swatch__label swatch__label--light\">orange</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-blue)\">\n <span class=\"swatch__label swatch__label--light\">blue</span>\n </div>\n </div>\n </div>\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorViolet\" [tail]=\"'left'\">\n <p>\n <strong>{{ 'quickStart.palette.tipTitle' | transloco }}</strong>\n {{ 'quickStart.palette.tipText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 3 \u2014 THEMES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'03'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.themes.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <div class=\"theme-cards\">\n <dd-card-minimal [color]=\"colorWhite\">\n <small>{{ 'quickStart.themes.lightEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.lightTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.lightText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-minimal [color]=\"colorDark\">\n <small>{{ 'quickStart.themes.darkEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.darkTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.darkText' | transloco }}</p>\n </dd-card-minimal>\n </div>\n\n <ng-template #themeHtmlSnippet>\n <pre class=\"accordion-code\"><code><html ddTheme=\"dark\">\n <body>\n <app-root></app-root>\n </body>\n</html></code></pre>\n </ng-template>\n\n <ng-template #themeToggleSnippet>\n <pre class=\"accordion-code\"><code>setTheme(theme: 'dark' | 'light') {{ '{' }}\n document.documentElement\n .setAttribute('ddTheme', theme);\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.themes.htmlAccordionTitle' | transloco\"\n [content]=\"themeHtmlSnippet\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.themes.toggleAccordionTitle' | transloco\"\n [content]=\"themeToggleSnippet\"\n [color]=\"colorViolet\"\n />\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 4 \u2014 CUSTOM THEME \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'04'\" [color]=\"colorDark\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.custom.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-outline [color]=\"colorOrange\">\n <small>{{ 'quickStart.custom.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.custom.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.custom.cardText' | transloco }}</p>\n </dd-card-outline>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">styles.scss</div>\n <pre><code>[ddTheme='brand'] {{ '{' }}\n --dd-base-0: #ffffff;\n --dd-base-100: #f4f6ff;\n --dd-base-300: #dbe0ff;\n --dd-base-600: #0e1028;\n --dd-base-secondary: #6829ff;\n --dd-base-accent-orange: #fe7b20;\n --dd-base-accent-blue: #3254f3;\n{{ '}' }}</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 5 \u2014 COLORS IN COMPONENTS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'05'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.colors.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.colors.description' | transloco }}</p>\n\n <div class=\"code-block code-block--compact\">\n <div class=\"code-block__label\">AccentEnumColor</div>\n <pre><code>import {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n// Violet \u00B7 Orange \u00B7 White \u00B7 Gray \u00B7 Dark</code></pre>\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.progressTitle' | transloco }}</h3>\n <div class=\"progress-showcase\">\n <duck-dev-progress-line [label]=\"'Violet'\" [value]=\"85\" [color]=\"colorViolet\" />\n <duck-dev-progress-line [label]=\"'Orange'\" [value]=\"60\" [color]=\"colorOrange\" />\n <duck-dev-progress-line [label]=\"'Gray'\" [value]=\"40\" [color]=\"colorGray\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.buttonsTitle' | transloco }}</h3>\n <div class=\"buttons-showcase\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.badgesTitle' | transloco }}</h3>\n <div class=\"badges-showcase\">\n <dd-badge [text]=\"'Solid'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Soft'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Outline'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n <dd-badge [text]=\"'Dark'\" [color]=\"colorDark\" [variant]=\"'solid'\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.cardsTitle' | transloco }}</h3>\n <div class=\"cards-showcase\">\n <dd-card-accent [color]=\"colorViolet\">\n <div>{{ 'quickStart.colors.cardViolet' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorOrange\">\n <div>{{ 'quickStart.colors.cardOrange' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorDark\">\n <div>{{ 'quickStart.colors.cardDark' | transloco }}</div>\n </dd-card-accent>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 6 \u2014 TWO STYLES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'06'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.styles.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.styles.description' | transloco }}</p>\n\n <duck-dev-tab [tabs]=\"previewTabs\" (tabChange)=\"onPreviewTabChange($event)\">\n @if (activePreviewTab().id === 'classic') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n <div class=\"style-preview__row\">\n <dd-badge [text]=\"'Status'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Label'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Tag'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n </div>\n <duck-dev-progress-line [label]=\"'Progress'\" [value]=\"72\" [color]=\"colorViolet\" />\n <div class=\"style-preview__cards\">\n <dd-card-minimal [color]=\"colorViolet\">\n <small>Classic</small>\n <h3>{{ 'quickStart.styles.classicCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.classicCardText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-signal [color]=\"colorOrange\">\n <small>Signal</small>\n <h3>{{ 'quickStart.styles.signalCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.signalCardText' | transloco }}</p>\n </dd-card-signal>\n </div>\n </div>\n }\n @if (activePreviewTab().id === 'neobrutalism') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-neobrutal-slab\n [text]=\"'Slab'\"\n [helperText]=\"'click me'\"\n [colorButton]=\"colorViolet\"\n />\n <duck-dev-button-neobrutal-slab\n [text]=\"'Action'\"\n [helperText]=\"'do it'\"\n [colorButton]=\"colorOrange\"\n />\n </div>\n <dd-speaker-bubble-soft [color]=\"colorOrange\" [tail]=\"'right'\">\n <p>\n <strong>Neobrutalism</strong> \u2014\n {{ 'quickStart.styles.neobrutalBubbleText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </div>\n }\n </duck-dev-tab>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 7 \u2014 USAGE EXAMPLE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'07'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.usage.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <ng-template #usageTemplate>\n <pre class=\"accordion-code\"><code><duck-dev-button-casper\n [text]=\"'Click me'\"\n [colorButton]=\"colorViolet\"\n/>\n\n<dd-badge\n [text]=\"'New'\"\n [color]=\"colorOrange\"\n [variant]=\"'solid'\"\n/>\n\n<dd-card-minimal [color]=\"colorViolet\">\n <h3>Title</h3>\n <p>Content goes here</p>\n</dd-card-minimal></code></pre>\n </ng-template>\n\n <ng-template #usageComponent>\n <pre\n class=\"accordion-code\"\n ><code>import {{ '{' }} Component {{ '}' }} from '@angular/core';\nimport {{ '{' }} ButtonCasper {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} Badge {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} DuckDevCardMinimal {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n@Component({{ '{' }}\n selector: 'app-example',\n standalone: true,\n imports: [ButtonCasper, Badge, DuckDevCardMinimal],\n templateUrl: './example.html',\n{{ '}' }})\nexport class ExampleComponent {{ '{' }}\n colorViolet = AccentEnumColor.Violet;\n colorOrange = AccentEnumColor.Orange;\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.usage.templateTitle' | transloco\"\n [content]=\"usageTemplate\"\n [color]=\"colorOrange\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.usage.componentTitle' | transloco\"\n [content]=\"usageComponent\"\n [color]=\"colorViolet\"\n />\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorGray\" [tail]=\"'left'\">\n <p>{{ 'quickStart.usage.tip' | transloco }}</p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n</div>\n", styles: [".quick-start{max-width:960px;margin:0 auto;padding:48px 24px 80px;display:flex;flex-direction:column;gap:56px}.hero{text-align:center;padding:40px 0 16px}.hero__badges{display:flex;justify-content:center;gap:10px;margin-bottom:24px}.hero h1{font-size:42px;font-weight:800;color:var(--dd-base-600);line-height:1.15;margin:0 0 16px;letter-spacing:-.02em}.hero__subtitle{font-size:18px;color:var(--dd-base-400);line-height:1.6;max-width:600px;margin:0 auto}.step__header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.step__header h2{font-size:26px;font-weight:700;color:var(--dd-base-600);margin:0}.section-description{font-size:16px;line-height:1.65;color:var(--dd-base-400);margin:0 0 28px}.code-block{margin:20px 0;border-radius:10px;overflow:hidden;border:1px solid var(--dd-base-300)}.code-block__label{padding:8px 16px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--dd-base-300);background:var(--dd-base-600);border-bottom:1px solid var(--dd-base-500)}.code-block pre{margin:0;padding:20px;background:var(--dd-base-600);overflow-x:auto}.code-block pre code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.code-block--compact{margin:0 0 28px}.accordion-code{margin:0;padding:20px;background:var(--dd-base-600);border-radius:8px;overflow-x:auto}.accordion-code code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.palette-grid{display:flex;flex-direction:column;gap:28px;margin-bottom:32px}.palette-group h3{font-size:14px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.06em;margin:0 0 12px}.swatch-row{display:flex;gap:6px;flex-wrap:wrap}.swatch{flex:1;min-width:60px;height:64px;border-radius:10px;border:1px solid var(--dd-base-300);display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;transition:transform .2s ease,box-shadow .2s ease}.swatch:hover{transform:translateY(-3px);box-shadow:0 6px 20px -8px var(--dd-base-300)}.swatch__label{font-size:11px;font-weight:600;color:var(--dd-base-500)}.swatch__label--light{color:var(--dd-base-0)}.swatch--accent{min-width:100px;height:72px}.theme-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}.accordion-row{display:flex;flex-direction:column;gap:12px;margin-top:20px}.showcase-title{font-size:15px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.04em;margin:32px 0 16px}.progress-showcase{display:flex;flex-direction:column;gap:16px}.buttons-showcase{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.badges-showcase{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.cards-showcase{display:flex;flex-direction:column;gap:12px}.style-preview{display:flex;flex-direction:column;gap:24px;padding:8px 0}.style-preview__row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.style-preview__cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:768px){.quick-start{padding:24px 16px 60px;gap:40px}.hero h1{font-size:30px}.hero__subtitle{font-size:16px}.step__header h2{font-size:22px}.theme-cards{grid-template-columns:1fr}.swatch{min-width:40px;height:52px}.swatch--accent{min-width:70px}.style-preview__cards{grid-template-columns:1fr}}@media(max-width:480px){.hero h1{font-size:26px}.buttons-showcase{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "component", type: DuckDevCardAccent, selector: "dd-card-accent", inputs: ["color"] }, { kind: "component", type: DuckDevCardSection, selector: "dd-card-section" }, { kind: "component", type: DuckDevCardMinimal, selector: "dd-card-minimal", inputs: ["color"] }, { kind: "component", type: DuckDevCardSignal, selector: "dd-card-signal", inputs: ["color"] }, { kind: "component", type: DuckDevCardOutline, selector: "dd-card-outline", inputs: ["color"] }, { kind: "component", type: DuckDevAccordionComponent, selector: "duck-dev-accordion", inputs: ["content", "title", "color"] }, { kind: "component", type: ButtonCasper, selector: "duck-dev-button-casper", inputs: ["isDisabled", "text", "colorButton"] }, { kind: "component", type: ButtonGlideOver, selector: "duck-dev-button-glide-over", inputs: ["textButton", "colorButton", "padding"] }, { kind: "component", type: ButtonFlip, selector: "duck-dev-button-flip", inputs: ["text", "disabled", "arrowIndex", "direction", "colorButton"] }, { kind: "component", type: ButtonNeobrutalSlab, selector: "duck-dev-button-neobrutal-slab", inputs: ["text", "helperText", "isDisabled", "colorButton"] }, { kind: "component", type: Badge, selector: "dd-badge", inputs: ["text", "color", "variant", "size"] }, { kind: "component", type: DuckDevProgressLine, selector: "duck-dev-progress-line", inputs: ["label", "value", "subtext", "color"] }, { kind: "component", type: DuckDevSpeakerBubbleSoft, selector: "dd-speaker-bubble-soft", inputs: ["color", "tail", "tailPosition", "target"] }, { kind: "component", type: DuckDevTab, selector: "duck-dev-tab", inputs: ["tabs"], outputs: ["tabChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5818
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: QuickStartBlock, isStandalone: true, selector: "app-quick-start-block", ngImport: i0, template: "<div class=\"quick-start\">\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 HERO \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <header class=\"hero\">\n <div class=\"hero__badges\">\n <dd-badge [text]=\"'Angular 21'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Signals'\" [color]=\"colorOrange\" [variant]=\"'soft'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Standalone'\" [color]=\"colorGray\" [variant]=\"'outline'\" [size]=\"'sm'\" />\n </div>\n <h1>{{ 'quickStart.hero.title' | transloco }}</h1>\n <p class=\"hero__subtitle\">{{ 'quickStart.hero.subtitle' | transloco }}</p>\n </header>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 1 \u2014 INSTALL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'01'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.install.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-signal [color]=\"colorViolet\">\n <small>{{ 'quickStart.install.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.install.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.install.cardText' | transloco }}</p>\n </dd-card-signal>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">angular.json</div>\n <pre><code>\"styles\": [\n \"node_modules/duck-dev-lib/styles/variables.scss\",\n \"src/styles.scss\"\n]</code></pre>\n </div>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">app.config.ts</div>\n <pre><code>import {{ '{' }} provideTransloco {{ '}' }} from '@jsverse/transloco';\n\nexport const appConfig = {{ '{' }}\n providers: [\n provideTransloco({{ '{' }}\n config: {{ '{' }} availableLangs: ['en', 'ru'], defaultLang: 'en' {{ '}' }}\n {{ '}' }})\n ]\n{{ '}' }};</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 2 \u2014 PALETTE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'02'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.palette.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.palette.description' | transloco }}</p>\n\n <div class=\"palette-grid\">\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.neutralsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch\" style=\"background: var(--dd-base-0)\">\n <span class=\"swatch__label\">0</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-100)\">\n <span class=\"swatch__label\">100</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-200)\">\n <span class=\"swatch__label\">200</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-300)\">\n <span class=\"swatch__label\">300</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-400)\">\n <span class=\"swatch__label swatch__label--light\">400</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-500)\">\n <span class=\"swatch__label swatch__label--light\">500</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-600)\">\n <span class=\"swatch__label swatch__label--light\">600</span>\n </div>\n </div>\n </div>\n\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.accentsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-secondary)\">\n <span class=\"swatch__label swatch__label--light\">secondary</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-orange)\">\n <span class=\"swatch__label swatch__label--light\">orange</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-blue)\">\n <span class=\"swatch__label swatch__label--light\">blue</span>\n </div>\n </div>\n </div>\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorViolet\" [tail]=\"'left'\">\n <p>\n <strong>{{ 'quickStart.palette.tipTitle' | transloco }}</strong>\n {{ 'quickStart.palette.tipText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 3 \u2014 THEMES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'03'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.themes.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <div class=\"theme-cards\">\n <dd-card-minimal [color]=\"colorWhite\">\n <small>{{ 'quickStart.themes.lightEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.lightTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.lightText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-minimal [color]=\"colorDark\">\n <small>{{ 'quickStart.themes.darkEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.darkTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.darkText' | transloco }}</p>\n </dd-card-minimal>\n </div>\n\n <ng-template #themeHtmlSnippet>\n <pre class=\"accordion-code\"><code><html ddTheme=\"dark\">\n <body>\n <app-root></app-root>\n </body>\n</html></code></pre>\n </ng-template>\n\n <ng-template #themeToggleSnippet>\n <pre class=\"accordion-code\"><code>setTheme(theme: 'dark' | 'light') {{ '{' }}\n document.documentElement\n .setAttribute('ddTheme', theme);\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.themes.htmlAccordionTitle' | transloco\"\n [content]=\"themeHtmlSnippet\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.themes.toggleAccordionTitle' | transloco\"\n [content]=\"themeToggleSnippet\"\n [color]=\"colorViolet\"\n />\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 4 \u2014 CUSTOM THEME \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'04'\" [color]=\"colorDark\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.custom.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-outline [color]=\"colorOrange\">\n <small>{{ 'quickStart.custom.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.custom.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.custom.cardText' | transloco }}</p>\n </dd-card-outline>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">styles.scss</div>\n <pre><code>[ddTheme='brand'] {{ '{' }}\n --dd-base-0: #ffffff;\n --dd-base-100: #f4f6ff;\n --dd-base-300: #dbe0ff;\n --dd-base-600: #0e1028;\n --dd-base-secondary: #6829ff;\n --dd-base-accent-orange: #fe7b20;\n --dd-base-accent-blue: #3254f3;\n{{ '}' }}</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 5 \u2014 COLORS IN COMPONENTS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'05'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.colors.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.colors.description' | transloco }}</p>\n\n <div class=\"code-block code-block--compact\">\n <div class=\"code-block__label\">AccentEnumColor</div>\n <pre><code>import {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n// Violet \u00B7 Orange \u00B7 White \u00B7 Gray \u00B7 Dark</code></pre>\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.progressTitle' | transloco }}</h3>\n <div class=\"progress-showcase\">\n <duck-dev-progress-line [label]=\"'Violet'\" [value]=\"85\" [color]=\"colorViolet\" />\n <duck-dev-progress-line [label]=\"'Orange'\" [value]=\"60\" [color]=\"colorOrange\" />\n <duck-dev-progress-line [label]=\"'Gray'\" [value]=\"40\" [color]=\"colorGray\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.buttonsTitle' | transloco }}</h3>\n <div class=\"buttons-showcase\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.badgesTitle' | transloco }}</h3>\n <div class=\"badges-showcase\">\n <dd-badge [text]=\"'Solid'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Soft'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Outline'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n <dd-badge [text]=\"'Dark'\" [color]=\"colorDark\" [variant]=\"'solid'\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.cardsTitle' | transloco }}</h3>\n <div class=\"cards-showcase\">\n <dd-card-accent [color]=\"colorViolet\">\n <div>{{ 'quickStart.colors.cardViolet' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorOrange\">\n <div>{{ 'quickStart.colors.cardOrange' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorDark\">\n <div>{{ 'quickStart.colors.cardDark' | transloco }}</div>\n </dd-card-accent>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 6 \u2014 TWO STYLES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'06'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.styles.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.styles.description' | transloco }}</p>\n\n <duck-dev-tab [tabs]=\"previewTabs\" (tabChange)=\"onPreviewTabChange($event)\">\n @if (activePreviewTab().id === 'classic') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n <div class=\"style-preview__row\">\n <dd-badge [text]=\"'Status'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Label'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Tag'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n </div>\n <duck-dev-progress-line [label]=\"'Progress'\" [value]=\"72\" [color]=\"colorViolet\" />\n <div class=\"style-preview__cards\">\n <dd-card-minimal [color]=\"colorViolet\">\n <small>Classic</small>\n <h3>{{ 'quickStart.styles.classicCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.classicCardText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-signal [color]=\"colorOrange\">\n <small>Signal</small>\n <h3>{{ 'quickStart.styles.signalCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.signalCardText' | transloco }}</p>\n </dd-card-signal>\n </div>\n </div>\n }\n @if (activePreviewTab().id === 'neobrutalism') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-neobrutal-slab\n [text]=\"'Slab'\"\n [helperText]=\"'click me'\"\n [colorButton]=\"colorViolet\"\n />\n <duck-dev-button-neobrutal-slab\n [text]=\"'Action'\"\n [helperText]=\"'do it'\"\n [colorButton]=\"colorOrange\"\n />\n </div>\n <dd-speaker-bubble-soft [color]=\"colorOrange\" [tail]=\"'right'\">\n <p>\n <strong>Neobrutalism</strong> \u2014\n {{ 'quickStart.styles.neobrutalBubbleText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </div>\n }\n </duck-dev-tab>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 7 \u2014 USAGE EXAMPLE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'07'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.usage.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <ng-template #usageTemplate>\n <pre class=\"accordion-code\"><code><duck-dev-button-casper\n [text]=\"'Click me'\"\n [colorButton]=\"colorViolet\"\n/>\n\n<dd-badge\n [text]=\"'New'\"\n [color]=\"colorOrange\"\n [variant]=\"'solid'\"\n/>\n\n<dd-card-minimal [color]=\"colorViolet\">\n <h3>Title</h3>\n <p>Content goes here</p>\n</dd-card-minimal></code></pre>\n </ng-template>\n\n <ng-template #usageComponent>\n <pre\n class=\"accordion-code\"\n ><code>import {{ '{' }} Component {{ '}' }} from '@angular/core';\nimport {{ '{' }} ButtonCasper {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} Badge {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} DuckDevCardMinimal {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n@Component({{ '{' }}\n selector: 'app-example',\n standalone: true,\n imports: [ButtonCasper, Badge, DuckDevCardMinimal],\n templateUrl: './example.html',\n{{ '}' }})\nexport class ExampleComponent {{ '{' }}\n colorViolet = AccentEnumColor.Violet;\n colorOrange = AccentEnumColor.Orange;\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.usage.templateTitle' | transloco\"\n [content]=\"usageTemplate\"\n [color]=\"colorOrange\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.usage.componentTitle' | transloco\"\n [content]=\"usageComponent\"\n [color]=\"colorViolet\"\n />\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorGray\" [tail]=\"'left'\">\n <p>{{ 'quickStart.usage.tip' | transloco }}</p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 8 \u2014 DOWNLOAD DOCS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'08'\" [color]=\"colorDark\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.download.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.download.description' | transloco }}</p>\n\n <div class=\"download-block\">\n <duck-dev-button-neobrutal-slab\n [text]=\"'quickStart.download.button' | transloco\"\n [helperText]=\"'quickStart.download.helper' | transloco\"\n [colorButton]=\"colorViolet\"\n (click)=\"downloadDocs()\"\n />\n </div>\n </dd-card-section>\n </section>\n</div>\n", styles: [".quick-start{max-width:960px;margin:0 auto;padding:48px 24px 80px;display:flex;flex-direction:column;gap:56px}.hero{text-align:center;padding:40px 0 16px}.hero__badges{display:flex;justify-content:center;gap:10px;margin-bottom:24px}.hero h1{font-size:42px;font-weight:800;color:var(--dd-base-600);line-height:1.15;margin:0 0 16px;letter-spacing:-.02em}.hero__subtitle{font-size:18px;color:var(--dd-base-400);line-height:1.6;max-width:600px;margin:0 auto}.step__header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.step__header h2{font-size:26px;font-weight:700;color:var(--dd-base-600);margin:0}.section-description{font-size:16px;line-height:1.65;color:var(--dd-base-400);margin:0 0 28px}.code-block{margin:20px 0;border-radius:10px;overflow:hidden;border:1px solid var(--dd-base-300)}.code-block__label{padding:8px 16px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--dd-base-300);background:var(--dd-base-600);border-bottom:1px solid var(--dd-base-500)}.code-block pre{margin:0;padding:20px;background:var(--dd-base-600);overflow-x:auto}.code-block pre code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.code-block--compact{margin:0 0 28px}.accordion-code{margin:0;padding:20px;background:var(--dd-base-600);border-radius:8px;overflow-x:auto}.accordion-code code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.palette-grid{display:flex;flex-direction:column;gap:28px;margin-bottom:32px}.palette-group h3{font-size:14px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.06em;margin:0 0 12px}.swatch-row{display:flex;gap:6px;flex-wrap:wrap}.swatch{flex:1;min-width:60px;height:64px;border-radius:10px;border:1px solid var(--dd-base-300);display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;transition:transform .2s ease,box-shadow .2s ease}.swatch:hover{transform:translateY(-3px);box-shadow:0 6px 20px -8px var(--dd-base-300)}.swatch__label{font-size:11px;font-weight:600;color:var(--dd-base-500)}.swatch__label--light{color:var(--dd-base-0)}.swatch--accent{min-width:100px;height:72px}.theme-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}.accordion-row{display:flex;flex-direction:column;gap:12px;margin-top:20px}.showcase-title{font-size:15px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.04em;margin:32px 0 16px}.progress-showcase{display:flex;flex-direction:column;gap:16px}.buttons-showcase{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.badges-showcase{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.cards-showcase{display:flex;flex-direction:column;gap:12px}.download-block{display:flex;justify-content:center;padding:12px 0 4px}.style-preview{display:flex;flex-direction:column;gap:24px;padding:8px 0}.style-preview__row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.style-preview__cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:768px){.quick-start{padding:24px 16px 60px;gap:40px}.hero h1{font-size:30px}.hero__subtitle{font-size:16px}.step__header h2{font-size:22px}.theme-cards{grid-template-columns:1fr}.swatch{min-width:40px;height:52px}.swatch--accent{min-width:70px}.style-preview__cards{grid-template-columns:1fr}}@media(max-width:480px){.hero h1{font-size:26px}.buttons-showcase{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "component", type: DuckDevCardAccent, selector: "dd-card-accent", inputs: ["color"] }, { kind: "component", type: DuckDevCardSection, selector: "dd-card-section" }, { kind: "component", type: DuckDevCardMinimal, selector: "dd-card-minimal", inputs: ["color"] }, { kind: "component", type: DuckDevCardSignal, selector: "dd-card-signal", inputs: ["color"] }, { kind: "component", type: DuckDevCardOutline, selector: "dd-card-outline", inputs: ["color"] }, { kind: "component", type: DuckDevAccordionComponent, selector: "duck-dev-accordion", inputs: ["content", "title", "color"] }, { kind: "component", type: ButtonCasper, selector: "duck-dev-button-casper", inputs: ["isDisabled", "text", "colorButton"] }, { kind: "component", type: ButtonGlideOver, selector: "duck-dev-button-glide-over", inputs: ["textButton", "colorButton", "padding"] }, { kind: "component", type: ButtonFlip, selector: "duck-dev-button-flip", inputs: ["text", "disabled", "arrowIndex", "direction", "colorButton"] }, { kind: "component", type: ButtonNeobrutalSlab, selector: "duck-dev-button-neobrutal-slab", inputs: ["text", "helperText", "isDisabled", "colorButton"] }, { kind: "component", type: Badge, selector: "dd-badge", inputs: ["text", "color", "variant", "size"] }, { kind: "component", type: DuckDevProgressLine, selector: "duck-dev-progress-line", inputs: ["label", "value", "subtext", "color"] }, { kind: "component", type: DuckDevSpeakerBubbleSoft, selector: "dd-speaker-bubble-soft", inputs: ["color", "tail", "tailPosition", "target"] }, { kind: "component", type: DuckDevTab, selector: "duck-dev-tab", inputs: ["tabs"], outputs: ["tabChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5806
5819
|
}
|
|
5807
5820
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: QuickStartBlock, decorators: [{
|
|
5808
5821
|
type: Component,
|
|
@@ -5822,7 +5835,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
5822
5835
|
DuckDevProgressLine,
|
|
5823
5836
|
DuckDevSpeakerBubbleSoft,
|
|
5824
5837
|
DuckDevTab,
|
|
5825
|
-
], template: "<div class=\"quick-start\">\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 HERO \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <header class=\"hero\">\n <div class=\"hero__badges\">\n <dd-badge [text]=\"'Angular 21'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Signals'\" [color]=\"colorOrange\" [variant]=\"'soft'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Standalone'\" [color]=\"colorGray\" [variant]=\"'outline'\" [size]=\"'sm'\" />\n </div>\n <h1>{{ 'quickStart.hero.title' | transloco }}</h1>\n <p class=\"hero__subtitle\">{{ 'quickStart.hero.subtitle' | transloco }}</p>\n </header>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 1 \u2014 INSTALL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'01'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.install.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-signal [color]=\"colorViolet\">\n <small>{{ 'quickStart.install.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.install.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.install.cardText' | transloco }}</p>\n </dd-card-signal>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">angular.json</div>\n <pre><code>\"styles\": [\n \"node_modules/duck-dev-lib/styles/variables.scss\",\n \"src/styles.scss\"\n]</code></pre>\n </div>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">app.config.ts</div>\n <pre><code>import {{ '{' }} provideTransloco {{ '}' }} from '@jsverse/transloco';\n\nexport const appConfig = {{ '{' }}\n providers: [\n provideTransloco({{ '{' }}\n config: {{ '{' }} availableLangs: ['en', 'ru'], defaultLang: 'en' {{ '}' }}\n {{ '}' }})\n ]\n{{ '}' }};</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 2 \u2014 PALETTE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'02'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.palette.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.palette.description' | transloco }}</p>\n\n <div class=\"palette-grid\">\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.neutralsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch\" style=\"background: var(--dd-base-0)\">\n <span class=\"swatch__label\">0</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-100)\">\n <span class=\"swatch__label\">100</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-200)\">\n <span class=\"swatch__label\">200</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-300)\">\n <span class=\"swatch__label\">300</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-400)\">\n <span class=\"swatch__label swatch__label--light\">400</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-500)\">\n <span class=\"swatch__label swatch__label--light\">500</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-600)\">\n <span class=\"swatch__label swatch__label--light\">600</span>\n </div>\n </div>\n </div>\n\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.accentsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-secondary)\">\n <span class=\"swatch__label swatch__label--light\">secondary</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-orange)\">\n <span class=\"swatch__label swatch__label--light\">orange</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-blue)\">\n <span class=\"swatch__label swatch__label--light\">blue</span>\n </div>\n </div>\n </div>\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorViolet\" [tail]=\"'left'\">\n <p>\n <strong>{{ 'quickStart.palette.tipTitle' | transloco }}</strong>\n {{ 'quickStart.palette.tipText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 3 \u2014 THEMES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'03'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.themes.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <div class=\"theme-cards\">\n <dd-card-minimal [color]=\"colorWhite\">\n <small>{{ 'quickStart.themes.lightEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.lightTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.lightText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-minimal [color]=\"colorDark\">\n <small>{{ 'quickStart.themes.darkEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.darkTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.darkText' | transloco }}</p>\n </dd-card-minimal>\n </div>\n\n <ng-template #themeHtmlSnippet>\n <pre class=\"accordion-code\"><code><html ddTheme=\"dark\">\n <body>\n <app-root></app-root>\n </body>\n</html></code></pre>\n </ng-template>\n\n <ng-template #themeToggleSnippet>\n <pre class=\"accordion-code\"><code>setTheme(theme: 'dark' | 'light') {{ '{' }}\n document.documentElement\n .setAttribute('ddTheme', theme);\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.themes.htmlAccordionTitle' | transloco\"\n [content]=\"themeHtmlSnippet\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.themes.toggleAccordionTitle' | transloco\"\n [content]=\"themeToggleSnippet\"\n [color]=\"colorViolet\"\n />\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 4 \u2014 CUSTOM THEME \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'04'\" [color]=\"colorDark\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.custom.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-outline [color]=\"colorOrange\">\n <small>{{ 'quickStart.custom.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.custom.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.custom.cardText' | transloco }}</p>\n </dd-card-outline>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">styles.scss</div>\n <pre><code>[ddTheme='brand'] {{ '{' }}\n --dd-base-0: #ffffff;\n --dd-base-100: #f4f6ff;\n --dd-base-300: #dbe0ff;\n --dd-base-600: #0e1028;\n --dd-base-secondary: #6829ff;\n --dd-base-accent-orange: #fe7b20;\n --dd-base-accent-blue: #3254f3;\n{{ '}' }}</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 5 \u2014 COLORS IN COMPONENTS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'05'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.colors.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.colors.description' | transloco }}</p>\n\n <div class=\"code-block code-block--compact\">\n <div class=\"code-block__label\">AccentEnumColor</div>\n <pre><code>import {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n// Violet \u00B7 Orange \u00B7 White \u00B7 Gray \u00B7 Dark</code></pre>\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.progressTitle' | transloco }}</h3>\n <div class=\"progress-showcase\">\n <duck-dev-progress-line [label]=\"'Violet'\" [value]=\"85\" [color]=\"colorViolet\" />\n <duck-dev-progress-line [label]=\"'Orange'\" [value]=\"60\" [color]=\"colorOrange\" />\n <duck-dev-progress-line [label]=\"'Gray'\" [value]=\"40\" [color]=\"colorGray\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.buttonsTitle' | transloco }}</h3>\n <div class=\"buttons-showcase\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.badgesTitle' | transloco }}</h3>\n <div class=\"badges-showcase\">\n <dd-badge [text]=\"'Solid'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Soft'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Outline'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n <dd-badge [text]=\"'Dark'\" [color]=\"colorDark\" [variant]=\"'solid'\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.cardsTitle' | transloco }}</h3>\n <div class=\"cards-showcase\">\n <dd-card-accent [color]=\"colorViolet\">\n <div>{{ 'quickStart.colors.cardViolet' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorOrange\">\n <div>{{ 'quickStart.colors.cardOrange' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorDark\">\n <div>{{ 'quickStart.colors.cardDark' | transloco }}</div>\n </dd-card-accent>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 6 \u2014 TWO STYLES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'06'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.styles.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.styles.description' | transloco }}</p>\n\n <duck-dev-tab [tabs]=\"previewTabs\" (tabChange)=\"onPreviewTabChange($event)\">\n @if (activePreviewTab().id === 'classic') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n <div class=\"style-preview__row\">\n <dd-badge [text]=\"'Status'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Label'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Tag'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n </div>\n <duck-dev-progress-line [label]=\"'Progress'\" [value]=\"72\" [color]=\"colorViolet\" />\n <div class=\"style-preview__cards\">\n <dd-card-minimal [color]=\"colorViolet\">\n <small>Classic</small>\n <h3>{{ 'quickStart.styles.classicCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.classicCardText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-signal [color]=\"colorOrange\">\n <small>Signal</small>\n <h3>{{ 'quickStart.styles.signalCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.signalCardText' | transloco }}</p>\n </dd-card-signal>\n </div>\n </div>\n }\n @if (activePreviewTab().id === 'neobrutalism') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-neobrutal-slab\n [text]=\"'Slab'\"\n [helperText]=\"'click me'\"\n [colorButton]=\"colorViolet\"\n />\n <duck-dev-button-neobrutal-slab\n [text]=\"'Action'\"\n [helperText]=\"'do it'\"\n [colorButton]=\"colorOrange\"\n />\n </div>\n <dd-speaker-bubble-soft [color]=\"colorOrange\" [tail]=\"'right'\">\n <p>\n <strong>Neobrutalism</strong> \u2014\n {{ 'quickStart.styles.neobrutalBubbleText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </div>\n }\n </duck-dev-tab>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 7 \u2014 USAGE EXAMPLE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'07'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.usage.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <ng-template #usageTemplate>\n <pre class=\"accordion-code\"><code><duck-dev-button-casper\n [text]=\"'Click me'\"\n [colorButton]=\"colorViolet\"\n/>\n\n<dd-badge\n [text]=\"'New'\"\n [color]=\"colorOrange\"\n [variant]=\"'solid'\"\n/>\n\n<dd-card-minimal [color]=\"colorViolet\">\n <h3>Title</h3>\n <p>Content goes here</p>\n</dd-card-minimal></code></pre>\n </ng-template>\n\n <ng-template #usageComponent>\n <pre\n class=\"accordion-code\"\n ><code>import {{ '{' }} Component {{ '}' }} from '@angular/core';\nimport {{ '{' }} ButtonCasper {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} Badge {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} DuckDevCardMinimal {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n@Component({{ '{' }}\n selector: 'app-example',\n standalone: true,\n imports: [ButtonCasper, Badge, DuckDevCardMinimal],\n templateUrl: './example.html',\n{{ '}' }})\nexport class ExampleComponent {{ '{' }}\n colorViolet = AccentEnumColor.Violet;\n colorOrange = AccentEnumColor.Orange;\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.usage.templateTitle' | transloco\"\n [content]=\"usageTemplate\"\n [color]=\"colorOrange\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.usage.componentTitle' | transloco\"\n [content]=\"usageComponent\"\n [color]=\"colorViolet\"\n />\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorGray\" [tail]=\"'left'\">\n <p>{{ 'quickStart.usage.tip' | transloco }}</p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n</div>\n", styles: [".quick-start{max-width:960px;margin:0 auto;padding:48px 24px 80px;display:flex;flex-direction:column;gap:56px}.hero{text-align:center;padding:40px 0 16px}.hero__badges{display:flex;justify-content:center;gap:10px;margin-bottom:24px}.hero h1{font-size:42px;font-weight:800;color:var(--dd-base-600);line-height:1.15;margin:0 0 16px;letter-spacing:-.02em}.hero__subtitle{font-size:18px;color:var(--dd-base-400);line-height:1.6;max-width:600px;margin:0 auto}.step__header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.step__header h2{font-size:26px;font-weight:700;color:var(--dd-base-600);margin:0}.section-description{font-size:16px;line-height:1.65;color:var(--dd-base-400);margin:0 0 28px}.code-block{margin:20px 0;border-radius:10px;overflow:hidden;border:1px solid var(--dd-base-300)}.code-block__label{padding:8px 16px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--dd-base-300);background:var(--dd-base-600);border-bottom:1px solid var(--dd-base-500)}.code-block pre{margin:0;padding:20px;background:var(--dd-base-600);overflow-x:auto}.code-block pre code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.code-block--compact{margin:0 0 28px}.accordion-code{margin:0;padding:20px;background:var(--dd-base-600);border-radius:8px;overflow-x:auto}.accordion-code code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.palette-grid{display:flex;flex-direction:column;gap:28px;margin-bottom:32px}.palette-group h3{font-size:14px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.06em;margin:0 0 12px}.swatch-row{display:flex;gap:6px;flex-wrap:wrap}.swatch{flex:1;min-width:60px;height:64px;border-radius:10px;border:1px solid var(--dd-base-300);display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;transition:transform .2s ease,box-shadow .2s ease}.swatch:hover{transform:translateY(-3px);box-shadow:0 6px 20px -8px var(--dd-base-300)}.swatch__label{font-size:11px;font-weight:600;color:var(--dd-base-500)}.swatch__label--light{color:var(--dd-base-0)}.swatch--accent{min-width:100px;height:72px}.theme-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}.accordion-row{display:flex;flex-direction:column;gap:12px;margin-top:20px}.showcase-title{font-size:15px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.04em;margin:32px 0 16px}.progress-showcase{display:flex;flex-direction:column;gap:16px}.buttons-showcase{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.badges-showcase{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.cards-showcase{display:flex;flex-direction:column;gap:12px}.style-preview{display:flex;flex-direction:column;gap:24px;padding:8px 0}.style-preview__row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.style-preview__cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:768px){.quick-start{padding:24px 16px 60px;gap:40px}.hero h1{font-size:30px}.hero__subtitle{font-size:16px}.step__header h2{font-size:22px}.theme-cards{grid-template-columns:1fr}.swatch{min-width:40px;height:52px}.swatch--accent{min-width:70px}.style-preview__cards{grid-template-columns:1fr}}@media(max-width:480px){.hero h1{font-size:26px}.buttons-showcase{flex-direction:column;align-items:flex-start}}\n"] }]
|
|
5838
|
+
], template: "<div class=\"quick-start\">\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 HERO \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <header class=\"hero\">\n <div class=\"hero__badges\">\n <dd-badge [text]=\"'Angular 21'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Signals'\" [color]=\"colorOrange\" [variant]=\"'soft'\" [size]=\"'sm'\" />\n <dd-badge [text]=\"'Standalone'\" [color]=\"colorGray\" [variant]=\"'outline'\" [size]=\"'sm'\" />\n </div>\n <h1>{{ 'quickStart.hero.title' | transloco }}</h1>\n <p class=\"hero__subtitle\">{{ 'quickStart.hero.subtitle' | transloco }}</p>\n </header>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 1 \u2014 INSTALL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'01'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.install.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-signal [color]=\"colorViolet\">\n <small>{{ 'quickStart.install.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.install.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.install.cardText' | transloco }}</p>\n </dd-card-signal>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">angular.json</div>\n <pre><code>\"styles\": [\n \"node_modules/duck-dev-lib/styles/variables.scss\",\n \"src/styles.scss\"\n]</code></pre>\n </div>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">app.config.ts</div>\n <pre><code>import {{ '{' }} provideTransloco {{ '}' }} from '@jsverse/transloco';\n\nexport const appConfig = {{ '{' }}\n providers: [\n provideTransloco({{ '{' }}\n config: {{ '{' }} availableLangs: ['en', 'ru'], defaultLang: 'en' {{ '}' }}\n {{ '}' }})\n ]\n{{ '}' }};</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 2 \u2014 PALETTE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'02'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.palette.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.palette.description' | transloco }}</p>\n\n <div class=\"palette-grid\">\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.neutralsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch\" style=\"background: var(--dd-base-0)\">\n <span class=\"swatch__label\">0</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-100)\">\n <span class=\"swatch__label\">100</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-200)\">\n <span class=\"swatch__label\">200</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-300)\">\n <span class=\"swatch__label\">300</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-400)\">\n <span class=\"swatch__label swatch__label--light\">400</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-500)\">\n <span class=\"swatch__label swatch__label--light\">500</span>\n </div>\n <div class=\"swatch\" style=\"background: var(--dd-base-600)\">\n <span class=\"swatch__label swatch__label--light\">600</span>\n </div>\n </div>\n </div>\n\n <div class=\"palette-group\">\n <h3>{{ 'quickStart.palette.accentsTitle' | transloco }}</h3>\n <div class=\"swatch-row\">\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-secondary)\">\n <span class=\"swatch__label swatch__label--light\">secondary</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-orange)\">\n <span class=\"swatch__label swatch__label--light\">orange</span>\n </div>\n <div class=\"swatch swatch--accent\" style=\"background: var(--dd-base-accent-blue)\">\n <span class=\"swatch__label swatch__label--light\">blue</span>\n </div>\n </div>\n </div>\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorViolet\" [tail]=\"'left'\">\n <p>\n <strong>{{ 'quickStart.palette.tipTitle' | transloco }}</strong>\n {{ 'quickStart.palette.tipText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 3 \u2014 THEMES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'03'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.themes.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <div class=\"theme-cards\">\n <dd-card-minimal [color]=\"colorWhite\">\n <small>{{ 'quickStart.themes.lightEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.lightTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.lightText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-minimal [color]=\"colorDark\">\n <small>{{ 'quickStart.themes.darkEyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.themes.darkTitle' | transloco }}</h3>\n <p>{{ 'quickStart.themes.darkText' | transloco }}</p>\n </dd-card-minimal>\n </div>\n\n <ng-template #themeHtmlSnippet>\n <pre class=\"accordion-code\"><code><html ddTheme=\"dark\">\n <body>\n <app-root></app-root>\n </body>\n</html></code></pre>\n </ng-template>\n\n <ng-template #themeToggleSnippet>\n <pre class=\"accordion-code\"><code>setTheme(theme: 'dark' | 'light') {{ '{' }}\n document.documentElement\n .setAttribute('ddTheme', theme);\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.themes.htmlAccordionTitle' | transloco\"\n [content]=\"themeHtmlSnippet\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.themes.toggleAccordionTitle' | transloco\"\n [content]=\"themeToggleSnippet\"\n [color]=\"colorViolet\"\n />\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 4 \u2014 CUSTOM THEME \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'04'\" [color]=\"colorDark\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.custom.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <dd-card-outline [color]=\"colorOrange\">\n <small>{{ 'quickStart.custom.eyebrow' | transloco }}</small>\n <h3>{{ 'quickStart.custom.cardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.custom.cardText' | transloco }}</p>\n </dd-card-outline>\n\n <div class=\"code-block\">\n <div class=\"code-block__label\">styles.scss</div>\n <pre><code>[ddTheme='brand'] {{ '{' }}\n --dd-base-0: #ffffff;\n --dd-base-100: #f4f6ff;\n --dd-base-300: #dbe0ff;\n --dd-base-600: #0e1028;\n --dd-base-secondary: #6829ff;\n --dd-base-accent-orange: #fe7b20;\n --dd-base-accent-blue: #3254f3;\n{{ '}' }}</code></pre>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 5 \u2014 COLORS IN COMPONENTS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'05'\" [color]=\"colorViolet\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.colors.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.colors.description' | transloco }}</p>\n\n <div class=\"code-block code-block--compact\">\n <div class=\"code-block__label\">AccentEnumColor</div>\n <pre><code>import {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n// Violet \u00B7 Orange \u00B7 White \u00B7 Gray \u00B7 Dark</code></pre>\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.progressTitle' | transloco }}</h3>\n <div class=\"progress-showcase\">\n <duck-dev-progress-line [label]=\"'Violet'\" [value]=\"85\" [color]=\"colorViolet\" />\n <duck-dev-progress-line [label]=\"'Orange'\" [value]=\"60\" [color]=\"colorOrange\" />\n <duck-dev-progress-line [label]=\"'Gray'\" [value]=\"40\" [color]=\"colorGray\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.buttonsTitle' | transloco }}</h3>\n <div class=\"buttons-showcase\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.badgesTitle' | transloco }}</h3>\n <div class=\"badges-showcase\">\n <dd-badge [text]=\"'Solid'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Soft'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Outline'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n <dd-badge [text]=\"'Dark'\" [color]=\"colorDark\" [variant]=\"'solid'\" />\n </div>\n\n <h3 class=\"showcase-title\">{{ 'quickStart.colors.cardsTitle' | transloco }}</h3>\n <div class=\"cards-showcase\">\n <dd-card-accent [color]=\"colorViolet\">\n <div>{{ 'quickStart.colors.cardViolet' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorOrange\">\n <div>{{ 'quickStart.colors.cardOrange' | transloco }}</div>\n </dd-card-accent>\n <dd-card-accent [color]=\"colorDark\">\n <div>{{ 'quickStart.colors.cardDark' | transloco }}</div>\n </dd-card-accent>\n </div>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 6 \u2014 TWO STYLES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'06'\" [color]=\"colorOrange\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.styles.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.styles.description' | transloco }}</p>\n\n <duck-dev-tab [tabs]=\"previewTabs\" (tabChange)=\"onPreviewTabChange($event)\">\n @if (activePreviewTab().id === 'classic') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-casper [text]=\"'Casper'\" [colorButton]=\"colorViolet\" />\n <duck-dev-button-glide-over textButton=\"Glide Over\" [colorButton]=\"colorOrange\" />\n <duck-dev-button-flip [text]=\"'Flip'\" [colorButton]=\"colorDark\" />\n </div>\n <div class=\"style-preview__row\">\n <dd-badge [text]=\"'Status'\" [color]=\"colorViolet\" [variant]=\"'solid'\" />\n <dd-badge [text]=\"'Label'\" [color]=\"colorOrange\" [variant]=\"'soft'\" />\n <dd-badge [text]=\"'Tag'\" [color]=\"colorGray\" [variant]=\"'outline'\" />\n </div>\n <duck-dev-progress-line [label]=\"'Progress'\" [value]=\"72\" [color]=\"colorViolet\" />\n <div class=\"style-preview__cards\">\n <dd-card-minimal [color]=\"colorViolet\">\n <small>Classic</small>\n <h3>{{ 'quickStart.styles.classicCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.classicCardText' | transloco }}</p>\n </dd-card-minimal>\n <dd-card-signal [color]=\"colorOrange\">\n <small>Signal</small>\n <h3>{{ 'quickStart.styles.signalCardTitle' | transloco }}</h3>\n <p>{{ 'quickStart.styles.signalCardText' | transloco }}</p>\n </dd-card-signal>\n </div>\n </div>\n }\n @if (activePreviewTab().id === 'neobrutalism') {\n <div class=\"style-preview\">\n <div class=\"style-preview__row\">\n <duck-dev-button-neobrutal-slab\n [text]=\"'Slab'\"\n [helperText]=\"'click me'\"\n [colorButton]=\"colorViolet\"\n />\n <duck-dev-button-neobrutal-slab\n [text]=\"'Action'\"\n [helperText]=\"'do it'\"\n [colorButton]=\"colorOrange\"\n />\n </div>\n <dd-speaker-bubble-soft [color]=\"colorOrange\" [tail]=\"'right'\">\n <p>\n <strong>Neobrutalism</strong> \u2014\n {{ 'quickStart.styles.neobrutalBubbleText' | transloco }}\n </p>\n </dd-speaker-bubble-soft>\n </div>\n }\n </duck-dev-tab>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 7 \u2014 USAGE EXAMPLE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'07'\" [color]=\"colorGray\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.usage.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <ng-template #usageTemplate>\n <pre class=\"accordion-code\"><code><duck-dev-button-casper\n [text]=\"'Click me'\"\n [colorButton]=\"colorViolet\"\n/>\n\n<dd-badge\n [text]=\"'New'\"\n [color]=\"colorOrange\"\n [variant]=\"'solid'\"\n/>\n\n<dd-card-minimal [color]=\"colorViolet\">\n <h3>Title</h3>\n <p>Content goes here</p>\n</dd-card-minimal></code></pre>\n </ng-template>\n\n <ng-template #usageComponent>\n <pre\n class=\"accordion-code\"\n ><code>import {{ '{' }} Component {{ '}' }} from '@angular/core';\nimport {{ '{' }} ButtonCasper {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} Badge {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} DuckDevCardMinimal {{ '}' }} from 'duck-dev-lib';\nimport {{ '{' }} AccentEnumColor {{ '}' }} from 'duck-dev-lib';\n\n@Component({{ '{' }}\n selector: 'app-example',\n standalone: true,\n imports: [ButtonCasper, Badge, DuckDevCardMinimal],\n templateUrl: './example.html',\n{{ '}' }})\nexport class ExampleComponent {{ '{' }}\n colorViolet = AccentEnumColor.Violet;\n colorOrange = AccentEnumColor.Orange;\n{{ '}' }}</code></pre>\n </ng-template>\n\n <div class=\"accordion-row\">\n <duck-dev-accordion\n [title]=\"'quickStart.usage.templateTitle' | transloco\"\n [content]=\"usageTemplate\"\n [color]=\"colorOrange\"\n />\n <duck-dev-accordion\n [title]=\"'quickStart.usage.componentTitle' | transloco\"\n [content]=\"usageComponent\"\n [color]=\"colorViolet\"\n />\n </div>\n\n <dd-speaker-bubble-soft [color]=\"colorGray\" [tail]=\"'left'\">\n <p>{{ 'quickStart.usage.tip' | transloco }}</p>\n </dd-speaker-bubble-soft>\n </dd-card-section>\n </section>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 STEP 8 \u2014 DOWNLOAD DOCS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <section class=\"step\">\n <div class=\"step__header\">\n <dd-badge [text]=\"'08'\" [color]=\"colorDark\" [variant]=\"'solid'\" [size]=\"'md'\" />\n <h2>{{ 'quickStart.download.title' | transloco }}</h2>\n </div>\n\n <dd-card-section>\n <p class=\"section-description\">{{ 'quickStart.download.description' | transloco }}</p>\n\n <div class=\"download-block\">\n <duck-dev-button-neobrutal-slab\n [text]=\"'quickStart.download.button' | transloco\"\n [helperText]=\"'quickStart.download.helper' | transloco\"\n [colorButton]=\"colorViolet\"\n (click)=\"downloadDocs()\"\n />\n </div>\n </dd-card-section>\n </section>\n</div>\n", styles: [".quick-start{max-width:960px;margin:0 auto;padding:48px 24px 80px;display:flex;flex-direction:column;gap:56px}.hero{text-align:center;padding:40px 0 16px}.hero__badges{display:flex;justify-content:center;gap:10px;margin-bottom:24px}.hero h1{font-size:42px;font-weight:800;color:var(--dd-base-600);line-height:1.15;margin:0 0 16px;letter-spacing:-.02em}.hero__subtitle{font-size:18px;color:var(--dd-base-400);line-height:1.6;max-width:600px;margin:0 auto}.step__header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.step__header h2{font-size:26px;font-weight:700;color:var(--dd-base-600);margin:0}.section-description{font-size:16px;line-height:1.65;color:var(--dd-base-400);margin:0 0 28px}.code-block{margin:20px 0;border-radius:10px;overflow:hidden;border:1px solid var(--dd-base-300)}.code-block__label{padding:8px 16px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--dd-base-300);background:var(--dd-base-600);border-bottom:1px solid var(--dd-base-500)}.code-block pre{margin:0;padding:20px;background:var(--dd-base-600);overflow-x:auto}.code-block pre code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.code-block--compact{margin:0 0 28px}.accordion-code{margin:0;padding:20px;background:var(--dd-base-600);border-radius:8px;overflow-x:auto}.accordion-code code{font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:13px;line-height:1.7;color:var(--dd-base-100)}.palette-grid{display:flex;flex-direction:column;gap:28px;margin-bottom:32px}.palette-group h3{font-size:14px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.06em;margin:0 0 12px}.swatch-row{display:flex;gap:6px;flex-wrap:wrap}.swatch{flex:1;min-width:60px;height:64px;border-radius:10px;border:1px solid var(--dd-base-300);display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;transition:transform .2s ease,box-shadow .2s ease}.swatch:hover{transform:translateY(-3px);box-shadow:0 6px 20px -8px var(--dd-base-300)}.swatch__label{font-size:11px;font-weight:600;color:var(--dd-base-500)}.swatch__label--light{color:var(--dd-base-0)}.swatch--accent{min-width:100px;height:72px}.theme-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}.accordion-row{display:flex;flex-direction:column;gap:12px;margin-top:20px}.showcase-title{font-size:15px;font-weight:600;color:var(--dd-base-500);text-transform:uppercase;letter-spacing:.04em;margin:32px 0 16px}.progress-showcase{display:flex;flex-direction:column;gap:16px}.buttons-showcase{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.badges-showcase{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.cards-showcase{display:flex;flex-direction:column;gap:12px}.download-block{display:flex;justify-content:center;padding:12px 0 4px}.style-preview{display:flex;flex-direction:column;gap:24px;padding:8px 0}.style-preview__row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.style-preview__cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:768px){.quick-start{padding:24px 16px 60px;gap:40px}.hero h1{font-size:30px}.hero__subtitle{font-size:16px}.step__header h2{font-size:22px}.theme-cards{grid-template-columns:1fr}.swatch{min-width:40px;height:52px}.swatch--accent{min-width:70px}.style-preview__cards{grid-template-columns:1fr}}@media(max-width:480px){.hero h1{font-size:26px}.buttons-showcase{flex-direction:column;align-items:flex-start}}\n"] }]
|
|
5826
5839
|
}] });
|
|
5827
5840
|
|
|
5828
5841
|
class DuckDevModalClassic {
|
|
@@ -6064,17 +6077,143 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
6064
6077
|
args: [DuckDevSegmentButton]
|
|
6065
6078
|
}], buttonsContainer: [{ type: i0.ViewChild, args: ['buttonsContainer', { isSignal: true }] }] } });
|
|
6066
6079
|
|
|
6080
|
+
class DuckDevSegmentNeobrutalVertical {
|
|
6081
|
+
cdr = inject(ChangeDetectorRef);
|
|
6082
|
+
value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : {}) });
|
|
6083
|
+
color = input(AccentEnumColor.White, { ...(ngDevMode ? { debugName: "color" } : {}) });
|
|
6084
|
+
valueChange = output();
|
|
6085
|
+
ionChange = output();
|
|
6086
|
+
segmentButtons;
|
|
6087
|
+
buttonsContainer = viewChild.required('buttonsContainer');
|
|
6088
|
+
buttons = [];
|
|
6089
|
+
selectedValue;
|
|
6090
|
+
indicatorPosition = 0;
|
|
6091
|
+
indicatorHeight = 0;
|
|
6092
|
+
segmentStyle = computed(() => this.getSegmentStyle(this.color()), { ...(ngDevMode ? { debugName: "segmentStyle" } : {}) });
|
|
6093
|
+
constructor() {
|
|
6094
|
+
afterNextRender(() => {
|
|
6095
|
+
this.rebuildButtons();
|
|
6096
|
+
if (!this.selectedValue && this.buttons.length > 0) {
|
|
6097
|
+
this.selectedValue = this.buttons[0].value;
|
|
6098
|
+
}
|
|
6099
|
+
this.updateIndicator(this.getSelectedIndex());
|
|
6100
|
+
this.cdr.markForCheck();
|
|
6101
|
+
});
|
|
6102
|
+
}
|
|
6103
|
+
ngAfterContentInit() {
|
|
6104
|
+
this.rebuildButtons();
|
|
6105
|
+
const incoming = this.value();
|
|
6106
|
+
this.selectedValue = incoming ?? this.selectedValue;
|
|
6107
|
+
this.segmentButtons.changes.subscribe(() => {
|
|
6108
|
+
this.rebuildButtons();
|
|
6109
|
+
setTimeout(() => this.updateIndicator(this.getSelectedIndex()));
|
|
6110
|
+
});
|
|
6111
|
+
}
|
|
6112
|
+
selectButton(value, index) {
|
|
6113
|
+
if (this.selectedValue === value) {
|
|
6114
|
+
this.updateIndicator(index);
|
|
6115
|
+
return;
|
|
6116
|
+
}
|
|
6117
|
+
this.selectedValue = value;
|
|
6118
|
+
this.valueChange.emit(value);
|
|
6119
|
+
this.ionChange.emit({ detail: { value } });
|
|
6120
|
+
this.updateIndicator(index);
|
|
6121
|
+
}
|
|
6122
|
+
rebuildButtons() {
|
|
6123
|
+
const btns = this.segmentButtons?.toArray() ?? [];
|
|
6124
|
+
this.buttons = btns.map((button) => ({
|
|
6125
|
+
value: button.value(),
|
|
6126
|
+
contentId: button.contentId(),
|
|
6127
|
+
template: button.templateRef(),
|
|
6128
|
+
}));
|
|
6129
|
+
}
|
|
6130
|
+
getSelectedIndex() {
|
|
6131
|
+
return Math.max(0, this.buttons.findIndex((button) => button.value === this.selectedValue));
|
|
6132
|
+
}
|
|
6133
|
+
updateIndicator(index) {
|
|
6134
|
+
const container = this.buttonsContainer().nativeElement;
|
|
6135
|
+
const buttonElements = container.querySelectorAll('.dd-segment-neo-v__button');
|
|
6136
|
+
if (buttonElements[index]) {
|
|
6137
|
+
const button = buttonElements[index];
|
|
6138
|
+
this.indicatorHeight = button.offsetHeight;
|
|
6139
|
+
this.indicatorPosition = button.offsetTop;
|
|
6140
|
+
}
|
|
6141
|
+
}
|
|
6142
|
+
getSegmentStyle(color) {
|
|
6143
|
+
switch (color) {
|
|
6144
|
+
case AccentEnumColor.Violet:
|
|
6145
|
+
return {
|
|
6146
|
+
'--dd-segment-neo-v-surface': 'var(--dd-base-secondary)',
|
|
6147
|
+
'--dd-segment-neo-v-panel': 'color-mix(in srgb, var(--dd-base-secondary) 84%, var(--dd-base-0))',
|
|
6148
|
+
'--dd-segment-neo-v-accent': 'var(--dd-base-accent-yellow)',
|
|
6149
|
+
'--dd-segment-neo-v-shadow': 'var(--dd-base-accent-blue)',
|
|
6150
|
+
'--dd-segment-neo-v-text': 'var(--dd-base-0)',
|
|
6151
|
+
'--dd-segment-neo-v-muted': 'color-mix(in srgb, var(--dd-base-0) 74%, transparent)',
|
|
6152
|
+
};
|
|
6153
|
+
case AccentEnumColor.Orange:
|
|
6154
|
+
return {
|
|
6155
|
+
'--dd-segment-neo-v-surface': 'var(--dd-base-accent-orange)',
|
|
6156
|
+
'--dd-segment-neo-v-panel': 'color-mix(in srgb, var(--dd-base-accent-yellow) 68%, var(--dd-base-0))',
|
|
6157
|
+
'--dd-segment-neo-v-accent': 'var(--dd-base-accent-pink)',
|
|
6158
|
+
'--dd-segment-neo-v-shadow': 'var(--dd-base-accent-yellow)',
|
|
6159
|
+
'--dd-segment-neo-v-text': 'var(--dd-base-600)',
|
|
6160
|
+
'--dd-segment-neo-v-muted': 'color-mix(in srgb, var(--dd-base-600) 66%, transparent)',
|
|
6161
|
+
};
|
|
6162
|
+
case AccentEnumColor.Gray:
|
|
6163
|
+
return {
|
|
6164
|
+
'--dd-segment-neo-v-surface': 'var(--dd-base-100)',
|
|
6165
|
+
'--dd-segment-neo-v-panel': 'var(--dd-base-0)',
|
|
6166
|
+
'--dd-segment-neo-v-accent': 'var(--dd-base-accent-blue)',
|
|
6167
|
+
'--dd-segment-neo-v-shadow': 'var(--dd-base-400)',
|
|
6168
|
+
'--dd-segment-neo-v-text': 'var(--dd-base-600)',
|
|
6169
|
+
'--dd-segment-neo-v-muted': 'color-mix(in srgb, var(--dd-base-600) 58%, transparent)',
|
|
6170
|
+
};
|
|
6171
|
+
case AccentEnumColor.Dark:
|
|
6172
|
+
return {
|
|
6173
|
+
'--dd-segment-neo-v-surface': 'var(--dd-base-600)',
|
|
6174
|
+
'--dd-segment-neo-v-panel': 'color-mix(in srgb, var(--dd-base-accent-orange) 22%, var(--dd-base-500))',
|
|
6175
|
+
'--dd-segment-neo-v-accent': 'var(--dd-base-accent-yellow)',
|
|
6176
|
+
'--dd-segment-neo-v-shadow': 'var(--dd-base-accent-orange)',
|
|
6177
|
+
'--dd-segment-neo-v-text': 'var(--dd-base-accent-yellow)',
|
|
6178
|
+
'--dd-segment-neo-v-muted': 'color-mix(in srgb, var(--dd-base-0) 54%, transparent)',
|
|
6179
|
+
};
|
|
6180
|
+
case AccentEnumColor.White:
|
|
6181
|
+
default:
|
|
6182
|
+
return {
|
|
6183
|
+
'--dd-segment-neo-v-surface': 'var(--dd-base-0)',
|
|
6184
|
+
'--dd-segment-neo-v-panel': 'color-mix(in srgb, var(--dd-base-accent-blue) 14%, var(--dd-base-0))',
|
|
6185
|
+
'--dd-segment-neo-v-accent': 'var(--dd-base-accent-orange)',
|
|
6186
|
+
'--dd-segment-neo-v-shadow': 'var(--dd-base-accent-blue)',
|
|
6187
|
+
'--dd-segment-neo-v-text': 'var(--dd-base-600)',
|
|
6188
|
+
'--dd-segment-neo-v-muted': 'color-mix(in srgb, var(--dd-base-400) 72%, transparent)',
|
|
6189
|
+
};
|
|
6190
|
+
}
|
|
6191
|
+
}
|
|
6192
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevSegmentNeobrutalVertical, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6193
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: DuckDevSegmentNeobrutalVertical, isStandalone: true, selector: "duck-dev-segment-neobrutal-vertical", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", ionChange: "ionChange" }, queries: [{ propertyName: "segmentButtons", predicate: DuckDevSegmentButton }], viewQueries: [{ propertyName: "buttonsContainer", first: true, predicate: ["buttonsContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"dd-segment-neo-v\" [ngStyle]=\"segmentStyle()\">\n <div class=\"dd-segment-neo-v__indicator-shell\">\n <div\n class=\"dd-segment-neo-v__indicator\"\n [style.transform]=\"'translateY(' + indicatorPosition + 'px)'\"\n [style.height.px]=\"indicatorHeight\"\n >\n <span class=\"dd-segment-neo-v__indicator-notch\"></span>\n </div>\n </div>\n\n <div class=\"dd-segment-neo-v__buttons\" #buttonsContainer>\n @for (button of buttons; track button.value; let i = $index) {\n <button\n class=\"dd-segment-neo-v__button\"\n [class.dd-segment-neo-v__button--checked]=\"selectedValue === button.value\"\n (click)=\"selectButton(button.value, i)\"\n type=\"button\"\n >\n <span class=\"dd-segment-neo-v__button-copy\">\n <ng-container *ngTemplateOutlet=\"button.template\" />\n </span>\n </button>\n }\n </div>\n</div>\n", styles: [":host{display:block;width:fit-content;min-width:220px}.dd-segment-neo-v{--dd-segment-neo-v-surface: var(--dd-base-0);--dd-segment-neo-v-panel: var(--dd-base-100);--dd-segment-neo-v-accent: var(--dd-base-accent-blue);--dd-segment-neo-v-shadow: var(--dd-base-accent-orange);--dd-segment-neo-v-text: var(--dd-base-600);--dd-segment-neo-v-muted: color-mix(in srgb, var(--dd-base-600) 58%, transparent);position:relative;display:block;padding:10px;border:4px solid var(--dd-neo-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--dd-segment-neo-v-accent) 24%,transparent) 0 8%,transparent 8% 100%),var(--dd-segment-neo-v-surface);box-shadow:8px 8px 0 var(--dd-segment-neo-v-shadow);overflow:clip}.dd-segment-neo-v:before{content:\"\";position:absolute;right:-4px;top:16px;width:8px;height:40px;background:var(--dd-segment-neo-v-accent);border:3px solid var(--dd-neo-ink);border-right:0;z-index:0}.dd-segment-neo-v:after{content:\"\";position:absolute;width:18px;height:18px;background:var(--dd-segment-neo-v-accent);border:3px solid var(--dd-neo-ink);z-index:0;right:20px;bottom:-9px;transform:rotate(12deg)}.dd-segment-neo-v__indicator-shell{position:absolute;inset:10px;z-index:1}.dd-segment-neo-v__indicator{position:absolute;top:0;left:0;right:0;border:3px solid var(--dd-neo-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--dd-segment-neo-v-accent) 36%,transparent) 0 14%,transparent 14% 100%),var(--dd-segment-neo-v-panel);box-shadow:4px 4px 0 var(--dd-neo-shadow);transition:transform .3s cubic-bezier(.22,1,.36,1),height .3s cubic-bezier(.22,1,.36,1)}.dd-segment-neo-v__indicator-notch{position:absolute;top:14px;left:-3px;width:16px;height:16px;border-right:3px solid var(--dd-neo-ink);border-top:3px solid var(--dd-neo-ink);background:var(--dd-segment-neo-v-accent)}.dd-segment-neo-v__buttons{position:relative;z-index:2;display:flex;flex-direction:column;width:100%;gap:6px}.dd-segment-neo-v__button{position:relative;display:flex;align-items:center;justify-content:flex-start;min-height:56px;padding:14px 20px;border:0;background:transparent;color:var(--dd-segment-neo-v-muted);cursor:pointer;text-align:left;font:inherit;width:100%;transition:transform .18s ease,color .18s ease;-webkit-tap-highlight-color:transparent}.dd-segment-neo-v__button:hover{transform:translate(3px)}.dd-segment-neo-v__button:focus-visible{outline:3px solid var(--dd-segment-neo-v-accent);outline-offset:-3px}.dd-segment-neo-v__button-copy{position:relative;display:inline-flex;align-items:center;min-width:0;font-size:.78rem;font-weight:1000;letter-spacing:.12em;line-height:1.3;text-transform:uppercase;text-wrap:balance}.dd-segment-neo-v__button--checked{color:var(--dd-segment-neo-v-text)}@media(max-width:640px){:host{min-width:180px}.dd-segment-neo-v{padding:8px;box-shadow:6px 6px 0 var(--dd-segment-neo-v-shadow)}.dd-segment-neo-v__indicator-shell{inset:8px}.dd-segment-neo-v__buttons{gap:2px}.dd-segment-neo-v__button{min-height:48px;padding:10px 16px}.dd-segment-neo-v__button-copy{font-size:.72rem;letter-spacing:.1em}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
6194
|
+
}
|
|
6195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevSegmentNeobrutalVertical, decorators: [{
|
|
6196
|
+
type: Component,
|
|
6197
|
+
args: [{ selector: 'duck-dev-segment-neobrutal-vertical', imports: [NgTemplateOutlet, NgStyle], template: "<div class=\"dd-segment-neo-v\" [ngStyle]=\"segmentStyle()\">\n <div class=\"dd-segment-neo-v__indicator-shell\">\n <div\n class=\"dd-segment-neo-v__indicator\"\n [style.transform]=\"'translateY(' + indicatorPosition + 'px)'\"\n [style.height.px]=\"indicatorHeight\"\n >\n <span class=\"dd-segment-neo-v__indicator-notch\"></span>\n </div>\n </div>\n\n <div class=\"dd-segment-neo-v__buttons\" #buttonsContainer>\n @for (button of buttons; track button.value; let i = $index) {\n <button\n class=\"dd-segment-neo-v__button\"\n [class.dd-segment-neo-v__button--checked]=\"selectedValue === button.value\"\n (click)=\"selectButton(button.value, i)\"\n type=\"button\"\n >\n <span class=\"dd-segment-neo-v__button-copy\">\n <ng-container *ngTemplateOutlet=\"button.template\" />\n </span>\n </button>\n }\n </div>\n</div>\n", styles: [":host{display:block;width:fit-content;min-width:220px}.dd-segment-neo-v{--dd-segment-neo-v-surface: var(--dd-base-0);--dd-segment-neo-v-panel: var(--dd-base-100);--dd-segment-neo-v-accent: var(--dd-base-accent-blue);--dd-segment-neo-v-shadow: var(--dd-base-accent-orange);--dd-segment-neo-v-text: var(--dd-base-600);--dd-segment-neo-v-muted: color-mix(in srgb, var(--dd-base-600) 58%, transparent);position:relative;display:block;padding:10px;border:4px solid var(--dd-neo-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--dd-segment-neo-v-accent) 24%,transparent) 0 8%,transparent 8% 100%),var(--dd-segment-neo-v-surface);box-shadow:8px 8px 0 var(--dd-segment-neo-v-shadow);overflow:clip}.dd-segment-neo-v:before{content:\"\";position:absolute;right:-4px;top:16px;width:8px;height:40px;background:var(--dd-segment-neo-v-accent);border:3px solid var(--dd-neo-ink);border-right:0;z-index:0}.dd-segment-neo-v:after{content:\"\";position:absolute;width:18px;height:18px;background:var(--dd-segment-neo-v-accent);border:3px solid var(--dd-neo-ink);z-index:0;right:20px;bottom:-9px;transform:rotate(12deg)}.dd-segment-neo-v__indicator-shell{position:absolute;inset:10px;z-index:1}.dd-segment-neo-v__indicator{position:absolute;top:0;left:0;right:0;border:3px solid var(--dd-neo-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--dd-segment-neo-v-accent) 36%,transparent) 0 14%,transparent 14% 100%),var(--dd-segment-neo-v-panel);box-shadow:4px 4px 0 var(--dd-neo-shadow);transition:transform .3s cubic-bezier(.22,1,.36,1),height .3s cubic-bezier(.22,1,.36,1)}.dd-segment-neo-v__indicator-notch{position:absolute;top:14px;left:-3px;width:16px;height:16px;border-right:3px solid var(--dd-neo-ink);border-top:3px solid var(--dd-neo-ink);background:var(--dd-segment-neo-v-accent)}.dd-segment-neo-v__buttons{position:relative;z-index:2;display:flex;flex-direction:column;width:100%;gap:6px}.dd-segment-neo-v__button{position:relative;display:flex;align-items:center;justify-content:flex-start;min-height:56px;padding:14px 20px;border:0;background:transparent;color:var(--dd-segment-neo-v-muted);cursor:pointer;text-align:left;font:inherit;width:100%;transition:transform .18s ease,color .18s ease;-webkit-tap-highlight-color:transparent}.dd-segment-neo-v__button:hover{transform:translate(3px)}.dd-segment-neo-v__button:focus-visible{outline:3px solid var(--dd-segment-neo-v-accent);outline-offset:-3px}.dd-segment-neo-v__button-copy{position:relative;display:inline-flex;align-items:center;min-width:0;font-size:.78rem;font-weight:1000;letter-spacing:.12em;line-height:1.3;text-transform:uppercase;text-wrap:balance}.dd-segment-neo-v__button--checked{color:var(--dd-segment-neo-v-text)}@media(max-width:640px){:host{min-width:180px}.dd-segment-neo-v{padding:8px;box-shadow:6px 6px 0 var(--dd-segment-neo-v-shadow)}.dd-segment-neo-v__indicator-shell{inset:8px}.dd-segment-neo-v__buttons{gap:2px}.dd-segment-neo-v__button{min-height:48px;padding:10px 16px}.dd-segment-neo-v__button-copy{font-size:.72rem;letter-spacing:.1em}}\n"] }]
|
|
6198
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], ionChange: [{ type: i0.Output, args: ["ionChange"] }], segmentButtons: [{
|
|
6199
|
+
type: ContentChildren,
|
|
6200
|
+
args: [DuckDevSegmentButton]
|
|
6201
|
+
}], buttonsContainer: [{ type: i0.ViewChild, args: ['buttonsContainer', { isSignal: true }] }] } });
|
|
6202
|
+
|
|
6067
6203
|
class SegmentBlock {
|
|
6068
6204
|
selected = signal('all', { ...(ngDevMode ? { debugName: "selected" } : {}) });
|
|
6069
6205
|
neobrutalSelected = signal('rush', { ...(ngDevMode ? { debugName: "neobrutalSelected" } : {}) });
|
|
6206
|
+
verticalSelected = signal('strategy', { ...(ngDevMode ? { debugName: "verticalSelected" } : {}) });
|
|
6070
6207
|
lastEvent = signal('', { ...(ngDevMode ? { debugName: "lastEvent" } : {}) });
|
|
6071
6208
|
colorViolet = AccentEnumColor.Violet;
|
|
6072
6209
|
colorOrange = AccentEnumColor.Orange;
|
|
6210
|
+
colorDark = AccentEnumColor.Dark;
|
|
6211
|
+
colorGray = AccentEnumColor.Gray;
|
|
6073
6212
|
onIonChange(e) {
|
|
6074
6213
|
this.lastEvent.set(e.detail.value);
|
|
6075
6214
|
}
|
|
6076
6215
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: SegmentBlock, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6077
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.1", type: SegmentBlock, isStandalone: true, selector: "app-segment-block", ngImport: i0, template: "<div class=\"demo-container\">\n <h1>{{ 'segmentDoc.title' | transloco }}</h1>\n\n <dd-card-section>\n <h2>{{ 'segmentDoc.basic.title' | transloco }}</h2>\n <p class=\"description\">{{ 'segmentDoc.basic.description' | transloco }}</p>\n\n <div class=\"usage-block\">\n <h3>{{ 'segmentDoc.basic.usage' | transloco }}</h3>\n <pre><code><dd-segment-classic [value]=\"selected\" (valueChange)=\"onChange($event)\">\n <dd-segment-button value=\"all\">All</dd-segment-button>\n <dd-segment-button value=\"articles\">Articles</dd-segment-button>\n <dd-segment-button value=\"videos\">Videos</dd-segment-button>\n</dd-segment-classic></code></pre>\n </div>\n\n <div class=\"inputs-block\">\n <h3>{{ 'segmentDoc.basic.inputs' | transloco }}</h3>\n <ul>\n <li><strong>value</strong> \u2014 {{ 'segmentDoc.inputsDesc.value' | transloco }}</li>\n <li>\n <strong>valueChange</strong> \u2014 {{ 'segmentDoc.inputsDesc.valueChange' | transloco }}\n </li>\n <li><strong>ionChange</strong> \u2014 {{ 'segmentDoc.inputsDesc.ionChange' | transloco }}</li>\n <li><strong>color</strong> \u2014 {{ 'segmentDoc.inputsDesc.color' | transloco }}</li>\n <li>\n <strong>dd-segment-button[value]</strong> \u2014\n {{ 'segmentDoc.inputsDesc.buttonValue' | transloco }}\n </li>\n <li>\n <strong>dd-segment-button</strong> \u2014\n {{ 'segmentDoc.inputsDesc.buttonContent' | transloco }}\n </li>\n </ul>\n </div>\n\n <div class=\"examples-block\">\n <h3>{{ 'segmentDoc.basic.examples' | transloco }}</h3>\n\n <div class=\"example-row\">\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.basic' | transloco }}</p>\n <dd-segment-classic>\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n </div>\n\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.withBinding' | transloco }}</p>\n <dd-segment-classic\n [value]=\"selected()\"\n (valueChange)=\"selected.set($event)\"\n (ionChange)=\"onIonChange($event)\"\n >\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n <div class=\"state-hint\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ selected() }}</b>\n <span class=\"divider\">|</span>\n <span\n >ionChange: <b>{{ lastEvent() }}</b></span\n >\n </div>\n </div>\n </div>\n\n <div class=\"example-row\">\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.filters' | transloco }}</p>\n <dd-segment-classic [value]=\"'all'\">\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"photos\">{{\n 'segmentDoc.labels.photos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n </div>\n </div>\n\n <div class=\"example-row\">\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.neobrutalViolet' | transloco }}</p>\n <duck-dev-segment-neobrutal\n [value]=\"neobrutalSelected()\"\n [color]=\"colorViolet\"\n (valueChange)=\"neobrutalSelected.set($event)\"\n >\n <dd-segment-button value=\"rush\">{{\n 'segmentDoc.labels.rush' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"review\">{{\n 'segmentDoc.labels.review' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"drop\">{{\n 'segmentDoc.labels.drop' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal>\n <div class=\"state-hint state-hint--neobrutal\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ neobrutalSelected() }}</b>\n </div>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.neobrutalOrange' | transloco }}</p>\n <duck-dev-segment-neobrutal [value]=\"'launch'\" [color]=\"colorOrange\">\n <dd-segment-button value=\"draft\">{{\n 'segmentDoc.labels.draft' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"launch\">{{\n 'segmentDoc.labels.launch' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"archive\">{{\n 'segmentDoc.labels.archive' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal>\n </div>\n </div>\n </div>\n </dd-card-section>\n</div>\n", styles: [".demo-container{max-width:1200px;margin:0 auto;padding:40px 20px}.demo-container h1{font-size:36px;font-weight:700;color:var(--dd-base-600);margin-bottom:40px;text-align:center;border-bottom:3px solid var(--dd-base-accent-blue);padding-bottom:20px}.demo-container h2{font-size:28px;font-weight:600;color:var(--dd-base-500);margin-bottom:15px;border-left:4px solid var(--dd-base-accent-blue);padding-left:15px}.demo-container .description{font-size:16px;line-height:1.6;color:var(--dd-base-400);margin-bottom:25px;padding:15px;background:var(--dd-base-100);border-radius:8px;border-left:3px solid var(--dd-base-300)}.demo-container h3{font-size:20px;font-weight:600;color:var(--dd-base-500);margin-bottom:15px;margin-top:25px}.demo-container .usage-block{margin-bottom:25px}.demo-container .usage-block pre{background:var(--dd-base-600);color:var(--dd-base-100);padding:20px;border-radius:8px;overflow-x:auto;margin:0}.demo-container .usage-block pre code{font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5}.demo-container .inputs-block{margin-bottom:25px}.demo-container .inputs-block ul{list-style:none;padding:0;margin:0}.demo-container .inputs-block ul li{padding:12px 15px;margin-bottom:8px;background:var(--dd-base-100);border-radius:6px;border-left:3px solid var(--dd-base-accent-blue);font-size:15px;line-height:1.5;color:var(--dd-base-500)}.demo-container .inputs-block ul li strong{color:var(--dd-base-accent-blue);font-weight:600}.demo-container .examples-block .example-row{display:flex;gap:20px;margin-bottom:20px;flex-wrap:wrap}.demo-container .examples-block .example-row .example-item{flex:1;min-width:280px;padding:20px;background:var(--dd-base-100);border-radius:8px;border:2px solid var(--dd-base-300);display:flex;flex-direction:column;align-items:stretch;gap:15px;transition:all .3s ease}.demo-container .examples-block .example-row .example-item:hover{border-color:var(--dd-base-accent-blue);box-shadow:0 4px 12px var(--dd-base-300)}.demo-container .examples-block .example-row .example-item .example-label{font-size:14px;font-weight:600;color:var(--dd-base-400);margin:0;text-align:left}.demo-container .examples-block .example-row .example-item .state-hint{font-size:14px;color:var(--dd-base-400)}.demo-container .examples-block .example-row .example-item .state-hint .divider{margin:0 8px;color:var(--dd-base-300)}.demo-container .examples-block .example-row .example-item.example-item--neobrutal{gap:18px;border-radius:0;border-width:3px;border-color:var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-base-accent-yellow) 18%,transparent) 0 14%,transparent 14% 100%),var(--dd-base-0);box-shadow:8px 8px 0 var(--dd-base-accent-blue)}.demo-container .examples-block .example-row .example-item .state-hint--neobrutal{display:inline-flex;width:fit-content;align-items:center;gap:8px;padding:6px 10px;border:2px solid var(--dd-neo-ink);background:var(--dd-base-accent-yellow);color:var(--dd-base-600);font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}@media(max-width:768px){.demo-container{padding:20px 15px}.demo-container h1{font-size:28px}.demo-container .examples-block .example-row{flex-direction:column}.demo-container .examples-block .example-row .example-item{min-width:100%}}\n"], dependencies: [{ kind: "component", type: DuckDevCardSection, selector: "dd-card-section" }, { kind: "component", type: DuckDevSegmentClassic, selector: "dd-segment-classic", inputs: ["value"], outputs: ["valueChange", "ionChange"] }, { kind: "component", type: DuckDevSegmentButton, selector: "dd-segment-button", inputs: ["value", "contentId"] }, { kind: "component", type: DuckDevSegmentNeobrutal, selector: "duck-dev-segment-neobrutal", inputs: ["value", "color"], outputs: ["valueChange", "ionChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6216
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.1", type: SegmentBlock, isStandalone: true, selector: "app-segment-block", ngImport: i0, template: "<div class=\"demo-container\">\n <h1>{{ 'segmentDoc.title' | transloco }}</h1>\n\n <dd-card-section>\n <h2>{{ 'segmentDoc.basic.title' | transloco }}</h2>\n <p class=\"description\">{{ 'segmentDoc.basic.description' | transloco }}</p>\n\n <div class=\"usage-block\">\n <h3>{{ 'segmentDoc.basic.usage' | transloco }}</h3>\n <pre><code><dd-segment-classic [value]=\"selected\" (valueChange)=\"onChange($event)\">\n <dd-segment-button value=\"all\">All</dd-segment-button>\n <dd-segment-button value=\"articles\">Articles</dd-segment-button>\n <dd-segment-button value=\"videos\">Videos</dd-segment-button>\n</dd-segment-classic></code></pre>\n </div>\n\n <div class=\"inputs-block\">\n <h3>{{ 'segmentDoc.basic.inputs' | transloco }}</h3>\n <ul>\n <li><strong>value</strong> \u2014 {{ 'segmentDoc.inputsDesc.value' | transloco }}</li>\n <li>\n <strong>valueChange</strong> \u2014 {{ 'segmentDoc.inputsDesc.valueChange' | transloco }}\n </li>\n <li><strong>ionChange</strong> \u2014 {{ 'segmentDoc.inputsDesc.ionChange' | transloco }}</li>\n <li><strong>color</strong> \u2014 {{ 'segmentDoc.inputsDesc.color' | transloco }}</li>\n <li>\n <strong>dd-segment-button[value]</strong> \u2014\n {{ 'segmentDoc.inputsDesc.buttonValue' | transloco }}\n </li>\n <li>\n <strong>dd-segment-button</strong> \u2014\n {{ 'segmentDoc.inputsDesc.buttonContent' | transloco }}\n </li>\n </ul>\n </div>\n\n <div class=\"examples-block\">\n <h3>{{ 'segmentDoc.basic.examples' | transloco }}</h3>\n\n <div class=\"example-row\">\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.basic' | transloco }}</p>\n <dd-segment-classic>\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n </div>\n\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.withBinding' | transloco }}</p>\n <dd-segment-classic\n [value]=\"selected()\"\n (valueChange)=\"selected.set($event)\"\n (ionChange)=\"onIonChange($event)\"\n >\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n <div class=\"state-hint\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ selected() }}</b>\n <span class=\"divider\">|</span>\n <span\n >ionChange: <b>{{ lastEvent() }}</b></span\n >\n </div>\n </div>\n </div>\n\n <div class=\"example-row\">\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.filters' | transloco }}</p>\n <dd-segment-classic [value]=\"'all'\">\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"photos\">{{\n 'segmentDoc.labels.photos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n </div>\n </div>\n\n <div class=\"example-row\">\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.neobrutalViolet' | transloco }}</p>\n <duck-dev-segment-neobrutal\n [value]=\"neobrutalSelected()\"\n [color]=\"colorViolet\"\n (valueChange)=\"neobrutalSelected.set($event)\"\n >\n <dd-segment-button value=\"rush\">{{\n 'segmentDoc.labels.rush' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"review\">{{\n 'segmentDoc.labels.review' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"drop\">{{\n 'segmentDoc.labels.drop' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal>\n <div class=\"state-hint state-hint--neobrutal\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ neobrutalSelected() }}</b>\n </div>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.neobrutalOrange' | transloco }}</p>\n <duck-dev-segment-neobrutal [value]=\"'launch'\" [color]=\"colorOrange\">\n <dd-segment-button value=\"draft\">{{\n 'segmentDoc.labels.draft' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"launch\">{{\n 'segmentDoc.labels.launch' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"archive\">{{\n 'segmentDoc.labels.archive' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal>\n </div>\n </div>\n\n <h3>{{ 'segmentDoc.vertical.title' | transloco }}</h3>\n <p class=\"description\">{{ 'segmentDoc.vertical.description' | transloco }}</p>\n\n <div class=\"example-row example-row--vertical\">\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.verticalDark' | transloco }}</p>\n <duck-dev-segment-neobrutal-vertical\n [value]=\"verticalSelected()\"\n [color]=\"colorDark\"\n (valueChange)=\"verticalSelected.set($event)\"\n >\n <dd-segment-button value=\"strategy\">{{\n 'segmentDoc.labels.strategy' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"research\">{{\n 'segmentDoc.labels.research' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"prototype\">{{\n 'segmentDoc.labels.prototype' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"validate\">{{\n 'segmentDoc.labels.validate' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal-vertical>\n <div class=\"state-hint state-hint--neobrutal\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ verticalSelected() }}</b>\n </div>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.verticalViolet' | transloco }}</p>\n <duck-dev-segment-neobrutal-vertical [value]=\"'design'\" [color]=\"colorViolet\">\n <dd-segment-button value=\"discover\">{{\n 'segmentDoc.labels.discover' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"design\">{{\n 'segmentDoc.labels.design' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"develop\">{{\n 'segmentDoc.labels.develop' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"deliver\">{{\n 'segmentDoc.labels.deliver' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal-vertical>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.verticalGray' | transloco }}</p>\n <duck-dev-segment-neobrutal-vertical [value]=\"'backlog'\" [color]=\"colorGray\">\n <dd-segment-button value=\"backlog\">{{\n 'segmentDoc.labels.backlog' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"inProgress\">{{\n 'segmentDoc.labels.inProgress' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"review\">{{\n 'segmentDoc.labels.review' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"done\">{{\n 'segmentDoc.labels.done' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal-vertical>\n </div>\n </div>\n </div>\n </dd-card-section>\n</div>\n", styles: [".demo-container{max-width:1200px;margin:0 auto;padding:40px 20px}.demo-container h1{font-size:36px;font-weight:700;color:var(--dd-base-600);margin-bottom:40px;text-align:center;border-bottom:3px solid var(--dd-base-accent-blue);padding-bottom:20px}.demo-container h2{font-size:28px;font-weight:600;color:var(--dd-base-500);margin-bottom:15px;border-left:4px solid var(--dd-base-accent-blue);padding-left:15px}.demo-container .description{font-size:16px;line-height:1.6;color:var(--dd-base-400);margin-bottom:25px;padding:15px;background:var(--dd-base-100);border-radius:8px;border-left:3px solid var(--dd-base-300)}.demo-container h3{font-size:20px;font-weight:600;color:var(--dd-base-500);margin-bottom:15px;margin-top:25px}.demo-container .usage-block{margin-bottom:25px}.demo-container .usage-block pre{background:var(--dd-base-600);color:var(--dd-base-100);padding:20px;border-radius:8px;overflow-x:auto;margin:0}.demo-container .usage-block pre code{font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5}.demo-container .inputs-block{margin-bottom:25px}.demo-container .inputs-block ul{list-style:none;padding:0;margin:0}.demo-container .inputs-block ul li{padding:12px 15px;margin-bottom:8px;background:var(--dd-base-100);border-radius:6px;border-left:3px solid var(--dd-base-accent-blue);font-size:15px;line-height:1.5;color:var(--dd-base-500)}.demo-container .inputs-block ul li strong{color:var(--dd-base-accent-blue);font-weight:600}.demo-container .examples-block .example-row{display:flex;gap:20px;margin-bottom:20px;flex-wrap:wrap}.demo-container .examples-block .example-row .example-item{flex:1;min-width:280px;padding:20px;background:var(--dd-base-100);border-radius:8px;border:2px solid var(--dd-base-300);display:flex;flex-direction:column;align-items:stretch;gap:15px;transition:all .3s ease}.demo-container .examples-block .example-row .example-item:hover{border-color:var(--dd-base-accent-blue);box-shadow:0 4px 12px var(--dd-base-300)}.demo-container .examples-block .example-row .example-item .example-label{font-size:14px;font-weight:600;color:var(--dd-base-400);margin:0;text-align:left}.demo-container .examples-block .example-row .example-item .state-hint{font-size:14px;color:var(--dd-base-400)}.demo-container .examples-block .example-row .example-item .state-hint .divider{margin:0 8px;color:var(--dd-base-300)}.demo-container .examples-block .example-row .example-item.example-item--neobrutal{gap:18px;border-radius:0;border-width:3px;border-color:var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-base-accent-yellow) 18%,transparent) 0 14%,transparent 14% 100%),var(--dd-base-0);box-shadow:8px 8px 0 var(--dd-base-accent-blue)}.demo-container .examples-block .example-row .example-item .state-hint--neobrutal{display:inline-flex;width:fit-content;align-items:center;gap:8px;padding:6px 10px;border:2px solid var(--dd-neo-ink);background:var(--dd-base-accent-yellow);color:var(--dd-base-600);font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}@media(max-width:768px){.demo-container{padding:20px 15px}.demo-container h1{font-size:28px}.demo-container .examples-block .example-row{flex-direction:column}.demo-container .examples-block .example-row .example-item{min-width:100%}}\n"], dependencies: [{ kind: "component", type: DuckDevCardSection, selector: "dd-card-section" }, { kind: "component", type: DuckDevSegmentClassic, selector: "dd-segment-classic", inputs: ["value"], outputs: ["valueChange", "ionChange"] }, { kind: "component", type: DuckDevSegmentButton, selector: "dd-segment-button", inputs: ["value", "contentId"] }, { kind: "component", type: DuckDevSegmentNeobrutal, selector: "duck-dev-segment-neobrutal", inputs: ["value", "color"], outputs: ["valueChange", "ionChange"] }, { kind: "component", type: DuckDevSegmentNeobrutalVertical, selector: "duck-dev-segment-neobrutal-vertical", inputs: ["value", "color"], outputs: ["valueChange", "ionChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6078
6217
|
}
|
|
6079
6218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: SegmentBlock, decorators: [{
|
|
6080
6219
|
type: Component,
|
|
@@ -6084,7 +6223,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
6084
6223
|
DuckDevSegmentClassic,
|
|
6085
6224
|
DuckDevSegmentButton,
|
|
6086
6225
|
DuckDevSegmentNeobrutal,
|
|
6087
|
-
|
|
6226
|
+
DuckDevSegmentNeobrutalVertical,
|
|
6227
|
+
], template: "<div class=\"demo-container\">\n <h1>{{ 'segmentDoc.title' | transloco }}</h1>\n\n <dd-card-section>\n <h2>{{ 'segmentDoc.basic.title' | transloco }}</h2>\n <p class=\"description\">{{ 'segmentDoc.basic.description' | transloco }}</p>\n\n <div class=\"usage-block\">\n <h3>{{ 'segmentDoc.basic.usage' | transloco }}</h3>\n <pre><code><dd-segment-classic [value]=\"selected\" (valueChange)=\"onChange($event)\">\n <dd-segment-button value=\"all\">All</dd-segment-button>\n <dd-segment-button value=\"articles\">Articles</dd-segment-button>\n <dd-segment-button value=\"videos\">Videos</dd-segment-button>\n</dd-segment-classic></code></pre>\n </div>\n\n <div class=\"inputs-block\">\n <h3>{{ 'segmentDoc.basic.inputs' | transloco }}</h3>\n <ul>\n <li><strong>value</strong> \u2014 {{ 'segmentDoc.inputsDesc.value' | transloco }}</li>\n <li>\n <strong>valueChange</strong> \u2014 {{ 'segmentDoc.inputsDesc.valueChange' | transloco }}\n </li>\n <li><strong>ionChange</strong> \u2014 {{ 'segmentDoc.inputsDesc.ionChange' | transloco }}</li>\n <li><strong>color</strong> \u2014 {{ 'segmentDoc.inputsDesc.color' | transloco }}</li>\n <li>\n <strong>dd-segment-button[value]</strong> \u2014\n {{ 'segmentDoc.inputsDesc.buttonValue' | transloco }}\n </li>\n <li>\n <strong>dd-segment-button</strong> \u2014\n {{ 'segmentDoc.inputsDesc.buttonContent' | transloco }}\n </li>\n </ul>\n </div>\n\n <div class=\"examples-block\">\n <h3>{{ 'segmentDoc.basic.examples' | transloco }}</h3>\n\n <div class=\"example-row\">\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.basic' | transloco }}</p>\n <dd-segment-classic>\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n </div>\n\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.withBinding' | transloco }}</p>\n <dd-segment-classic\n [value]=\"selected()\"\n (valueChange)=\"selected.set($event)\"\n (ionChange)=\"onIonChange($event)\"\n >\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n <div class=\"state-hint\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ selected() }}</b>\n <span class=\"divider\">|</span>\n <span\n >ionChange: <b>{{ lastEvent() }}</b></span\n >\n </div>\n </div>\n </div>\n\n <div class=\"example-row\">\n <div class=\"example-item\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.filters' | transloco }}</p>\n <dd-segment-classic [value]=\"'all'\">\n <dd-segment-button value=\"all\">{{\n 'segmentDoc.labels.all' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"articles\">{{\n 'segmentDoc.labels.articles' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"videos\">{{\n 'segmentDoc.labels.videos' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"photos\">{{\n 'segmentDoc.labels.photos' | transloco\n }}</dd-segment-button>\n </dd-segment-classic>\n </div>\n </div>\n\n <div class=\"example-row\">\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.neobrutalViolet' | transloco }}</p>\n <duck-dev-segment-neobrutal\n [value]=\"neobrutalSelected()\"\n [color]=\"colorViolet\"\n (valueChange)=\"neobrutalSelected.set($event)\"\n >\n <dd-segment-button value=\"rush\">{{\n 'segmentDoc.labels.rush' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"review\">{{\n 'segmentDoc.labels.review' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"drop\">{{\n 'segmentDoc.labels.drop' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal>\n <div class=\"state-hint state-hint--neobrutal\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ neobrutalSelected() }}</b>\n </div>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.neobrutalOrange' | transloco }}</p>\n <duck-dev-segment-neobrutal [value]=\"'launch'\" [color]=\"colorOrange\">\n <dd-segment-button value=\"draft\">{{\n 'segmentDoc.labels.draft' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"launch\">{{\n 'segmentDoc.labels.launch' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"archive\">{{\n 'segmentDoc.labels.archive' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal>\n </div>\n </div>\n\n <h3>{{ 'segmentDoc.vertical.title' | transloco }}</h3>\n <p class=\"description\">{{ 'segmentDoc.vertical.description' | transloco }}</p>\n\n <div class=\"example-row example-row--vertical\">\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.verticalDark' | transloco }}</p>\n <duck-dev-segment-neobrutal-vertical\n [value]=\"verticalSelected()\"\n [color]=\"colorDark\"\n (valueChange)=\"verticalSelected.set($event)\"\n >\n <dd-segment-button value=\"strategy\">{{\n 'segmentDoc.labels.strategy' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"research\">{{\n 'segmentDoc.labels.research' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"prototype\">{{\n 'segmentDoc.labels.prototype' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"validate\">{{\n 'segmentDoc.labels.validate' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal-vertical>\n <div class=\"state-hint state-hint--neobrutal\">\n <span>{{ 'segmentDoc.labels.selected' | transloco }}: </span>\n <b>{{ verticalSelected() }}</b>\n </div>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.verticalViolet' | transloco }}</p>\n <duck-dev-segment-neobrutal-vertical [value]=\"'design'\" [color]=\"colorViolet\">\n <dd-segment-button value=\"discover\">{{\n 'segmentDoc.labels.discover' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"design\">{{\n 'segmentDoc.labels.design' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"develop\">{{\n 'segmentDoc.labels.develop' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"deliver\">{{\n 'segmentDoc.labels.deliver' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal-vertical>\n </div>\n\n <div class=\"example-item example-item--neobrutal\">\n <p class=\"example-label\">{{ 'segmentDoc.examples.verticalGray' | transloco }}</p>\n <duck-dev-segment-neobrutal-vertical [value]=\"'backlog'\" [color]=\"colorGray\">\n <dd-segment-button value=\"backlog\">{{\n 'segmentDoc.labels.backlog' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"inProgress\">{{\n 'segmentDoc.labels.inProgress' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"review\">{{\n 'segmentDoc.labels.review' | transloco\n }}</dd-segment-button>\n <dd-segment-button value=\"done\">{{\n 'segmentDoc.labels.done' | transloco\n }}</dd-segment-button>\n </duck-dev-segment-neobrutal-vertical>\n </div>\n </div>\n </div>\n </dd-card-section>\n</div>\n", styles: [".demo-container{max-width:1200px;margin:0 auto;padding:40px 20px}.demo-container h1{font-size:36px;font-weight:700;color:var(--dd-base-600);margin-bottom:40px;text-align:center;border-bottom:3px solid var(--dd-base-accent-blue);padding-bottom:20px}.demo-container h2{font-size:28px;font-weight:600;color:var(--dd-base-500);margin-bottom:15px;border-left:4px solid var(--dd-base-accent-blue);padding-left:15px}.demo-container .description{font-size:16px;line-height:1.6;color:var(--dd-base-400);margin-bottom:25px;padding:15px;background:var(--dd-base-100);border-radius:8px;border-left:3px solid var(--dd-base-300)}.demo-container h3{font-size:20px;font-weight:600;color:var(--dd-base-500);margin-bottom:15px;margin-top:25px}.demo-container .usage-block{margin-bottom:25px}.demo-container .usage-block pre{background:var(--dd-base-600);color:var(--dd-base-100);padding:20px;border-radius:8px;overflow-x:auto;margin:0}.demo-container .usage-block pre code{font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5}.demo-container .inputs-block{margin-bottom:25px}.demo-container .inputs-block ul{list-style:none;padding:0;margin:0}.demo-container .inputs-block ul li{padding:12px 15px;margin-bottom:8px;background:var(--dd-base-100);border-radius:6px;border-left:3px solid var(--dd-base-accent-blue);font-size:15px;line-height:1.5;color:var(--dd-base-500)}.demo-container .inputs-block ul li strong{color:var(--dd-base-accent-blue);font-weight:600}.demo-container .examples-block .example-row{display:flex;gap:20px;margin-bottom:20px;flex-wrap:wrap}.demo-container .examples-block .example-row .example-item{flex:1;min-width:280px;padding:20px;background:var(--dd-base-100);border-radius:8px;border:2px solid var(--dd-base-300);display:flex;flex-direction:column;align-items:stretch;gap:15px;transition:all .3s ease}.demo-container .examples-block .example-row .example-item:hover{border-color:var(--dd-base-accent-blue);box-shadow:0 4px 12px var(--dd-base-300)}.demo-container .examples-block .example-row .example-item .example-label{font-size:14px;font-weight:600;color:var(--dd-base-400);margin:0;text-align:left}.demo-container .examples-block .example-row .example-item .state-hint{font-size:14px;color:var(--dd-base-400)}.demo-container .examples-block .example-row .example-item .state-hint .divider{margin:0 8px;color:var(--dd-base-300)}.demo-container .examples-block .example-row .example-item.example-item--neobrutal{gap:18px;border-radius:0;border-width:3px;border-color:var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-base-accent-yellow) 18%,transparent) 0 14%,transparent 14% 100%),var(--dd-base-0);box-shadow:8px 8px 0 var(--dd-base-accent-blue)}.demo-container .examples-block .example-row .example-item .state-hint--neobrutal{display:inline-flex;width:fit-content;align-items:center;gap:8px;padding:6px 10px;border:2px solid var(--dd-neo-ink);background:var(--dd-base-accent-yellow);color:var(--dd-base-600);font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}@media(max-width:768px){.demo-container{padding:20px 15px}.demo-container h1{font-size:28px}.demo-container .examples-block .example-row{flex-direction:column}.demo-container .examples-block .example-row .example-item{min-width:100%}}\n"] }]
|
|
6088
6228
|
}] });
|
|
6089
6229
|
|
|
6090
6230
|
class ProgressBarBlock {
|
|
@@ -6366,8 +6506,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
6366
6506
|
}] });
|
|
6367
6507
|
|
|
6368
6508
|
const DuckDevLibTranslations = {
|
|
6369
|
-
en: import('./duck-dev-lib-en-
|
|
6370
|
-
ru: import('./duck-dev-lib-ru-
|
|
6509
|
+
en: import('./duck-dev-lib-en-BUr6Xr1h.mjs'),
|
|
6510
|
+
ru: import('./duck-dev-lib-ru-BxtBEpPE.mjs'),
|
|
6371
6511
|
};
|
|
6372
6512
|
|
|
6373
6513
|
/*
|
|
@@ -6378,5 +6518,5 @@ const DuckDevLibTranslations = {
|
|
|
6378
6518
|
* Generated bundle index. Do not edit.
|
|
6379
6519
|
*/
|
|
6380
6520
|
|
|
6381
|
-
export { AccentEnumColor, Badge, BadgeNeobrutalSlab, BadgeNeobrutalStamp, BadgeNeobrutalTicket, ButtonBlurLift, ButtonCasper, ButtonFlip, ButtonGlideOver, ButtonNeobrutalBurst, ButtonNeobrutalSlab, ButtonNeobrutalSticker, ButtonNeobrutalTag, ButtonNeobrutalTape, ButtonNeobrutalZigzag, DdFlexDirectionDirective, DdTabPanel, DuckDevAccordionComponent as DuckDevAccordion, DuckDevAccordionNeobrutalComponent as DuckDevAccordionNeobrutal, DuckDevAccordionNeobrutalTapeComponent as DuckDevAccordionNeobrutalTape, DuckDevBreadcrumbClassic, DuckDevBreadcrumbNeobrutal, DuckDevCardAccent, DuckDevCardMinimal, DuckDevCardNeobrutalPoster, DuckDevCardNeobrutalSlab, DuckDevCardNeobrutalStamp, DuckDevCardNeobrutalTicket, DuckDevCardOutline, DuckDevCardSection, DuckDevCardSignal, DuckDevIcon, DuckDevInput, DuckDevInputNeobrutalPoster, DuckDevInputNeobrutalRadio, DuckDevInputNeobrutalSlab, DuckDevInputNeobrutalStrip, DuckDevInputNeobrutalToggle, DuckDevLibTranslations, DuckDevModalClassic, DuckDevNotification, DuckDevNotificationContainer, DuckDevNotificationService, DuckDevProgressLine, DuckDevProgressMeter, DuckDevProgressNeobrutalSlab, DuckDevProgressNeobrutalStamp, DuckDevProgressNeobrutalTicket, DuckDevProgressStack, DuckDevSegmentButton, DuckDevSegmentClassic, DuckDevSegmentNeobrutal, DuckDevSpeakerBubbleClassic, DuckDevSpeakerBubbleNeobrutalSlab, DuckDevSpeakerBubbleNeobrutalTicket, DuckDevSpeakerBubbleOutline, DuckDevSpeakerBubbleSoft, DuckDevTab, DuckDevTabNeobrutal, DuckDevTabVertical, DuckDevTooltip, DuckDevTooltipNeobrutalComponent, LoaderClassic, LoaderLoadingBubble, LoaderNeobrutalBars, LoaderNeobrutalMarquee, LoaderNeobrutalStamp, LoaderThreeDots, MainDocumentationPage, SliderClassic, getClassicSpeakerBubbleStyle, getNeobrutalSpeakerBubbleStyle, useSpeakerBubbleTail };
|
|
6521
|
+
export { AccentEnumColor, Badge, BadgeNeobrutalSlab, BadgeNeobrutalStamp, BadgeNeobrutalTicket, ButtonBlurLift, ButtonCasper, ButtonFlip, ButtonGlideOver, ButtonNeobrutalBurst, ButtonNeobrutalSlab, ButtonNeobrutalSticker, ButtonNeobrutalTag, ButtonNeobrutalTape, ButtonNeobrutalZigzag, DdFlexDirectionDirective, DdTabPanel, DuckDevAccordionComponent as DuckDevAccordion, DuckDevAccordionNeobrutalComponent as DuckDevAccordionNeobrutal, DuckDevAccordionNeobrutalTapeComponent as DuckDevAccordionNeobrutalTape, DuckDevBreadcrumbClassic, DuckDevBreadcrumbNeobrutal, DuckDevCardAccent, DuckDevCardMinimal, DuckDevCardNeobrutalPoster, DuckDevCardNeobrutalSlab, DuckDevCardNeobrutalStamp, DuckDevCardNeobrutalTicket, DuckDevCardOutline, DuckDevCardSection, DuckDevCardSignal, DuckDevIcon, DuckDevInput, DuckDevInputNeobrutalPoster, DuckDevInputNeobrutalRadio, DuckDevInputNeobrutalSlab, DuckDevInputNeobrutalStrip, DuckDevInputNeobrutalToggle, DuckDevLibTranslations, DuckDevModalClassic, DuckDevNotification, DuckDevNotificationContainer, DuckDevNotificationService, DuckDevProgressLine, DuckDevProgressMeter, DuckDevProgressNeobrutalSlab, DuckDevProgressNeobrutalStamp, DuckDevProgressNeobrutalTicket, DuckDevProgressStack, DuckDevSegmentButton, DuckDevSegmentClassic, DuckDevSegmentNeobrutal, DuckDevSegmentNeobrutalVertical, DuckDevSpeakerBubbleClassic, DuckDevSpeakerBubbleNeobrutalSlab, DuckDevSpeakerBubbleNeobrutalTicket, DuckDevSpeakerBubbleOutline, DuckDevSpeakerBubbleSoft, DuckDevTab, DuckDevTabNeobrutal, DuckDevTabVertical, DuckDevTooltip, DuckDevTooltipNeobrutalComponent, LoaderClassic, LoaderLoadingBubble, LoaderNeobrutalBars, LoaderNeobrutalMarquee, LoaderNeobrutalStamp, LoaderThreeDots, MainDocumentationPage, SliderClassic, getClassicSpeakerBubbleStyle, getNeobrutalSpeakerBubbleStyle, useSpeakerBubbleTail };
|
|
6382
6522
|
//# sourceMappingURL=duck-dev-lib.mjs.map
|