to avoid strict-mode violations when inner elements
+ // Use the card host to avoid strict-mode violations when inner elements
// (e.g. hlm-select, hlm-switch, input) share the same id as the card host.
- const card = page.locator(`component-card#${id}`);
+ const card = componentCard(page, id);
// Skip variants that exist in the registry but are not rendered on the page
// (e.g. commented out in the component constants file).
const isPresent = await card
diff --git a/eslint.config.js b/eslint.config.js
index f5e2f1ad..ddb4c9d8 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -22,12 +22,16 @@ module.exports = tseslint.config(
// Angular 22's migration adds Eager to preserve pre-v22 behavior.
// Re-enable this rule after the tracked OnPush migration batches finish.
'@angular-eslint/prefer-on-push-component-change-detection': 'off',
- '@angular-eslint/template/interactive-supports-focus': 'warn',
+ '@angular-eslint/no-input-rename': 'off',
+ '@typescript-eslint/array-type': 'off',
+ '@typescript-eslint/consistent-type-definitions': 'off',
+ '@angular-eslint/template/click-events-have-key-events': 'off',
+ '@angular-eslint/template/interactive-supports-focus': 'off',
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
- prefix: ['app', 'sim', 'hlm'],
+ prefix: ['app', 'sim', 'hlm', 'spartan'],
style: 'camelCase',
},
],
@@ -35,7 +39,7 @@ module.exports = tseslint.config(
'error',
{
type: 'element',
- prefix: ['app', 'sim', 'hlm'],
+ prefix: ['app', 'sim', 'hlm', 'spartan'],
style: 'kebab-case',
},
],
@@ -44,6 +48,9 @@ module.exports = tseslint.config(
{
files: ['**/*.html'],
extends: [...angular.configs.templateRecommended, ...angular.configs.templateAccessibility],
- rules: {},
+ rules: {
+ '@angular-eslint/template/click-events-have-key-events': 'off',
+ '@angular-eslint/template/interactive-supports-focus': 'off',
+ },
},
);
diff --git a/package.json b/package.json
index 271dfe2b..d71f8d5e 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"e2e:report": "playwright show-report",
"e2e:ui": "playwright test --ui",
"e2e:update": "playwright test --update-snapshots",
+ "format": "prettier . --write",
"lint": "ng lint",
"ng": "ng",
"serve:ssr:simui": "node dist/simui/server/server.mjs",
@@ -38,7 +39,7 @@
"@ng-icons/remixicon": "^33.3.0",
"@ng-icons/tabler-icons": "^33.3.0",
"@sim-space/image-cropper": "1.0.0",
- "@spartan-ng/brain": "0.0.1-alpha.720",
+ "@spartan-ng/brain": "1.0.0",
"@tailwindcss/postcss": "^4.0.17",
"@tanstack/angular-table": "^8.21.4",
"class-variance-authority": "^0.7.0",
@@ -63,8 +64,9 @@
"@angular/cli": "22.0.3",
"@angular/compiler-cli": "22.0.2",
"@angular/language-service": "22.0.2",
+ "@eslint/js": "9.39.1",
"@playwright/test": "^1.60.0",
- "@spartan-ng/cli": "0.0.1-alpha.720",
+ "@spartan-ng/cli": "1.0.0",
"@types/culori": "^4.0.1",
"@types/express": "^4.17.17",
"@types/jasmine": "~5.1.0",
diff --git a/playwright.config.ts b/playwright.config.ts
index 0cc6cad4..105f44ae 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -2,6 +2,7 @@ import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
+ timeout: 120_000,
fullyParallel: true,
forbidOnly: !!process.env['CI'],
retries: process.env['CI'] ? 2 : 0,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 09456225..77fd2b25 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -66,8 +66,8 @@ importers:
specifier: 1.0.0
version: 1.0.0(@angular/common@22.0.2(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1))
'@spartan-ng/brain':
- specifier: 0.0.1-alpha.720
- version: 0.0.1-alpha.720(40f5af144e24106035caff8efd5cd038)
+ specifier: 1.0.0
+ version: 1.0.0(40f5af144e24106035caff8efd5cd038)
'@tailwindcss/postcss':
specifier: ^4.0.17
version: 4.1.17
@@ -135,12 +135,15 @@ importers:
'@angular/language-service':
specifier: 22.0.2
version: 22.0.2
+ '@eslint/js':
+ specifier: 9.39.1
+ version: 9.39.1
'@playwright/test':
specifier: ^1.60.0
version: 1.60.0
'@spartan-ng/cli':
- specifier: 0.0.1-alpha.720
- version: 0.0.1-alpha.720(@angular-devkit/core@22.0.3(chokidar@5.0.0))(@angular/build@22.0.3(bbe4947fc1ef3447fec63c7cc2bf1219))(@angular/compiler@22.0.2)(@babel/traverse@7.29.0)(@module-federation/enhanced@0.21.6(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@module-federation/node@2.7.25(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@rspack/core@1.6.4)(@types/express@4.17.25)(@zkochan/js-yaml@0.0.7)(chokidar@5.0.0)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react-refresh@0.18.0)(react@19.2.0)(rxjs@7.8.2)(tslib@2.8.1)(zone.js@0.15.1)
+ specifier: 1.0.0
+ version: 1.0.0(@angular-devkit/core@22.0.3(chokidar@5.0.0))(@angular/build@22.0.3(bbe4947fc1ef3447fec63c7cc2bf1219))(@angular/compiler@22.0.2)(@babel/traverse@7.29.0)(@module-federation/enhanced@0.21.6(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@module-federation/node@2.7.25(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@rspack/core@1.6.4)(@types/express@4.17.25)(@zkochan/js-yaml@0.0.7)(chokidar@5.0.0)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react-refresh@0.18.0)(react@19.2.0)(rxjs@7.8.2)(tslib@2.8.1)(zone.js@0.15.1)
'@types/culori':
specifier: ^4.0.1
version: 4.0.1
@@ -2021,42 +2024,49 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-arm64-musl@1.1.1':
resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@napi-rs/nice-linux-ppc64-gnu@1.1.1':
resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==}
engines: {node: '>= 10'}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-riscv64-gnu@1.1.1':
resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-s390x-gnu@1.1.1':
resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==}
engines: {node: '>= 10'}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-x64-gnu@1.1.1':
resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@napi-rs/nice-linux-x64-musl@1.1.1':
resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@napi-rs/nice-openharmony-arm64@1.1.1':
resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==}
@@ -2238,21 +2248,25 @@ packages:
resolution: {integrity: sha512-63N6lV+LptT4yVXfshPQoTugyVVNaOdC6gCMAq9D9Xl0MNs8Cc1PQDnUg+snyFAENoLBkJPzT2/NLBAgmRoB/A==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@nx/nx-linux-arm64-musl@22.1.1':
resolution: {integrity: sha512-r1NFh6+virI3GDDnBh4UlPH/EeCNw/pn9vEyaiQopbB+XngLw7HAxwoJmv4rdEMm82w8ztMrBeTwxo7rtKdHcQ==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@nx/nx-linux-x64-gnu@22.1.1':
resolution: {integrity: sha512-VoogXatmWvjVECjQRd4wN9xMZ2ig1h90rAU0O1XkRF0cuTtNKS/6K6+tABSr88RSYMa8jont+cA1uaNaBEdutA==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@nx/nx-linux-x64-musl@22.1.1':
resolution: {integrity: sha512-C4rEO7ITUYFvHRAq0fDa0MRdy4VHUWYYKxa4Wigwfzjw57zJ3128tHRARkfwvdkaIUjywlVSM4RudXm3vaDoTg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@nx/nx-win32-arm64-msvc@22.1.1':
resolution: {integrity: sha512-zVyEyrqndOFs3TiLIN+4iTqanCFGjY+7y0LzN2t9XdswRef0H1qGrCTtF5eNGuxYBvguoQmZxnStAjJNYz7ksw==}
@@ -2380,36 +2394,42 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm-musl@2.5.1':
resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-win32-arm64@2.5.1':
resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
@@ -2522,66 +2542,79 @@ packages:
resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.60.2':
resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.60.2':
resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.60.2':
resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.60.2':
resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.60.2':
resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==}
cpu: [loong64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.60.2':
resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.60.2':
resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==}
cpu: [ppc64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.60.2':
resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.60.2':
resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.60.2':
resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.60.2':
resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.60.2':
resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-openbsd-x64@4.60.2':
resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==}
@@ -2627,21 +2660,25 @@ packages:
resolution: {integrity: sha512-Ldpoz2wWnBaL2+XKLIOyCZMkAkd4pk/L24EVgma3SpRtwgenLEr10bQupvwGAK5OLkjayslOTZmRiAv0FH5o/w==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rspack/binding-linux-arm64-musl@1.6.4':
resolution: {integrity: sha512-3fLMSDK5yMjKmx7iFbYG3P3A0xNdtmNu09v5P6hzq65tkJ3dflIt3p8DvtOTURtuSgQZV2A1LDd9hpIXdnigqA==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rspack/binding-linux-x64-gnu@1.6.4':
resolution: {integrity: sha512-5YzXUKLnaiqND05CDgkKE0WNRtC1ulkVncYs78xPikonzZmgVXa8eRaTPOZC6ZjpLR0eTsg+MSesLUsPUu27hA==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rspack/binding-linux-x64-musl@1.6.4':
resolution: {integrity: sha512-KcSFla8a9bXG1mmV5oQ1R5h/dSXfd41/qHOsNuLqho2UCX8CVh4dezUA153dj7p1S4yOhTy6VZZi6C1szweE9A==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rspack/binding-wasm32-wasi@1.6.4':
resolution: {integrity: sha512-mfFJbDJkRy5I1iW3m0JlWbc0X8pjVd+GRUz5nhbccwEhSQOc27ao3evf7XPU4aaDxud1B3UEqYiRcRmtm1BrjA==}
@@ -2739,8 +2776,8 @@ packages:
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
- '@spartan-ng/brain@0.0.1-alpha.720':
- resolution: {integrity: sha512-gFbvMUZauu00zUT5uVautgkUlZcDhS8AgBxSQAx1HJdNyLt6YBg1TrOp1SSAxv74FXfwmSfpN0t7+X+ZoHGI9A==}
+ '@spartan-ng/brain@1.0.0':
+ resolution: {integrity: sha512-sktLOLBghaCHvpYD+/Ei/d1YBDAbWqcviWidmiwdC6w4jThvME1fYehRFkteU7JKspg40D1AlSu9qQfFJ967mw==}
peerDependencies:
'@angular/cdk': '>=21.0.0 <23.0.0'
'@angular/common': '>=21.0.0 <23.0.0'
@@ -2755,8 +2792,8 @@ packages:
luxon:
optional: true
- '@spartan-ng/cli@0.0.1-alpha.720':
- resolution: {integrity: sha512-v03CVwkaKec3Dy4qgUTk1qwPbSmboF4+NNYyrBc7N4kdnMwkE4aI6kfKNedLboZ2A8LE3L9t/jIFGMZzOCisaQ==}
+ '@spartan-ng/cli@1.0.0':
+ resolution: {integrity: sha512-u7b+5l3ES7u0kG1GJUtQDLXaEwZ0cROsuaKomc20uHrI9VGiG0rCGlQRMQdOF+zouv8638+YFpdVxB+wHp52KA==}
peerDependencies:
tslib: ^2.3.0
@@ -2801,24 +2838,28 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.1.17':
resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.1.17':
resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.1.17':
resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@tailwindcss/oxide-wasm32-wasi@4.1.17':
resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==}
@@ -5106,24 +5147,28 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
lightningcss-win32-arm64-msvc@1.30.2:
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
@@ -6399,48 +6444,56 @@ packages:
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
+ libc: glibc
sass-embedded-linux-arm@1.93.3:
resolution: {integrity: sha512-yeiv2y+dp8B4wNpd3+JsHYD0mvpXSfov7IGyQ1tMIR40qv+ROkRqYiqQvAOXf76Qwh4Y9OaYZtLpnsPjfeq6mA==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [linux]
+ libc: glibc
sass-embedded-linux-musl-arm64@1.93.3:
resolution: {integrity: sha512-PS829l+eUng+9W4PFclXGb4uA2+965NHV3/Sa5U7qTywjeeUUYTZg70dJHSqvhrBEfCc2XJABeW3adLJbyQYkw==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
+ libc: musl
sass-embedded-linux-musl-arm@1.93.3:
resolution: {integrity: sha512-fU0fwAwbp7sBE3h5DVU5UPzvaLg7a4yONfFWkkcCp6ZrOiPuGRHXXYriWQ0TUnWy4wE+svsVuWhwWgvlb/tkKg==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [linux]
+ libc: musl
sass-embedded-linux-musl-riscv64@1.93.3:
resolution: {integrity: sha512-cK1oBY+FWQquaIGEeQ5H74KTO8cWsSWwXb/WaildOO9U6wmUypTgUYKQ0o5o/29nZbWWlM1PHuwVYTSnT23Jjg==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [linux]
+ libc: musl
sass-embedded-linux-musl-x64@1.93.3:
resolution: {integrity: sha512-A7wkrsHu2/I4Zpa0NMuPGkWDVV7QGGytxGyUq3opSXgAexHo/vBPlGoDXoRlSdex0cV+aTMRPjoGIfdmNlHwyg==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
+ libc: musl
sass-embedded-linux-riscv64@1.93.3:
resolution: {integrity: sha512-vWkW1+HTF5qcaHa6hO80gx/QfB6GGjJUP0xLbnAoY4pwEnw5ulGv6RM8qYr8IDhWfVt/KH+lhJ2ZFxnJareisQ==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [linux]
+ libc: glibc
sass-embedded-linux-x64@1.93.3:
resolution: {integrity: sha512-k6uFxs+e5jSuk1Y0niCwuq42F9ZC5UEP7P+RIOurIm8w/5QFa0+YqeW+BPWEW5M1FqVOsNZH3qGn4ahqvAEjPA==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
+ libc: glibc
sass-embedded-unknown-all@1.93.3:
resolution: {integrity: sha512-o5wj2rLpXH0C+GJKt/VpWp6AnMsCCbfFmnMAttcrsa+U3yrs/guhZ3x55KAqqUsE8F47e3frbsDL+1OuQM5DAA==}
@@ -9487,7 +9540,7 @@ snapshots:
'@npmcli/fs@5.0.0':
dependencies:
- semver: 7.7.4
+ semver: 7.8.0
'@npmcli/git@7.0.2':
dependencies:
@@ -9497,7 +9550,7 @@ snapshots:
lru-cache: 11.5.0
npm-pick-manifest: 11.0.3
proc-log: 6.1.0
- semver: 7.7.4
+ semver: 7.8.0
which: 6.0.1
'@npmcli/installed-package-contents@4.0.0':
@@ -9514,7 +9567,7 @@ snapshots:
hosted-git-info: 9.0.3
json-parse-even-better-errors: 5.0.0
proc-log: 6.1.0
- semver: 7.7.4
+ semver: 7.8.0
spdx-expression-parse: 4.0.0
'@npmcli/promise-spawn@9.0.1':
@@ -10272,7 +10325,7 @@ snapshots:
'@socket.io/component-emitter@3.1.2': {}
- '@spartan-ng/brain@0.0.1-alpha.720(40f5af144e24106035caff8efd5cd038)':
+ '@spartan-ng/brain@1.0.0(40f5af144e24106035caff8efd5cd038)':
dependencies:
'@angular/cdk': 22.0.2(@angular/common@22.0.2(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@22.0.2(@angular/common@22.0.2(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)
'@angular/common': 22.0.2(@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)
@@ -10286,7 +10339,7 @@ snapshots:
optionalDependencies:
luxon: 3.7.2
- '@spartan-ng/cli@0.0.1-alpha.720(@angular-devkit/core@22.0.3(chokidar@5.0.0))(@angular/build@22.0.3(bbe4947fc1ef3447fec63c7cc2bf1219))(@angular/compiler@22.0.2)(@babel/traverse@7.29.0)(@module-federation/enhanced@0.21.6(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@module-federation/node@2.7.25(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@rspack/core@1.6.4)(@types/express@4.17.25)(@zkochan/js-yaml@0.0.7)(chokidar@5.0.0)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react-refresh@0.18.0)(react@19.2.0)(rxjs@7.8.2)(tslib@2.8.1)(zone.js@0.15.1)':
+ '@spartan-ng/cli@1.0.0(@angular-devkit/core@22.0.3(chokidar@5.0.0))(@angular/build@22.0.3(bbe4947fc1ef3447fec63c7cc2bf1219))(@angular/compiler@22.0.2)(@babel/traverse@7.29.0)(@module-federation/enhanced@0.21.6(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@module-federation/node@2.7.25(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@rspack/core@1.6.4)(@types/express@4.17.25)(@zkochan/js-yaml@0.0.7)(chokidar@5.0.0)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react-refresh@0.18.0)(react@19.2.0)(rxjs@7.8.2)(tslib@2.8.1)(zone.js@0.15.1)':
dependencies:
'@angular/core': 22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)(zone.js@0.15.1)
'@nx/angular': 22.1.1(@angular-devkit/core@22.0.3(chokidar@5.0.0))(@angular/build@22.0.3(bbe4947fc1ef3447fec63c7cc2bf1219))(@babel/traverse@7.29.0)(@module-federation/enhanced@0.21.6(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@module-federation/node@2.7.25(@rspack/core@1.6.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@6.0.3)(webpack@5.103.0))(@rspack/core@1.6.4)(@schematics/angular@21.2.14(chokidar@5.0.0))(@types/express@4.17.25)(@zkochan/js-yaml@0.0.7)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(lightningcss@1.30.2)(nx@22.1.1)(react-dom@19.2.0(react@19.2.0))(react-refresh@0.18.0)(react@19.2.0)(rxjs@7.8.2)(typescript@6.0.3)
@@ -10703,7 +10756,7 @@ snapshots:
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.4
+ semver: 7.8.0
ts-api-utils: 2.1.0(typescript@6.0.3)
typescript: 6.0.3
transitivePeerDependencies:
@@ -13136,7 +13189,7 @@ snapshots:
make-dir@4.0.0:
dependencies:
- semver: 7.7.4
+ semver: 7.8.0
make-error@1.3.6: {}
@@ -13381,9 +13434,9 @@ snapshots:
graceful-fs: 4.2.11
nopt: 9.0.0
proc-log: 6.1.0
- semver: 7.7.4
+ semver: 7.8.0
tar: 7.5.15
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
undici: 6.25.0
which: 6.0.1
@@ -13416,7 +13469,7 @@ snapshots:
npm-install-checks@8.0.0:
dependencies:
- semver: 7.7.4
+ semver: 7.8.0
npm-normalize-package-bin@5.0.0: {}
@@ -13437,7 +13490,7 @@ snapshots:
npm-install-checks: 8.0.0
npm-normalize-package-bin: 5.0.0
npm-package-arg: 13.0.2
- semver: 7.7.4
+ semver: 7.8.0
npm-registry-fetch@19.1.1:
dependencies:
diff --git a/public/registry/accordion-01.json b/public/registry/accordion-01.json
index 503c165a..35704d4c 100644
--- a/public/registry/accordion-01.json
+++ b/public/registry/accordion-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-01',\n\timports: [HlmAccordionImports],\n\ttemplate: `\n\t\t\n\t\t\t
W/ chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion01Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-01-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-01-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-01-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-01-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-01',\n\timports: [HlmAccordionImports],\n\ttemplate: `\n\t\t\n\t\t\t
W/ chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion01Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-01-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-01-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-01-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-01-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-02.json b/public/registry/accordion-02.json
index 3489a4c5..e5e4a63f 100644
--- a/public/registry/accordion-02.json
+++ b/public/registry/accordion-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-02',\n\timports: [HlmAccordionImports, NgIcon, BrnAccordionImports],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion02Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-02-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-02-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-02-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-02-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-02',\n\timports: [HlmAccordionImports, NgIcon, BrnAccordionImports],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion02Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-02-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-02-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-02-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-02-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-03.json b/public/registry/accordion-03.json
index 4b4e8440..27e71ad4 100644
--- a/public/registry/accordion-03.json
+++ b/public/registry/accordion-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-03',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ left chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion03Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-03-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-03-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-03-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-03-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-03',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ left chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion03Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-03-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-03-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-03-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-03-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-04.json b/public/registry/accordion-04.json
index 381b1214..b73866c7 100644
--- a/public/registry/accordion-04.json
+++ b/public/registry/accordion-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-04',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ left plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion04Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-04-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-04-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-04-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-04-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-04',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ left plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion04Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-04-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-04-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-04-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-04-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-05.json b/public/registry/accordion-05.json
index cc55537e..315c0c67 100644
--- a/public/registry/accordion-05.json
+++ b/public/registry/accordion-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideGroup,\n\tlucideLaptop,\n\tlucideServerCog,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-05',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronDown, lucideChevronUp, lucideGroup, lucideLaptop, lucideServerCog, lucideZap }),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon and chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion05Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-05-1',\n\t\t\ticon: 'lucideGroup',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-05-2',\n\t\t\ticon: 'lucideLaptop',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-05-3',\n\t\t\ticon: 'lucideServerCog',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-05-4',\n\t\t\ticon: 'lucideZap',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideGroup,\n\tlucideLaptop,\n\tlucideServerCog,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ticon: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-05',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronDown, lucideChevronUp, lucideGroup, lucideLaptop, lucideServerCog, lucideZap }),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon and chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion05Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-05-1',\n\t\t\ticon: 'lucideGroup',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-05-2',\n\t\t\ticon: 'lucideLaptop',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-05-3',\n\t\t\ticon: 'lucideServerCog',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-05-4',\n\t\t\ticon: 'lucideZap',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-06.json b/public/registry/accordion-06.json
index 1dd35db9..979547af 100644
--- a/public/registry/accordion-06.json
+++ b/public/registry/accordion-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideGroup, lucideLaptop, lucideMinus, lucidePlus, lucideServerCog, lucideZap } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-06',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus, lucideGroup, lucideLaptop, lucideServerCog, lucideZap })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon and plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion06Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-06-1',\n\t\t\ticon: 'lucideGroup',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-06-2',\n\t\t\ticon: 'lucideLaptop',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-06-3',\n\t\t\ticon: 'lucideServerCog',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-06-4',\n\t\t\ticon: 'lucideZap',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideGroup, lucideLaptop, lucideMinus, lucidePlus, lucideServerCog, lucideZap } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ticon: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-06',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus, lucideGroup, lucideLaptop, lucideServerCog, lucideZap })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon and plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion06Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-06-1',\n\t\t\ticon: 'lucideGroup',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-06-2',\n\t\t\ticon: 'lucideLaptop',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-06-3',\n\t\t\ticon: 'lucideServerCog',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-06-4',\n\t\t\ticon: 'lucideZap',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-07.json b/public/registry/accordion-07.json
index f7a2a796..5cdd11e7 100644
--- a/public/registry/accordion-07.json
+++ b/public/registry/accordion-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-07',\n\timports: [HlmAccordionImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ sub-title and chevron \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.subTitle }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion07Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-07-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-07-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-07-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-07-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubTitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-07',\n\timports: [HlmAccordionImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ sub-title and chevron \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.subTitle }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion07Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-07-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-07-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-07-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-07-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-08.json b/public/registry/accordion-08.json
index 3b202552..5e6373d5 100644
--- a/public/registry/accordion-08.json
+++ b/public/registry/accordion-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-08',\n\timports: [HlmAccordionImports, NgIcon, BrnAccordionImports],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ sub-header and plus-minus \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{ item.subTitle }}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion08Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-08-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-08-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-08-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-08-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubTitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-08',\n\timports: [HlmAccordionImports, NgIcon, BrnAccordionImports],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ sub-header and plus-minus \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{ item.subTitle }}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion08Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-08-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-08-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-08-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-08-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-09.json b/public/registry/accordion-09.json
index 63c1c811..e75686f8 100644
--- a/public/registry/accordion-09.json
+++ b/public/registry/accordion-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBell,\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideLifeBuoy,\n\tlucideLink,\n\tlucideShieldCheck,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-accordion-09',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon, HlmIcon],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronDown, lucideChevronUp, lucideLink, lucideBell, lucideShieldCheck, lucideLifeBuoy }),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon, sub-title and chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t{{ item.subTitle }} \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion09Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-09-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\ticon: 'lucideLink',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\ticon: 'lucideBell',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\ticon: 'lucideShieldCheck',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\ticon: 'lucideLifeBuoy',\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBell,\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideLifeBuoy,\n\tlucideLink,\n\tlucideShieldCheck,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubTitle: string;\n\ticon: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-09',\n\timports: [HlmAccordionImports, BrnAccordionImports, HlmIconImports, NgIcon],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronDown, lucideChevronUp, lucideLink, lucideBell, lucideShieldCheck, lucideLifeBuoy }),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon, sub-title and chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t{{ item.subTitle }} \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion09Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-09-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\ticon: 'lucideLink',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\ticon: 'lucideBell',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\ticon: 'lucideShieldCheck',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\ticon: 'lucideLifeBuoy',\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-10.json b/public/registry/accordion-10.json
index 1d7f4949..4f6b5225 100644
--- a/public/registry/accordion-10.json
+++ b/public/registry/accordion-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBell, lucideLifeBuoy, lucideLink, lucideMinus, lucidePlus, lucideShieldCheck } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-accordion-10',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon, HlmIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus, lucideLink, lucideBell, lucideShieldCheck, lucideLifeBuoy })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon, sub-header and plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t{{ item.subTitle }} \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion10Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-10-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\ticon: 'lucideLink',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-10-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\ticon: 'lucideBell',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-10-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\ticon: 'lucideShieldCheck',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-10-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\ticon: 'lucideLifeBuoy',\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBell, lucideLifeBuoy, lucideLink, lucideMinus, lucidePlus, lucideShieldCheck } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubTitle: string;\n\ticon: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-10',\n\timports: [NgIcon, HlmAccordionImports, BrnAccordionImports, HlmIconImports],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus, lucideLink, lucideBell, lucideShieldCheck, lucideLifeBuoy })],\n\ttemplate: `\n\t\t\n\t\t\t
W/ icon, sub-header and plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t{{ item.subTitle }} \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion10Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-10-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\ticon: 'lucideLink',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-10-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\ticon: 'lucideBell',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-10-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\ticon: 'lucideShieldCheck',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-10-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\ticon: 'lucideLifeBuoy',\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-11.json b/public/registry/accordion-11.json
index 97fb22fb..d67df104 100644
--- a/public/registry/accordion-11.json
+++ b/public/registry/accordion-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-11',\n\timports: [HlmAccordionImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ chevron \n\n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion11Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-11-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-11-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-11-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-11-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-11',\n\timports: [HlmAccordionImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ chevron \n\n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion11Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-11-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-11-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-11-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-11-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-12.json b/public/registry/accordion-12.json
index a8739acb..5f811554 100644
--- a/public/registry/accordion-12.json
+++ b/public/registry/accordion-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-12',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion12Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-12-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-12-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-12-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-12-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-12',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion12Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-12-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-12-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-12-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-12-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-13.json b/public/registry/accordion-13.json
index 1747fce1..f21d93db 100644
--- a/public/registry/accordion-13.json
+++ b/public/registry/accordion-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-13',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ left chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion13Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-13-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-13-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-13-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-13-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-13',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ left chevron \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion13Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-13-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-13-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-13-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-13-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-14.json b/public/registry/accordion-14.json
index be13610e..9647e6d6 100644
--- a/public/registry/accordion-14.json
+++ b/public/registry/accordion-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-14',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ left plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion14Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-14-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-14-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-14-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-14-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-14',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Tabs W/ left plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion14Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-14-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-14-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-14-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-14-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-15.json b/public/registry/accordion-15.json
index 904f7f43..eaf265f1 100644
--- a/public/registry/accordion-15.json
+++ b/public/registry/accordion-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-15',\n\timports: [HlmAccordionImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ chevron \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion15Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-15-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-15-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-15-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-15-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-15',\n\timports: [HlmAccordionImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ chevron \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion15Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-15-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-15-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-15-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-15-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-16.json b/public/registry/accordion-16.json
index 3ba4afa9..161ec42b 100644
--- a/public/registry/accordion-16.json
+++ b/public/registry/accordion-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-16',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion16Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-16-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-16-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-16-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-16-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-16',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion16Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-16-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-16-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-16-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-16-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-17.json b/public/registry/accordion-17.json
index 0c822984..13c113e8 100644
--- a/public/registry/accordion-17.json
+++ b/public/registry/accordion-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-17',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ left chevron \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion17Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-17-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-17-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-17-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-17-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-17',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ left chevron \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion17Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-17-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-17-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-17-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-17-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-18.json b/public/registry/accordion-18.json
index 9dcb75b3..dae945d5 100644
--- a/public/registry/accordion-18.json
+++ b/public/registry/accordion-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-18',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ left plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion18Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-18-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-18-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-18-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-18-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-18',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucidePlus, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Table W/ left plus-minus \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.content }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion18Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-18-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-18-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-18-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-18-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-19.json b/public/registry/accordion-19.json
index d1aeb457..99b9b999 100644
--- a/public/registry/accordion-19.json
+++ b/public/registry/accordion-19.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-19',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\thost: { ngSkipHydration: 'true' },\n\ttemplate: `\n\t\t\n\t\t\t
Multi-level \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\tdiv]:pb-0!\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@for (subItem of item.subItem; track subItem.id) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t{{ subItem.title }} \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ subItem.content }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion19Component {\n\titems = [\n\t\t{\n\t\t\tid: 'acc-19-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem1',\n\t\t\t\t\ttitle: 'Modern Architecture',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI is built on Angular and Spartan UI, providing a robust foundation with the latest web standards. Its architecture ensures scalability and future-proofing for enterprise applications.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem2',\n\t\t\t\t\ttitle: 'Design Philosophy',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'We balanced aesthetics with functionality to create components that are visually appealing yet highly practical. Every design decision prioritizes both user experience and developer ergonomics.',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-19-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem3',\n\t\t\t\t\ttitle: 'Developer Experience',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'With consistent APIs across all components, comprehensive TypeScript support, and detailed documentation, SimUI reduces the learning curve and accelerates development velocity.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem4',\n\t\t\t\t\ttitle: 'Tooling & Integration',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI seamlessly integrates with the Angular ecosystem and popular development tools. CLI generators, DevTools extensions, and linting rules are available to enhance your workflow.',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-19-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem5',\n\t\t\t\t\ttitle: 'Theming System',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"SimUI's powerful theming system leverages Tailwind CSS to enable comprehensive styling options. Define your brand colors, typography, and other design tokens in one place to affect the entire system.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem6',\n\t\t\t\t\ttitle: 'Component Variants',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"Create custom variants of any component with minimal effort. SimUI's architecture allows you to extend existing components without duplicating code, making maintenance straightforward.\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-19-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem7',\n\t\t\t\t\ttitle: 'Runtime Efficiency',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI components are designed for minimal runtime overhead. With careful optimization of change detection, rendering processes, and DOM interactions, your application remains responsive even at scale.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem8',\n\t\t\t\t\ttitle: 'Bundle Optimization',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'All components are fully tree-shakable and lazy-loadable, ensuring your application only includes what it needs. This results in smaller bundles, faster loading times, and improved initial rendering.',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionSubItem {\n\tid: string;\n\ttitle: string;\n\tcontent: string;\n}\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubItem: AccordionSubItem[];\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-19',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\thost: { ngSkipHydration: 'true' },\n\ttemplate: `\n\t\t\n\t\t\t
Multi-level \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\tdiv]:pb-0!\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@for (subItem of item.subItem; track subItem.id) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t{{ subItem.title }} \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ subItem.content }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion19Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-19-1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem1',\n\t\t\t\t\ttitle: 'Modern Architecture',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI is built on Angular and Spartan UI, providing a robust foundation with the latest web standards. Its architecture ensures scalability and future-proofing for enterprise applications.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem2',\n\t\t\t\t\ttitle: 'Design Philosophy',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'We balanced aesthetics with functionality to create components that are visually appealing yet highly practical. Every design decision prioritizes both user experience and developer ergonomics.',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t'SimUI offers a carefully crafted component library that balances aesthetics with functionality. Built on Angular and Spartan UI, it provides a solid foundation for modern web applications.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-19-2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem3',\n\t\t\t\t\ttitle: 'Developer Experience',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'With consistent APIs across all components, comprehensive TypeScript support, and detailed documentation, SimUI reduces the learning curve and accelerates development velocity.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem4',\n\t\t\t\t\ttitle: 'Tooling & Integration',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI seamlessly integrates with the Angular ecosystem and popular development tools. CLI generators, DevTools extensions, and linting rules are available to enhance your workflow.',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t'Absolutely. SimUI components are designed with a consistent API, comprehensive documentation, and ready-to-use examples to make implementation straightforward and intuitive.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-19-3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem5',\n\t\t\t\t\ttitle: 'Theming System',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"SimUI's powerful theming system leverages Tailwind CSS to enable comprehensive styling options. Define your brand colors, typography, and other design tokens in one place to affect the entire system.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem6',\n\t\t\t\t\ttitle: 'Component Variants',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"Create custom variants of any component with minimal effort. SimUI's architecture allows you to extend existing components without duplicating code, making maintenance straightforward.\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t'Yes. With Tailwind CSS integration, SimUI components can be easily styled to match your brand. The underlying architecture supports theming and allows for component variants with minimal effort.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-19-4',\n\t\t\ttitle: 'What about performance?',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem7',\n\t\t\t\t\ttitle: 'Runtime Efficiency',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI components are designed for minimal runtime overhead. With careful optimization of change detection, rendering processes, and DOM interactions, your application remains responsive even at scale.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-19-subItem8',\n\t\t\t\t\ttitle: 'Bundle Optimization',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'All components are fully tree-shakable and lazy-loadable, ensuring your application only includes what it needs. This results in smaller bundles, faster loading times, and improved initial rendering.',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontent:\n\t\t\t\t\"SimUI is built with performance in mind. Components are lightweight, tree-shakable, and optimized for modern browsers. They're designed to maintain responsiveness even in complex applications.\",\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-20.json b/public/registry/accordion-20.json
index 7658d523..83a9b4c9 100644
--- a/public/registry/accordion-20.json
+++ b/public/registry/accordion-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideFlaskConical,\n\tlucideGauge,\n\tlucideGroup,\n\tlucideHandshake,\n\tlucideLaptop,\n\tlucidePackageCheck,\n\tlucidePalette,\n\tlucidePuzzle,\n\tlucidePyramid,\n\tlucideRatio,\n\tlucideServerCog,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\n@Component({\n\tselector: 'sim-accordion-20',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideChevronUp,\n\t\t\tlucideGroup,\n\t\t\tlucideLaptop,\n\t\t\tlucideServerCog,\n\t\t\tlucideZap,\n\t\t\tlucidePyramid,\n\t\t\tlucideRatio,\n\t\t\tlucideFlaskConical,\n\t\t\tlucideHandshake,\n\t\t\tlucidePalette,\n\t\t\tlucidePuzzle,\n\t\t\tlucideGauge,\n\t\t\tlucidePackageCheck,\n\t\t}),\n\t],\n\thost: { ngSkipHydration: 'true' },\n\ttemplate: `\n\t\t\n\t\t\t
Multi-level W/ icon \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\tdiv]:pb-0!\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@for (subItem of item.subItem; track subItem.id) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t{{ subItem.title }} \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ subItem.content }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion20Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-20-item1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\ticon: 'lucideGroup',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem1',\n\t\t\t\t\ticon: 'lucidePyramid',\n\t\t\t\t\ttitle: 'Modern Architecture',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI is built on Angular and Spartan UI, providing a robust foundation with the latest web standards. Its architecture ensures scalability and future-proofing for enterprise applications.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem2',\n\t\t\t\t\ticon: 'lucideRatio',\n\t\t\t\t\ttitle: 'Design Philosophy',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'We balanced aesthetics with functionality to create components that are visually appealing yet highly practical. Every design decision prioritizes both user experience and developer ergonomics.',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'acc-20-item2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\ticon: 'lucideLaptop',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem3',\n\t\t\t\t\ticon: 'lucideFlaskConical',\n\t\t\t\t\ttitle: 'Developer Experience',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'With consistent APIs across all components, comprehensive TypeScript support, and detailed documentation, SimUI reduces the learning curve and accelerates development velocity.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem4',\n\t\t\t\t\ticon: 'lucideHandshake',\n\t\t\t\t\ttitle: 'Tooling & Integration',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI seamlessly integrates with the Angular ecosystem and popular development tools. CLI generators, DevTools extensions, and linting rules are available to enhance your workflow.',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'acc-20-item3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\ticon: 'lucideServerCog',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem5',\n\t\t\t\t\ticon: 'lucidePalette',\n\t\t\t\t\ttitle: 'Theming System',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"SimUI's powerful theming system leverages Tailwind CSS to enable comprehensive styling options. Define your brand colors, typography, and other design tokens in one place to affect the entire system.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem6',\n\t\t\t\t\ticon: 'lucidePuzzle',\n\t\t\t\t\ttitle: 'Component Variants',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"Create custom variants of any component with minimal effort. SimUI's architecture allows you to extend existing components without duplicating code, making maintenance straightforward.\",\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'acc-20-item4',\n\t\t\ttitle: 'What about performance?',\n\t\t\ticon: 'lucideZap',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem7',\n\t\t\t\t\ticon: 'lucideGauge',\n\t\t\t\t\ttitle: 'Runtime Efficiency',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI components are designed for minimal runtime overhead. With careful optimization of change detection, rendering processes, and DOM interactions, your application remains responsive even at scale.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem8',\n\t\t\t\t\ticon: 'lucidePackageCheck',\n\t\t\t\t\ttitle: 'Bundle Optimization',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'All components are fully tree-shakable and lazy-loadable, ensuring your application only includes what it needs. This results in smaller bundles, faster loading times, and improved initial rendering.',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideFlaskConical,\n\tlucideGauge,\n\tlucideGroup,\n\tlucideHandshake,\n\tlucideLaptop,\n\tlucidePackageCheck,\n\tlucidePalette,\n\tlucidePuzzle,\n\tlucidePyramid,\n\tlucideRatio,\n\tlucideServerCog,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\n\ninterface AccordionSubItem {\n\tid: string;\n\ticon: string;\n\ttitle: string;\n\tcontent: string;\n}\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\ticon: string;\n\tsubItem: AccordionSubItem[];\n}\n\n@Component({\n\tselector: 'sim-accordion-20',\n\timports: [HlmAccordionImports, BrnAccordionImports, NgIcon],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideChevronUp,\n\t\t\tlucideGroup,\n\t\t\tlucideLaptop,\n\t\t\tlucideServerCog,\n\t\t\tlucideZap,\n\t\t\tlucidePyramid,\n\t\t\tlucideRatio,\n\t\t\tlucideFlaskConical,\n\t\t\tlucideHandshake,\n\t\t\tlucidePalette,\n\t\t\tlucidePuzzle,\n\t\t\tlucideGauge,\n\t\t\tlucidePackageCheck,\n\t\t}),\n\t],\n\thost: { ngSkipHydration: 'true' },\n\ttemplate: `\n\t\t\n\t\t\t
Multi-level W/ icon \n\t\t\t\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\tdiv]:pb-0!\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@for (subItem of item.subItem; track subItem.id) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t{{ subItem.title }} \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ subItem.content }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t \n\t\t\n\t`,\n})\nexport class Accordion20Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-20-item1',\n\t\t\ttitle: 'Why choose SimUI?',\n\t\t\ticon: 'lucideGroup',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem1',\n\t\t\t\t\ticon: 'lucidePyramid',\n\t\t\t\t\ttitle: 'Modern Architecture',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI is built on Angular and Spartan UI, providing a robust foundation with the latest web standards. Its architecture ensures scalability and future-proofing for enterprise applications.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem2',\n\t\t\t\t\ticon: 'lucideRatio',\n\t\t\t\t\ttitle: 'Design Philosophy',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'We balanced aesthetics with functionality to create components that are visually appealing yet highly practical. Every design decision prioritizes both user experience and developer ergonomics.',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'acc-20-item2',\n\t\t\ttitle: 'Is it developer-friendly?',\n\t\t\ticon: 'lucideLaptop',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem3',\n\t\t\t\t\ticon: 'lucideFlaskConical',\n\t\t\t\t\ttitle: 'Developer Experience',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'With consistent APIs across all components, comprehensive TypeScript support, and detailed documentation, SimUI reduces the learning curve and accelerates development velocity.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem4',\n\t\t\t\t\ticon: 'lucideHandshake',\n\t\t\t\t\ttitle: 'Tooling & Integration',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI seamlessly integrates with the Angular ecosystem and popular development tools. CLI generators, DevTools extensions, and linting rules are available to enhance your workflow.',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'acc-20-item3',\n\t\t\ttitle: 'Can I customize it?',\n\t\t\ticon: 'lucideServerCog',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem5',\n\t\t\t\t\ticon: 'lucidePalette',\n\t\t\t\t\ttitle: 'Theming System',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"SimUI's powerful theming system leverages Tailwind CSS to enable comprehensive styling options. Define your brand colors, typography, and other design tokens in one place to affect the entire system.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem6',\n\t\t\t\t\ticon: 'lucidePuzzle',\n\t\t\t\t\ttitle: 'Component Variants',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t\"Create custom variants of any component with minimal effort. SimUI's architecture allows you to extend existing components without duplicating code, making maintenance straightforward.\",\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'acc-20-item4',\n\t\t\ttitle: 'What about performance?',\n\t\t\ticon: 'lucideZap',\n\t\t\tsubItem: [\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem7',\n\t\t\t\t\ticon: 'lucideGauge',\n\t\t\t\t\ttitle: 'Runtime Efficiency',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'SimUI components are designed for minimal runtime overhead. With careful optimization of change detection, rendering processes, and DOM interactions, your application remains responsive even at scale.',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'acc-20-subItem8',\n\t\t\t\t\ticon: 'lucidePackageCheck',\n\t\t\t\t\ttitle: 'Bundle Optimization',\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'All components are fully tree-shakable and lazy-loadable, ensuring your application only includes what it needs. This results in smaller bundles, faster loading times, and improved initial rendering.',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-21.json b/public/registry/accordion-21.json
index ff2321d7..8549c0f8 100644
--- a/public/registry/accordion-21.json
+++ b/public/registry/accordion-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBell,\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideLifeBuoy,\n\tlucideLink,\n\tlucideShieldCheck,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-accordion-21',\n\timports: [HlmAccordionImports, BrnAccordionImports, HlmIcon, NgIcon],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronDown, lucideChevronUp, lucideLink, lucideBell, lucideShieldCheck, lucideLifeBuoy }),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
Connected W/ icon and chevron \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion21Component {\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'acc-09-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\ticon: 'lucideLink',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\ticon: 'lucideBell',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\ticon: 'lucideShieldCheck',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\ticon: 'lucideLifeBuoy',\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBell,\n\tlucideChevronDown,\n\tlucideChevronUp,\n\tlucideLifeBuoy,\n\tlucideLink,\n\tlucideShieldCheck,\n} from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubTitle: string;\n\ticon: string;\n\tcontent: string;\n}\n\n@Component({\n\tselector: 'sim-accordion-21',\n\timports: [HlmAccordionImports, BrnAccordionImports, HlmIconImports, NgIcon],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronDown, lucideChevronUp, lucideLink, lucideBell, lucideShieldCheck, lucideLifeBuoy }),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
Connected W/ icon and chevron \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion21Component {\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'acc-09-1',\n\t\t\ttitle: 'Connected accounts',\n\t\t\tsubTitle: 'Manage your linked social and work accounts',\n\t\t\ticon: 'lucideLink',\n\t\t\tcontent:\n\t\t\t\t'Connect your accounts from Google, GitHub, or Microsoft to enable single sign-on and streamline your workflow. Connected accounts can be used for quick login and importing your preferences across platforms. You can revoke access to any connected account at any time.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-2',\n\t\t\ttitle: 'Notifications',\n\t\t\tsubTitle: 'Customize your notification preferences',\n\t\t\ticon: 'lucideBell',\n\t\t\tcontent:\n\t\t\t\t'Choose which updates you want to receive. You can get notifications for: security alerts, billing updates, newsletter and product announcements, usage reports, and scheduled maintenance. Notifications can be delivered via email, SMS, or push notifications on your devices.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-3',\n\t\t\ttitle: '2-step verification',\n\t\t\tsubTitle: 'Add an extra layer of security to your account',\n\t\t\ticon: 'lucideShieldCheck',\n\t\t\tcontent:\n\t\t\t\t'Protect your account with two-factor authentication. You can use authenticator apps like Google Authenticator or Authy, receive SMS codes, or use security keys like YubiKey. We recommend using an authenticator app for the most secure experience.',\n\t\t},\n\t\t{\n\t\t\tid: 'acc-09-4',\n\t\t\ttitle: 'Contact support',\n\t\t\tsubTitle: \"We're here to help 24/7\",\n\t\t\ticon: 'lucideLifeBuoy',\n\t\t\tcontent:\n\t\t\t\t'Our support team is available around the ClockIcon to assist you. For billing inquiries, technical issues, or general questions, you can reach us through live chat, email at support@example.com, or schedule a call with our technical team. Premium support is available for enterprise customers.',\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/accordion-22.json b/public/registry/accordion-22.json
index 3d0f5f54..80550066 100644
--- a/public/registry/accordion-22.json
+++ b/public/registry/accordion-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { NgClass } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideChevronDown, lucideChevronUp, lucideMinus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-accordion-21',\n\timports: [\n\t\tNgIcon,\n\t\tNgClass,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmCheckbox,\n\t\tHlmIcon,\n\t\tHlmAccordionImports,\n\t\tBrnAccordionImports,\n\t],\n\thost: { ngSkipHydration: 'true' },\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp, lucideCheck, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Connected W/ checkbox and state \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\n\t\t\t\t\t\tdiv>p]:pb-0\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'border-sky-600/20': isGroupFullyChecked(item.id) }\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{ item.content }}
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t@for (option of item.options; track option.id) {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion22Component {\n\tprivate readonly fb = inject(FormBuilder);\n\tprotected readonly form = this.fb.group({});\n\n\tconstructor() {\n\t\tthis.initFormGroups();\n\t}\n\n\tprivate initFormGroups(): void {\n\t\tthis.items.forEach((item) => {\n\t\t\tconst group = this.fb.group({});\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tgroup.addControl(option.id, this.fb.control(false));\n\t\t\t});\n\t\t\tthis.form.addControl(item.id, group);\n\t\t});\n\t}\n\n\tprotected isGroupFullyChecked(groupId: string): boolean {\n\t\tconst group = this.form.get(groupId) as FormGroup;\n\t\tif (!group) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn Object.keys(group.controls).every((key) => group.get(key)?.value === true);\n\t}\n\n\tprotected readonly items = [\n\t\t{\n\t\t\tid: 'project-setup',\n\t\t\ttitle: 'Project Setup',\n\t\t\tsubTitle: 'Essential configuration for your new project',\n\t\t\tcontent: 'Complete these setup steps to ensure your project is properly configured and ready for development.',\n\t\t\toptions: [\n\t\t\t\t{ id: 'install-deps', label: 'Install dependencies' },\n\t\t\t\t{ id: 'config-env', label: 'Configure environment variables' },\n\t\t\t\t{ id: 'setup-db', label: 'Set up database connection' },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'code-quality',\n\t\t\ttitle: 'Code Quality Checks',\n\t\t\tsubTitle: 'Ensure your code meets quality standards',\n\t\t\tcontent: \"Complete these tasks to ensure your code meets the project's quality standards before submission.\",\n\t\t\toptions: [\n\t\t\t\t{ id: 'run-linter', label: 'Run code linter' },\n\t\t\t\t{ id: 'run-tests', label: 'Execute unit tests' },\n\t\t\t\t{ id: 'type-check', label: 'Verify type safety' },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'deployment',\n\t\t\ttitle: 'Deployment Checklist',\n\t\t\tsubTitle: 'Pre-deployment verification steps',\n\t\t\tcontent: 'Complete these steps before deploying your application to production.',\n\t\t\toptions: [\n\t\t\t\t{ id: 'build-prod', label: 'Build production bundle' },\n\t\t\t\t{ id: 'test-prod', label: 'Test in staging environment' },\n\t\t\t\t{ id: 'backup-data', label: 'Back up existing data' },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'documentation',\n\t\t\ttitle: 'Documentation Requirements',\n\t\t\tsubTitle: 'Essential documentation for your project',\n\t\t\tcontent: 'Ensure your project has complete documentation for users and future developers.',\n\t\t\toptions: [\n\t\t\t\t{ id: 'update-readme', label: 'Update README.md' },\n\t\t\t\t{ id: 'api-docs', label: 'Document API endpoints' },\n\t\t\t\t{ id: 'component-docs', label: 'Document component usage' },\n\t\t\t],\n\t\t},\n\t];\n}"
+ "content": "import { NgClass } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideChevronDown, lucideChevronUp, lucideMinus } from '@ng-icons/lucide';\nimport { BrnAccordionImports } from '@spartan-ng/brain/accordion';\nimport { HlmAccordionImports } from '@spartan-ng/helm/accordion';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface AccordionOption {\n\tid: string;\n\tlabel: string;\n}\n\ninterface AccordionItem {\n\tid: string;\n\ttitle: string;\n\tsubTitle: string;\n\tcontent: string;\n\toptions: AccordionOption[];\n}\n\n@Component({\n\tselector: 'sim-accordion-21',\n\timports: [\n\t\tNgIcon,\n\t\tNgClass,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmCheckboxImports,\n\t\tHlmIconImports,\n\t\tHlmAccordionImports,\n\t\tBrnAccordionImports,\n\t],\n\thost: { ngSkipHydration: 'true' },\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp, lucideCheck, lucideMinus })],\n\ttemplate: `\n\t\t\n\t\t\t
Connected W/ checkbox and state \n\t\t\t
\n\t\t\t\t@for (item of items; track item.id) {\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\n\t\t\t\t\t\tdiv>p]:pb-0\"\n\t\t\t\t\t\t\t[ngClass]=\"{ 'border-sky-600/20': isGroupFullyChecked(item.id) }\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{ item.content }}
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t@for (option of item.options; track option.id) {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ option.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Accordion22Component {\n\tprivate readonly fb = inject(FormBuilder);\n\tprotected readonly form = this.fb.group({});\n\n\tconstructor() {\n\t\tthis.initFormGroups();\n\t}\n\n\tprivate initFormGroups(): void {\n\t\tthis.items.forEach((item) => {\n\t\t\tconst group = this.fb.group({});\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tgroup.addControl(option.id, this.fb.control(false));\n\t\t\t});\n\t\t\tthis.form.addControl(item.id, group);\n\t\t});\n\t}\n\n\tprotected isGroupFullyChecked(groupId: string): boolean {\n\t\tconst group = this.form.get(groupId) as FormGroup;\n\t\tif (!group) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn Object.keys(group.controls).every((key) => group.get(key)?.value === true);\n\t}\n\n\tprotected readonly items: AccordionItem[] = [\n\t\t{\n\t\t\tid: 'project-setup',\n\t\t\ttitle: 'Project Setup',\n\t\t\tsubTitle: 'Essential configuration for your new project',\n\t\t\tcontent: 'Complete these setup steps to ensure your project is properly configured and ready for development.',\n\t\t\toptions: [\n\t\t\t\t{ id: 'install-deps', label: 'Install dependencies' },\n\t\t\t\t{ id: 'config-env', label: 'Configure environment variables' },\n\t\t\t\t{ id: 'setup-db', label: 'Set up database connection' },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'code-quality',\n\t\t\ttitle: 'Code Quality Checks',\n\t\t\tsubTitle: 'Ensure your code meets quality standards',\n\t\t\tcontent: \"Complete these tasks to ensure your code meets the project's quality standards before submission.\",\n\t\t\toptions: [\n\t\t\t\t{ id: 'run-linter', label: 'Run code linter' },\n\t\t\t\t{ id: 'run-tests', label: 'Execute unit tests' },\n\t\t\t\t{ id: 'type-check', label: 'Verify type safety' },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'deployment',\n\t\t\ttitle: 'Deployment Checklist',\n\t\t\tsubTitle: 'Pre-deployment verification steps',\n\t\t\tcontent: 'Complete these steps before deploying your application to production.',\n\t\t\toptions: [\n\t\t\t\t{ id: 'build-prod', label: 'Build production bundle' },\n\t\t\t\t{ id: 'test-prod', label: 'Test in staging environment' },\n\t\t\t\t{ id: 'backup-data', label: 'Back up existing data' },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tid: 'documentation',\n\t\t\ttitle: 'Documentation Requirements',\n\t\t\tsubTitle: 'Essential documentation for your project',\n\t\t\tcontent: 'Ensure your project has complete documentation for users and future developers.',\n\t\t\toptions: [\n\t\t\t\t{ id: 'update-readme', label: 'Update README.md' },\n\t\t\t\t{ id: 'api-docs', label: 'Document API endpoints' },\n\t\t\t\t{ id: 'component-docs', label: 'Document component usage' },\n\t\t\t],\n\t\t},\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/alert-01.json b/public/registry/alert-01.json
index 24468a8e..a4ce8251 100644
--- a/public/registry/alert-01.json
+++ b/public/registry/alert-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-01',\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSome information is missing
\n\t\t \n\t`,\n})\nexport class Alert01Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-01',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSome information is missing
\n\t\t \n\t`,\n})\nexport class Alert01Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-02.json b/public/registry/alert-02.json
index da5a7cb2..e7f8060e 100644
--- a/public/registry/alert-02.json
+++ b/public/registry/alert-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-02',\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSome information is missing
\n\t\t \n\t`,\n})\nexport class Alert02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-02',\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSome information is missing
\n\t\t \n\t`,\n})\nexport class Alert02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-03.json b/public/registry/alert-03.json
index 13a4d9e8..0c8326e5 100644
--- a/public/registry/alert-03.json
+++ b/public/registry/alert-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-03',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tAn error occurred!
\n\t\t \n\t`,\n})\nexport class Alert03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-03',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tAn error occurred!
\n\t\t \n\t`,\n})\nexport class Alert03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-04.json b/public/registry/alert-04.json
index f2bbab0e..7f679d97 100644
--- a/public/registry/alert-04.json
+++ b/public/registry/alert-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-04',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tAn error occurred!
\n\t\t \n\t`,\n})\nexport class Alert04Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-04',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tAn error occurred!
\n\t\t \n\t`,\n})\nexport class Alert04Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-05.json b/public/registry/alert-05.json
index 0b73aa7a..73762e4d 100644
--- a/public/registry/alert-05.json
+++ b/public/registry/alert-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-05',\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tCompleted successfully!
\n\t\t \n\t`,\n})\nexport class Alert05Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-05',\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tCompleted successfully!
\n\t\t \n\t`,\n})\nexport class Alert05Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-06.json b/public/registry/alert-06.json
index 57353b22..af490d65 100644
--- a/public/registry/alert-06.json
+++ b/public/registry/alert-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-06',\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tCompleted successfully!
\n\t\t \n\t`,\n})\nexport class Alert06Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-06',\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tCompleted successfully!
\n\t\t \n\t`,\n})\nexport class Alert06Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-07.json b/public/registry/alert-07.json
index 747c5f47..f8548031 100644
--- a/public/registry/alert-07.json
+++ b/public/registry/alert-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-07',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPage information!
\n\t\t \n\t`,\n})\nexport class Alert07Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-07',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPage information!
\n\t\t \n\t`,\n})\nexport class Alert07Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-08.json b/public/registry/alert-08.json
index dd07f5db..8a6a5ab6 100644
--- a/public/registry/alert-08.json
+++ b/public/registry/alert-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-08',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPage information
\n\t\t \n\t`,\n})\nexport class Alert08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-08',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPage information
\n\t\t \n\t`,\n})\nexport class Alert08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-09.json b/public/registry/alert-09.json
index 75ba7a6a..59ca2859 100644
--- a/public/registry/alert-09.json
+++ b/public/registry/alert-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-09',\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert, lucideArrowRight })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Some information is missing
\n\t\t\t\t
\n\t\t\t\t\tCheck now \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert09Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-09',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert, lucideArrowRight })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Some information is missing
\n\t\t\t\t
\n\t\t\t\t\tCheck now \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert09Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-10.json b/public/registry/alert-10.json
index cd126294..d4436a42 100644
--- a/public/registry/alert-10.json
+++ b/public/registry/alert-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-10',\n\tproviders: [provideIcons({ lucideTriangleAlert, lucideArrowRight })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Some information is missing
\n\t\t\t\t
\n\t\t\t\t\tCheck now \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert10Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-10',\n\tproviders: [provideIcons({ lucideTriangleAlert, lucideArrowRight })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Some information is missing
\n\t\t\t\t
\n\t\t\t\t\tCheck now \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert10Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-11.json b/public/registry/alert-11.json
index e0ed41f1..0c51412b 100644
--- a/public/registry/alert-11.json
+++ b/public/registry/alert-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-11',\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSome information is missing
\n\t\t \n\t`,\n})\nexport class Alert11Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-11',\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSome information is missing
\n\t\t \n\t`,\n})\nexport class Alert11Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-12.json b/public/registry/alert-12.json
index a4328850..676e3d75 100644
--- a/public/registry/alert-12.json
+++ b/public/registry/alert-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-12',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tAn error occurred!
\n\t\t \n\t`,\n})\nexport class Alert12Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-12',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tAn error occurred!
\n\t\t \n\t`,\n})\nexport class Alert12Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-13.json b/public/registry/alert-13.json
index 08d52327..6b939b01 100644
--- a/public/registry/alert-13.json
+++ b/public/registry/alert-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-13',\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tCompleted successfully!
\n\t\t \n\t`,\n})\nexport class Alert13Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-13',\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tCompleted successfully!
\n\t\t \n\t`,\n})\nexport class Alert13Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-14.json b/public/registry/alert-14.json
index 3db78107..f57dea5d 100644
--- a/public/registry/alert-14.json
+++ b/public/registry/alert-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-14',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPage information
\n\t\t \n\t`,\n})\nexport class Alert14Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-14',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPage information
\n\t\t \n\t`,\n})\nexport class Alert14Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-15.json b/public/registry/alert-15.json
index a74eb241..eab34451 100644
--- a/public/registry/alert-15.json
+++ b/public/registry/alert-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-15',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Password does not meet requirements: \n\t\t\t\t
\n\t\t\t\t\tMinimum 8 characters \n\t\t\t\t\tInclude a special character \n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert15Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-15',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Password does not meet requirements: \n\t\t\t\t
\n\t\t\t\t\tMinimum 8 characters \n\t\t\t\t\tInclude a special character \n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert15Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-16.json b/public/registry/alert-16.json
index 11807f13..1b32b308 100644
--- a/public/registry/alert-16.json
+++ b/public/registry/alert-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-16',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Password does not meet requirements: \n\t\t\t\t
\n\t\t\t\t\tMinimum 8 characters \n\t\t\t\t\tInclude a special character \n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert16Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-16',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t
Password does not meet requirements: \n\t\t\t\t
\n\t\t\t\t\tMinimum 8 characters \n\t\t\t\t\tInclude a special character \n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert16Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-17.json b/public/registry/alert-17.json
index fecf76c4..0bf9b181 100644
--- a/public/registry/alert-17.json
+++ b/public/registry/alert-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-17',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (!isDismissed()) {\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t
We’ve just released a new feature \n\t\t\t\t\t
Check out our new feature that allows you to add a cover image! \n\t\t\t\t\t
\n\t\t\t\t\t\tDismiss \n\t\t\t\t\t\tView changes \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t}\n\t`,\n})\nexport class Alert17Component {\n\tisDismissed = signal(false);\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-17',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (!isDismissed()) {\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t
We’ve just released a new feature \n\t\t\t\t\t
Check out our new feature that allows you to add a cover image! \n\t\t\t\t\t
\n\t\t\t\t\t\tDismiss \n\t\t\t\t\t\tView changes \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t}\n\t`,\n})\nexport class Alert17Component {\n\tprotected readonly isDismissed = signal(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/alert-18.json b/public/registry/alert-18.json
index e9c7314d..d3af65b5 100644
--- a/public/registry/alert-18.json
+++ b/public/registry/alert-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-18',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (!isDismissed()) {\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t
There was a problem with that action \n\t\t\t\t\t
Please try again later. If the problem persists, contact support. \n\t\t\t\t\t
\n\t\t\t\t\t\tDismiss \n\t\t\t\t\t\tLearn more \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t}\n\t`,\n})\nexport class Alert18Component {\n\tisDismissed = signal(false);\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-18',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAlertImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (!isDismissed()) {\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t
There was a problem with that action \n\t\t\t\t\t
Please try again later. If the problem persists, contact support. \n\t\t\t\t\t
\n\t\t\t\t\t\tDismiss \n\t\t\t\t\t\tLearn more \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t}\n\t`,\n})\nexport class Alert18Component {\n\tprotected readonly isDismissed = signal(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/alert-20.json b/public/registry/alert-20.json
index 3bbb44f8..6db43d4d 100644
--- a/public/registry/alert-20.json
+++ b/public/registry/alert-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideInfo } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-20',\n\timports: [HlmIcon, NgIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideInfo })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert20Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideInfo } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-20',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideInfo })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert20Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-21.json b/public/registry/alert-21.json
index 0e56dde6..f3e2a28a 100644
--- a/public/registry/alert-21.json
+++ b/public/registry/alert-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideInfo } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-21',\n\timports: [HlmIcon, NgIcon, HlmButton, HlmAlertImports],\n\tproviders: [provideIcons({ lucideInfo })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t\t\n\t\t\t\tDismiss \n\t\t\t\tOk \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert21Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideInfo } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-21',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideInfo })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t\t\n\t\t\t\tDismiss \n\t\t\t\tOk \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Alert21Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-22.json b/public/registry/alert-22.json
index 1cf4a4aa..f3f08932 100644
--- a/public/registry/alert-22.json
+++ b/public/registry/alert-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideInfo } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-22',\n\timports: [HlmIcon, NgIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideInfo })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert22Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideInfo } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-22',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideInfo })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert22Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-23.json b/public/registry/alert-23.json
index 5cb14b21..3fa803f1 100644
--- a/public/registry/alert-23.json
+++ b/public/registry/alert-23.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheckCircle2 } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-23',\n\timports: [HlmIcon, NgIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideCheckCircle2 })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert23Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheckCircle2 } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-23',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideCheckCircle2 })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert23Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-24.json b/public/registry/alert-24.json
index fe58a419..73c3b319 100644
--- a/public/registry/alert-24.json
+++ b/public/registry/alert-24.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-24',\n\timports: [HlmIcon, NgIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert24Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-24',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert24Component {}"
}
\ No newline at end of file
diff --git a/public/registry/alert-25.json b/public/registry/alert-25.json
index 97b817b4..c505a3b9 100644
--- a/public/registry/alert-25.json
+++ b/public/registry/alert-25.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-25',\n\timports: [HlmIcon, NgIcon, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert25Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\nimport { HlmAlertImports } from '@spartan-ng/helm/alert';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-alert-25',\n\timports: [NgIcon, HlmIconImports, HlmAlertImports],\n\tproviders: [provideIcons({ lucideTriangleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tHeads up! \n\t\t\tDescribe what can be done about it here.
\n\t\t \n\t`,\n})\nexport class Alert25Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-01.json b/public/registry/avatar-01.json
index 3e0ecdef..02cf060a 100644
--- a/public/registry/avatar-01.json
+++ b/public/registry/avatar-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-01',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tML \n\t\t \n\t`,\n})\nexport class Avatar01Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-01',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tML \n\t\t \n\t`,\n})\nexport class Avatar01Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-02.json b/public/registry/avatar-02.json
index 1aee0613..40f57cd7 100644
--- a/public/registry/avatar-02.json
+++ b/public/registry/avatar-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-02',\n\timports: [HlmAvatar, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\tML \n\t\t \n\t`,\n})\nexport class Avatar02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-02',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\tML \n\t\t \n\t`,\n})\nexport class Avatar02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-03.json b/public/registry/avatar-03.json
index cf8c8480..34c811c9 100644
--- a/public/registry/avatar-03.json
+++ b/public/registry/avatar-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideUser } from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback } from '@spartan-ng/helm/avatar';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-avatar-03',\n\tproviders: [provideIcons({ lucideUser })],\n\timports: [HlmAvatar, HlmAvatarFallback, HlmIcon, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Avatar03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideUser } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-avatar-03',\n\tproviders: [provideIcons({ lucideUser })],\n\timports: [NgIcon, HlmAvatarImports, HlmIconImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Avatar03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-04.json b/public/registry/avatar-04.json
index 69e4e872..104cfb47 100644
--- a/public/registry/avatar-04.json
+++ b/public/registry/avatar-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-04',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tML \n\t\t \n\t`,\n})\nexport class Avatar04Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-04',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tML \n\t\t \n\t`,\n})\nexport class Avatar04Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-05.json b/public/registry/avatar-05.json
index f0a18c49..9b8c95d5 100644
--- a/public/registry/avatar-05.json
+++ b/public/registry/avatar-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-05',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar05Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-05',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar05Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-06.json b/public/registry/avatar-06.json
index 1639e8c0..f50a4aed 100644
--- a/public/registry/avatar-06.json
+++ b/public/registry/avatar-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-06',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar06Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-06',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar06Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-07.json b/public/registry/avatar-07.json
index 5336c963..120b691c 100644
--- a/public/registry/avatar-07.json
+++ b/public/registry/avatar-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus } from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-07',\n\tproviders: [provideIcons({ lucideMinus })],\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar07Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-07',\n\tproviders: [provideIcons({ lucideMinus })],\n\timports: [NgIcon, HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar07Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-08.json b/public/registry/avatar-08.json
index 0d10cee5..2e6e8e7a 100644
--- a/public/registry/avatar-08.json
+++ b/public/registry/avatar-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-08',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-08',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-09.json b/public/registry/avatar-09.json
index 50e597e7..a39c3f54 100644
--- a/public/registry/avatar-09.json
+++ b/public/registry/avatar-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-09',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar09Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-09',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar09Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-10.json b/public/registry/avatar-10.json
index b76e54ec..85255fe2 100644
--- a/public/registry/avatar-10.json
+++ b/public/registry/avatar-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmBadge } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-avatar-10',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmBadge],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t9\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar10Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-avatar-10',\n\timports: [HlmAvatarImports, HlmBadgeImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t9\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar10Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-11.json b/public/registry/avatar-11.json
index bdeb1176..1fc287be 100644
--- a/public/registry/avatar-11.json
+++ b/public/registry/avatar-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmBadge } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-avatar-11',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmBadge],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t9\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar11Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-avatar-11',\n\timports: [HlmAvatarImports, HlmBadgeImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t9\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar11Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-12.json b/public/registry/avatar-12.json
index eb5ece4a..bb0e13cf 100644
--- a/public/registry/avatar-12.json
+++ b/public/registry/avatar-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-12',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar12Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-12',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar12Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-13.json b/public/registry/avatar-13.json
index 89b82d00..ceb6c7e0 100644
--- a/public/registry/avatar-13.json
+++ b/public/registry/avatar-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-13',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar13Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-13',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar13Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-14.json b/public/registry/avatar-14.json
index 8c503a7e..f55429e6 100644
--- a/public/registry/avatar-14.json
+++ b/public/registry/avatar-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-14',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar14Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-14',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar14Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-15.json b/public/registry/avatar-15.json
index 00403f0f..e07a84e8 100644
--- a/public/registry/avatar-15.json
+++ b/public/registry/avatar-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-15',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t+3 \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar15Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-15',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t+3 \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar15Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-16.json b/public/registry/avatar-16.json
index 716da326..efa63f57 100644
--- a/public/registry/avatar-16.json
+++ b/public/registry/avatar-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-avatar-16',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmButton],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t+3\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar16Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-avatar-16',\n\timports: [HlmAvatarImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t+3\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar16Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-17.json b/public/registry/avatar-17.json
index dbb08cff..86fa7592 100644
--- a/public/registry/avatar-17.json
+++ b/public/registry/avatar-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-avatar-17',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmButton],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t+3\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar17Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-avatar-17',\n\timports: [HlmAvatarImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t+3\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar17Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-18.json b/public/registry/avatar-18.json
index b17f1cb7..b4e9278f 100644
--- a/public/registry/avatar-18.json
+++ b/public/registry/avatar-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-18',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\tTrusted by\n\t\t\t\t50K+ \n\t\t\t\tdevelopers.\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar18Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-18',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\tTrusted by\n\t\t\t\t50K+ \n\t\t\t\tdevelopers.\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar18Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-19.json b/public/registry/avatar-19.json
index 2ac961e6..c84782ef 100644
--- a/public/registry/avatar-19.json
+++ b/public/registry/avatar-19.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-avatar-19',\n\tproviders: [provideIcons({ lucidePlus })],\n\timports: [NgIcon, HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmIcon, HlmButton],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t+3 \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar19Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-avatar-19',\n\tproviders: [provideIcons({ lucidePlus })],\n\timports: [NgIcon, HlmAvatarImports, HlmIconImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t+3 \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Avatar19Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-20.json b/public/registry/avatar-20.json
index bcde280e..595e96c6 100644
--- a/public/registry/avatar-20.json
+++ b/public/registry/avatar-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-20',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\tMathilde Lewis \n\t\t\t\tmathilde.lewis@simui.com \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar20Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-20',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\tMathilde Lewis \n\t\t\t\tmathilde.lewis@simui.com \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar20Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-21.json b/public/registry/avatar-21.json
index 084e90dd..d7b2565d 100644
--- a/public/registry/avatar-21.json
+++ b/public/registry/avatar-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-21',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
Mathilde Lewis \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
@matlewis \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar21Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-21',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
Mathilde Lewis \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
@matlewis \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar21Component {}"
}
\ No newline at end of file
diff --git a/public/registry/avatar-22.json b/public/registry/avatar-22.json
index 241fb724..94225ba4 100644
--- a/public/registry/avatar-22.json
+++ b/public/registry/avatar-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-22',\n\timports: [HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar22Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\n\n@Component({\n\tselector: 'sim-avatar-22',\n\timports: [HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Avatar22Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-06.json b/public/registry/badge-06.json
index 25d2638d..4acc3685 100644
--- a/public/registry/badge-06.json
+++ b/public/registry/badge-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-06',\n\tproviders: [provideIcons({ lucideX })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tIcon Badge\n\t\t \n\t`,\n})\nexport class Badge06Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-06',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideX })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tIcon Badge\n\t\t \n\t`,\n})\nexport class Badge06Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-12.json b/public/registry/badge-12.json
index 513cb84a..348b9dec 100644
--- a/public/registry/badge-12.json
+++ b/public/registry/badge-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowUp } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-12',\n\tproviders: [provideIcons({ lucideArrowUp })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\tUp trend \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge12Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowUp } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-12',\n\tproviders: [provideIcons({ lucideArrowUp })],\n\timports: [NgIcon, HlmBadgeImports],\n\ttemplate: `\n\t\t\n\t\t\tUp trend \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge12Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-16.json b/public/registry/badge-16.json
index 67e6e43b..a25375d4 100644
--- a/public/registry/badge-16.json
+++ b/public/registry/badge-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-16',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\tVersion 2.0 \n\t\t\t \n\t\t\tNew release, try it? \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge16Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-16',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\tVersion 2.0 \n\t\t\t \n\t\t\tNew release, try it? \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge16Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-17.json b/public/registry/badge-17.json
index e8010162..c1c514f3 100644
--- a/public/registry/badge-17.json
+++ b/public/registry/badge-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-17',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\tWarning \n\t\t\t \n\t\t\tMight be a problem \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge17Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-17',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\tWarning \n\t\t\t \n\t\t\tMight be a problem \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge17Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-18.json b/public/registry/badge-18.json
index 92e9441d..02c7515a 100644
--- a/public/registry/badge-18.json
+++ b/public/registry/badge-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-18',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\tError \n\t\t\t \n\t\t\tThere was a problem \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge18Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-18',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [NgIcon, HlmBadgeImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\tError \n\t\t\t \n\t\t\tThere was a problem \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge18Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-19.json b/public/registry/badge-19.json
index eafbe298..7de7495b 100644
--- a/public/registry/badge-19.json
+++ b/public/registry/badge-19.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-19',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\tNew release, try it? \n\t\t\t\n\t\t\t\t
\n\t\t\t\tVersion 2.0 \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge19Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-19',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [NgIcon, HlmBadgeImports],\n\ttemplate: `\n\t\t\n\t\t\tNew release, try it? \n\t\t\t\n\t\t\t\t
\n\t\t\t\tVersion 2.0 \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge19Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-20.json b/public/registry/badge-20.json
index 90bf31d4..6fae410d 100644
--- a/public/registry/badge-20.json
+++ b/public/registry/badge-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-20',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tSuccess\n\t\t\t \n\t\t\tProfile is updated \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge20Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-20',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tSuccess\n\t\t\t \n\t\t\tProfile is updated \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge20Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-21.json b/public/registry/badge-21.json
index 685b81a2..9ca51f5f 100644
--- a/public/registry/badge-21.json
+++ b/public/registry/badge-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-21',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tWarning\n\t\t\t \n\t\t\tPassword expired in 3 days \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge21Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-21',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tWarning\n\t\t\t \n\t\t\tPassword expired in 3 days \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge21Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-22.json b/public/registry/badge-22.json
index b4be6790..25f004d3 100644
--- a/public/registry/badge-22.json
+++ b/public/registry/badge-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-22',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tError\n\t\t\t \n\t\t\tSomething went wrong \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge22Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-22',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tError\n\t\t\t \n\t\t\tSomething went wrong \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge22Component {}"
}
\ No newline at end of file
diff --git a/public/registry/badge-23.json b/public/registry/badge-23.json
index b9bbbe20..45362f75 100644
--- a/public/registry/badge-23.json
+++ b/public/registry/badge-23.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-23',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmBadgeImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\tProfile is updated \n\t\t\t\n\t\t\t\tSuccess \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge23Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\n\n@Component({\n\tselector: 'sim-badge-23',\n\timports: [NgIcon, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\tProfile is updated \n\t\t\t\n\t\t\t\tSuccess \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Badge23Component {}"
}
\ No newline at end of file
diff --git a/public/registry/banner-01.json b/public/registry/banner-01.json
index 766d068f..21c5c50f 100644
--- a/public/registry/banner-01.json
+++ b/public/registry/banner-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-01',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideMail, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Stay up to date with the latest news and updates
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSubscribe \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner01Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-01',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideMail, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Stay up to date with the latest news and updates
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSubscribe \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner01Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-02.json b/public/registry/banner-02.json
index c4758dae..7e8a5b68 100644
--- a/public/registry/banner-02.json
+++ b/public/registry/banner-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-02',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tWe use third-party cookies in order to personalize your experience. Read our\n\t\t\t\t\t\t\t\t\tCookie Policy \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tDecline \n\t\t\t\t\t\t\tAllow \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner02Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-02',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tWe use third-party cookies in order to personalize your experience. Read our\n\t\t\t\t\t\t\t\t\tCookie Policy \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tDecline \n\t\t\t\t\t\t\tAllow \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner02Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-03.json b/public/registry/banner-03.json
index b1564634..66965887 100644
--- a/public/registry/banner-03.json
+++ b/public/registry/banner-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-banner-03',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmInput],\n\tproviders: [provideIcons({ lucideMail, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Stay up to date with the latest news and updates
\n\t\t\t\t\t\t\t\t
Subscribe to our newsletter and get the latest updates and news
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSubscribe \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner03Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-banner-03',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmInputImports],\n\tproviders: [provideIcons({ lucideMail, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Stay up to date with the latest news and updates
\n\t\t\t\t\t\t\t\t
Subscribe to our newsletter and get the latest updates and news
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSubscribe \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner03Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-04.json b/public/registry/banner-04.json
index 2658a1a2..5c4af069 100644
--- a/public/registry/banner-04.json
+++ b/public/registry/banner-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-04',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
We’ve just launched a new feature! \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCheck out the\n\t\t\t\t\t\t\tnew dashboard \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner04Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-04',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
We’ve just launched a new feature! \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCheck out the\n\t\t\t\t\t\t\tnew dashboard \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner04Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-05.json b/public/registry/banner-05.json
index 8697f30e..d762bcd1 100644
--- a/public/registry/banner-05.json
+++ b/public/registry/banner-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-05',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
New feature was launched! \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTry out the\n\t\t\t\t\t\t\t
new dashboard \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner05Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-05',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
New feature was launched! \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTry out the\n\t\t\t\t\t\t\t
new dashboard \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner05Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-06.json b/public/registry/banner-06.json
index 787e622d..1072b418 100644
--- a/public/registry/banner-06.json
+++ b/public/registry/banner-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCookie, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-06',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideCookie, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tWe use third-party cookies in order to personalize your experience. Read our\n\t\t\t\t\t\t\tCookie Policy \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tDecline \n\t\t\t\t\t\tAllow \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner06Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCookie, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-06',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideCookie, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tWe use third-party cookies in order to personalize your experience. Read our\n\t\t\t\t\t\t\tCookie Policy \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tDecline \n\t\t\t\t\t\tAllow \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner06Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-07.json b/public/registry/banner-07.json
index 44dfe10b..b492f6b6 100644
--- a/public/registry/banner-07.json
+++ b/public/registry/banner-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-07',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
New feature was launched! \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTry out the\n\t\t\t\t\t\t\tnew dashboard \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner07Component {\n\tisVisible = signal(true);\n\n\tonHideBanner() {\n\t\tthis.isVisible.set(false);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-07',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideSparkles, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t@if (isVisible()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
New feature was launched! \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTry out the\n\t\t\t\t\t\t\tnew dashboard \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t}\n\t`,\n})\nexport class Banner07Component {\n\tprotected readonly isVisible = signal(true);\n\n\tprotected onHideBanner(): void {\n\t\tthis.isVisible.set(false);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/banner-08.json b/public/registry/banner-08.json
index a5a847dc..ad707975 100644
--- a/public/registry/banner-08.json
+++ b/public/registry/banner-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideSparkle, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-08',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideX, lucideArrowRight, lucideSparkle })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\tIntroducing our redesigned dashboard experience \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\tLearn more \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideSparkle, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-08',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideX, lucideArrowRight, lucideSparkle })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\tIntroducing our redesigned dashboard experience \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\tLearn more \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/banner-09.json b/public/registry/banner-09.json
index 79e8a939..4e7e8034 100644
--- a/public/registry/banner-09.json
+++ b/public/registry/banner-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-09',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideX, lucideArrowRight, lucideSparkles })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tWe use third-party cookies in order to personalize your experience. Read our\n\t\t\t\t\t\t\tCookie Policy \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tDecline \n\t\t\t\t\t\tAllow \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner09Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideSparkles, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-09',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideX, lucideArrowRight, lucideSparkles })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tWe use third-party cookies in order to personalize your experience. Read our\n\t\t\t\t\t\t\tCookie Policy \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tDecline \n\t\t\t\t\t\tAllow \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner09Component {}"
}
\ No newline at end of file
diff --git a/public/registry/banner-10.json b/public/registry/banner-10.json
index c005b158..7389490e 100644
--- a/public/registry/banner-10.json
+++ b/public/registry/banner-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-10',\n\timports: [NgIcon, HlmIcon, HlmButton],\n\tproviders: [provideIcons({ lucideMail, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStay up to date with the latest news and updates\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSubscribe to our newsletter and get the latest updates and news \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
Subscribe \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner10Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-banner-10',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [provideIcons({ lucideMail, lucideX })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStay up to date with the latest news and updates\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSubscribe to our newsletter and get the latest updates and news \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
Subscribe \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner10Component {}"
}
\ No newline at end of file
diff --git a/public/registry/banner-11.json b/public/registry/banner-11.json
index 2bb7d56e..8fe423ae 100644
--- a/public/registry/banner-11.json
+++ b/public/registry/banner-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideDownload, lucideMail } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n// Inspired by https://originui.com/banner\n@Component({\n\tselector: 'sim-banner-11',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmSpinner],\n\tproviders: [provideIcons({ lucideMail, lucideDownload })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tv1.2.0 \n\t\t\t\t\t• \n\t\t\t\t\tNew feature was launched! \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (isUpdating()) {\n\t\t\t\t\t\t \n\t\t\t\t\t\tUpdating ...\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t\tUpdate now\n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner11Component {\n\tisUpdating = signal(false);\n\n\tupdate() {\n\t\tthis.isUpdating.set(true);\n\t\tsetTimeout(() => {\n\t\t\tthis.isUpdating.set(false);\n\t\t}, 2000);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideDownload, lucideMail } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-banner-11',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmSpinnerImports],\n\tproviders: [provideIcons({ lucideMail, lucideDownload })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tv1.2.0 \n\t\t\t\t\t• \n\t\t\t\t\tNew feature was launched! \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (isUpdating()) {\n\t\t\t\t\t\t \n\t\t\t\t\t\tUpdating ...\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t\tUpdate now\n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Banner11Component {\n\tprotected readonly isUpdating = signal(false);\n\n\tprotected update(): void {\n\t\tthis.isUpdating.set(true);\n\t\tsetTimeout(() => {\n\t\t\tthis.isUpdating.set(false);\n\t\t}, 2000);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-01.json b/public/registry/breadcrumb-01.json
index f751f7b7..459e5191 100644
--- a/public/registry/breadcrumb-01.json
+++ b/public/registry/breadcrumb-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbEllipsis,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\n\n@Component({\n\tselector: 'sim-breadcrumb-01',\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbEllipsis,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmDropdownMenuImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tHome \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDocumentation \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tThemes \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGithub \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb01Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\n\n@Component({\n\tselector: 'sim-breadcrumb-01',\n\timports: [HlmBreadcrumbImports, HlmDropdownMenuImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tHome \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDocumentation \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tThemes \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGithub \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb01Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-02.json b/public/registry/breadcrumb-02.json
index 6afb19c3..db801261 100644
--- a/public/registry/breadcrumb-02.json
+++ b/public/registry/breadcrumb-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlignJustify } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-02',\n\tproviders: [provideIcons({ lucideAlignJustify })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t\tHlmDropdownMenuImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tHome \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDocumentation \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tThemes \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGithub \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlignJustify } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-02',\n\tproviders: [provideIcons({ lucideAlignJustify })],\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports, HlmDropdownMenuImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tHome \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDocumentation \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tThemes \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGithub \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-03.json b/public/registry/breadcrumb-03.json
index 928292cf..36f6c949 100644
--- a/public/registry/breadcrumb-03.json
+++ b/public/registry/breadcrumb-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-03',\n\tproviders: [provideIcons({ lucideHouse })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-03',\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideHouse })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-04.json b/public/registry/breadcrumb-04.json
index e03d3ece..835cf2bd 100644
--- a/public/registry/breadcrumb-04.json
+++ b/public/registry/breadcrumb-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCompass, lucideComponent, lucideHouse } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-04',\n\tproviders: [provideIcons({ lucideHouse, lucideComponent, lucideCompass })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tHome \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tComponents \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb04Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCompass, lucideComponent, lucideHouse } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-04',\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideHouse, lucideComponent, lucideCompass })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tHome \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tComponents \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb04Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-05.json b/public/registry/breadcrumb-05.json
index c05cc6b6..1c6bf63e 100644
--- a/public/registry/breadcrumb-05.json
+++ b/public/registry/breadcrumb-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse, lucideSlash } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-05',\n\tproviders: [provideIcons({ lucideHouse, lucideSlash })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb05Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse, lucideSlash } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-05',\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideHouse, lucideSlash })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb05Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-06.json b/public/registry/breadcrumb-06.json
index e8d01b3a..8a5ac6d8 100644
--- a/public/registry/breadcrumb-06.json
+++ b/public/registry/breadcrumb-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-06',\n\tproviders: [provideIcons({ lucideHouse })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t/ \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t/ \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb06Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-06',\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideHouse })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t/ \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t/ \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb06Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-07.json b/public/registry/breadcrumb-07.json
index 28c4d354..4c0ac18c 100644
--- a/public/registry/breadcrumb-07.json
+++ b/public/registry/breadcrumb-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideDot, lucideHouse } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-07',\n\tproviders: [provideIcons({ lucideHouse, lucideDot })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb07Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideDot, lucideHouse } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-07',\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideHouse, lucideDot })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb07Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-08.json b/public/registry/breadcrumb-08.json
index c04a3f20..ce22005c 100644
--- a/public/registry/breadcrumb-08.json
+++ b/public/registry/breadcrumb-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse } from '@ng-icons/lucide';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbPage,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-08',\n\tproviders: [provideIcons({ lucideHouse })],\n\timports: [\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbPage,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tNgIcon,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHouse } from '@ng-icons/lucide';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-breadcrumb-08',\n\tproviders: [provideIcons({ lucideHouse })],\n\timports: [NgIcon, HlmBreadcrumbImports, HlmIconImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\tComponents \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBreadcrumb \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/breadcrumb-09.json b/public/registry/breadcrumb-09.json
index 797f5cda..839bdafe 100644
--- a/public/registry/breadcrumb-09.json
+++ b/public/registry/breadcrumb-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideDatabase } from '@ng-icons/lucide';\nimport { BrnSelectImports } from '@spartan-ng/brain/select';\nimport {\n\tHlmBreadcrumb,\n\tHlmBreadcrumbItem,\n\tHlmBreadcrumbLink,\n\tHlmBreadcrumbList,\n\tHlmBreadcrumbSeparator,\n} from '@spartan-ng/helm/breadcrumb';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-breadcrumb-09',\n\tproviders: [provideIcons({ lucideDatabase })],\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tHlmBreadcrumb,\n\t\tHlmBreadcrumbSeparator,\n\t\tHlmBreadcrumbList,\n\t\tHlmBreadcrumbItem,\n\t\tHlmBreadcrumbLink,\n\t\tHlmIcon,\n\t\tBrnSelectImports,\n\t\tHlmSelectImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tDatabases \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tbutton]:w-full\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{{ value }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tAccounts \n\t\t\t\t\t\t\t\tAppointments \n\t\t\t\t\t\t\t\tSchedule \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb09Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideDatabase } from '@ng-icons/lucide';\nimport { BrnSelectImports } from '@spartan-ng/brain/select';\nimport { HlmBreadcrumbImports } from '@spartan-ng/helm/breadcrumb';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-breadcrumb-09',\n\tproviders: [provideIcons({ lucideDatabase })],\n\timports: [NgIcon, FormsModule, HlmBreadcrumbImports, HlmIconImports, BrnSelectImports, HlmSelectImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tDatabases \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tbutton]:w-full\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{{ value }} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tAccounts \n\t\t\t\t\t\t\t\tAppointments \n\t\t\t\t\t\t\t\tSchedule \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Breadcrumb09Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-01.json b/public/registry/button-01.json
index 007730d4..e8941867 100644
--- a/public/registry/button-01.json
+++ b/public/registry/button-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-01',\n\timports: [HlmButton],\n\ttemplate: `\n\t\tPrimary \n\t`,\n})\nexport class Button01Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-01',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\tPrimary \n\t`,\n})\nexport class Button01Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-02.json b/public/registry/button-02.json
index 19210d3f..2a1f24ac 100644
--- a/public/registry/button-02.json
+++ b/public/registry/button-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTrash } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-02',\n\timports: [NgIcon, HlmButton],\n\tproviders: [provideIcons({ lucideTrash })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tDelete\n\t\t \n\t`,\n})\nexport class Button02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTrash } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-02',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideTrash })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tDelete\n\t\t \n\t`,\n})\nexport class Button02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-03.json b/public/registry/button-03.json
index f86911c9..743409c3 100644
--- a/public/registry/button-03.json
+++ b/public/registry/button-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-03',\n\timports: [HlmButton],\n\ttemplate: `\n\t\tRounded \n\t`,\n})\nexport class Button03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-03',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\tRounded \n\t`,\n})\nexport class Button03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-04.json b/public/registry/button-04.json
index 7a67b799..c8fa69cb 100644
--- a/public/registry/button-04.json
+++ b/public/registry/button-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArchive } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-04',\n\timports: [NgIcon, HlmButton],\n\tproviders: [provideIcons({ lucideArchive })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tArchive\n\t\t \n\t`,\n})\nexport class Button04Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArchive } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-04',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideArchive })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tArchive\n\t\t \n\t`,\n})\nexport class Button04Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-05.json b/public/registry/button-05.json
index 143fa85c..0cb08f0e 100644
--- a/public/registry/button-05.json
+++ b/public/registry/button-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-05',\n\timports: [HlmButton],\n\ttemplate: `\n\t\tDisabled \n\t`,\n})\nexport class Button05Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-05',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\tDisabled \n\t`,\n})\nexport class Button05Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-06.json b/public/registry/button-06.json
index 441aff82..c5b44d95 100644
--- a/public/registry/button-06.json
+++ b/public/registry/button-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-06',\n\tproviders: [provideIcons({ lucideX })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tDiscard\n\t\t \n\t`,\n})\nexport class Button06Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-06',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideX })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tDiscard\n\t\t \n\t`,\n})\nexport class Button06Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-07.json b/public/registry/button-07.json
index af6afdde..df50a268 100644
--- a/public/registry/button-07.json
+++ b/public/registry/button-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideFlame } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-07',\n\tproviders: [provideIcons({ lucideFlame })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tLive\n\t\t \n\t`,\n})\nexport class Button07Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideFlame } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-07',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideFlame })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tLive\n\t\t \n\t`,\n})\nexport class Button07Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-08.json b/public/registry/button-08.json
index b7260e2b..b5ccd531 100644
--- a/public/registry/button-08.json
+++ b/public/registry/button-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowLeft } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-08',\n\tproviders: [provideIcons({ lucideArrowLeft })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tGo back\n\t\t \n\t`,\n})\nexport class Button08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowLeft } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-08',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideArrowLeft })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tGo back\n\t\t \n\t`,\n})\nexport class Button08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-09.json b/public/registry/button-09.json
index 600ad1e5..4cfd6b32 100644
--- a/public/registry/button-09.json
+++ b/public/registry/button-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-09',\n\tproviders: [provideIcons({ lucideArrowRight })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\tNext page\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button09Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-09',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\tNext page\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button09Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-10.json b/public/registry/button-10.json
index cd18afb7..23488270 100644
--- a/public/registry/button-10.json
+++ b/public/registry/button-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideMail } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-10',\n\tproviders: [provideIcons({ lucideMail, lucideArrowRight })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tSubscribe\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button10Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight, lucideMail } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-10',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideMail, lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tSubscribe\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button10Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-11.json b/public/registry/button-11.json
index 1c56b7de..52449efd 100644
--- a/public/registry/button-11.json
+++ b/public/registry/button-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-11',\n\tproviders: [provideIcons({ lucideChevronDown })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\tOptions\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button11Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-11',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\tOptions\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button11Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-12.json b/public/registry/button-12.json
index 900ba493..fcdd1823 100644
--- a/public/registry/button-12.json
+++ b/public/registry/button-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-12',\n\timports: [HlmButton],\n\ttemplate: `\n\t\t\n\t\t\tCancel \n\t\t\tSave \n\t\t
\n\t`,\n})\nexport class Button12Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-12',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\tCancel \n\t\t\tSave \n\t\t
\n\t`,\n})\nexport class Button12Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-13.json b/public/registry/button-13.json
index 448974c7..7e91f054 100644
--- a/public/registry/button-13.json
+++ b/public/registry/button-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-button-13',\n\timports: [HlmButton, HlmSpinner],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tSaving...\n\t\t \n\t`,\n})\nexport class Button13Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-button-13',\n\timports: [HlmButtonImports, HlmSpinnerImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tSaving...\n\t\t \n\t`,\n})\nexport class Button13Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-14.json b/public/registry/button-14.json
index be8bfa45..f5a43989 100644
--- a/public/registry/button-14.json
+++ b/public/registry/button-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-button-14',\n\timports: [HlmButton, HlmSpinner],\n\ttemplate: `\n\t\t\n\t\t\t@if (isLoading()) {\n\t\t\t\t \n\t\t\t\tSubmitting...\n\t\t\t} @else {\n\t\t\t\tSubmit\n\t\t\t}\n\t\t \n\t`,\n})\nexport class Button14Component {\n\tprotected readonly isLoading = signal(false);\n\n\tprotected submit(): void {\n\t\tthis.isLoading.set(true);\n\t\tsetTimeout(() => this.isLoading.set(false), 1500);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-button-14',\n\timports: [HlmButtonImports, HlmSpinnerImports],\n\ttemplate: `\n\t\t\n\t\t\t@if (isLoading()) {\n\t\t\t\t \n\t\t\t\tSubmitting...\n\t\t\t} @else {\n\t\t\t\tSubmit\n\t\t\t}\n\t\t \n\t`,\n})\nexport class Button14Component {\n\tprotected readonly isLoading = signal(false);\n\n\tprotected submit(): void {\n\t\tthis.isLoading.set(true);\n\t\tsetTimeout(() => this.isLoading.set(false), 1500);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-15.json b/public/registry/button-15.json
index d246ac5d..33ec5dab 100644
--- a/public/registry/button-15.json
+++ b/public/registry/button-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-15',\n\timports: [HlmButton],\n\ttemplate: `\n\t\t\n\t\t\tMessages\n\t\t\t\n\t\t\t\t14\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button15Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-15',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\tMessages\n\t\t\t\n\t\t\t\t14\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button15Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-16.json b/public/registry/button-16.json
index 54910da8..9c41ebcd 100644
--- a/public/registry/button-16.json
+++ b/public/registry/button-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePrinter } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-16',\n\tproviders: [provideIcons({ lucidePrinter })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tPrint\n\t\t\t\n\t\t\t\t⌘ + P\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button16Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePrinter } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-16',\n\tproviders: [provideIcons({ lucidePrinter })],\n\timports: [HlmButtonImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tPrint\n\t\t\t\n\t\t\t\t⌘ + P\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button16Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-17.json b/public/registry/button-17.json
index 683f68c5..46845db2 100644
--- a/public/registry/button-17.json
+++ b/public/registry/button-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-17',\n\timports: [HlmButton, HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tAC \n\t\t\t \n\t\t\t@alancooper\n\t\t \n\t`,\n})\nexport class Button17Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-17',\n\timports: [HlmButtonImports, HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tAC \n\t\t\t \n\t\t\t@alancooper\n\t\t \n\t`,\n})\nexport class Button17Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-18.json b/public/registry/button-18.json
index b8a74cf0..72293878 100644
--- a/public/registry/button-18.json
+++ b/public/registry/button-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-18',\n\tproviders: [provideIcons({ lucideChevronDown })],\n\timports: [HlmButton, NgIcon, HlmAvatarImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tAC \n\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button18Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-18',\n\timports: [NgIcon, HlmButtonImports, HlmAvatarImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tAC \n\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button18Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-19.json b/public/registry/button-19.json
index 07f7e905..09210ea9 100644
--- a/public/registry/button-19.json
+++ b/public/registry/button-19.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-19',\n\tproviders: [provideIcons({ lucidePlus })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tAdd new\n\t\t \n\t`,\n})\nexport class Button19Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-19',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tAdd new\n\t\t \n\t`,\n})\nexport class Button19Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-20.json b/public/registry/button-20.json
index f80a9f5d..7ed1041a 100644
--- a/public/registry/button-20.json
+++ b/public/registry/button-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-20',\n\tproviders: [provideIcons({ lucidePlus })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button20Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-20',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button20Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-21.json b/public/registry/button-21.json
index c092d711..ed9f65d8 100644
--- a/public/registry/button-21.json
+++ b/public/registry/button-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-21',\n\tproviders: [provideIcons({ lucidePlus })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button21Component {\n\topen = signal(false);\n\n\tonOpen() {\n\t\tthis.open.set(!this.open());\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-21',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button21Component {\n\topen = signal(false);\n\n\tonOpen() {\n\t\tthis.open.set(!this.open());\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-22.json b/public/registry/button-22.json
index 4784a75a..57d6d819 100644
--- a/public/registry/button-22.json
+++ b/public/registry/button-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-button-22',\n\tproviders: [provideIcons({ lucidePlus })],\n\timports: [HlmButton, HlmTooltipImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t\tTooltip \n\t`,\n})\nexport class Button22Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucidePlus } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-button-22',\n\timports: [NgIcon, HlmButtonImports, HlmTooltipImports],\n\tproviders: [provideIcons({ lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t\tTooltip \n\t`,\n})\nexport class Button22Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-23.json b/public/registry/button-23.json
index d2a7ec65..0489c388 100644
--- a/public/registry/button-23.json
+++ b/public/registry/button-23.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-23',\n\timports: [HlmButton],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button23Component {\n\topen = signal(false);\n\n\tonOpen() {\n\t\tthis.open.set(!this.open());\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-23',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button23Component {\n\tprotected readonly open = signal(false);\n\n\tprotected onOpen(): void {\n\t\tthis.open.set(!this.open());\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-24.json b/public/registry/button-24.json
index 741fe3a3..f5c82df8 100644
--- a/public/registry/button-24.json
+++ b/public/registry/button-24.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBookmark } from '@ng-icons/lucide';\nimport { HlmToggleImports } from '@spartan-ng/helm/toggle';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-button-24',\n\tproviders: [provideIcons({ lucideBookmark })],\n\timports: [HlmToggleImports, NgIcon, HlmTooltipImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t\t\n\t\t\t{{ tooltipLabel() }}\n\t\t \n\t`,\n})\nexport class Button24Component {\n\tstate = signal<'on' | 'off'>('off');\n\ttooltipLabel = computed(() => (this.state() === 'on' ? 'Remove bookmark' : 'Add bookmark'));\n\n\tpublic onSelect(): void {\n\t\tthis.state.set(this.state() === 'on' ? 'off' : 'on');\n\t}\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBookmark } from '@ng-icons/lucide';\nimport { HlmToggleImports } from '@spartan-ng/helm/toggle';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-button-24',\n\tproviders: [provideIcons({ lucideBookmark })],\n\timports: [HlmToggleImports, NgIcon, HlmTooltipImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t \n\t\t\n\t\t\t{{ tooltipLabel() }}\n\t\t \n\t`,\n})\nexport class Button24Component {\n\tprivate readonly state = signal<'on' | 'off'>('off');\n\tprotected readonly tooltipLabel = computed(() => (this.state() === 'on' ? 'Remove bookmark' : 'Add bookmark'));\n\n\tprotected onSelect(): void {\n\t\tthis.state.set(this.state() === 'on' ? 'off' : 'on');\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-25.json b/public/registry/button-25.json
index 3c6bffad..b6dc9821 100644
--- a/public/registry/button-25.json
+++ b/public/registry/button-25.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBell } from '@ng-icons/lucide';\nimport { HlmBadge } from '@spartan-ng/helm/badge';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-25',\n\tproviders: [provideIcons({ lucideBell })],\n\timports: [HlmButton, NgIcon, HlmBadge],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t@if (unreadMessageCount() > 0) {\n\t\t\t\t\n\t\t\t\t\t{{ unreadMessageCount() }}\n\t\t\t\t \n\t\t\t}\n\t\t \n\t`,\n})\nexport class Button25Component {\n\tprotected readonly unreadMessageCount = signal(8);\n\n\tprotected markAsRead(): void {\n\t\tthis.unreadMessageCount.set(0);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBell } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-25',\n\tproviders: [provideIcons({ lucideBell })],\n\timports: [NgIcon, HlmButtonImports, HlmBadgeImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t@if (unreadMessageCount() > 0) {\n\t\t\t\t\n\t\t\t\t\t{{ unreadMessageCount() }}\n\t\t\t\t \n\t\t\t}\n\t\t \n\t`,\n})\nexport class Button25Component {\n\tprotected readonly unreadMessageCount = signal(8);\n\n\tprotected markAsRead(): void {\n\t\tthis.unreadMessageCount.set(0);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-26.json b/public/registry/button-26.json
index c24acd60..8174e0da 100644
--- a/public/registry/button-26.json
+++ b/public/registry/button-26.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMoon, lucideSun } from '@ng-icons/lucide';\nimport { HlmToggleImports } from '@spartan-ng/helm/toggle';\n\n@Component({\n\tselector: 'sim-button-26',\n\tproviders: [provideIcons({ lucideSun, lucideMoon })],\n\timports: [NgIcon, HlmToggleImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button26Component {\n\tprotected readonly theme = signal<'light' | 'dark'>('light');\n\n\tprotected changeTheme(): void {\n\t\tthis.theme.set(this.theme() === 'light' ? 'dark' : 'light');\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMoon, lucideSun } from '@ng-icons/lucide';\nimport { HlmToggleImports } from '@spartan-ng/helm/toggle';\n\n@Component({\n\tselector: 'sim-button-26',\n\tproviders: [provideIcons({ lucideSun, lucideMoon })],\n\timports: [NgIcon, HlmToggleImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button26Component {\n\tprotected readonly theme = signal<'light' | 'dark'>('light');\n\n\tprotected changeTheme(): void {\n\t\tthis.theme.set(this.theme() === 'light' ? 'dark' : 'light');\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-27.json b/public/registry/button-27.json
index 9698a0c7..e93f0be0 100644
--- a/public/registry/button-27.json
+++ b/public/registry/button-27.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-27',\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\timports: [HlmButtonImports, HlmButtonGroupImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t{{ votes() }} \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button27Component {\n\tprotected readonly votes = signal(235);\n\n\tprotected upvote(): void {\n\t\tthis.votes.set(this.votes() + 1);\n\t}\n\n\tprotected downvote(): void {\n\t\tthis.votes.set(this.votes() - 1);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-27',\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t{{ votes() }} \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button27Component {\n\tprotected readonly votes = signal(235);\n\n\tprotected upvote(): void {\n\t\tthis.votes.set(this.votes() + 1);\n\t}\n\n\tprotected downvote(): void {\n\t\tthis.votes.set(this.votes() - 1);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-28.json b/public/registry/button-28.json
index 840ed808..2d8bf447 100644
--- a/public/registry/button-28.json
+++ b/public/registry/button-28.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-28',\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\timports: [HlmButtonImports, HlmButtonGroupImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t{{ votes() }} \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button28Component {\n\tprotected readonly votes = signal(235);\n\n\tprotected upvote(): void {\n\t\tthis.votes.set(this.votes() + 1);\n\t}\n\n\tprotected downvote(): void {\n\t\tthis.votes.set(this.votes() - 1);\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-28',\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t{{ votes() }} \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button28Component {\n\tprotected readonly votes = signal(235);\n\n\tprotected upvote(): void {\n\t\tthis.votes.set(this.votes() + 1);\n\t}\n\n\tprotected downvote(): void {\n\t\tthis.votes.set(this.votes() - 1);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-29.json b/public/registry/button-29.json
index d9e01081..66695d0d 100644
--- a/public/registry/button-29.json
+++ b/public/registry/button-29.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus, lucideVolume, lucideVolume1, lucideVolume2, lucideVolumeX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-29',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideMinus,\n\t\t\tlucidePlus,\n\t\t\tlucideVolumeX,\n\t\t\tlucideVolume,\n\t\t\tlucideVolume1,\n\t\t\tlucideVolume2,\n\t\t}),\n\t],\n\timports: [HlmIcon, HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\t{{ volume() }} \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button29Component {\n\tprotected readonly volume = signal(4);\n\tprotected readonly volumeIcon = computed(() => this.getVolumeIcon());\n\n\tprivate getVolumeIcon(): string {\n\t\tconst vol = this.volume();\n\t\tif (vol === 0) {\n\t\t\treturn 'lucideVolumeX';\n\t\t}\n\t\tif (vol < 3) {\n\t\t\treturn 'lucideVolume';\n\t\t}\n\t\tif (vol < 5) {\n\t\t\treturn 'lucideVolume1';\n\t\t}\n\t\treturn 'lucideVolume2';\n\t}\n\n\tprotected decreaseVolume(): void {\n\t\tif (this.volume() === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.volume.set(this.volume() - 1);\n\t}\n\n\tprotected increaseVolume(): void {\n\t\tif (this.volume() === 6) {\n\t\t\treturn;\n\t\t}\n\t\tthis.volume.set(this.volume() + 1);\n\t}\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus, lucideVolume, lucideVolume1, lucideVolume2, lucideVolumeX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-29',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideMinus,\n\t\t\tlucidePlus,\n\t\t\tlucideVolumeX,\n\t\t\tlucideVolume,\n\t\t\tlucideVolume1,\n\t\t\tlucideVolume2,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t\t{{ volume() }} \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button29Component {\n\tprotected readonly volume = signal(4);\n\tprotected readonly volumeIcon = computed(() => this.getVolumeIcon());\n\n\tprotected decreaseVolume(): void {\n\t\tif (this.volume() === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.volume.set(this.volume() - 1);\n\t}\n\n\tprotected increaseVolume(): void {\n\t\tif (this.volume() === 6) {\n\t\t\treturn;\n\t\t}\n\t\tthis.volume.set(this.volume() + 1);\n\t}\n\n\tprivate getVolumeIcon(): string {\n\t\tconst vol = this.volume();\n\t\tif (vol === 0) {\n\t\t\treturn 'lucideVolumeX';\n\t\t}\n\t\tif (vol < 3) {\n\t\t\treturn 'lucideVolume';\n\t\t}\n\t\tif (vol < 5) {\n\t\t\treturn 'lucideVolume1';\n\t\t}\n\t\treturn 'lucideVolume2';\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-30.json b/public/registry/button-30.json
index f48a43d1..76a01067 100644
--- a/public/registry/button-30.json
+++ b/public/registry/button-30.json
@@ -1,3 +1,3 @@
{
- "content": "import { Clipboard } from '@angular/cdk/clipboard';\nimport { NgClass } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideCopy } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-button-30',\n\tproviders: [provideIcons({ lucideCheck, lucideCopy })],\n\timports: [NgClass, HlmButton, HlmTooltipImports, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t \n\t\t \n\t\t\n\t\t\tCopy to clipboard \n\t\t \n\t`,\n})\nexport class Button30Component {\n\tprotected readonly clipboard = inject(Clipboard);\n\tprotected readonly copied = signal(false);\n\n\tprotected onSelect(): void {\n\t\tthis.copied.set(true);\n\t\tthis.clipboard.copy('I love Angular!');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.copied.set(false);\n\t\t}, 1500);\n\t}\n}"
+ "content": "import { Clipboard } from '@angular/cdk/clipboard';\nimport { NgClass } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideCopy } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-button-30',\n\timports: [NgClass, NgIcon, HlmButtonImports, HlmTooltipImports],\n\tproviders: [provideIcons({ lucideCheck, lucideCopy })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t \n\t\t \n\t\t\n\t\t\tCopy to clipboard \n\t\t \n\t`,\n})\nexport class Button30Component {\n\tprotected readonly clipboard = inject(Clipboard);\n\tprotected readonly copied = signal(false);\n\n\tprotected onSelect(): void {\n\t\tthis.copied.set(true);\n\t\tthis.clipboard.copy('I love Angular!');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.copied.set(false);\n\t\t}, 1500);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-31.json b/public/registry/button-31.json
index fe555bb5..e8bc283e 100644
--- a/public/registry/button-31.json
+++ b/public/registry/button-31.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideFlipHorizontal, lucideFlipVertical } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-31',\n\tproviders: [provideIcons({ lucideFlipHorizontal, lucideFlipVertical })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button31Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideFlipHorizontal, lucideFlipVertical } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-31',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideFlipHorizontal, lucideFlipVertical })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button31Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-32.json b/public/registry/button-32.json
index b1434e74..2c737815 100644
--- a/public/registry/button-32.json
+++ b/public/registry/button-32.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlignCenter, lucideAlignJustify, lucideAlignLeft, lucideAlignRight } from '@ng-icons/lucide';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmToggleGroupImports } from '@spartan-ng/helm/toggle-group';\n\n@Component({\n\tselector: 'sim-button-32',\n\timports: [HlmToggleGroupImports, HlmIcon, NgIcon],\n\tproviders: [provideIcons({ lucideAlignLeft, lucideAlignRight, lucideAlignCenter, lucideAlignJustify })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button32Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlignCenter, lucideAlignJustify, lucideAlignLeft, lucideAlignRight } from '@ng-icons/lucide';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmToggleGroupImports } from '@spartan-ng/helm/toggle-group';\n\n@Component({\n\tselector: 'sim-button-32',\n\timports: [NgIcon, HlmToggleGroupImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideAlignLeft, lucideAlignRight, lucideAlignCenter, lucideAlignJustify })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Button32Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-33.json b/public/registry/button-33.json
index 0c47c089..034f4f9e 100644
--- a/public/registry/button-33.json
+++ b/public/registry/button-33.json
@@ -1,3 +1,3 @@
{
- "content": "import { HlmButton } from '@/libs/ui/button/src';\nimport { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideEllipsis, lucideFiles, lucideFilm } from '@ng-icons/lucide';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-33',\n\tproviders: [provideIcons({ lucideFiles, lucideFilm, lucideEllipsis })],\n\timports: [HlmButtonGroupImports, HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tFiles\n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t\tMedia\n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button33Component {}"
+ "content": "import { HlmButtonImports } from '@/libs/ui/button/src';\nimport { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideEllipsis, lucideFiles, lucideFilm } from '@ng-icons/lucide';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-33',\n\tproviders: [provideIcons({ lucideFiles, lucideFilm, lucideEllipsis })],\n\timports: [NgIcon, HlmButtonGroupImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tFiles\n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t\tMedia\n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button33Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-34.json b/public/registry/button-34.json
index 38feadab..d9f88ed8 100644
--- a/public/registry/button-34.json
+++ b/public/registry/button-34.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { HlmToggleGroupImports } from '@spartan-ng/helm/toggle-group';\n\n@Component({\n\tselector: 'sim-button-34',\n\timports: [HlmToggleGroupImports],\n\ttemplate: `\n\t\t\n\t\t\tLeft \n\t\t\tCenter \n\t\t\tRight \n\t\t \n\t`,\n})\nexport class Button34Component {\n\ttheme = signal<'light' | 'dark'>('light');\n\n\tchangeTheme() {\n\t\tthis.theme.set(this.theme() === 'light' ? 'dark' : 'light');\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmToggleGroupImports } from '@spartan-ng/helm/toggle-group';\n\n@Component({\n\tselector: 'sim-button-34',\n\timports: [HlmToggleGroupImports],\n\ttemplate: `\n\t\t\n\t\t\tLeft \n\t\t\tCenter \n\t\t\tRight \n\t\t \n\t`,\n})\nexport class Button34Component {\n\tprotected readonly theme = signal<'light' | 'dark'>('light');\n\n\tprotected changeTheme(): void {\n\t\tthis.theme.set(this.theme() === 'light' ? 'dark' : 'light');\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-35.json b/public/registry/button-35.json
index 95ef0545..14cd546f 100644
--- a/public/registry/button-35.json
+++ b/public/registry/button-35.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { HlmToggleGroupImports } from '@spartan-ng/helm/toggle-group';\n\n@Component({\n\tselector: 'sim-button-35',\n\timports: [HlmToggleGroupImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tLeft \n\t\t\tCenter \n\t\t\tRight \n\t\t \n\t`,\n})\nexport class Button35Component {\n\ttheme = signal<'light' | 'dark'>('light');\n\n\tchangeTheme() {\n\t\tthis.theme.set(this.theme() === 'light' ? 'dark' : 'light');\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmToggleGroupImports } from '@spartan-ng/helm/toggle-group';\n\n@Component({\n\tselector: 'sim-button-35',\n\timports: [HlmToggleGroupImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tLeft \n\t\t\tCenter \n\t\t\tRight \n\t\t \n\t`,\n})\nexport class Button35Component {\n\tprotected readonly theme = signal<'light' | 'dark'>('light');\n\n\tprotected changeTheme(): void {\n\t\tthis.theme.set(this.theme() === 'light' ? 'dark' : 'light');\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-36.json b/public/registry/button-36.json
index 85c9c077..108dbf8b 100644
--- a/public/registry/button-36.json
+++ b/public/registry/button-36.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideQrCode } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-36',\n\tproviders: [provideIcons({ lucideQrCode })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSign in \n\t\t
\n\t`,\n})\nexport class Button36Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideQrCode } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-36',\n\tproviders: [provideIcons({ lucideQrCode })],\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tSign in \n\t\t
\n\t`,\n})\nexport class Button36Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-37.json b/public/registry/button-37.json
index 56eb3e30..30113ff4 100644
--- a/public/registry/button-37.json
+++ b/public/registry/button-37.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSquareArrowOutUpRight } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-37',\n\tproviders: [provideIcons({ lucideSquareArrowOutUpRight })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\tButton \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button37Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSquareArrowOutUpRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-37',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideSquareArrowOutUpRight })],\n\ttemplate: `\n\t\t\n\t\t\tButton \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button37Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-38.json b/public/registry/button-38.json
index 4a9d6d1e..39877487 100644
--- a/public/registry/button-38.json
+++ b/public/registry/button-38.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-38',\n\tproviders: [provideIcons({ lucideChevronLeft })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPrevious \n\t\t
\n\t`,\n})\nexport class Button38Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-38',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideChevronLeft })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\tPrevious \n\t\t
\n\t`,\n})\nexport class Button38Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-39.json b/public/registry/button-39.json
index 188d9c00..b8f1ee94 100644
--- a/public/registry/button-39.json
+++ b/public/registry/button-39.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-39',\n\tproviders: [provideIcons({ lucideChevronRight })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\tNext \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button39Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-39',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\tNext \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button39Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-40.json b/public/registry/button-40.json
index 9ba6a431..06f20da6 100644
--- a/public/registry/button-40.json
+++ b/public/registry/button-40.json
@@ -1,3 +1,3 @@
{
- "content": "import { NgClass } from '@angular/common';\nimport { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideThumbsUp } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-40',\n\tproviders: [provideIcons({ lucideThumbsUp })],\n\timports: [HlmButton, NgClass, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t{{ likeLabel() }}\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t{{ likeCount() }}\n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Button40Component {\n\tliked = signal(false);\n\tanimate = signal(false);\n\n\tlikeCount = computed(() => (this.liked() ? 86 : 85));\n\tlikeLabel = computed(() => (this.liked() ? 'Liked' : 'Like'));\n\n\tonPressLike() {\n\t\tthis.liked.set(!this.liked());\n\n\t\tthis.animate.set(true);\n\t\tsetTimeout(() => {\n\t\t\tthis.animate.set(false);\n\t\t}, 300);\n\t}\n}"
+ "content": "import { NgClass } from '@angular/common';\nimport { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideThumbsUp } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-40',\n\timports: [NgClass, NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideThumbsUp })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t{{ likeLabel() }}\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t{{ likeCount() }}\n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Button40Component {\n\tprotected readonly liked = signal(false);\n\tprotected readonly animate = signal(false);\n\n\tprotected readonly likeCount = computed(() => (this.liked() ? 86 : 85));\n\tprotected readonly likeLabel = computed(() => (this.liked() ? 'Liked' : 'Like'));\n\n\tprotected onPressLike(): void {\n\t\tthis.liked.set(!this.liked());\n\n\t\tthis.animate.set(true);\n\t\tsetTimeout(() => {\n\t\t\tthis.animate.set(false);\n\t\t}, 300);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-41.json b/public/registry/button-41.json
index ca4cb178..2f143e16 100644
--- a/public/registry/button-41.json
+++ b/public/registry/button-41.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucidePin } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-41',\n\tproviders: [provideIcons({ lucideChevronDown, lucidePin })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t\tPinned\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button41Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucidePin } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-41',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucidePin })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t\tPinned\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button41Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-42.json b/public/registry/button-42.json
index 8152bc51..fc014973 100644
--- a/public/registry/button-42.json
+++ b/public/registry/button-42.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideGitFork } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-42',\n\tproviders: [provideIcons({ lucideGitFork, lucideChevronDown })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tFork\n\t\t\t\t\n\t\t\t\t\t18\n\t\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button42Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideGitFork } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-42',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideGitFork, lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t\tFork\n\t\t\t\t\n\t\t\t\t\t18\n\t\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button42Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-43.json b/public/registry/button-43.json
index 73d2de20..e9e4a487 100644
--- a/public/registry/button-43.json
+++ b/public/registry/button-43.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-43',\n\tproviders: [provideIcons({ lucideChevronDown })],\n\timports: [HlmButton, NgIcon, HlmButtonGroupImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tMerge pull request\n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button43Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmButtonGroupImports } from '@spartan-ng/helm/button-group';\n\n@Component({\n\tselector: 'sim-button-43',\n\timports: [NgIcon, HlmButtonImports, HlmButtonGroupImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tMerge pull request\n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button43Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-44.json b/public/registry/button-44.json
index ed91d500..3dacf365 100644
--- a/public/registry/button-44.json
+++ b/public/registry/button-44.json
@@ -1,3 +1,3 @@
{
- "content": "import { NgClass } from '@angular/common';\nimport { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideStar } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-44',\n\tproviders: [provideIcons({ lucideStar })],\n\timports: [HlmButton, NgClass, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t{{ starLabel() }}\n\t\t\t\n\t\t\t\t{{ starCount() }}\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button44Component {\n\tprotected readonly stared = signal(false);\n\tprotected readonly animated = signal(false);\n\tprotected readonly defaultStars = 699;\n\tprotected readonly starCount = computed(() => (this.stared() ? this.defaultStars + 1 : this.defaultStars));\n\tprotected readonly starLabel = computed(() => (this.stared() ? 'Unstar' : 'Star'));\n\n\tprotected readonly toggleStart = (): void => {\n\t\tthis.stared.set(!this.stared());\n\t\tthis.animated.set(true);\n\t\tsetTimeout(() => {\n\t\t\tthis.animated.set(false);\n\t\t}, 300);\n\t};\n}"
+ "content": "import { NgClass } from '@angular/common';\nimport { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideStar } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-44',\n\timports: [NgClass, NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideStar })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t{{ starLabel() }}\n\t\t\t\n\t\t\t\t{{ starCount() }}\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button44Component {\n\tprotected readonly defaultStars = 699;\n\tprotected readonly stared = signal(false);\n\tprotected readonly animated = signal(false);\n\tprotected readonly starCount = computed(() => (this.stared() ? this.defaultStars + 1 : this.defaultStars));\n\tprotected readonly starLabel = computed(() => (this.stared() ? 'Unstar' : 'Star'));\n\n\tprotected toggleStart(): void {\n\t\tthis.stared.set(!this.stared());\n\t\tthis.animated.set(true);\n\t\tsetTimeout(() => {\n\t\t\tthis.animated.set(false);\n\t\t}, 300);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-45.json b/public/registry/button-45.json
index de750784..3752f3ce 100644
--- a/public/registry/button-45.json
+++ b/public/registry/button-45.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-45',\n\timports: [HlmButton],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button45Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-45',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button45Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-46.json b/public/registry/button-46.json
index 733a31d3..80c7abe5 100644
--- a/public/registry/button-46.json
+++ b/public/registry/button-46.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-46',\n\timports: [HlmButton],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button46Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-46',\n\timports: [HlmButtonImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button46Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-47.json b/public/registry/button-47.json
index be42efc4..ad537f89 100644
--- a/public/registry/button-47.json
+++ b/public/registry/button-47.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-47',\n\timports: [HlmButton],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Google\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Facebook\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Apple\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with X\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button47Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-47',\n\timports: [HlmButtonImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Google\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Facebook\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Apple\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with X\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button47Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-48.json b/public/registry/button-48.json
index 0a6e8a04..b460d1a7 100644
--- a/public/registry/button-48.json
+++ b/public/registry/button-48.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-48',\n\timports: [HlmButton],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Google\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Facebook\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Apple\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with X\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button48Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-48',\n\timports: [HlmButtonImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Google\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Facebook\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with Apple\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\tLogin with X\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button48Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-49.json b/public/registry/button-49.json
index 526482d5..53f6f509 100644
--- a/public/registry/button-49.json
+++ b/public/registry/button-49.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-49',\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t{{ buttonLabel() }}\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button49Component {\n\tprotected readonly isShow = signal(false);\n\tprotected readonly buttonLabel = computed(() => (this.isShow() ? 'Show less' : 'Show more'));\n\tprotected readonly buttonIcon = computed(() => (this.isShow() ? 'lucideChevronUp' : 'lucideChevronDown'));\n\n\tprotected toggle(): void {\n\t\tthis.isShow.set(!this.isShow());\n\t}\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-49',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideChevronUp })],\n\ttemplate: `\n\t\t\n\t\t\t{{ buttonLabel() }}\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button49Component {\n\tprotected readonly isShow = signal(false);\n\tprotected readonly buttonLabel = computed(() => (this.isShow() ? 'Show less' : 'Show more'));\n\tprotected readonly buttonIcon = computed(() => (this.isShow() ? 'lucideChevronUp' : 'lucideChevronDown'));\n\n\tprotected toggle(): void {\n\t\tthis.isShow.set(!this.isShow());\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-50.json b/public/registry/button-50.json
index 81f9800f..d7f69947 100644
--- a/public/registry/button-50.json
+++ b/public/registry/button-50.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-50',\n\tproviders: [provideIcons({ lucideCircleUserRound })],\n\timports: [HlmButton, HlmIcon, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ buttonLabel() }}\n\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ fileName() }}\n\t\t\t\t\t
\n\t\t\t\t\t
Remove \n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t`,\n})\nexport class Button50Component {\n\tprotected readonly previewUrl = signal(null);\n\tprotected readonly fileName = signal(null);\n\tprotected readonly fileInput = viewChild('fileInput');\n\tprotected readonly buttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tprotected onRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
+ "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-50',\n\timports: [NgIcon, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideCircleUserRound })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ buttonLabel() }}\n\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ fileName() }}\n\t\t\t\t\t
\n\t\t\t\t\t
Remove \n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t`,\n})\nexport class Button50Component {\n\tprotected readonly previewUrl = signal(null);\n\tprotected readonly fileName = signal(null);\n\tprotected readonly fileInput = viewChild('fileInput');\n\tprotected readonly buttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tprotected onRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-51.json b/public/registry/button-51.json
index e3dc7a48..828f4212 100644
--- a/public/registry/button-51.json
+++ b/public/registry/button-51.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-51',\n\tproviders: [provideIcons({ lucideCircleUserRound, lucideX })],\n\timports: [HlmButton, HlmIcon, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t{{ fileName() }}\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t`,\n})\nexport class Button51Component {\n\tprotected readonly previewUrl = signal(null);\n\tprotected readonly fileName = signal(null);\n\tprotected readonly fileInput = viewChild('fileInput');\n\tprotected readonly buttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tprotected onRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
+ "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-51',\n\timports: [HlmButtonImports, HlmIconImports, NgIcon],\n\tproviders: [provideIcons({ lucideCircleUserRound, lucideX })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t{{ fileName() }}\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t`,\n})\nexport class Button51Component {\n\tprotected readonly previewUrl = signal(null);\n\tprotected readonly fileName = signal(null);\n\tprotected readonly fileInput = viewChild('fileInput');\n\tprotected readonly buttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tprotected onRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-52.json b/public/registry/button-52.json
index 0c8b46c1..b45410dd 100644
--- a/public/registry/button-52.json
+++ b/public/registry/button-52.json
@@ -1,3 +1,3 @@
{
- "content": "import { NgClass } from '@angular/common';\nimport { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircle, lucideCircleDot, lucideSquare, lucideTriangle, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-52',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideCircle,\n\t\t\tlucideTriangle,\n\t\t\tlucideSquare,\n\t\t\tlucideX,\n\t\t\tlucideCircleDot,\n\t\t}),\n\t],\n\timports: [HlmButton, HlmIcon, NgClass, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button52Component {\n\tdirection = signal<'up' | 'down' | 'right' | 'left' | 'center'>('center');\n\n\tonMoveCircle(newDirection: 'up' | 'down' | 'right' | 'left' | 'center') {\n\t\tthis.direction.set(newDirection);\n\t}\n}"
+ "content": "import { NgClass } from '@angular/common';\nimport { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircle, lucideCircleDot, lucideSquare, lucideTriangle, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-button-52',\n\timports: [NgClass, NgIcon, HlmButtonImports, HlmIconImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideCircle,\n\t\t\tlucideTriangle,\n\t\t\tlucideSquare,\n\t\t\tlucideX,\n\t\t\tlucideCircleDot,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button52Component {\n\tprotected readonly direction = signal<'up' | 'down' | 'right' | 'left' | 'center'>('center');\n\n\tprotected onMoveCircle(newDirection: 'up' | 'down' | 'right' | 'left' | 'center'): void {\n\t\tthis.direction.set(newDirection);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/button-53.json b/public/registry/button-53.json
index 6b7c2402..1bd9b89c 100644
--- a/public/registry/button-53.json
+++ b/public/registry/button-53.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-53',\n\timports: [HlmButton],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t
\n\t\t\t\t\t\tGET IT ON \n\t\t\t\t\t\tGoogle Play \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\tGET IT ON \n\t\t\t\t\t\tApple Store \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button53Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-53',\n\timports: [HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t
\n\t\t\t\t\t\tGET IT ON \n\t\t\t\t\t\tGoogle Play \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\tGET IT ON \n\t\t\t\t\t\tApple Store \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Button53Component {}"
}
\ No newline at end of file
diff --git a/public/registry/button-54.json b/public/registry/button-54.json
index 2c072855..d8cd8640 100644
--- a/public/registry/button-54.json
+++ b/public/registry/button-54.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-54',\n\tproviders: [provideIcons({ lucideChevronRight })],\n\timports: [HlmButton, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Talent Agency \n\t\t\t\t
Matches for your roster
\n\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button54Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\n\n@Component({\n\tselector: 'sim-button-54',\n\timports: [NgIcon, HlmButtonImports],\n\tproviders: [provideIcons({ lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Talent Agency \n\t\t\t\t
Matches for your roster
\n\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Button54Component {}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-03.json b/public/registry/calendar-03.json
index f7eaeb1c..dd3cfd61 100644
--- a/public/registry/calendar-03.json
+++ b/public/registry/calendar-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { addDays, isSameDay, isWeekend } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-03',\n\timports: [HlmCalendarImports, HlmCardImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t
\n\t\tDisabled dates
\n\t`,\n})\nexport class Calendar03Component {\n\tprotected readonly minDate = new Date();\n\tprotected readonly isDateUnavailable = (date: Date): boolean => {\n\t\t// Check if the date is a weekend\n\t\tif (isWeekend(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check if the date is one of the specifically disabled dates\n\t\treturn this.disabledRanges.some((disabledDate) => isSameDay(date, disabledDate));\n\t};\n\n\tprivate readonly disabledRanges: Date[] = [\n\t\tthis.minDate, // Disables today\n\t\taddDays(this.minDate, 14), // Disables only the 14th day from now\n\t\taddDays(this.minDate, 23), // Disables only the 23rd day from now\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { addDays, isSameDay, isWeekend } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-03',\n\timports: [HlmCalendarImports, HlmCardImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t
\n\t\tDisabled dates
\n\t`,\n})\nexport class Calendar03Component {\n\tprotected readonly minDate = new Date();\n\tprotected readonly isDateUnavailable = (date: Date): boolean => {\n\t\tif (isWeekend(date)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn this.disabledRanges.some((disabledDate) => isSameDay(date, disabledDate));\n\t};\n\n\tprivate readonly disabledRanges: Date[] = [this.minDate, addDays(this.minDate, 14), addDays(this.minDate, 23)];\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-10.json b/public/registry/calendar-10.json
index 30577ee6..11f8e66b 100644
--- a/public/registry/calendar-10.json
+++ b/public/registry/calendar-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-10',\n\timports: [HlmCalendarImports, HlmButtonImports, HlmCardImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tCurrent Month \n\t\t
\n\t\tWith button
\n\t`,\n})\nexport class Calendar10Component {\n\tprotected readonly selectedDate = addDays(new Date(), -28);\n\tprotected month = this.selectedDate;\n\n\tprotected setCurrentMonth(): void {\n\t\tconst newDate = new Date();\n\t\tthis.month = newDate;\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-10',\n\timports: [HlmCalendarImports, HlmButtonImports, HlmCardImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tCurrent Month \n\t\t
\n\t\tWith button
\n\t`,\n})\nexport class Calendar10Component {\n\tprotected readonly selectedDate = signal(addDays(new Date(), -28));\n\tprotected readonly month = signal(this.selectedDate());\n\n\tprotected setCurrentMonth(): void {\n\t\tconst newDate = new Date();\n\t\tthis.month.set(newDate);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-11.json b/public/registry/calendar-11.json
index d0d94135..e59edeae 100644
--- a/public/registry/calendar-11.json
+++ b/public/registry/calendar-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-11',\n\timports: [HlmCalendarImports, HlmButtonImports, HlmCardImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tToday \n\t\t
\n\t\tWith button
\n\t`,\n})\nexport class Calendar11Component {\n\tprotected selectedDate = addDays(new Date(), -38);\n\n\tprotected setCurrentMonth(): void {\n\t\tthis.selectedDate = new Date();\n\t}\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-11',\n\timports: [HlmCalendarImports, HlmButtonImports, HlmCardImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tToday \n\t\t
\n\t\tWith button
\n\t`,\n})\nexport class Calendar11Component {\n\tprotected readonly selectedDate = signal(addDays(new Date(), -38));\n\n\tprotected setCurrentMonth(): void {\n\t\tconst newDate = new Date();\n\t\tthis.selectedDate.set(newDate);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-12.json b/public/registry/calendar-12.json
index 9307c5f4..ee60d65f 100644
--- a/public/registry/calendar-12.json
+++ b/public/registry/calendar-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, effect, signal, untracked } from '@angular/core';\nimport { form, FormField, required } from '@angular/forms/signals';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCalendar } from '@ng-icons/lucide';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmInputGroupImports } from '@spartan-ng/helm/input-group';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { format, isValid, parse } from 'date-fns';\n\ninterface DateModel {\n\tdate: string;\n}\n\n@Component({\n\tselector: 'sim-calendar-12',\n\timports: [HlmCalendarImports, HlmInputGroupImports, HlmLabel, NgIcon, FormField],\n\tproviders: [provideIcons({ lucideCalendar })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\tEnter date \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\tDate input
\n\t`,\n})\nexport class Calendar12Component {\n\tprotected readonly dateModel = signal({\n\t\tdate: format(new Date(), 'yyyy-MM-dd'),\n\t});\n\tprotected readonly selectedDate = signal(new Date());\n\tprotected readonly dateForm = form(this.dateModel, (schema) => {\n\t\trequired(schema.date, { message: 'Date is required' });\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst raw = this.dateForm.date().value();\n\t\t\tif (!raw) return;\n\t\t\tconst parsed = parse(raw, 'yyyy-MM-dd', new Date());\n\t\t\tif (isValid(parsed)) {\n\t\t\t\tuntracked(() => this.selectedDate.set(parsed));\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst calDate = this.selectedDate();\n\t\t\tconst formatted = format(calDate, 'yyyy-MM-dd');\n\t\t\tuntracked(() => this.dateModel.update((m) => ({ ...m, date: formatted })));\n\t\t});\n\t}\n\n\tprotected onDateInput(event: Event): void {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\t\tthis.dateModel.update((m) => ({ ...m, date: value }));\n\t}\n}"
+ "content": "import { Component, effect, signal, untracked } from '@angular/core';\nimport { form, FormField, required } from '@angular/forms/signals';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCalendar } from '@ng-icons/lucide';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmInputGroupImports } from '@spartan-ng/helm/input-group';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { format, isValid, parse } from 'date-fns';\n\ninterface DateModel {\n\tdate: string;\n}\n\n@Component({\n\tselector: 'sim-calendar-12',\n\timports: [NgIcon, FormField, HlmCalendarImports, HlmInputGroupImports, HlmLabelImports],\n\tproviders: [provideIcons({ lucideCalendar })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\tEnter date \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\tDate input
\n\t`,\n})\nexport class Calendar12Component {\n\tprotected readonly dateModel = signal({\n\t\tdate: format(new Date(), 'yyyy-MM-dd'),\n\t});\n\tprotected readonly selectedDate = signal(new Date());\n\tprotected readonly dateForm = form(this.dateModel, (schema) => {\n\t\trequired(schema.date, { message: 'Date is required' });\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst raw = this.dateForm.date().value();\n\t\t\tif (!raw) return;\n\t\t\tconst parsed = parse(raw, 'yyyy-MM-dd', new Date());\n\t\t\tif (isValid(parsed)) {\n\t\t\t\tuntracked(() => this.selectedDate.set(parsed));\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst calDate = this.selectedDate();\n\t\t\tconst formatted = format(calDate, 'yyyy-MM-dd');\n\t\t\tuntracked(() => this.dateModel.update((m) => ({ ...m, date: formatted })));\n\t\t});\n\t}\n\n\tprotected onDateInput(event: Event): void {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\t\tthis.dateModel.update((m) => ({ ...m, date: value }));\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-13.json b/public/registry/calendar-13.json
index 384ec930..f122bd68 100644
--- a/public/registry/calendar-13.json
+++ b/public/registry/calendar-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideClock } from '@ng-icons/lucide';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmInputGroupImports } from '@spartan-ng/helm/input-group';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-calendar-13',\n\timports: [HlmCalendarImports, HlmInputGroupImports, HlmLabel, NgIcon],\n\tproviders: [provideIcons({ lucideClock })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\tEnter time \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\tTime input
\n\t`,\n})\nexport class Calendar13Component {\n\tprotected readonly selectedDate = signal(new Date());\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideClock } from '@ng-icons/lucide';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmInputGroupImports } from '@spartan-ng/helm/input-group';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-calendar-13',\n\timports: [NgIcon, HlmCalendarImports, HlmInputGroupImports, HlmLabelImports],\n\tproviders: [provideIcons({ lucideClock })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\tEnter time \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\tTime input
\n\t`,\n})\nexport class Calendar13Component {\n\tprotected readonly selectedDate = signal(new Date());\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-14.json b/public/registry/calendar-14.json
index 16a09967..2eca9e84 100644
--- a/public/registry/calendar-14.json
+++ b/public/registry/calendar-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { DatePipe } from '@angular/common';\nimport { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmScrollAreaImports } from '@spartan-ng/helm/scroll-area';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\n\n@Component({\n\tselector: 'sim-calendar-14',\n\timports: [HlmCalendarImports, HlmScrollAreaImports, HlmButtonImports, DatePipe, NgScrollbarModule],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
{{ selectedDate() | date: 'EEE, dd' }}
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t@for (timeslot of timeSlots; track timeslot.time) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ timeslot.time }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\tAppointment picker
\n\t`,\n})\nexport class Calendar14Component {\n\tprotected readonly selectedDate = signal(new Date());\n\tprotected readonly selectedTime = signal('');\n\n\tprotected readonly timeSlots = [\n\t\t{ available: false, time: '09:00' },\n\t\t{ available: false, time: '09:30' },\n\t\t{ available: true, time: '10:00' },\n\t\t{ available: true, time: '10:30' },\n\t\t{ available: true, time: '11:00' },\n\t\t{ available: true, time: '11:30' },\n\t\t{ available: false, time: '12:00' },\n\t\t{ available: true, time: '12:30' },\n\t\t{ available: true, time: '13:00' },\n\t\t{ available: true, time: '13:30' },\n\t\t{ available: true, time: '14:00' },\n\t\t{ available: false, time: '14:30' },\n\t\t{ available: false, time: '15:00' },\n\t\t{ available: true, time: '15:30' },\n\t\t{ available: true, time: '16:00' },\n\t\t{ available: true, time: '16:30' },\n\t\t{ available: true, time: '17:00' },\n\t\t{ available: true, time: '17:30' },\n\t];\n}"
+ "content": "import { DatePipe } from '@angular/common';\nimport { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmScrollAreaImports } from '@spartan-ng/helm/scroll-area';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\n\ninterface TimeSlot {\n\tavailable: boolean;\n\ttime: string;\n}\n\n@Component({\n\tselector: 'sim-calendar-14',\n\timports: [DatePipe, NgScrollbarModule, HlmCalendarImports, HlmScrollAreaImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
{{ selectedDate() | date: 'EEE, dd' }}
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t@for (timeslot of timeSlots; track timeslot.time) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ timeslot.time }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t
\n\t\tAppointment picker
\n\t`,\n})\nexport class Calendar14Component {\n\tprotected readonly selectedDate = signal(new Date());\n\tprotected readonly selectedTime = signal('');\n\n\tprotected readonly timeSlots: TimeSlot[] = [\n\t\t{ available: false, time: '09:00' },\n\t\t{ available: false, time: '09:30' },\n\t\t{ available: true, time: '10:00' },\n\t\t{ available: true, time: '10:30' },\n\t\t{ available: true, time: '11:00' },\n\t\t{ available: true, time: '11:30' },\n\t\t{ available: false, time: '12:00' },\n\t\t{ available: true, time: '12:30' },\n\t\t{ available: true, time: '13:00' },\n\t\t{ available: true, time: '13:30' },\n\t\t{ available: true, time: '14:00' },\n\t\t{ available: false, time: '14:30' },\n\t\t{ available: false, time: '15:00' },\n\t\t{ available: true, time: '15:30' },\n\t\t{ available: true, time: '16:00' },\n\t\t{ available: true, time: '16:30' },\n\t\t{ available: true, time: '17:00' },\n\t\t{ available: true, time: '17:30' },\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-16.json b/public/registry/calendar-16.json
index c058c6e0..f19456a7 100644
--- a/public/registry/calendar-16.json
+++ b/public/registry/calendar-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { endOfMonth, endOfYear, startOfMonth, startOfYear, subDays, subMonths, subYears } from 'date-fns';\n\ntype DateRange = {\n\tfrom: Date;\n\tto: Date;\n};\n\n@Component({\n\tselector: 'sim-calendar-16',\n\timports: [HlmCalendarImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tToday\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tYesterday\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast 7 days\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast 30 days\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMonth to date\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast month\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tYear to date\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast year\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\tRange calendar with presets
\n\t`,\n})\nexport class Calendar16Component {\n\tprotected readonly today = new Date();\n\tprotected readonly todayRange: DateRange = {\n\t\tfrom: new Date(),\n\t\tto: new Date(),\n\t};\n\tprotected readonly yesterday: DateRange = {\n\t\tfrom: subDays(this.today, 1),\n\t\tto: subDays(this.today, 1),\n\t};\n\tprotected readonly last7Days: DateRange = {\n\t\tfrom: subDays(this.today, 6),\n\t\tto: this.today,\n\t};\n\tprotected readonly last30Days: DateRange = {\n\t\tfrom: subDays(this.today, 29),\n\t\tto: this.today,\n\t};\n\tprotected readonly monthToDate: DateRange = {\n\t\tfrom: startOfMonth(this.today),\n\t\tto: this.today,\n\t};\n\tprotected readonly lastMonth: DateRange = {\n\t\tfrom: startOfMonth(subMonths(this.today, 1)),\n\t\tto: endOfMonth(subMonths(this.today, 1)),\n\t};\n\tprotected readonly yearToDate: DateRange = {\n\t\tfrom: startOfYear(this.today),\n\t\tto: this.today,\n\t};\n\tprotected readonly lastYear: DateRange = {\n\t\tfrom: startOfYear(subYears(this.today, 1)),\n\t\tto: endOfYear(subYears(this.today, 1)),\n\t};\n\tprotected readonly selectedDate = signal(this.last7Days);\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { endOfMonth, endOfYear, startOfMonth, startOfYear, subDays, subMonths, subYears } from 'date-fns';\n\ninterface DateRange {\n\tfrom: Date;\n\tto: Date;\n}\n\n@Component({\n\tselector: 'sim-calendar-16',\n\timports: [HlmCalendarImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tToday\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tYesterday\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast 7 days\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast 30 days\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMonth to date\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast month\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tYear to date\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tLast year\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\tRange calendar with presets
\n\t`,\n})\nexport class Calendar16Component {\n\tprotected readonly today = new Date();\n\tprotected readonly todayRange: DateRange = {\n\t\tfrom: new Date(),\n\t\tto: new Date(),\n\t};\n\tprotected readonly yesterday: DateRange = {\n\t\tfrom: subDays(this.today, 1),\n\t\tto: subDays(this.today, 1),\n\t};\n\tprotected readonly last7Days: DateRange = {\n\t\tfrom: subDays(this.today, 6),\n\t\tto: this.today,\n\t};\n\tprotected readonly last30Days: DateRange = {\n\t\tfrom: subDays(this.today, 29),\n\t\tto: this.today,\n\t};\n\tprotected readonly monthToDate: DateRange = {\n\t\tfrom: startOfMonth(this.today),\n\t\tto: this.today,\n\t};\n\tprotected readonly lastMonth: DateRange = {\n\t\tfrom: startOfMonth(subMonths(this.today, 1)),\n\t\tto: endOfMonth(subMonths(this.today, 1)),\n\t};\n\tprotected readonly yearToDate: DateRange = {\n\t\tfrom: startOfYear(this.today),\n\t\tto: this.today,\n\t};\n\tprotected readonly lastYear: DateRange = {\n\t\tfrom: startOfYear(subYears(this.today, 1)),\n\t\tto: endOfYear(subYears(this.today, 1)),\n\t};\n\tprotected readonly selectedDate = signal(this.last7Days);\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-17.json b/public/registry/calendar-17.json
index d23f1d2a..1b13f90a 100644
--- a/public/registry/calendar-17.json
+++ b/public/registry/calendar-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmSeparatorImports } from '@spartan-ng/helm/separator';\nimport { hlm } from '@spartan-ng/helm/utils';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-17',\n\timports: [NgIcon, HlmCalendarImports, HlmButtonImports, HlmSeparatorImports],\n\tproviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\tTwo months calendar
\n\t`,\n})\nexport class Calendar17Component {\n\tprotected start = signal(new Date());\n\tprotected end = signal(addDays(new Date(), 5));\n\n\t// Separate signal for which month to display\n\tprotected focusedDate = signal(new Date());\n\n\t// First calendar shows the focused month\n\tprotected firstMonthDate = computed(() => this.focusedDate());\n\n\t// Second calendar shows the next month\n\tprotected secondMonthDate = computed(() => {\n\t\tconst date = new Date(this.focusedDate());\n\t\tdate.setMonth(date.getMonth() + 1);\n\t\treturn date;\n\t});\n\n\tprivate readonly baseCalendarClass =\n\t\t'[&_button[brncalendarnextbutton]]:opacity-0! [&_button[brncalendarpreviousbutton]]:opacity-0! border-none [&_[data-outside]]:hidden bg-transparent';\n\n\tprotected firstMonthClass = computed(() => this.getMonthClass(this.firstMonthDate()));\n\tprotected secondMonthClass = computed(() => this.getMonthClass(this.secondMonthDate()));\n\n\tprivate getMonthClass(monthDate: Date): string {\n\t\tconst hideRangeEnd =\n\t\t\tmonthDate?.getMonth() !== this.end()?.getMonth()\n\t\t\t\t? '[&_button[data-range-end]]:hidden! [&_td:has([data-range-end])]:after:hidden!'\n\t\t\t\t: '';\n\t\tconst hideRangeStart =\n\t\t\tmonthDate?.getMonth() !== this.start()?.getMonth()\n\t\t\t\t? '[&_button[data-range-start]]:hidden! [&_td:has([data-range-start])]:after:hidden!'\n\t\t\t\t: '';\n\t\treturn hlm(this.baseCalendarClass, hideRangeEnd, hideRangeStart);\n\t}\n\n\tjumpToPreviousMonth() {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() - 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tjumpToNextMonth() {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() + 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmSeparatorImports } from '@spartan-ng/helm/separator';\nimport { hlm } from '@spartan-ng/helm/utils';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-17',\n\timports: [NgIcon, HlmCalendarImports, HlmButtonImports, HlmSeparatorImports],\n\tproviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\tTwo months calendar
\n\t`,\n})\nexport class Calendar17Component {\n\tprotected start = signal(new Date());\n\tprotected end = signal(addDays(new Date(), 5));\n\tprotected focusedDate = signal(new Date());\n\n\tprotected firstMonthDate = computed(() => this.focusedDate());\n\tprotected secondMonthDate = computed(() => {\n\t\tconst date = new Date(this.focusedDate());\n\t\tdate.setMonth(date.getMonth() + 1);\n\t\treturn date;\n\t});\n\n\tprivate readonly baseCalendarClass =\n\t\t'[&_button[brncalendarnextbutton]]:opacity-0! [&_button[brncalendarpreviousbutton]]:opacity-0! border-none [&_[data-outside]]:hidden bg-transparent';\n\n\tprotected firstMonthClass = computed(() => this.getMonthClass(this.firstMonthDate()));\n\tprotected secondMonthClass = computed(() => this.getMonthClass(this.secondMonthDate()));\n\n\tprivate getMonthClass(monthDate: Date): string {\n\t\tconst hideRangeEnd =\n\t\t\tmonthDate?.getMonth() !== this.end()?.getMonth()\n\t\t\t\t? '[&_button[data-range-end]]:hidden! [&_td:has([data-range-end])]:after:hidden!'\n\t\t\t\t: '';\n\t\tconst hideRangeStart =\n\t\t\tmonthDate?.getMonth() !== this.start()?.getMonth()\n\t\t\t\t? '[&_button[data-range-start]]:hidden! [&_td:has([data-range-start])]:after:hidden!'\n\t\t\t\t: '';\n\t\treturn hlm(this.baseCalendarClass, hideRangeEnd, hideRangeStart);\n\t}\n\n\tprotected jumpToPreviousMonth(): void {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() - 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected jumpToNextMonth(): void {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() + 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-18.json b/public/registry/calendar-18.json
index 79717e5d..e9cbec9e 100644
--- a/public/registry/calendar-18.json
+++ b/public/registry/calendar-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmSeparatorImports } from '@spartan-ng/helm/separator';\nimport { hlm } from '@spartan-ng/helm/utils';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-18',\n\timports: [NgIcon, HlmCalendarImports, HlmButtonImports, HlmSeparatorImports],\n\tproviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\tThree months calendar
\n\t`,\n})\nexport class Calendar18Component {\n\tprotected start = signal(new Date());\n\tprotected end = signal(addDays(new Date(), 5));\n\n\t// Separate signal for which month to display\n\tprotected focusedDate = signal(new Date());\n\n\t// First calendar shows the focused month\n\tprotected firstMonthDate = computed(() => this.focusedDate());\n\n\t// Second calendar shows the next month\n\tprotected secondMonthDate = computed(() => {\n\t\tconst date = new Date(this.focusedDate());\n\t\tdate.setMonth(date.getMonth() + 1);\n\t\treturn date;\n\t});\n\n\t// Third calendar shows two months ahead\n\tprotected thirdMonthDate = computed(() => {\n\t\tconst date = new Date(this.focusedDate());\n\t\tdate.setMonth(date.getMonth() + 2);\n\t\treturn date;\n\t});\n\n\tprivate readonly baseCalendarClass =\n\t\t'[&_button[brncalendarnextbutton]]:opacity-0! [&_button[brncalendarpreviousbutton]]:opacity-0! border-none [&_[data-outside]]:hidden bg-transparent';\n\n\tprotected firstMonthClass = computed(() => this.getMonthClass(this.firstMonthDate()));\n\tprotected secondMonthClass = computed(() => this.getMonthClass(this.secondMonthDate()));\n\tprotected thirdMonthClass = computed(() => this.getMonthClass(this.thirdMonthDate()));\n\n\tprivate getMonthClass(monthDate: Date): string {\n\t\tconst hideRangeEnd =\n\t\t\tmonthDate?.getMonth() !== this.end()?.getMonth()\n\t\t\t\t? '[&_button[data-range-end]]:hidden! [&_td:has([data-range-end])]:after:hidden!'\n\t\t\t\t: '';\n\t\tconst hideRangeStart =\n\t\t\tmonthDate?.getMonth() !== this.start()?.getMonth()\n\t\t\t\t? '[&_button[data-range-start]]:hidden! [&_td:has([data-range-start])]:after:hidden!'\n\t\t\t\t: '';\n\t\treturn hlm(this.baseCalendarClass, hideRangeEnd, hideRangeStart);\n\t}\n\n\tjumpToPreviousMonth() {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() - 3);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tjumpToNextMonth() {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() + 3);\n\t\tthis.focusedDate.set(newDate);\n\t}\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmSeparatorImports } from '@spartan-ng/helm/separator';\nimport { hlm } from '@spartan-ng/helm/utils';\nimport { addDays } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-18',\n\timports: [NgIcon, HlmCalendarImports, HlmButtonImports, HlmSeparatorImports],\n\tproviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\tThree months calendar
\n\t`,\n})\nexport class Calendar18Component {\n\tprotected start = signal(new Date());\n\tprotected end = signal(addDays(new Date(), 5));\n\tprotected focusedDate = signal(new Date());\n\n\tprotected firstMonthDate = computed(() => this.focusedDate());\n\tprotected secondMonthDate = computed(() => {\n\t\tconst date = new Date(this.focusedDate());\n\t\tdate.setMonth(date.getMonth() + 1);\n\t\treturn date;\n\t});\n\tprotected thirdMonthDate = computed(() => {\n\t\tconst date = new Date(this.focusedDate());\n\t\tdate.setMonth(date.getMonth() + 2);\n\t\treturn date;\n\t});\n\tprotected firstMonthClass = computed(() => this.getMonthClass(this.firstMonthDate()));\n\tprotected secondMonthClass = computed(() => this.getMonthClass(this.secondMonthDate()));\n\tprotected thirdMonthClass = computed(() => this.getMonthClass(this.thirdMonthDate()));\n\n\tprivate readonly baseCalendarClass =\n\t\t'[&_button[brncalendarnextbutton]]:opacity-0! [&_button[brncalendarpreviousbutton]]:opacity-0! border-none [&_[data-outside]]:hidden bg-transparent';\n\n\tprivate getMonthClass(monthDate: Date): string {\n\t\tconst hideRangeEnd =\n\t\t\tmonthDate?.getMonth() !== this.end()?.getMonth()\n\t\t\t\t? '[&_button[data-range-end]]:hidden! [&_td:has([data-range-end])]:after:hidden!'\n\t\t\t\t: '';\n\t\tconst hideRangeStart =\n\t\t\tmonthDate?.getMonth() !== this.start()?.getMonth()\n\t\t\t\t? '[&_button[data-range-start]]:hidden! [&_td:has([data-range-start])]:after:hidden!'\n\t\t\t\t: '';\n\t\treturn hlm(this.baseCalendarClass, hideRangeEnd, hideRangeStart);\n\t}\n\n\tprotected jumpToPreviousMonth(): void {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() - 3);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected jumpToNextMonth(): void {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() + 3);\n\t\tthis.focusedDate.set(newDate);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/calendar-19.json b/public/registry/calendar-19.json
index d4a80e83..5de37c91 100644
--- a/public/registry/calendar-19.json
+++ b/public/registry/calendar-19.json
@@ -1,3 +1,3 @@
{
- "content": "import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { CurrencyPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tviewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport { BrnCalendar, BrnCalendarImports, injectBrnCalendarI18n, type Weekday } from '@spartan-ng/brain/calendar';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { buttonVariants } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\nimport { hlm } from '@spartan-ng/helm/utils';\nimport type { ClassValue } from 'clsx';\nimport { addMonths, format } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-19',\n\timports: [BrnCalendarImports, NgIcon, HlmIcon, HlmSelectImports, NgTemplateOutlet, NgClass, CurrencyPipe],\n\tviewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (month of _i18n.config().months(); track month) {\n\t\t\t\t\t\t\t\t\t\t\t\t{{ month }} \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (year of _i18n.config().years(); track year) {\n\t\t\t\t\t\t\t\t\t\t\t\t{{ year }} \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t@let heading = _heading();\n\t\t\t\t\t\t\t@switch (captionLayout()) {\n\t\t\t\t\t\t\t\t@case ('dropdown') {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@case ('dropdown-months') {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{ heading.year }}
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@case ('dropdown-years') {\n\t\t\t\t\t\t\t\t\t
{{ heading.month }}
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@case ('label') {\n\t\t\t\t\t\t\t\t\t
{{ heading.header }}
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ _i18n.config().formatWeekdayName(weekday) }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t@for (date of week; track _dateAdapter.getTime(date)) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ _dateAdapter.getDate(date) }}\n\t\t\t\t\t\t\t\t\t\t\t@if (getPriceForDate(date) !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getPriceForDate(date) | currency: 'USD' : 'symbol' : '1.0-0' }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\tPricing Calendar
\n\t`,\n})\nexport class Calendar19Component {\n\tpublic readonly calendarClass = input('');\n\n\tprotected readonly _computedCalenderClass = computed(() => hlm('rounded-2xl border p-3', this.calendarClass()));\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Access the date time adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter();\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input();\n\n\t/** Show dropdowns to navigate between months or years. */\n\tpublic readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model(addMonths(new Date(), 1));\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: Date) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input(undefined, {\n\t\ttransform: (v: unknown) => numberAttribute(v) as Weekday,\n\t});\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input();\n\n\t/** Access the calendar directive */\n\tprivate readonly _calendar = viewChild.required(BrnCalendar);\n\n\t/** Get the heading for the current month and year */\n\tprotected readonly _heading = computed(() => {\n\t\tconst config = this._i18n.config();\n\t\tconst date = this._calendar().focusedDate();\n\n\t\treturn {\n\t\t\theader: config.formatHeader(this._dateAdapter.getMonth(date), this._dateAdapter.getYear(date)),\n\t\t\tmonth: config.formatMonth(this._dateAdapter.getMonth(date)),\n\t\t\tyear: config.formatYear(this._dateAdapter.getYear(date)),\n\t\t};\n\t});\n\n\tprotected readonly _btnClass = hlm(\n\t\tbuttonVariants({ variant: 'ghost' }),\n\t\t'size-12 p-0 font-normal aria-selected:opacity-100',\n\t\t'data-[outside]:text-muted-foreground data-[outside]:aria-selected:bg-accent/50 data-[outside]:aria-selected:text-muted-foreground data-[outside]:opacity-50 data-[outside]:aria-selected:opacity-30',\n\t\t'data-[today]:bg-accent data-[today]:text-accent-foreground',\n\t\t'data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary dark:hover:text-accent-foreground data-[selected]:focus:bg-primary data-[selected]:focus:text-primary-foreground',\n\t\t'data-[disabled]:text-muted-foreground data-[disabled]:opacity-50',\n\t\t'dark:hover:text-accent-foreground',\n\t);\n\n\tprotected readonly _selectClass = 'gap-0 px-1.5 py-2 [&>ng-icon]:ml-1';\n\n\tprotected generateMockPriceData(): Record {\n\t\tconst data: Record = {};\n\t\tconst todayDate = new Date();\n\n\t\tfor (let i = 0; i < 180; i++) {\n\t\t\tconst date = new Date(todayDate);\n\t\t\tdate.setDate(todayDate.getDate() + i);\n\t\t\tconst dateKey = format(date, 'yyyy-MM-dd');\n\t\t\tconst randomPrice = Math.floor(Math.random() * (200 - 80 + 1)) + 80;\n\t\t\tdata[dateKey] = randomPrice;\n\t\t}\n\t\treturn data;\n\t}\n\n\tprotected generatedMockPrice = this.generateMockPriceData();\n\n\tprotected getPriceForDate(date: Date): number {\n\t\tconst dateKey = format(date, 'yyyy-MM-dd');\n\t\treturn this.generatedMockPrice[dateKey];\n\t}\n\n\tprotected isGoodPrice(price: number): boolean {\n\t\treturn price < 120;\n\t}\n}"
+ "content": "import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { CurrencyPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, input, model, numberAttribute, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport { BrnCalendar, BrnCalendarImports, injectBrnCalendarI18n, type Weekday } from '@spartan-ng/brain/calendar';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { buttonVariants } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\nimport { hlm } from '@spartan-ng/helm/utils';\nimport type { ClassValue } from 'clsx';\nimport { addMonths, format } from 'date-fns';\n\n@Component({\n\tselector: 'sim-calendar-19',\n\timports: [NgIcon, NgTemplateOutlet, NgClass, CurrencyPipe, BrnCalendarImports, HlmIconImports, HlmSelectImports],\n\tviewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (month of _i18n.config().months(); track month) {\n\t\t\t\t\t\t\t\t\t\t\t\t{{ month }} \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (year of _i18n.config().years(); track year) {\n\t\t\t\t\t\t\t\t\t\t\t\t{{ year }} \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t@let heading = _heading();\n\t\t\t\t\t\t\t@switch (captionLayout()) {\n\t\t\t\t\t\t\t\t@case ('dropdown') {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@case ('dropdown-months') {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{ heading.year }}
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@case ('dropdown-years') {\n\t\t\t\t\t\t\t\t\t
{{ heading.month }}
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@case ('label') {\n\t\t\t\t\t\t\t\t\t
{{ heading.header }}
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ _i18n.config().formatWeekdayName(weekday) }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t@for (date of week; track _dateAdapter.getTime(date)) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{{ _dateAdapter.getDate(date) }}\n\t\t\t\t\t\t\t\t\t\t\t@if (getPriceForDate(date) !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getPriceForDate(date) | currency: 'USD' : 'symbol' : '1.0-0' }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\tPricing Calendar
\n\t`,\n})\nexport class Calendar19Component {\n\tpublic readonly calendarClass = input('');\n\n\tprotected readonly _computedCalenderClass = computed(() => hlm('rounded-2xl border p-3', this.calendarClass()));\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Access the date time adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter();\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input();\n\n\t/** Show dropdowns to navigate between months or years. */\n\tpublic readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model(addMonths(new Date(), 1));\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: Date) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input(undefined, {\n\t\ttransform: (v: unknown) => numberAttribute(v) as Weekday,\n\t});\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input();\n\n\t/** Access the calendar directive */\n\tprivate readonly _calendar = viewChild.required(BrnCalendar);\n\n\t/** Get the heading for the current month and year */\n\tprotected readonly _heading = computed(() => {\n\t\tconst config = this._i18n.config();\n\t\tconst date = this._calendar().focusedDate();\n\n\t\treturn {\n\t\t\theader: config.formatHeader(this._dateAdapter.getMonth(date), this._dateAdapter.getYear(date)),\n\t\t\tmonth: config.formatMonth(this._dateAdapter.getMonth(date)),\n\t\t\tyear: config.formatYear(this._dateAdapter.getYear(date)),\n\t\t};\n\t});\n\n\tprotected readonly _btnClass = hlm(\n\t\tbuttonVariants({ variant: 'ghost' }),\n\t\t'size-12 p-0 font-normal aria-selected:opacity-100',\n\t\t'data-[outside]:text-muted-foreground data-[outside]:aria-selected:bg-accent/50 data-[outside]:aria-selected:text-muted-foreground data-[outside]:opacity-50 data-[outside]:aria-selected:opacity-30',\n\t\t'data-[today]:bg-accent data-[today]:text-accent-foreground',\n\t\t'data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary dark:hover:text-accent-foreground data-[selected]:focus:bg-primary data-[selected]:focus:text-primary-foreground',\n\t\t'data-[disabled]:text-muted-foreground data-[disabled]:opacity-50',\n\t\t'dark:hover:text-accent-foreground',\n\t);\n\n\tprotected readonly _selectClass = 'gap-0 px-1.5 py-2 [&>ng-icon]:ml-1';\n\n\tprotected generateMockPriceData(): Record {\n\t\tconst data: Record = {};\n\t\tconst todayDate = new Date();\n\n\t\tfor (let i = 0; i < 180; i++) {\n\t\t\tconst date = new Date(todayDate);\n\t\t\tdate.setDate(todayDate.getDate() + i);\n\t\t\tconst dateKey = format(date, 'yyyy-MM-dd');\n\t\t\tconst randomPrice = Math.floor(Math.random() * (200 - 80 + 1)) + 80;\n\t\t\tdata[dateKey] = randomPrice;\n\t\t}\n\t\treturn data;\n\t}\n\n\tprotected generatedMockPrice = this.generateMockPriceData();\n\n\tprotected getPriceForDate(date: Date): number {\n\t\tconst dateKey = format(date, 'yyyy-MM-dd');\n\t\treturn this.generatedMockPrice[dateKey];\n\t}\n\n\tprotected isGoodPrice(price: number): boolean {\n\t\treturn price < 120;\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-01.json b/public/registry/card-01.json
index 51fb3914..fac4e1e2 100644
--- a/public/registry/card-01.json
+++ b/public/registry/card-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-01',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\n\t\t\t\n\t\t\t\t
Deploy \n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card01Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-01',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\n\t\t\t\n\t\t\t\t
Deploy \n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card01Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-02.json b/public/registry/card-02.json
index 3958d84a..6d3cf3dc 100644
--- a/public/registry/card-02.json
+++ b/public/registry/card-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-card-02',\n\timports: [HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
Login to your account \n\t\t\t\t\tSign up \n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t \n\t\t\t
\n\n\t\t\t\n\t\t\t\tLogin \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-card-02',\n\timports: [HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
Login to your account \n\t\t\t\t\tSign up \n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t \n\t\t\t
\n\t\t\t\n\t\t\t\tLogin \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/card-03.json b/public/registry/card-03.json
index 369495df..050e0dfb 100644
--- a/public/registry/card-03.json
+++ b/public/registry/card-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideShieldAlert } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-card-03',\n\timports: [NgIcon, HlmIconImports, HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports],\n\tproviders: [provideIcons({ lucideShieldAlert })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Login to your account \n\t\t\t\t
Enter email and password to login
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tEmail \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tPassword \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tLogin \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
The information you enter is encrypted and stored securely.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideShieldAlert } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-card-03',\n\timports: [NgIcon, HlmIconImports, HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports],\n\tproviders: [provideIcons({ lucideShieldAlert })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Login to your account \n\t\t\t\t
Enter email and password to login
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tEmail \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tPassword \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tLogin \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
The information you enter is encrypted and stored securely.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/card-04.json b/public/registry/card-04.json
index e90cae2f..dba92e1c 100644
--- a/public/registry/card-04.json
+++ b/public/registry/card-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-04',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
Create project \n\t\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card04Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-04',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
Create project \n\t\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card04Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-05.json b/public/registry/card-05.json
index fc5ada2f..585d541e 100644
--- a/public/registry/card-05.json
+++ b/public/registry/card-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-05',\n\timports: [HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports, HlmSelectImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Card05Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-05',\n\timports: [HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports, HlmSelectImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Card05Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-06.json b/public/registry/card-06.json
index 904efa1c..9fa57d32 100644
--- a/public/registry/card-06.json
+++ b/public/registry/card-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-06',\n\timports: [HlmIconImports, HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports, HlmSelectImports],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card06Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-06',\n\timports: [HlmIconImports, HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports, HlmSelectImports],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card06Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-07.json b/public/registry/card-07.json
index 7ffb10e5..359c36c0 100644
--- a/public/registry/card-07.json
+++ b/public/registry/card-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-07',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Card07Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-07',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Card07Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-08.json b/public/registry/card-08.json
index 3b180440..c83697e2 100644
--- a/public/registry/card-08.json
+++ b/public/registry/card-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-08',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
Create project \n\t\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tLogin \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card08Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-08',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
Create project \n\t\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tLogin \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card08Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-09.json b/public/registry/card-09.json
index 556227c5..f1cad4fb 100644
--- a/public/registry/card-09.json
+++ b/public/registry/card-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-09',\n\timports: [HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports, HlmSelectImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Card09Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-09',\n\timports: [HlmCardImports, HlmButtonImports, HlmInputImports, HlmFieldImports, HlmSelectImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Card09Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-10.json b/public/registry/card-10.json
index 89ade5e4..f5d56a12 100644
--- a/public/registry/card-10.json
+++ b/public/registry/card-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-card-10',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card10Component {\n\tprotected readonly frameworkOptions = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tpublic readonly itemToString = (value: string) => this.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideAlertCircle } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmFieldImports } from '@spartan-ng/helm/field';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface FrameworkOption {\n\tlabel: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-card-10',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmFieldImports,\n\t\tHlmSelectImports,\n\t],\n\tproviders: [provideIcons({ lucideAlertCircle })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
Create project \n\t\t\t\t
Deploy your new project in one-click.
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@for (framework of frameworkOptions; track framework.value) {\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ framework.label }}\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tDeploy \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
This will take a few seconds to complete.
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card10Component {\n\tprotected readonly frameworkOptions: FrameworkOption[] = [\n\t\t{ label: 'Next.js', value: 'next' },\n\t\t{ label: 'Vite', value: 'vite' },\n\t\t{ label: 'Remix', value: 'remix' },\n\t\t{ label: 'Astro', value: 'astro' },\n\t];\n\n\tprotected readonly itemToString = (value: string) =>\n\t\tthis.frameworkOptions.find((d) => d.value === value)?.label ?? '';\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-12.json b/public/registry/card-12.json
index 73269c77..5a7da2d9 100644
--- a/public/registry/card-12.json
+++ b/public/registry/card-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { CurrencyPipe, DatePipe } from '@angular/common';\nimport { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowDown, lucideArrowLeftRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface CurrencyDef {\n\tcode: string;\n\tflag: string | null;\n\trateToVND: number;\n\tdecimals: string;\n}\n\nconst CURRENCIES: CurrencyDef[] = [\n\t{ code: 'VND', flag: 'assets/flags/VN.svg', rateToVND: 1, decimals: '1.0-0' },\n\t{ code: 'USD', flag: 'assets/flags/US.svg', rateToVND: 25000, decimals: '1.2-2' },\n\t{ code: 'EUR', flag: null, rateToVND: 27000, decimals: '1.2-2' },\n\t{ code: 'JPY', flag: 'assets/flags/JP.svg', rateToVND: 165, decimals: '1.0-0' },\n\t{ code: 'AUD', flag: 'assets/flags/AU.svg', rateToVND: 16000, decimals: '1.2-2' },\n];\n\n@Component({\n\tselector: 'sim-card-12',\n\timports: [NgIcon, DatePipe, CurrencyPipe, HlmIconImports, HlmCardImports, HlmButtonImports, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowDown, lucideArrowLeftRight })],\n\thost: { class: 'w-full' },\n\tstyles: [\n\t\t`\n\t\t\t@keyframes slotEnter {\n\t\t\t\tfrom {\n\t\t\t\t\ttransform: translateY(110%);\n\t\t\t\t\tfilter: blur(4px);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t\tfilter: blur(0);\n\t\t\t\t}\n\t\t\t}\n\t\t\t@keyframes slotLeave {\n\t\t\t\tfrom {\n\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t\tfilter: blur(0);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\ttransform: translateY(-110%);\n\t\t\t\t\tfilter: blur(4px);\n\t\t\t\t}\n\t\t\t}\n\t\t\t.slot-enter {\n\t\t\t\tanimation: slotEnter 150ms 120ms cubic-bezier(0.215, 0.61, 0.355, 1) both;\n\t\t\t}\n\t\t\t.slot-leave {\n\t\t\t\tanimation: slotLeave 120ms cubic-bezier(0.55, 0, 1, 0.45) both;\n\t\t\t}\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t.slot-enter,\n\t\t\t\t.slot-leave {\n\t\t\t\t\tanimation-duration: 1ms;\n\t\t\t\t\tanimation-delay: 0ms;\n\t\t\t\t}\n\t\t\t}\n\t\t`,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
Convert \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t1 {{ badgeSlot().sendCode }} = {{ badgeSlot().rate }} {{ badgeSlot().getCode }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t@for (slot of [badgeSlot()]; track slot.key) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t1 {{ slot.sendCode }} = {{ slot.rate }} {{ slot.getCode }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\tLive \n\t\t\t\t\t· \n\t\t\t\t\t{{ currentDate | date: 'shortTime' }} \n\t\t\t\t \n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
Tap a currency to switch - use the arrow to swap
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card12Component {\n\tprotected readonly currentDate = new Date();\n\tprotected readonly currencies = CURRENCIES;\n\n\t// Each slot bundles an animation key + the full currency so @for can track changes\n\tprotected readonly sendSlot = signal({ key: 0, currency: CURRENCIES[0] });\n\tprotected readonly getSlot = signal({ key: 0, currency: CURRENCIES[1] });\n\tprotected readonly sendAmount = signal(2_000_000);\n\tprotected readonly sendAmountSlot = signal({\n\t\tkey: 0,\n\t\tamount: 2_000_000,\n\t\tcode: CURRENCIES[0].code,\n\t\tdecimals: CURRENCIES[0].decimals,\n\t});\n\tprotected readonly amountSlot = signal({ key: 0, amount: 80 });\n\tprotected readonly badgeSlot = signal({ key: 0, sendCode: 'VND', rate: '0.00004', getCode: 'USD' });\n\n\tprotected readonly sendCurrency = computed(() => this.sendSlot().currency);\n\tprotected readonly getCurrency = computed(() => this.getSlot().currency);\n\n\tprotected readonly formattedRate = computed(() => {\n\t\tconst rate = this.sendSlot().currency.rateToVND / this.getSlot().currency.rateToVND;\n\t\treturn new Intl.NumberFormat('en', { maximumSignificantDigits: 4 }).format(rate);\n\t});\n\n\tprotected cycleSendCurrency(): void {\n\t\tconst curIdx = CURRENCIES.indexOf(this.sendSlot().currency);\n\t\tconst getIdx = CURRENCIES.indexOf(this.getSlot().currency);\n\t\tlet next = (curIdx + 1) % CURRENCIES.length;\n\t\tif (next === getIdx) next = (next + 1) % CURRENCIES.length;\n\t\tthis.sendSlot.update((s) => ({ key: s.key + 1, currency: CURRENCIES[next] }));\n\t\tthis.sendAmountSlot.update((s) => ({\n\t\t\tkey: s.key + 1,\n\t\t\tamount: s.amount,\n\t\t\tcode: CURRENCIES[next].code,\n\t\t\tdecimals: CURRENCIES[next].decimals,\n\t\t}));\n\t\tthis.triggerAnimation();\n\t}\n\n\tprotected cycleGetCurrency(): void {\n\t\tconst curIdx = CURRENCIES.indexOf(this.getSlot().currency);\n\t\tconst sendIdx = CURRENCIES.indexOf(this.sendSlot().currency);\n\t\tlet next = (curIdx + 1) % CURRENCIES.length;\n\t\tif (next === sendIdx) next = (next + 1) % CURRENCIES.length;\n\t\tthis.getSlot.update((s) => ({ key: s.key + 1, currency: CURRENCIES[next] }));\n\t\tthis.triggerAnimation();\n\t}\n\n\tprotected swapCurrencies(): void {\n\t\tconst sendCurrency = this.sendSlot().currency;\n\t\tconst getCurrency = this.getSlot().currency;\n\t\tconst prevGetAmount = this.amountSlot().amount;\n\t\tthis.sendSlot.update((s) => ({ key: s.key + 1, currency: getCurrency }));\n\t\tthis.getSlot.update((s) => ({ key: s.key + 1, currency: sendCurrency }));\n\t\tthis.sendAmount.set(prevGetAmount);\n\t\tthis.sendAmountSlot.update((s) => ({\n\t\t\tkey: s.key + 1,\n\t\t\tamount: prevGetAmount,\n\t\t\tcode: getCurrency.code,\n\t\t\tdecimals: getCurrency.decimals,\n\t\t}));\n\t\tthis.triggerAnimation();\n\t}\n\n\tprivate calcGetAmount(): number {\n\t\treturn (this.sendAmount() * this.sendSlot().currency.rateToVND) / this.getSlot().currency.rateToVND;\n\t}\n\n\tprivate triggerAnimation(): void {\n\t\tconst to = this.calcGetAmount();\n\t\tthis.amountSlot.update((s) => ({ key: s.key + 1, amount: to }));\n\t\tconst rate = this.sendSlot().currency.rateToVND / this.getSlot().currency.rateToVND;\n\t\tconst formattedRate = new Intl.NumberFormat('en', { maximumSignificantDigits: 4 }).format(rate);\n\t\tthis.badgeSlot.update((s) => ({\n\t\t\tkey: s.key + 1,\n\t\t\tsendCode: this.sendSlot().currency.code,\n\t\t\trate: formattedRate,\n\t\t\tgetCode: this.getSlot().currency.code,\n\t\t}));\n\t}\n}"
+ "content": "import { CurrencyPipe, DatePipe } from '@angular/common';\nimport { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowDown, lucideArrowLeftRight } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface CurrencyDef {\n\tcode: string;\n\tflag: string | null;\n\trateToVND: number;\n\tdecimals: string;\n}\n\nconst CURRENCIES: CurrencyDef[] = [\n\t{ code: 'VND', flag: 'assets/flags/VN.svg', rateToVND: 1, decimals: '1.0-0' },\n\t{ code: 'USD', flag: 'assets/flags/US.svg', rateToVND: 25000, decimals: '1.2-2' },\n\t{ code: 'EUR', flag: null, rateToVND: 27000, decimals: '1.2-2' },\n\t{ code: 'JPY', flag: 'assets/flags/JP.svg', rateToVND: 165, decimals: '1.0-0' },\n\t{ code: 'AUD', flag: 'assets/flags/AU.svg', rateToVND: 16000, decimals: '1.2-2' },\n];\n\n@Component({\n\tselector: 'sim-card-12',\n\timports: [NgIcon, DatePipe, CurrencyPipe, HlmIconImports, HlmCardImports, HlmButtonImports, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideArrowDown, lucideArrowLeftRight })],\n\thost: { class: 'w-full' },\n\tstyles: [\n\t\t`\n\t\t\t@keyframes slotEnter {\n\t\t\t\tfrom {\n\t\t\t\t\ttransform: translateY(110%);\n\t\t\t\t\tfilter: blur(4px);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t\tfilter: blur(0);\n\t\t\t\t}\n\t\t\t}\n\t\t\t@keyframes slotLeave {\n\t\t\t\tfrom {\n\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t\tfilter: blur(0);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\ttransform: translateY(-110%);\n\t\t\t\t\tfilter: blur(4px);\n\t\t\t\t}\n\t\t\t}\n\t\t\t.slot-enter {\n\t\t\t\tanimation: slotEnter 150ms 120ms cubic-bezier(0.215, 0.61, 0.355, 1) both;\n\t\t\t}\n\t\t\t.slot-leave {\n\t\t\t\tanimation: slotLeave 120ms cubic-bezier(0.55, 0, 1, 0.45) both;\n\t\t\t}\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t.slot-enter,\n\t\t\t\t.slot-leave {\n\t\t\t\t\tanimation-duration: 1ms;\n\t\t\t\t\tanimation-delay: 0ms;\n\t\t\t\t}\n\t\t\t}\n\t\t`,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
Convert \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t1 {{ badgeSlot().sendCode }} = {{ badgeSlot().rate }} {{ badgeSlot().getCode }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t@for (slot of [badgeSlot()]; track slot.key) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t1 {{ slot.sendCode }} = {{ slot.rate }} {{ slot.getCode }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\tLive \n\t\t\t\t\t· \n\t\t\t\t\t{{ currentDate | date: 'shortTime' }} \n\t\t\t\t \n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
Tap a currency to switch - use the arrow to swap
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card12Component {\n\tprotected readonly currentDate = new Date();\n\tprotected readonly currencies = CURRENCIES;\n\n\tprotected readonly sendSlot = signal({ key: 0, currency: CURRENCIES[0] });\n\tprotected readonly getSlot = signal({ key: 0, currency: CURRENCIES[1] });\n\tprotected readonly sendAmount = signal(2_000_000);\n\tprotected readonly sendAmountSlot = signal({\n\t\tkey: 0,\n\t\tamount: 2_000_000,\n\t\tcode: CURRENCIES[0].code,\n\t\tdecimals: CURRENCIES[0].decimals,\n\t});\n\tprotected readonly amountSlot = signal({ key: 0, amount: 80 });\n\tprotected readonly badgeSlot = signal({ key: 0, sendCode: 'VND', rate: '0.00004', getCode: 'USD' });\n\n\tprotected readonly sendCurrency = computed(() => this.sendSlot().currency);\n\tprotected readonly getCurrency = computed(() => this.getSlot().currency);\n\tprotected readonly formattedRate = computed(() => {\n\t\tconst rate = this.sendSlot().currency.rateToVND / this.getSlot().currency.rateToVND;\n\t\treturn new Intl.NumberFormat('en', { maximumSignificantDigits: 4 }).format(rate);\n\t});\n\n\tprotected cycleSendCurrency(): void {\n\t\tconst curIdx = CURRENCIES.indexOf(this.sendSlot().currency);\n\t\tconst getIdx = CURRENCIES.indexOf(this.getSlot().currency);\n\t\tlet next = (curIdx + 1) % CURRENCIES.length;\n\t\tif (next === getIdx) next = (next + 1) % CURRENCIES.length;\n\t\tthis.sendSlot.update((s) => ({ key: s.key + 1, currency: CURRENCIES[next] }));\n\t\tthis.sendAmountSlot.update((s) => ({\n\t\t\tkey: s.key + 1,\n\t\t\tamount: s.amount,\n\t\t\tcode: CURRENCIES[next].code,\n\t\t\tdecimals: CURRENCIES[next].decimals,\n\t\t}));\n\t\tthis.triggerAnimation();\n\t}\n\n\tprotected cycleGetCurrency(): void {\n\t\tconst curIdx = CURRENCIES.indexOf(this.getSlot().currency);\n\t\tconst sendIdx = CURRENCIES.indexOf(this.sendSlot().currency);\n\t\tlet next = (curIdx + 1) % CURRENCIES.length;\n\t\tif (next === sendIdx) next = (next + 1) % CURRENCIES.length;\n\t\tthis.getSlot.update((s) => ({ key: s.key + 1, currency: CURRENCIES[next] }));\n\t\tthis.triggerAnimation();\n\t}\n\n\tprotected swapCurrencies(): void {\n\t\tconst sendCurrency = this.sendSlot().currency;\n\t\tconst getCurrency = this.getSlot().currency;\n\t\tconst prevGetAmount = this.amountSlot().amount;\n\t\tthis.sendSlot.update((s) => ({ key: s.key + 1, currency: getCurrency }));\n\t\tthis.getSlot.update((s) => ({ key: s.key + 1, currency: sendCurrency }));\n\t\tthis.sendAmount.set(prevGetAmount);\n\t\tthis.sendAmountSlot.update((s) => ({\n\t\t\tkey: s.key + 1,\n\t\t\tamount: prevGetAmount,\n\t\t\tcode: getCurrency.code,\n\t\t\tdecimals: getCurrency.decimals,\n\t\t}));\n\t\tthis.triggerAnimation();\n\t}\n\n\tprivate calcGetAmount(): number {\n\t\treturn (this.sendAmount() * this.sendSlot().currency.rateToVND) / this.getSlot().currency.rateToVND;\n\t}\n\n\tprivate triggerAnimation(): void {\n\t\tconst to = this.calcGetAmount();\n\t\tthis.amountSlot.update((s) => ({ key: s.key + 1, amount: to }));\n\t\tconst rate = this.sendSlot().currency.rateToVND / this.getSlot().currency.rateToVND;\n\t\tconst formattedRate = new Intl.NumberFormat('en', { maximumSignificantDigits: 4 }).format(rate);\n\t\tthis.badgeSlot.update((s) => ({\n\t\t\tkey: s.key + 1,\n\t\t\tsendCode: this.sendSlot().currency.code,\n\t\t\trate: formattedRate,\n\t\t\tgetCode: this.getSlot().currency.code,\n\t\t}));\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-14.json b/public/registry/card-14.json
index 934c5e61..75f34111 100644
--- a/public/registry/card-14.json
+++ b/public/registry/card-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { NgClass } from '@angular/common';\nimport { afterNextRender, Component, computed, OnDestroy, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideArrowDown,\n\tlucideArrowLeftRight,\n\tlucideCheck,\n\tlucideDot,\n\tlucideEllipsis,\n\tlucideRefreshCw,\n\tlucideSquircle,\n} from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmProgressImports } from '@spartan-ng/helm/progress';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\ninterface Task {\n\tid: string;\n\tname: string;\n\tstate: 'Booting' | 'Running';\n\tstatus: 'running' | 'idle' | 'completed';\n\ttime?: number;\n}\n\nconst INITIAL_TASKS: Task[] = [\n\t{ id: 'task-01', name: 'Allocate microVM', status: 'idle', state: 'Booting' },\n\t{ id: 'task-02', name: 'Restore snapshot', status: 'idle', state: 'Booting' },\n\t{ id: 'task-03', name: 'Mount ephemeral FS', status: 'idle', state: 'Booting' },\n\t{ id: 'task-04', name: 'Boot runtime - Node 26', status: 'idle', state: 'Booting' },\n\t{ id: 'task-05', name: 'Execute main.js', status: 'idle', state: 'Running' },\n\t{ id: 'task-06', name: 'Reclaim sandbox', status: 'idle', state: 'Booting' },\n];\n\n@Component({\n\tselector: 'sim-card-14',\n\timports: [\n\t\tNgIcon,\n\t\tNgClass,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmBadgeImports,\n\t\tHlmSpinnerImports,\n\t\tHlmProgressImports,\n\t],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideArrowDown,\n\t\t\tlucideArrowLeftRight,\n\t\t\tlucideSquircle,\n\t\t\tlucideCheck,\n\t\t\tlucideEllipsis,\n\t\t\tlucideDot,\n\t\t\tlucideRefreshCw,\n\t\t}),\n\t],\n\thost: { class: 'w-full' },\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Sandbox \n\t\t\t\t\t\tnode26 \n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t@if (pipelineCompleted()) {\n\t\t\t\t\t\t\t
Done \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t
{{ currentState() }} \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t@for (task of taskItems(); track task.id) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t@switch (task.status) {\n\t\t\t\t\t\t\t\t\t\t@case ('running') {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@case ('idle') {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@case ('completed') {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{{ task.name }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@if (task.time) {\n\t\t\t\t\t\t\t\t\t{{ task.time }}ms \n\t\t\t\t\t\t\t\t} @else if (task.status === 'idle') {\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ elapsedDisplay() }}\n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t{{ footerLabel() }} \n\t\t\t\t\t\t@if (pipelineCompleted()) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tRe-run\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card14Component implements OnDestroy {\n\tprotected readonly taskItems = signal(INITIAL_TASKS.map((t) => ({ ...t })));\n\tprotected readonly elapsedMs = signal(0);\n\tprotected readonly pipelineCompleted = signal(false);\n\n\tprotected readonly currentRunningTask = computed(() => this.taskItems().find((t) => t.status === 'running'));\n\n\tprotected readonly currentState = computed(() => this.currentRunningTask()?.state ?? 'Booting');\n\n\tprotected readonly progress = computed(() => {\n\t\tconst items = this.taskItems();\n\t\tconst completed = items.filter((t) => t.status === 'completed').length;\n\t\tconst hasRunning = items.some((t) => t.status === 'running');\n\t\treturn Math.round(((completed + (hasRunning ? 0.5 : 0)) / items.length) * 100);\n\t});\n\n\tprotected readonly elapsedDisplay = computed(() => {\n\t\tconst ms = this.elapsedMs();\n\t\treturn (ms / 1000).toFixed(2) + 's';\n\t});\n\n\tprotected readonly footerLabel = computed(() => {\n\t\tif (this.pipelineCompleted()) return 'Completed';\n\t\tconst state = this.currentState();\n\t\treturn state === 'Running' ? 'Executing...' : 'Provisioning...';\n\t});\n\n\tprivate timerInterval?: ReturnType;\n\tprivate startTime = 0;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startPipeline());\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.clearTimer();\n\t}\n\n\tprotected async startPipeline(): Promise {\n\t\tthis.clearTimer();\n\t\tthis.taskItems.set(INITIAL_TASKS.map((t) => ({ ...t })));\n\t\tthis.elapsedMs.set(0);\n\t\tthis.pipelineCompleted.set(false);\n\n\t\tthis.startTime = Date.now();\n\t\tthis.timerInterval = setInterval(() => this.elapsedMs.set(Date.now() - this.startTime), 100);\n\n\t\tconst items = this.taskItems();\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tthis.taskItems.update((list) => list.map((t, idx) => (idx === i ? { ...t, status: 'running' } : t)));\n\n\t\t\tconst duration = 400 + Math.random() * 2000;\n\t\t\tawait this.sleep(duration);\n\n\t\t\tthis.taskItems.update((list) =>\n\t\t\t\tlist.map((t, idx) => (idx === i ? { ...t, status: 'completed', time: Math.round(duration) } : t)),\n\t\t\t);\n\t\t}\n\n\t\tthis.clearTimer();\n\t\tthis.pipelineCompleted.set(true);\n\t}\n\n\tprivate clearTimer(): void {\n\t\tif (this.timerInterval) {\n\t\t\tclearInterval(this.timerInterval);\n\t\t\tthis.timerInterval = undefined;\n\t\t}\n\t}\n\n\tprivate sleep(ms: number): Promise {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n}"
+ "content": "import { NgClass } from '@angular/common';\nimport { afterNextRender, Component, computed, OnDestroy, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideArrowDown,\n\tlucideArrowLeftRight,\n\tlucideCheck,\n\tlucideDot,\n\tlucideEllipsis,\n\tlucideRefreshCw,\n\tlucideSquircle,\n} from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmProgressImports } from '@spartan-ng/helm/progress';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\ninterface Task {\n\tid: string;\n\tname: string;\n\tstate: 'Booting' | 'Running';\n\tstatus: 'running' | 'idle' | 'completed';\n\ttime?: number;\n}\n\nconst INITIAL_TASKS: Task[] = [\n\t{ id: 'task-01', name: 'Allocate microVM', status: 'idle', state: 'Booting' },\n\t{ id: 'task-02', name: 'Restore snapshot', status: 'idle', state: 'Booting' },\n\t{ id: 'task-03', name: 'Mount ephemeral FS', status: 'idle', state: 'Booting' },\n\t{ id: 'task-04', name: 'Boot runtime - Node 26', status: 'idle', state: 'Booting' },\n\t{ id: 'task-05', name: 'Execute main.js', status: 'idle', state: 'Running' },\n\t{ id: 'task-06', name: 'Reclaim sandbox', status: 'idle', state: 'Booting' },\n];\n\n@Component({\n\tselector: 'sim-card-14',\n\timports: [\n\t\tNgIcon,\n\t\tNgClass,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmBadgeImports,\n\t\tHlmSpinnerImports,\n\t\tHlmProgressImports,\n\t],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideArrowDown,\n\t\t\tlucideArrowLeftRight,\n\t\t\tlucideSquircle,\n\t\t\tlucideCheck,\n\t\t\tlucideEllipsis,\n\t\t\tlucideDot,\n\t\t\tlucideRefreshCw,\n\t\t}),\n\t],\n\thost: { class: 'w-full' },\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Sandbox \n\t\t\t\t\t\tnode26 \n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t@if (pipelineCompleted()) {\n\t\t\t\t\t\t\t
Done \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t
{{ currentState() }} \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t@for (task of taskItems(); track task.id) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t@switch (task.status) {\n\t\t\t\t\t\t\t\t\t\t@case ('running') {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@case ('idle') {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@case ('completed') {\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{{ task.name }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@if (task.time) {\n\t\t\t\t\t\t\t\t\t{{ task.time }}ms \n\t\t\t\t\t\t\t\t} @else if (task.status === 'idle') {\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t \n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ elapsedDisplay() }}\n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t{{ footerLabel() }} \n\t\t\t\t\t\t@if (pipelineCompleted()) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tRe-run\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card14Component implements OnDestroy {\n\tprotected readonly taskItems = signal(INITIAL_TASKS.map((t) => ({ ...t })));\n\tprotected readonly elapsedMs = signal(0);\n\tprotected readonly pipelineCompleted = signal(false);\n\n\tprotected readonly currentRunningTask = computed(() => this.taskItems().find((t) => t.status === 'running'));\n\tprotected readonly currentState = computed(() => this.currentRunningTask()?.state ?? 'Booting');\n\tprotected readonly progress = computed(() => {\n\t\tconst items = this.taskItems();\n\t\tconst completed = items.filter((t) => t.status === 'completed').length;\n\t\tconst hasRunning = items.some((t) => t.status === 'running');\n\t\treturn Math.round(((completed + (hasRunning ? 0.5 : 0)) / items.length) * 100);\n\t});\n\tprotected readonly elapsedDisplay = computed(() => {\n\t\tconst ms = this.elapsedMs();\n\t\treturn (ms / 1000).toFixed(2) + 's';\n\t});\n\tprotected readonly footerLabel = computed(() => {\n\t\tif (this.pipelineCompleted()) return 'Completed';\n\t\tconst state = this.currentState();\n\t\treturn state === 'Running' ? 'Executing...' : 'Provisioning...';\n\t});\n\n\tprivate timerInterval?: ReturnType;\n\tprivate startTime = 0;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startPipeline());\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.clearTimer();\n\t}\n\n\tprotected async startPipeline(): Promise {\n\t\tthis.clearTimer();\n\t\tthis.taskItems.set(INITIAL_TASKS.map((t) => ({ ...t })));\n\t\tthis.elapsedMs.set(0);\n\t\tthis.pipelineCompleted.set(false);\n\n\t\tthis.startTime = Date.now();\n\t\tthis.timerInterval = setInterval(() => this.elapsedMs.set(Date.now() - this.startTime), 100);\n\n\t\tconst items = this.taskItems();\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tthis.taskItems.update((list) => list.map((t, idx) => (idx === i ? { ...t, status: 'running' } : t)));\n\n\t\t\tconst duration = 400 + Math.random() * 2000;\n\t\t\tawait this.sleep(duration);\n\n\t\t\tthis.taskItems.update((list) =>\n\t\t\t\tlist.map((t, idx) => (idx === i ? { ...t, status: 'completed', time: Math.round(duration) } : t)),\n\t\t\t);\n\t\t}\n\n\t\tthis.clearTimer();\n\t\tthis.pipelineCompleted.set(true);\n\t}\n\n\tprivate clearTimer(): void {\n\t\tif (this.timerInterval) {\n\t\t\tclearInterval(this.timerInterval);\n\t\t\tthis.timerInterval = undefined;\n\t\t}\n\t}\n\n\tprivate sleep(ms: number): Promise {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/card-15.json b/public/registry/card-15.json
index 46315d24..6af13ac4 100644
--- a/public/registry/card-15.json
+++ b/public/registry/card-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { DatePipe } from '@angular/common';\nimport { Component, computed, inject, Injectable, signal } from '@angular/core';\nimport { type AbstractControl } from '@angular/forms';\nimport { form, FormField, required, submit } from '@angular/forms/signals';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight, lucidePlus, lucideX } from '@ng-icons/lucide';\nimport { ErrorStateMatcher } from '@spartan-ng/brain/forms';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmRadioGroupImports } from '@spartan-ng/helm/radio-group';\nimport { HlmSeparator } from '@spartan-ng/helm/separator';\nimport { hlm } from '@spartan-ng/helm/utils';\n\n@Injectable()\nclass ShowOnSubmitErrorStateMatcher implements ErrorStateMatcher {\n\treadonly submitted = signal(false);\n\tisInvalid(control: AbstractControl): boolean {\n\t\treturn !!(control?.invalid && this.submitted());\n\t}\n}\n\ninterface CalendarEvent {\n\tid: string;\n\teventName: string;\n\ttime: string;\n\tdate: Date;\n\tcategory: { value: string; label: string; bgClass: string; textClass: string; dotClass: string; badgeClass: string };\n}\n\ninterface EventFormModel {\n\teventName: string;\n\ttime: string;\n\tcategory: {\n\t\tvalue: string;\n\t\tlabel: string;\n\t\tbgClass: string;\n\t\ttextClass: string;\n\t\tdotClass: string;\n\t\tbadgeClass: string;\n\t} | null;\n}\n\nexport const DefaultEventStyle = [\n\t{\n\t\tvalue: 'sky',\n\t\tlabel: 'Sky',\n\t\tbgClass: 'bg-sky-400 data-[state=checked]:bg-sky-400 border-sky-400 data-[state=checked]:border-sky-400',\n\t},\n\t{\n\t\tvalue: 'amber',\n\t\tlabel: 'Amber',\n\t\tbgClass: 'bg-amber-400 data-[state=checked]:bg-amber-400 border-amber-400 data-[state=checked]:border-amber-400',\n\t},\n\t{\n\t\tvalue: 'violet',\n\t\tlabel: 'Violet',\n\t\tbgClass:\n\t\t\t'bg-violet-400 data-[state=checked]:bg-violet-400 border-violet-400 data-[state=checked]:border-violet-400',\n\t},\n\t{\n\t\tvalue: 'rose',\n\t\tlabel: 'Rose',\n\t\tbgClass: 'bg-rose-400 data-[state=checked]:bg-rose-400 border-rose-400 data-[state=checked]:border-rose-400',\n\t},\n\t{\n\t\tvalue: 'emerald',\n\t\tlabel: 'Emerald',\n\t\tbgClass:\n\t\t\t'bg-emerald-400 data-[state=checked]:bg-emerald-400 border-emerald-400 data-[state=checked]:border-emerald-400',\n\t},\n\t{\n\t\tvalue: 'orange',\n\t\tlabel: 'Orange',\n\t\tbgClass:\n\t\t\t'bg-orange-400 data-[state=checked]:bg-orange-400 border-orange-400 data-[state=checked]:border-orange-400',\n\t},\n];\n\n@Component({\n\tselector: 'sim-card-15',\n\tstyles: [\n\t\t`\n\t\t\t@keyframes event-enter {\n\t\t\t\tfrom {\n\t\t\t\t\topacity: 0;\n\t\t\t\t\ttransform: translateY(-6px);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t}\n\t\t\t}\n\t\t\t.event-enter {\n\t\t\t\tanimation: event-enter 220ms cubic-bezier(0.215, 0.61, 0.355, 1) both;\n\t\t\t}\n\t\t`,\n\t],\n\timports: [\n\t\tNgIcon,\n\t\tDatePipe,\n\t\tMaskitoDirective,\n\t\tFormField,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmCalendarImports,\n\t\tHlmBadgeImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmSeparator,\n\t],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronLeft, lucideChevronRight, lucidePlus, lucideX }),\n\t\tShowOnSubmitErrorStateMatcher,\n\t\t{ provide: ErrorStateMatcher, useExisting: ShowOnSubmitErrorStateMatcher },\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
{{ selectedDate() | date: 'MMM yyyy' }} \n\t\t\t\t
\n\t\t\t\t\tToday \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{{ selectedDate() | date: 'EEEE, MMM dd' }}
\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (event of selectedDateEvents(); track event.id) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{ event.time }} \n\t\t\t\t\t\t\t\t\t
{{ event.eventName }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{{ event.category.label }} \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t} @empty {\n\t\t\t\t\t\t\t
No events for this day.
\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAdd event\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t@for (item of colorOptions; track item) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
{{ _eventModel().category?.label }} \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tAdd \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card15Component {\n\tprotected selectedDate = signal(new Date());\n\tprotected focusedDate = signal(new Date());\n\tprotected readonly minDate = new Date(2023, 0, 1);\n\tprotected readonly maxDate = new Date(2030, 11, 31);\n\tprotected readonly mode = signal<'edit' | 'view'>('view');\n\tprotected readonly timeMask: MaskitoOptions = maskitoTimeOptionsGenerator({ mode: 'HH:MM' });\n\tprotected readonly colorOptions = [\n\t\t{\n\t\t\tvalue: 'meeting',\n\t\t\tlabel: 'Meeting',\n\t\t\ttextClass: 'text-sm text-sky-400',\n\t\t\tdotClass: 'bg-sky-400',\n\t\t\tbadgeClass: 'bg-sky-400/10! text-sky-600!',\n\t\t\tbgClass: 'bg-sky-400 data-[state=checked]:bg-sky-400 border-sky-400 data-[state=checked]:border-sky-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'personal',\n\t\t\tlabel: 'Personal',\n\t\t\ttextClass: 'text-sm text-amber-400',\n\t\t\tdotClass: 'bg-amber-400',\n\t\t\tbadgeClass: 'bg-amber-400/10! text-amber-600!',\n\t\t\tbgClass: 'bg-amber-400 data-[state=checked]:bg-amber-400 border-amber-400 data-[state=checked]:border-amber-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'work',\n\t\t\tlabel: 'Work',\n\t\t\ttextClass: 'text-sm text-violet-400',\n\t\t\tdotClass: 'bg-violet-400',\n\t\t\tbadgeClass: 'bg-violet-400/10! text-violet-600!',\n\t\t\tbgClass:\n\t\t\t\t'bg-violet-400 data-[state=checked]:bg-violet-400 border-violet-400 data-[state=checked]:border-violet-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'review',\n\t\t\tlabel: 'Review',\n\t\t\ttextClass: 'text-sm text-rose-400',\n\t\t\tdotClass: 'bg-rose-400',\n\t\t\tbadgeClass: 'bg-rose-400/10! text-rose-600!',\n\t\t\tbgClass: 'bg-rose-400 data-[state=checked]:bg-rose-400 border-rose-400 data-[state=checked]:border-rose-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'focus',\n\t\t\tlabel: 'Focus',\n\t\t\ttextClass: 'text-sm text-emerald-400',\n\t\t\tdotClass: 'bg-emerald-400',\n\t\t\tbadgeClass: 'bg-emerald-400/10! text-emerald-600!',\n\t\t\tbgClass:\n\t\t\t\t'bg-emerald-400 data-[state=checked]:bg-emerald-400 border-emerald-400 data-[state=checked]:border-emerald-400',\n\t\t},\n\t];\n\n\tprivate readonly _submitMatcher = inject(ShowOnSubmitErrorStateMatcher);\n\n\tprotected readonly events = signal([\n\t\t{\n\t\t\tid: '1',\n\t\t\teventName: 'Coffee with mentor',\n\t\t\ttime: '10:00',\n\t\t\tdate: new Date(),\n\t\t\tcategory: {\n\t\t\t\tvalue: 'personal',\n\t\t\t\tlabel: 'Personal',\n\t\t\t\ttextClass: 'text-sm text-amber-400',\n\t\t\t\tdotClass: 'bg-amber-400',\n\t\t\t\tbadgeClass: 'bg-amber-400/10!',\n\t\t\t\tbgClass:\n\t\t\t\t\t'bg-amber-400 data-[state=checked]:bg-amber-400 border-amber-400 data-[state=checked]:border-amber-400',\n\t\t\t},\n\t\t},\n\t]);\n\n\tprotected readonly selectedDateEvents = computed(() => {\n\t\tconst selected = this.selectedDate();\n\t\treturn this.events().filter((event) => event.date.toDateString() === selected.toDateString());\n\t});\n\n\tprotected readonly _eventModel = signal({\n\t\teventName: '',\n\t\ttime: '',\n\t\tcategory: null,\n\t});\n\tprotected readonly eventForm = form(this._eventModel, (schema) => {\n\t\trequired(schema.eventName);\n\t\trequired(schema.time);\n\t\trequired(schema.category);\n\t});\n\n\tprotected readonly calendarClass = hlm(\n\t\t'border-none px-0',\n\t\t'[&_button[brncalendarnextbutton]]:relative! [&_button[brncalendarpreviousbutton]]:relative!',\n\t\t'[&_button[brncalendarcellbutton]]:size-12 [&_td[brncalendarcell]]:size-12 [&_th]:w-12',\n\t\t'[&_div:has(>[brncalendarheader])]:justify-start! [&_div:has(>[brncalendarheader])]:pl-2!',\n\t\t'[&_thead]:border-b [&_thead_th]:pb-2',\n\t\t'[&_div:has(+_table)]:hidden',\n\t);\n\n\tprotected tagColor(color: string): string {\n\t\treturn hlm(\n\t\t\t'ring-offset-background group-[.cdk-keyboard-focused]:ring-ring aspect-square rounded-full border group-[.brn-radio-disabled]:cursor-not-allowed group-[.brn-radio-disabled]:opacity-50 group-[.cdk-keyboard-focused]:ring-2 group-[.cdk-keyboard-focused]:ring-offset-2',\n\t\t\tcolor,\n\t\t);\n\t}\n\n\tprotected setCurrentMonth(): void {\n\t\tconst newDate = new Date();\n\t\tthis.selectedDate.set(newDate);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected jumpToPreviousMonth() {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() - 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected jumpToNextMonth() {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() + 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected cancelEdit(): void {\n\t\tthis._submitMatcher.submitted.set(false);\n\t\tthis._eventModel.set({ eventName: '', time: '', category: null });\n\t\tthis.mode.set('view');\n\t}\n\n\tprotected onSubmit(): void {\n\t\tthis._submitMatcher.submitted.set(true);\n\t\tsubmit(this.eventForm, async () => {\n\t\t\tconst model = this._eventModel();\n\t\t\tthis.events.update((events) => [\n\t\t\t\t...events,\n\t\t\t\t{\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\teventName: model.eventName,\n\t\t\t\t\ttime: model.time,\n\t\t\t\t\tdate: this.selectedDate(),\n\t\t\t\t\tcategory: model.category!,\n\t\t\t\t},\n\t\t\t]);\n\t\t\tthis._submitMatcher.submitted.set(false);\n\t\t\tthis._eventModel.set({ eventName: '', time: '', category: null });\n\t\t\tthis.mode.set('view');\n\t\t});\n\t}\n}"
+ "content": "import { DatePipe } from '@angular/common';\nimport { Component, computed, inject, Injectable, signal } from '@angular/core';\nimport { type AbstractControl } from '@angular/forms';\nimport { form, FormField, required, submit } from '@angular/forms/signals';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { maskitoTime } from '@maskito/kit';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight, lucidePlus, lucideX } from '@ng-icons/lucide';\nimport { ErrorStateMatcher } from '@spartan-ng/brain/forms';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCalendarImports } from '@spartan-ng/helm/calendar';\nimport { HlmCardImports } from '@spartan-ng/helm/card';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmRadioGroupImports } from '@spartan-ng/helm/radio-group';\nimport { HlmSeparatorImports } from '@spartan-ng/helm/separator';\nimport { hlm } from '@spartan-ng/helm/utils';\n\n@Injectable()\nclass ShowOnSubmitErrorStateMatcher implements ErrorStateMatcher {\n\treadonly submitted = signal(false);\n\tisInvalid(control: AbstractControl): boolean {\n\t\treturn !!(control?.invalid && this.submitted());\n\t}\n}\n\ninterface CalendarEvent {\n\tid: string;\n\teventName: string;\n\ttime: string;\n\tdate: Date;\n\tcategory: { value: string; label: string; bgClass: string; textClass: string; dotClass: string; badgeClass: string };\n}\n\ninterface ColorOption {\n\tvalue: string;\n\tlabel: string;\n\ttextClass: string;\n\tdotClass: string;\n\tbadgeClass: string;\n\tbgClass: string;\n}\n\ninterface EventFormModel {\n\teventName: string;\n\ttime: string;\n\tcategory: {\n\t\tvalue: string;\n\t\tlabel: string;\n\t\tbgClass: string;\n\t\ttextClass: string;\n\t\tdotClass: string;\n\t\tbadgeClass: string;\n\t} | null;\n}\n\nexport const DefaultEventStyle = [\n\t{\n\t\tvalue: 'sky',\n\t\tlabel: 'Sky',\n\t\tbgClass: 'bg-sky-400 data-[state=checked]:bg-sky-400 border-sky-400 data-[state=checked]:border-sky-400',\n\t},\n\t{\n\t\tvalue: 'amber',\n\t\tlabel: 'Amber',\n\t\tbgClass: 'bg-amber-400 data-[state=checked]:bg-amber-400 border-amber-400 data-[state=checked]:border-amber-400',\n\t},\n\t{\n\t\tvalue: 'violet',\n\t\tlabel: 'Violet',\n\t\tbgClass:\n\t\t\t'bg-violet-400 data-[state=checked]:bg-violet-400 border-violet-400 data-[state=checked]:border-violet-400',\n\t},\n\t{\n\t\tvalue: 'rose',\n\t\tlabel: 'Rose',\n\t\tbgClass: 'bg-rose-400 data-[state=checked]:bg-rose-400 border-rose-400 data-[state=checked]:border-rose-400',\n\t},\n\t{\n\t\tvalue: 'emerald',\n\t\tlabel: 'Emerald',\n\t\tbgClass:\n\t\t\t'bg-emerald-400 data-[state=checked]:bg-emerald-400 border-emerald-400 data-[state=checked]:border-emerald-400',\n\t},\n\t{\n\t\tvalue: 'orange',\n\t\tlabel: 'Orange',\n\t\tbgClass:\n\t\t\t'bg-orange-400 data-[state=checked]:bg-orange-400 border-orange-400 data-[state=checked]:border-orange-400',\n\t},\n];\n\n@Component({\n\tselector: 'sim-card-15',\n\timports: [\n\t\tNgIcon,\n\t\tDatePipe,\n\t\tMaskitoDirective,\n\t\tFormField,\n\t\tHlmIconImports,\n\t\tHlmCardImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmCalendarImports,\n\t\tHlmBadgeImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmSeparatorImports,\n\t],\n\tproviders: [\n\t\tprovideIcons({ lucideChevronLeft, lucideChevronRight, lucidePlus, lucideX }),\n\t\tShowOnSubmitErrorStateMatcher,\n\t\t{ provide: ErrorStateMatcher, useExisting: ShowOnSubmitErrorStateMatcher },\n\t],\n\tstyles: [\n\t\t`\n\t\t\t@keyframes event-enter {\n\t\t\t\tfrom {\n\t\t\t\t\topacity: 0;\n\t\t\t\t\ttransform: translateY(-6px);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t}\n\t\t\t}\n\t\t\t.event-enter {\n\t\t\t\tanimation: event-enter 220ms cubic-bezier(0.215, 0.61, 0.355, 1) both;\n\t\t\t}\n\t\t`,\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
{{ selectedDate() | date: 'MMM yyyy' }} \n\t\t\t\t
\n\t\t\t\t\tToday \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{{ selectedDate() | date: 'EEEE, MMM dd' }}
\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (event of selectedDateEvents(); track event.id) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{ event.time }} \n\t\t\t\t\t\t\t\t\t
{{ event.eventName }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{{ event.category.label }} \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t} @empty {\n\t\t\t\t\t\t\t
No events for this day.
\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAdd event\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t@for (item of colorOptions; track item) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
{{ _eventModel().category?.label }} \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tAdd \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Card15Component {\n\tprotected selectedDate = signal(new Date());\n\tprotected focusedDate = signal(new Date());\n\tprotected readonly minDate = new Date(2023, 0, 1);\n\tprotected readonly maxDate = new Date(2030, 11, 31);\n\tprotected readonly mode = signal<'edit' | 'view'>('view');\n\tprotected readonly timeMask: MaskitoOptions = maskitoTime({ mode: 'HH:MM' });\n\tprotected readonly colorOptions: ColorOption[] = [\n\t\t{\n\t\t\tvalue: 'meeting',\n\t\t\tlabel: 'Meeting',\n\t\t\ttextClass: 'text-sm text-sky-400',\n\t\t\tdotClass: 'bg-sky-400',\n\t\t\tbadgeClass: 'bg-sky-400/10! text-sky-600!',\n\t\t\tbgClass: 'bg-sky-400 data-[state=checked]:bg-sky-400 border-sky-400 data-[state=checked]:border-sky-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'personal',\n\t\t\tlabel: 'Personal',\n\t\t\ttextClass: 'text-sm text-amber-400',\n\t\t\tdotClass: 'bg-amber-400',\n\t\t\tbadgeClass: 'bg-amber-400/10! text-amber-600!',\n\t\t\tbgClass: 'bg-amber-400 data-[state=checked]:bg-amber-400 border-amber-400 data-[state=checked]:border-amber-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'work',\n\t\t\tlabel: 'Work',\n\t\t\ttextClass: 'text-sm text-violet-400',\n\t\t\tdotClass: 'bg-violet-400',\n\t\t\tbadgeClass: 'bg-violet-400/10! text-violet-600!',\n\t\t\tbgClass:\n\t\t\t\t'bg-violet-400 data-[state=checked]:bg-violet-400 border-violet-400 data-[state=checked]:border-violet-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'review',\n\t\t\tlabel: 'Review',\n\t\t\ttextClass: 'text-sm text-rose-400',\n\t\t\tdotClass: 'bg-rose-400',\n\t\t\tbadgeClass: 'bg-rose-400/10! text-rose-600!',\n\t\t\tbgClass: 'bg-rose-400 data-[state=checked]:bg-rose-400 border-rose-400 data-[state=checked]:border-rose-400',\n\t\t},\n\t\t{\n\t\t\tvalue: 'focus',\n\t\t\tlabel: 'Focus',\n\t\t\ttextClass: 'text-sm text-emerald-400',\n\t\t\tdotClass: 'bg-emerald-400',\n\t\t\tbadgeClass: 'bg-emerald-400/10! text-emerald-600!',\n\t\t\tbgClass:\n\t\t\t\t'bg-emerald-400 data-[state=checked]:bg-emerald-400 border-emerald-400 data-[state=checked]:border-emerald-400',\n\t\t},\n\t];\n\n\tprivate readonly _submitMatcher = inject(ShowOnSubmitErrorStateMatcher);\n\n\tprotected readonly events = signal([\n\t\t{\n\t\t\tid: '1',\n\t\t\teventName: 'Coffee with mentor',\n\t\t\ttime: '10:00',\n\t\t\tdate: new Date(),\n\t\t\tcategory: {\n\t\t\t\tvalue: 'personal',\n\t\t\t\tlabel: 'Personal',\n\t\t\t\ttextClass: 'text-sm text-amber-400',\n\t\t\t\tdotClass: 'bg-amber-400',\n\t\t\t\tbadgeClass: 'bg-amber-400/10!',\n\t\t\t\tbgClass:\n\t\t\t\t\t'bg-amber-400 data-[state=checked]:bg-amber-400 border-amber-400 data-[state=checked]:border-amber-400',\n\t\t\t},\n\t\t},\n\t]);\n\n\tprotected readonly selectedDateEvents = computed(() => {\n\t\tconst selected = this.selectedDate();\n\t\treturn this.events().filter((event) => event.date.toDateString() === selected.toDateString());\n\t});\n\n\tprotected readonly _eventModel = signal({\n\t\teventName: '',\n\t\ttime: '',\n\t\tcategory: null,\n\t});\n\tprotected readonly eventForm = form(this._eventModel, (schema) => {\n\t\trequired(schema.eventName);\n\t\trequired(schema.time);\n\t\trequired(schema.category);\n\t});\n\n\tprotected readonly calendarClass = hlm(\n\t\t'border-none px-0',\n\t\t'[&_button[brncalendarnextbutton]]:relative! [&_button[brncalendarpreviousbutton]]:relative!',\n\t\t'[&_button[brncalendarcellbutton]]:size-12 [&_td[brncalendarcell]]:size-12 [&_th]:w-12',\n\t\t'[&_div:has(>[brncalendarheader])]:justify-start! [&_div:has(>[brncalendarheader])]:pl-2!',\n\t\t'[&_thead]:border-b [&_thead_th]:pb-2',\n\t\t'[&_div:has(+_table)]:hidden',\n\t);\n\n\tprotected tagColor(color: string): string {\n\t\treturn hlm(\n\t\t\t'ring-offset-background group-[.cdk-keyboard-focused]:ring-ring aspect-square rounded-full border group-[.brn-radio-disabled]:cursor-not-allowed group-[.brn-radio-disabled]:opacity-50 group-[.cdk-keyboard-focused]:ring-2 group-[.cdk-keyboard-focused]:ring-offset-2',\n\t\t\tcolor,\n\t\t);\n\t}\n\n\tprotected selectCategory(category: ColorOption): void {\n\t\tthis._eventModel.update((model) => ({ ...model, category }));\n\t}\n\n\tprotected setCurrentMonth(): void {\n\t\tconst newDate = new Date();\n\t\tthis.selectedDate.set(newDate);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected jumpToPreviousMonth(): void {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() - 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected jumpToNextMonth(): void {\n\t\tconst newDate = new Date(this.focusedDate());\n\t\tnewDate.setMonth(newDate.getMonth() + 2);\n\t\tthis.focusedDate.set(newDate);\n\t}\n\n\tprotected cancelEdit(): void {\n\t\tthis._submitMatcher.submitted.set(false);\n\t\tthis._eventModel.set({ eventName: '', time: '', category: null });\n\t\tthis.mode.set('view');\n\t}\n\n\tprotected onSubmit(): void {\n\t\tthis._submitMatcher.submitted.set(true);\n\t\tsubmit(this.eventForm, async () => {\n\t\t\tconst model = this._eventModel();\n\t\t\tthis.events.update((events) => [\n\t\t\t\t...events,\n\t\t\t\t{\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\teventName: model.eventName,\n\t\t\t\t\ttime: model.time,\n\t\t\t\t\tdate: this.selectedDate(),\n\t\t\t\t\tcategory: model.category!,\n\t\t\t\t},\n\t\t\t]);\n\t\t\tthis._submitMatcher.submitted.set(false);\n\t\t\tthis._eventModel.set({ eventName: '', time: '', category: null });\n\t\t\tthis.mode.set('view');\n\t\t});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-02.json b/public/registry/checkbox-02.json
index 068f5a8a..bf498575 100644
--- a/public/registry/checkbox-02.json
+++ b/public/registry/checkbox-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-02',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tCustom color checkbox \n\t\t
\n\t`,\n})\nexport class Checkbox02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-02',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tCustom color checkbox \n\t\t
\n\t`,\n})\nexport class Checkbox02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-03.json b/public/registry/checkbox-03.json
index ecd2a2f1..f1c8c8aa 100644
--- a/public/registry/checkbox-03.json
+++ b/public/registry/checkbox-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideMoon } from '@ng-icons/lucide';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-03',\n\timports: [HlmCheckbox, HlmLabel],\n\tproviders: [provideIcons({ lucideMoon })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tCustom icon \n\t\t
\n\t`,\n})\nexport class Checkbox03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideMoon } from '@ng-icons/lucide';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-03',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\tproviders: [provideIcons({ lucideMoon })],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tCustom icon \n\t\t
\n\t`,\n})\nexport class Checkbox03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-04.json b/public/registry/checkbox-04.json
index a62a6f63..62a31aa5 100644
--- a/public/registry/checkbox-04.json
+++ b/public/registry/checkbox-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-04',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tIndeterminate checkbox \n\t\t
\n\t`,\n})\nexport class Checkbox04Component {\n\tpublic readonly checked = model(true);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-04',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tIndeterminate checkbox \n\t\t
\n\t`,\n})\nexport class Checkbox04Component {\n\tpublic readonly checked = model(true);\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-05.json b/public/registry/checkbox-05.json
index 62d590a6..d3b742dd 100644
--- a/public/registry/checkbox-05.json
+++ b/public/registry/checkbox-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-05',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tDisabled checkbox \n\t\t
\n\t`,\n})\nexport class Checkbox05Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-05',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\tDisabled checkbox \n\t\t
\n\t`,\n})\nexport class Checkbox05Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-06.json b/public/registry/checkbox-06.json
index e70d33ff..3fd79556 100644
--- a/public/registry/checkbox-06.json
+++ b/public/registry/checkbox-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-06',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tClean your bedroom?\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox06Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-06',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tClean your bedroom?\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox06Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-07.json b/public/registry/checkbox-07.json
index a903a6e1..d425010f 100644
--- a/public/registry/checkbox-07.json
+++ b/public/registry/checkbox-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-07',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tRemember me \n\t\t\t\t\tSave my login details for next time. \n\t\t\t\t
\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox07Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-07',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tRemember me \n\t\t\t\t\tSave my login details for next time. \n\t\t\t\t
\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox07Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-08.json b/public/registry/checkbox-08.json
index f0947150..3d14db43 100644
--- a/public/registry/checkbox-08.json
+++ b/public/registry/checkbox-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-08',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tCheckbox label\n\t\t\t\t\t\t(Sublabel) \n\t\t\t\t\t
\n\t\t\t\t\t
Save my login details for next time. \n\t\t\t\t
\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-08',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tCheckbox label\n\t\t\t\t\t\t(Sublabel) \n\t\t\t\t\t
\n\t\t\t\t\t
Save my login details for next time. \n\t\t\t\t
\n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-09.json b/public/registry/checkbox-09.json
index 77ebeeba..ed5e193a 100644
--- a/public/registry/checkbox-09.json
+++ b/public/registry/checkbox-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-09',\n\timports: [HlmCheckbox, HlmLabel, HlmInput],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSubscribe to newsletter \n\t\t\t\t\tGet the latest news and updates from us. \n\t\t\t\t
\n\t\t\t \n\t\t
\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Checkbox09Component {\n\tpublic readonly checked = model(false);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-09',\n\timports: [HlmCheckboxImports, HlmLabelImports, HlmInputImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSubscribe to newsletter \n\t\t\t\t\tGet the latest news and updates from us. \n\t\t\t\t
\n\t\t\t \n\t\t
\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Checkbox09Component {\n\tpublic readonly checked = model(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-10.json b/public/registry/checkbox-10.json
index 656aac56..78fe0a7d 100644
--- a/public/registry/checkbox-10.json
+++ b/public/registry/checkbox-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-10',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tCheckbox label\n\t\t\t\t\t\t(Sublabel) \n\t\t\t\t\t \n\t\t\t\t\tThe description of the checkbox here. \n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox10Component {\n\tpublic readonly checked = model(false);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-10',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tCheckbox label\n\t\t\t\t\t\t(Sublabel) \n\t\t\t\t\t \n\t\t\t\t\tThe description of the checkbox here. \n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox10Component {\n\tpublic readonly checked = model(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-11.json b/public/registry/checkbox-11.json
index 86186591..86419f76 100644
--- a/public/registry/checkbox-11.json
+++ b/public/registry/checkbox-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-11',\n\timports: [HlmCheckbox, HlmLabel],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tRight checkbox \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox11Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-11',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tRight checkbox \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox11Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-12.json b/public/registry/checkbox-12.json
index 63413320..9d2c7255 100644
--- a/public/registry/checkbox-12.json
+++ b/public/registry/checkbox-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-12',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tCheckbox label\n\t\t\t\t\t\t(Sublabel) \n\t\t\t\t\t
\n\t\t\t\t\t
Save my login details for next time. \n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Checkbox12Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-12',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tCheckbox label\n\t\t\t\t\t\t(Sublabel) \n\t\t\t\t\t
\n\t\t\t\t\t
Save my login details for next time. \n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class Checkbox12Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-13.json b/public/registry/checkbox-13.json
index f41b942e..489ecfde 100644
--- a/public/registry/checkbox-13.json
+++ b/public/registry/checkbox-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-13',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tI agree to the\n\t\t\t\t\tterms and conditions \n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox13Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-13',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tI agree to the\n\t\t\t\t\tterms and conditions \n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox13Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-14.json b/public/registry/checkbox-14.json
index d752a6ff..cb74c359 100644
--- a/public/registry/checkbox-14.json
+++ b/public/registry/checkbox-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideRocket } from '@ng-icons/lucide';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-14',\n\timports: [HlmCheckbox, HlmLabel, HlmIcon, NgIcon],\n\tproviders: [provideIcons({ lucideRocket })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tBasic plan \n\t\t\t\t\tIncludes up to 10 users and 5 projects \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox14Component {\n\tpublic readonly checked = model(false);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideRocket } from '@ng-icons/lucide';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-14',\n\timports: [NgIcon, HlmCheckboxImports, HlmLabelImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideRocket })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tBasic plan \n\t\t\t\t\tIncludes up to 10 users and 5 projects \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox14Component {\n\tpublic readonly checked = model(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-15.json b/public/registry/checkbox-15.json
index 13042b52..7d54f296 100644
--- a/public/registry/checkbox-15.json
+++ b/public/registry/checkbox-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-15',\n\timports: [HlmCheckbox, HlmLabel],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\tMastercard ending in 1234 \n\t\t\t\t\tExpiry 06/2024 \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox15Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-15',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\tMastercard ending in 1234 \n\t\t\t\t\tExpiry 06/2024 \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox15Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-16.json b/public/registry/checkbox-16.json
index 8144cf26..1f3c5c24 100644
--- a/public/registry/checkbox-16.json
+++ b/public/registry/checkbox-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-16',\n\timports: [HlmCheckbox, HlmLabel, HlmAvatar, HlmAvatarImage, HlmAvatarFallback],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tAC \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tAlan Cooper\n\t\t\t\t\t\t@alan \n\t\t\t\t\t \n\t\t\t\t\tFrontend Developer, Payment \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox16Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-16',\n\timports: [HlmCheckboxImports, HlmLabelImports, HlmAvatarImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\tAC \n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tAlan Cooper\n\t\t\t\t\t\t@alan \n\t\t\t\t\t \n\t\t\t\t\tFrontend Developer, Payment \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox16Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-17.json b/public/registry/checkbox-17.json
index b12a3ba6..eee41d54 100644
--- a/public/registry/checkbox-17.json
+++ b/public/registry/checkbox-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideFrame, lucideHand, lucideMousePointer2, lucidePenTool } from '@ng-icons/lucide';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-17',\n\timports: [HlmCheckbox, HlmLabel, HlmIcon, NgIcon],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideMousePointer2,\n\t\t\tlucideFrame,\n\t\t\tlucidePenTool,\n\t\t\tlucideHand,\n\t\t}),\n\t],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t@for (item of items; track item.id) {\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t{{ item.label }}
\n\t\t\t\t \n\t\t\t}\n\t\t
\n\t`,\n})\nexport class Checkbox17Component {\n\titems: { id: number; value: string; label: string; icon: string }[] = [\n\t\t{ id: 1, value: 'frame', label: 'Frame', icon: 'lucideFrame' },\n\t\t{ id: 2, value: 'pointer', label: 'Pointer', icon: 'lucideMousePointer2' },\n\t\t{ id: 3, value: 'pen', label: 'Pen', icon: 'lucidePenTool' },\n\t\t{ id: 4, value: 'handTool', label: 'Hand tool', icon: 'lucideHand' },\n\t];\n}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideFrame, lucideHand, lucideMousePointer2, lucidePenTool } from '@ng-icons/lucide';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\ninterface CheckboxItem {\n\tid: number;\n\tvalue: string;\n\tlabel: string;\n\ticon: string;\n}\n\n@Component({\n\tselector: 'sim-checkbox-17',\n\timports: [NgIcon, HlmCheckboxImports, HlmLabelImports, HlmIconImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideMousePointer2,\n\t\t\tlucideFrame,\n\t\t\tlucidePenTool,\n\t\t\tlucideHand,\n\t\t}),\n\t],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t@for (item of items; track item.id) {\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t{{ item.label }}
\n\t\t\t\t \n\t\t\t}\n\t\t
\n\t`,\n})\nexport class Checkbox17Component {\n\tprotected readonly items: CheckboxItem[] = [\n\t\t{ id: 1, value: 'frame', label: 'Frame', icon: 'lucideFrame' },\n\t\t{ id: 2, value: 'pointer', label: 'Pointer', icon: 'lucideMousePointer2' },\n\t\t{ id: 3, value: 'pen', label: 'Pen', icon: 'lucidePenTool' },\n\t\t{ id: 4, value: 'handTool', label: 'Hand tool', icon: 'lucideHand' },\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-18.json b/public/registry/checkbox-18.json
index 2ac9679f..f7408f7d 100644
--- a/public/registry/checkbox-18.json
+++ b/public/registry/checkbox-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-18',\n\timports: [HlmCheckbox, HlmLabel],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tImplement new landing page\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox18Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-18',\n\timports: [HlmCheckboxImports, HlmLabelImports],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tImplement new landing page\n\t\t\t\t \n\t\t\t \n\t\t
\n\t`,\n})\nexport class Checkbox18Component {}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-19.json b/public/registry/checkbox-19.json
index 4e0a06e2..10d32c9a 100644
--- a/public/registry/checkbox-19.json
+++ b/public/registry/checkbox-19.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideRocket } from '@ng-icons/lucide';\nimport { HlmBadge } from '@spartan-ng/helm/badge';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-19',\n\timports: [HlmCheckbox, HlmLabel, HlmIcon, NgIcon, HlmBadge],\n\tproviders: [provideIcons({ lucideRocket })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
Basic plan \n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t$10 \n\t\t\t\t\t\tper month \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Limited \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tIncludes up to 10 users, 20GB individual data and access to all features.\n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox19Component {\n\tpublic readonly checked = model(false);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideRocket } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-19',\n\timports: [NgIcon, HlmCheckboxImports, HlmLabelImports, HlmIconImports, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideRocket })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
Basic plan \n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t$10 \n\t\t\t\t\t\tper month \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Limited \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tIncludes up to 10 users, 20GB individual data and access to all features.\n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox19Component {\n\tpublic readonly checked = model(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-20.json b/public/registry/checkbox-20.json
index 7d4aacfd..d17ab57f 100644
--- a/public/registry/checkbox-20.json
+++ b/public/registry/checkbox-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideZap } from '@ng-icons/lucide';\nimport { HlmBadge } from '@spartan-ng/helm/badge';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-20',\n\timports: [HlmCheckbox, HlmLabel, HlmIcon, NgIcon, HlmBadge],\n\tproviders: [provideIcons({ lucideZap })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
Enterprise plan \n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Limited \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t$40 \n\t\t\t\t\tper month \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tUnlimited users, unlimited individual data and access to all features.\n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox20Component {\n\tpublic readonly checked = model(false);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideZap } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-20',\n\timports: [NgIcon, HlmCheckboxImports, HlmLabelImports, HlmIconImports, HlmBadgeImports],\n\tproviders: [provideIcons({ lucideZap })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
Enterprise plan \n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Limited \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\t$40 \n\t\t\t\t\tper month \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\tUnlimited users, unlimited individual data and access to all features.\n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox20Component {\n\tpublic readonly checked = model(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-21.json b/public/registry/checkbox-21.json
index 70907122..565897fc 100644
--- a/public/registry/checkbox-21.json
+++ b/public/registry/checkbox-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { NgClass } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideZap } from '@ng-icons/lucide';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-21',\n\timports: [HlmCheckbox, HlmLabel, NgClass],\n\tproviders: [provideIcons({ lucideZap })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tDays of the week \n\t\t\t\n\t\t\t\t@for (item of items; track item.value) {\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.label[0] }}\n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.label }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox21Component {\n\titems: {\n\t\tvalue: string;\n\t\tlabel: string;\n\t\tdefaultChecked: boolean;\n\t\tdisabled: boolean;\n\t}[] = [\n\t\t{ value: '0', label: 'Sunday', defaultChecked: false, disabled: false },\n\t\t{ value: '1', label: 'Monday', defaultChecked: true, disabled: false },\n\t\t{ value: '2', label: 'Tuesday', defaultChecked: false, disabled: true },\n\t\t{ value: '3', label: 'Wednesday', defaultChecked: false, disabled: false },\n\t\t{ value: '4', label: 'Thursday', defaultChecked: false, disabled: false },\n\t\t{ value: '5', label: 'Friday', defaultChecked: false, disabled: false },\n\t\t{ value: '6', label: 'Saturday', defaultChecked: true, disabled: false },\n\t];\n}"
+ "content": "import { NgClass } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideZap } from '@ng-icons/lucide';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\ninterface CheckboxItem {\n\tvalue: string;\n\tlabel: string;\n\tdefaultChecked: boolean;\n\tdisabled: boolean;\n}\n\n@Component({\n\tselector: 'sim-checkbox-21',\n\timports: [NgClass, HlmCheckboxImports, HlmLabelImports],\n\tproviders: [provideIcons({ lucideZap })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tDays of the week \n\t\t\t\n\t\t\t\t@for (item of items; track item.value) {\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ item.label[0] }}\n\t\t\t\t\t\t \n\t\t\t\t\t\t{{ item.label }} \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox21Component {\n\tprotected readonly items: CheckboxItem[] = [\n\t\t{ value: '0', label: 'Sunday', defaultChecked: false, disabled: false },\n\t\t{ value: '1', label: 'Monday', defaultChecked: true, disabled: false },\n\t\t{ value: '2', label: 'Tuesday', defaultChecked: false, disabled: true },\n\t\t{ value: '3', label: 'Wednesday', defaultChecked: false, disabled: false },\n\t\t{ value: '4', label: 'Thursday', defaultChecked: false, disabled: false },\n\t\t{ value: '5', label: 'Friday', defaultChecked: false, disabled: false },\n\t\t{ value: '6', label: 'Saturday', defaultChecked: true, disabled: false },\n\t];\n}"
}
\ No newline at end of file
diff --git a/public/registry/checkbox-22.json b/public/registry/checkbox-22.json
index d910660a..741cca7b 100644
--- a/public/registry/checkbox-22.json
+++ b/public/registry/checkbox-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMoon, lucideSun } from '@ng-icons/lucide';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-22',\n\tproviders: [provideIcons({ lucideSun, lucideMoon })],\n\timports: [HlmCheckbox, HlmLabel, HlmIcon, NgIcon],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tAppearance mode toggle checkbox \n\t\t\t\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox22Component {\n\tpublic readonly checked = model(false);\n}"
+ "content": "import { Component, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMoon, lucideSun } from '@ng-icons/lucide';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-checkbox-22',\n\timports: [NgIcon, HlmCheckboxImports, HlmLabelImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideSun, lucideMoon })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\tAppearance mode toggle checkbox \n\t\t\t\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t
\n\t\t \n\t`,\n})\nexport class Checkbox22Component {\n\tpublic readonly checked = model(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-01.json b/public/registry/dialog-01.json
index d5c8aebc..49bd577b 100644
--- a/public/registry/dialog-01.json
+++ b/public/registry/dialog-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogDescription, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-01',\n\timports: [HlmButton, HlmDialogDescription, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tConfirm dialog \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tAre you sure? \n\t\t\t\t\t\n\t\t\t\t\t\tTake a moment to review the details provided to ensure you understand the implications.\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tOkay \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog01Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-01',\n\timports: [HlmButtonImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tConfirm dialog \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tAre you sure? \n\t\t\t\t\t\n\t\t\t\t\t\tTake a moment to review the details provided to ensure you understand the implications.\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tOkay \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog01Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-02.json b/public/registry/dialog-02.json
index 319249d9..9f5894d3 100644
--- a/public/registry/dialog-02.json
+++ b/public/registry/dialog-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-02',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [HlmButton, NgIcon, HlmIcon, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tConfirm dialog with icon \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tAre you sure? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tTake a moment to review the details provided to ensure you understand the implications.\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tOkay \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog02Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-02',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [NgIcon, HlmButtonImports, HlmIconImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tConfirm dialog with icon \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tAre you sure? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tTake a moment to review the details provided to ensure you understand the implications.\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tOkay \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog02Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-03.json b/public/registry/dialog-03.json
index df921397..85689aa0 100644
--- a/public/registry/dialog-03.json
+++ b/public/registry/dialog-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-03',\n\timports: [HlmButton, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (native scrollbar) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address.\n\t\t\t\t\t\t\t\t\t\t\tYou can sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot\n\t\t\t\t\t\t\t\t\t\t\tPassword" and follow the email verification steps to regain account access quickly and\n\t\t\t\t\t\t\t\t\t\t\tsecurely.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support,\n\t\t\t\t\t\t\t\t\t\t\tlive chat during business hours, an integrated support ticket system, and phone support\n\t\t\t\t\t\t\t\t\t\t\tspecifically for enterprise-level customers.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers\n\t\t\t\t\t\t\t\t\t\t\tlike Chrome and Firefox, mobile applications for iOS and Android, and desktop applications\n\t\t\t\t\t\t\t\t\t\t\tcompatible with Windows and macOS.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard,\n\t\t\t\t\t\t\t\t\t\t\tand American Express, digital payment platforms like PayPal, and direct bank transfers. Regional\n\t\t\t\t\t\t\t\t\t\t\tpayment options may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tOkay \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog03Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-03',\n\timports: [HlmButtonImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (native scrollbar) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address.\n\t\t\t\t\t\t\t\t\t\t\tYou can sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot\n\t\t\t\t\t\t\t\t\t\t\tPassword" and follow the email verification steps to regain account access quickly and\n\t\t\t\t\t\t\t\t\t\t\tsecurely.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support,\n\t\t\t\t\t\t\t\t\t\t\tlive chat during business hours, an integrated support ticket system, and phone support\n\t\t\t\t\t\t\t\t\t\t\tspecifically for enterprise-level customers.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers\n\t\t\t\t\t\t\t\t\t\t\tlike Chrome and Firefox, mobile applications for iOS and Android, and desktop applications\n\t\t\t\t\t\t\t\t\t\t\tcompatible with Windows and macOS.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard,\n\t\t\t\t\t\t\t\t\t\t\tand American Express, digital payment platforms like PayPal, and direct bank transfers. Regional\n\t\t\t\t\t\t\t\t\t\t\tpayment options may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tOkay \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog03Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-04.json b/public/registry/dialog-04.json
index ec400e64..042a02d9 100644
--- a/public/registry/dialog-04.json
+++ b/public/registry/dialog-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmScrollArea } from '@spartan-ng/helm/scroll-area';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\n\n@Component({\n\tselector: 'sim-dialog-04',\n\timports: [HlmButton, HlmScrollArea, NgScrollbarModule, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (scroll area) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address.\n\t\t\t\t\t\t\t\t\t\t\tYou can sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot\n\t\t\t\t\t\t\t\t\t\t\tPassword" and follow the email verification steps to regain account access quickly and\n\t\t\t\t\t\t\t\t\t\t\tsecurely.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support,\n\t\t\t\t\t\t\t\t\t\t\tlive chat during business hours, an integrated support ticket system, and phone support\n\t\t\t\t\t\t\t\t\t\t\tspecifically for enterprise-level customers.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers\n\t\t\t\t\t\t\t\t\t\t\tlike Chrome and Firefox, mobile applications for iOS and Android, and desktop applications\n\t\t\t\t\t\t\t\t\t\t\tcompatible with Windows and macOS.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard,\n\t\t\t\t\t\t\t\t\t\t\tand American Express, digital payment platforms like PayPal, and direct bank transfers. Regional\n\t\t\t\t\t\t\t\t\t\t\tpayment options may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\n\t\t\t\t\t\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tOkay \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog04Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmScrollAreaImports } from '@spartan-ng/helm/scroll-area';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\n\n@Component({\n\tselector: 'sim-dialog-04',\n\timports: [NgScrollbarModule, HlmButtonImports, HlmScrollAreaImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (scroll area) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address.\n\t\t\t\t\t\t\t\t\t\t\tYou can sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot\n\t\t\t\t\t\t\t\t\t\t\tPassword" and follow the email verification steps to regain account access quickly and\n\t\t\t\t\t\t\t\t\t\t\tsecurely.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support,\n\t\t\t\t\t\t\t\t\t\t\tlive chat during business hours, an integrated support ticket system, and phone support\n\t\t\t\t\t\t\t\t\t\t\tspecifically for enterprise-level customers.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers\n\t\t\t\t\t\t\t\t\t\t\tlike Chrome and Firefox, mobile applications for iOS and Android, and desktop applications\n\t\t\t\t\t\t\t\t\t\t\tcompatible with Windows and macOS.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard,\n\t\t\t\t\t\t\t\t\t\t\tand American Express, digital payment platforms like PayPal, and direct bank transfers. Regional\n\t\t\t\t\t\t\t\t\t\t\tpayment options may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\n\t\t\t\t\t\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tOkay \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog04Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-05.json b/public/registry/dialog-05.json
index 704eeded..0a035abb 100644
--- a/public/registry/dialog-05.json
+++ b/public/registry/dialog-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-05',\n\timports: [HlmButton, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (sticky header) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address. You\n\t\t\t\t\t\t\t\t\t\tcan sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot Password"\n\t\t\t\t\t\t\t\t\t\tand follow the email verification steps to regain account access quickly and securely.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support, live\n\t\t\t\t\t\t\t\t\t\tchat during business hours, an integrated support ticket system, and phone support specifically for\n\t\t\t\t\t\t\t\t\t\tenterprise-level customers.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers like\n\t\t\t\t\t\t\t\t\t\tChrome and Firefox, mobile applications for iOS and Android, and desktop applications compatible\n\t\t\t\t\t\t\t\t\t\twith Windows and macOS.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard, and\n\t\t\t\t\t\t\t\t\t\tAmerican Express, digital payment platforms like PayPal, and direct bank transfers. Regional payment\n\t\t\t\t\t\t\t\t\t\toptions may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCancel \n\t\t\t\t\t\t\tOkay \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog05Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-05',\n\timports: [HlmButtonImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (sticky header) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address. You\n\t\t\t\t\t\t\t\t\t\tcan sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot Password"\n\t\t\t\t\t\t\t\t\t\tand follow the email verification steps to regain account access quickly and securely.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support, live\n\t\t\t\t\t\t\t\t\t\tchat during business hours, an integrated support ticket system, and phone support specifically for\n\t\t\t\t\t\t\t\t\t\tenterprise-level customers.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers like\n\t\t\t\t\t\t\t\t\t\tChrome and Firefox, mobile applications for iOS and Android, and desktop applications compatible\n\t\t\t\t\t\t\t\t\t\twith Windows and macOS.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard, and\n\t\t\t\t\t\t\t\t\t\tAmerican Express, digital payment platforms like PayPal, and direct bank transfers. Regional payment\n\t\t\t\t\t\t\t\t\t\toptions may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCancel \n\t\t\t\t\t\t\tOkay \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog05Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-06.json b/public/registry/dialog-06.json
index 047f0cc8..f8d00060 100644
--- a/public/registry/dialog-06.json
+++ b/public/registry/dialog-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-06',\n\timports: [HlmButton, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (sticky footer) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address.\n\t\t\t\t\t\t\t\t\t\t\tYou can sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot\n\t\t\t\t\t\t\t\t\t\t\tPassword" and follow the email verification steps to regain account access quickly and\n\t\t\t\t\t\t\t\t\t\t\tsecurely.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support,\n\t\t\t\t\t\t\t\t\t\t\tlive chat during business hours, an integrated support ticket system, and phone support\n\t\t\t\t\t\t\t\t\t\t\tspecifically for enterprise-level customers.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers\n\t\t\t\t\t\t\t\t\t\t\tlike Chrome and Firefox, mobile applications for iOS and Android, and desktop applications\n\t\t\t\t\t\t\t\t\t\t\tcompatible with Windows and macOS.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard,\n\t\t\t\t\t\t\t\t\t\t\tand American Express, digital payment platforms like PayPal, and direct bank transfers. Regional\n\t\t\t\t\t\t\t\t\t\t\tpayment options may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tOkay \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog06Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-06',\n\timports: [HlmButtonImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tScrollable (sticky footer) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tFrequently Asked Questions (FAQ) \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tAccount Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tNavigate to the registration page, provide required information, and verify your email address.\n\t\t\t\t\t\t\t\t\t\t\tYou can sign up using your email or through social media platforms.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPassword Reset Process \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tUsers can reset their password through the account settings page. Click "Forgot\n\t\t\t\t\t\t\t\t\t\t\tPassword" and follow the email verification steps to regain account access quickly and\n\t\t\t\t\t\t\t\t\t\t\tsecurely.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tService Pricing Tiers \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe offer three primary subscription levels designed to meet diverse user needs: Basic (free with\n\t\t\t\t\t\t\t\t\t\t\tlimited features), Professional (monthly fee with comprehensive access), and Enterprise (custom\n\t\t\t\t\t\t\t\t\t\t\tpricing with full platform capabilities).\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tTechnical Support Channels \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer support is accessible through multiple communication methods including email support,\n\t\t\t\t\t\t\t\t\t\t\tlive chat during business hours, an integrated support ticket system, and phone support\n\t\t\t\t\t\t\t\t\t\t\tspecifically for enterprise-level customers.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tData Protection Strategies \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur platform implements rigorous security measures including 256-bit SSL encryption, regular\n\t\t\t\t\t\t\t\t\t\t\tcomprehensive security audits, strict data access controls, and compliance with international\n\t\t\t\t\t\t\t\t\t\t\tprivacy protection standards.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPlatform Compatibility \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tThe service supports multiple device and operating system environments, including web browsers\n\t\t\t\t\t\t\t\t\t\t\tlike Chrome and Firefox, mobile applications for iOS and Android, and desktop applications\n\t\t\t\t\t\t\t\t\t\t\tcompatible with Windows and macOS.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscription Management \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tSubscriptions can be cancelled at any time through account settings, with pro-rated refunds\n\t\t\t\t\t\t\t\t\t\t\tavailable within 30 days of payment. Both monthly and annual billing options are provided, with\n\t\t\t\t\t\t\t\t\t\t\tspecial discounts offered for annual commitments.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPayment Method Options \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tWe accept a wide range of payment methods including major credit cards such as Visa, MasterCard,\n\t\t\t\t\t\t\t\t\t\t\tand American Express, digital payment platforms like PayPal, and direct bank transfers. Regional\n\t\t\t\t\t\t\t\t\t\t\tpayment options may also be available depending on user location.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCustomer Support \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur dedicated customer support team is available 24/7, providing quick and efficient assistance to\n\t\t\t\t\t\t\t\t\t\t\taddress any inquiries or issues you may have.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tOur privacy policy outlines how we collect, use, and protect your personal data, ensuring your\n\t\t\t\t\t\t\t\t\t\t\tprivacy is protected at all times.\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tOkay \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog06Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-07.json b/public/registry/dialog-07.json
index 9f184a94..a2bbbd18 100644
--- a/public/registry/dialog-07.json
+++ b/public/registry/dialog-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-07',\n\timports: [HlmButton, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tTerm & Conditions \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tTerms & Conditions \n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAcceptance of Terms \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tBy accessing and using this application, you agree to comply with and be bound by these Terms of\n\t\t\t\t\t\t\t\t\t\tService. If you disagree with any part of these terms, please discontinue use immediately.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUser Account Security \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tYou are responsible for safeguarding your account credentials and promptly reporting any\n\t\t\t\t\t\t\t\t\t\tunauthorized access. All activities under your account remain your responsibility regardless of who\n\t\t\t\t\t\t\t\t\t\tperforms them.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tIntellectual Property Rights \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAll content provided through this application is protected by copyright and other intellectual\n\t\t\t\t\t\t\t\t\t\tproperty laws. Unauthorized reproduction, distribution, or commercial exploitation of any content is\n\t\t\t\t\t\t\t\t\t\tstrictly prohibited without express written consent.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tLimitation of Liability \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tThis application provides content \"as is\" without warranties of any kind. The owners shall not be\n\t\t\t\t\t\t\t\t\t\tliable for any damages arising from your use of or inability to use this service.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUser Conduct Guidelines \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tDo not submit content that is illegal, harmful, or offensive \n\t\t\t\t\t\t\t\t\t\tRespect the privacy and rights of other users \n\t\t\t\t\t\t\t\t\t\tDo not attempt to interfere with the proper functioning of the service \n\t\t\t\t\t\t\t\t\t\tFollow all applicable laws and regulations when using this application \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tTerms Modification \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe reserve the right to modify these terms at any time without notice. Your continued use of the\n\t\t\t\t\t\t\t\t\t\tapplication following any changes constitutes acceptance of those modifications.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAccount Termination \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe may suspend or terminate your access to the service immediately, without prior notice or\n\t\t\t\t\t\t\t\t\t\tliability, for any reason including, but not limited to, a breach of these Terms.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tGoverning Law \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tThese terms shall be governed by and construed in accordance with the laws of the jurisdiction in\n\t\t\t\t\t\t\t\t\t\twhich the service is primarily operated, without regard to its conflict of law provisions.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tI agree \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog07Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-07',\n\timports: [HlmButtonImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tTerm & Conditions \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tTerms & Conditions \n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAcceptance of Terms \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tBy accessing and using this application, you agree to comply with and be bound by these Terms of\n\t\t\t\t\t\t\t\t\t\tService. If you disagree with any part of these terms, please discontinue use immediately.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUser Account Security \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tYou are responsible for safeguarding your account credentials and promptly reporting any\n\t\t\t\t\t\t\t\t\t\tunauthorized access. All activities under your account remain your responsibility regardless of who\n\t\t\t\t\t\t\t\t\t\tperforms them.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tIntellectual Property Rights \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAll content provided through this application is protected by copyright and other intellectual\n\t\t\t\t\t\t\t\t\t\tproperty laws. Unauthorized reproduction, distribution, or commercial exploitation of any content is\n\t\t\t\t\t\t\t\t\t\tstrictly prohibited without express written consent.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tLimitation of Liability \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tThis application provides content \"as is\" without warranties of any kind. The owners shall not be\n\t\t\t\t\t\t\t\t\t\tliable for any damages arising from your use of or inability to use this service.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUser Conduct Guidelines \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tDo not submit content that is illegal, harmful, or offensive \n\t\t\t\t\t\t\t\t\t\tRespect the privacy and rights of other users \n\t\t\t\t\t\t\t\t\t\tDo not attempt to interfere with the proper functioning of the service \n\t\t\t\t\t\t\t\t\t\tFollow all applicable laws and regulations when using this application \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tTerms Modification \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe reserve the right to modify these terms at any time without notice. Your continued use of the\n\t\t\t\t\t\t\t\t\t\tapplication following any changes constitutes acceptance of those modifications.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tAccount Termination \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tWe may suspend or terminate your access to the service immediately, without prior notice or\n\t\t\t\t\t\t\t\t\t\tliability, for any reason including, but not limited to, a breach of these Terms.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tGoverning Law \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tThese terms shall be governed by and construed in accordance with the laws of the jurisdiction in\n\t\t\t\t\t\t\t\t\t\twhich the service is primarily operated, without regard to its conflict of law provisions.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tI agree \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog07Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-08.json b/public/registry/dialog-08.json
index a878bb3d..88a96517 100644
--- a/public/registry/dialog-08.json
+++ b/public/registry/dialog-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, model, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-08',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [HlmButton, NgIcon, HlmIcon, HlmInput, FormsModule, HlmLabel, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tDelete project \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tFinal confirmation \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tThis action cannot be undone. To confirm, please enter the project name\n\t\t\t\t\t\t\t{{ projectName() }}. \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\n\t\t\t\t\t
Project name \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\t\n\t\t\t\t\t\tDelete\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog08Component {\n\tprojectName = signal('Sim UI');\n\tinputValue = model('');\n\tisDisabled = computed(() => this.inputValue() !== this.projectName());\n\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, computed, model, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-08',\n\tproviders: [provideIcons({ lucideCircleAlert })],\n\timports: [FormsModule, NgIcon, HlmButtonImports, HlmIconImports, HlmInputImports, HlmLabelImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tDelete project \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tFinal confirmation \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tThis action cannot be undone. To confirm, please enter the project name\n\t\t\t\t\t\t\t{{ projectName() }}. \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\n\t\t\t\t\t
Project name \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\t\n\t\t\t\t\t\tDelete\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog08Component {\n\tprotected readonly projectName = signal('Sim UI');\n\tprotected readonly inputValue = model('');\n\tprotected readonly isDisabled = computed(() => this.inputValue() !== this.projectName());\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-09.json b/public/registry/dialog-09.json
index 84a0c628..05f8fee7 100644
--- a/public/registry/dialog-09.json
+++ b/public/registry/dialog-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { HlmInputGroupImports } from '@/libs/ui/input-group/src';\nimport { Component, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideMail } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-09',\n\tproviders: [provideIcons({ lucideCircleAlert, lucideMail })],\n\timports: [NgIcon, FormsModule, HlmButton, HlmDialogImports, HlmInputGroupImports],\n\ttemplate: `\n\t\t\n\t\t\tNewsletter \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tNever miss an update \n\t\t\t\t\t\tSubscribe to receive news and special offers.
\n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSubscribe \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBy subscribing you agree to our\n\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t.\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog09Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { HlmInputGroupImports } from '@/libs/ui/input-group/src';\nimport { Component, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideMail } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-09',\n\tproviders: [provideIcons({ lucideCircleAlert, lucideMail })],\n\timports: [NgIcon, FormsModule, HlmButtonImports, HlmDialogImports, HlmInputGroupImports],\n\ttemplate: `\n\t\t\n\t\t\tNewsletter \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tNever miss an update \n\t\t\t\t\t\tSubscribe to receive news and special offers.
\n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSubscribe \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tBy subscribing you agree to our\n\t\t\t\t\tPrivacy Policy \n\t\t\t\t\t.\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog09Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-10.json b/public/registry/dialog-10.json
index ba2dbde4..faee1d85 100644
--- a/public/registry/dialog-10.json
+++ b/public/registry/dialog-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInput } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-dialog-10',\n\timports: [HlmButton, HlmInput, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tFeedback \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSend us feedback \n\t\t\t\t\t\n\t\t\t\t\t\tWatch\n\t\t\t\t\t\ttutorials \n\t\t\t\t\t\t, read Sim UI's\n\t\t\t\t\t\tdocumentation \n\t\t\t\t\t\t, or join our\n\t\t\t\t\t\tDiscord \n\t\t\t\t\t\tfor community help.\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tSend feedback \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog10Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-dialog-10',\n\timports: [HlmButtonImports, HlmInputImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tFeedback \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSend us feedback \n\t\t\t\t\t\n\t\t\t\t\t\tWatch\n\t\t\t\t\t\ttutorials \n\t\t\t\t\t\t, read Sim UI's\n\t\t\t\t\t\tdocumentation \n\t\t\t\t\t\t, or join our\n\t\t\t\t\t\tDiscord \n\t\t\t\t\t\tfor community help.\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\tSend feedback \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog10Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-11.json b/public/registry/dialog-11.json
index 648461ce..68f24368 100644
--- a/public/registry/dialog-11.json
+++ b/public/registry/dialog-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, model, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmRadio, HlmRadioGroup } from '@spartan-ng/helm/radio-group';\n\n@Component({\n\tselector: 'sim-dialog-11',\n\timports: [HlmButton, HlmInput, HlmLabel, HlmRadioGroup, HlmRadio, FormsModule, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tRating \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tHelp us improve \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t
How hard was it to set up your account? \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t@for (item of [0, 1, 2, 3, 4, 5, 6, 7, 8]; track item) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\tVery easy \n\t\t\t\t\t\tVery difficult \n\t\t\t\t\t
\n\n\t\t\t\t\t
Why did you give this rating? \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSend feedback \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog11Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic ratingNumber = model();\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, model, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmRadioGroupImports } from '@spartan-ng/helm/radio-group';\n\n@Component({\n\tselector: 'sim-dialog-11',\n\timports: [\n\t\tFormsModule,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmLabelImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tRating \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tHelp us improve \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t
How hard was it to set up your account? \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t@for (item of [0, 1, 2, 3, 4, 5, 6, 7, 8]; track item) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\tVery easy \n\t\t\t\t\t\tVery difficult \n\t\t\t\t\t
\n\n\t\t\t\t\t
Why did you give this rating? \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSend feedback \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog11Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly ratingNumber = model();\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-12.json b/public/registry/dialog-12.json
index b0ee3053..67216bef 100644
--- a/public/registry/dialog-12.json
+++ b/public/registry/dialog-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { afterNextRender, Component, computed, model, OnDestroy, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrnInputOtp } from '@spartan-ng/brain/input-otp';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputOtp, HlmInputOtpGroup, HlmInputOtpSlot } from '@spartan-ng/helm/input-otp';\n\n@Component({\n\tselector: 'sim-dialog-12',\n\timports: [FormsModule, HlmButton, HlmInputOtp, HlmInputOtpGroup, HlmInputOtpSlot, BrnInputOtp, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tOTP \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCode verified! \n\t\t\t\t\t\t\tYour code has been successfully verified.
\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tEnter confirmation code \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCheck your email and enter the code - Try {{ defaultOtpValue }}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t@if (isInvalidCode()) {\n\t\t\t\t\t\t\t
Invalid code. Please try again.
\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\tClose \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tResend code {{ countdown() }}s\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog12Component implements OnDestroy {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic defaultOtpValue = '1234';\n\tpublic otpValue = model('');\n\tpublic countdown = signal(60);\n\tpublic isVerified = signal(false);\n\tpublic isInvalidCode = signal(false);\n\tpublic isResendDisabled = computed(() => this.countdown() > 0);\n\tprivate _intervalId?: NodeJS.Timeout;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startCountdown());\n\t}\n\n\totpChanged(event: string) {\n\t\tthis.otpValue.set(event);\n\n\t\t// Reset validation state when input is empty\n\t\tif (event.length === 0) {\n\t\t\tthis.isVerified.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\t// When code is not yet complete\n\t\tif (event.length < 4) {\n\t\t\tthis.isInvalidCode.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle completed OTP entry\n\t\tif (event === this.defaultOtpValue) {\n\t\t\tthis.isVerified.set(true);\n\t\t\tthis.isInvalidCode.set(false);\n\t\t} else {\n\t\t\tthis.isVerified.set(false);\n\t\t\tthis.isInvalidCode.set(true);\n\t\t\tthis.otpValue.set('');\n\t\t}\n\t}\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n\n\tresendCode() {\n\t\tthis.resetCountdown();\n\t}\n\n\tresendOtp() {\n\t\tthis.resetCountdown();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.otpValue.set('');\n\t\tthis.stopCountdown();\n\t}\n\n\tprivate resetCountdown() {\n\t\tthis.countdown.set(60);\n\t\tthis.startCountdown();\n\t}\n\n\tprivate startCountdown() {\n\t\tthis.stopCountdown();\n\t\tthis._intervalId = setInterval(() => {\n\t\t\tthis.countdown.update((countdown) => Math.max(0, countdown - 1));\n\t\t\tif (this.countdown() === 0) {\n\t\t\t\tthis.stopCountdown();\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tprivate stopCountdown() {\n\t\tif (this._intervalId) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = undefined;\n\t\t}\n\t}\n}"
+ "content": "import { afterNextRender, Component, computed, model, OnDestroy, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrnInputOtpImports } from '@spartan-ng/brain/input-otp';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputOtpImports } from '@spartan-ng/helm/input-otp';\n\n@Component({\n\tselector: 'sim-dialog-12',\n\timports: [FormsModule, HlmButtonImports, HlmInputOtpImports, BrnInputOtpImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tOTP \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCode verified! \n\t\t\t\t\t\t\tYour code has been successfully verified.
\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tEnter confirmation code \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCheck your email and enter the code - Try {{ defaultOtpValue }}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t@if (isInvalidCode()) {\n\t\t\t\t\t\t\t
Invalid code. Please try again.
\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\tClose \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tResend code {{ countdown() }}s\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog12Component implements OnDestroy {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly defaultOtpValue = '1234';\n\tprotected readonly otpValue = model('');\n\tprotected readonly countdown = signal(60);\n\tprotected readonly isVerified = signal(false);\n\tprotected readonly isInvalidCode = signal(false);\n\tprotected readonly isResendDisabled = computed(() => this.countdown() > 0);\n\tprivate _intervalId?: NodeJS.Timeout;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startCountdown());\n\t}\n\n\tngOnDestroy() {\n\t\tthis.otpValue.set('');\n\t\tthis.stopCountdown();\n\t}\n\n\tprotected otpChanged(event: string): void {\n\t\tthis.otpValue.set(event);\n\n\t\t// Reset validation state when input is empty\n\t\tif (event.length === 0) {\n\t\t\tthis.isVerified.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\t// When code is not yet complete\n\t\tif (event.length < 4) {\n\t\t\tthis.isInvalidCode.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle completed OTP entry\n\t\tif (event === this.defaultOtpValue) {\n\t\t\tthis.isVerified.set(true);\n\t\t\tthis.isInvalidCode.set(false);\n\t\t} else {\n\t\t\tthis.isVerified.set(false);\n\t\t\tthis.isInvalidCode.set(true);\n\t\t\tthis.otpValue.set('');\n\t\t}\n\t}\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n\n\tprotected resendCode(): void {\n\t\tthis.resetCountdown();\n\t}\n\n\tprotected resendOtp(): void {\n\t\tthis.resetCountdown();\n\t}\n\tprivate resetCountdown(): void {\n\t\tthis.countdown.set(60);\n\t\tthis.startCountdown();\n\t}\n\n\tprivate startCountdown(): void {\n\t\tthis.stopCountdown();\n\t\tthis._intervalId = setInterval(() => {\n\t\t\tthis.countdown.update((countdown) => Math.max(0, countdown - 1));\n\t\t\tif (this.countdown() === 0) {\n\t\t\t\tthis.stopCountdown();\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tprivate stopCountdown(): void {\n\t\tif (this._intervalId) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = undefined;\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-13.json b/public/registry/dialog-13.json
index 15628231..6eb39b68 100644
--- a/public/registry/dialog-13.json
+++ b/public/registry/dialog-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { afterNextRender, Component, computed, model, OnDestroy, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail } from '@ng-icons/lucide';\nimport { BrnInputOtp } from '@spartan-ng/brain/input-otp';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInputOtp, HlmInputOtpGroup, HlmInputOtpSlot } from '@spartan-ng/helm/input-otp';\n\n@Component({\n\tselector: 'sim-dialog-13',\n\tproviders: [provideIcons({ lucideMail })],\n\timports: [\n\t\tFormsModule,\n\t\tNgIcon,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmInputOtp,\n\t\tHlmInputOtpGroup,\n\t\tHlmInputOtpSlot,\n\t\tBrnInputOtp,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tEmail OTP \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCode verified! \n\t\t\t\t\t\t\tYour code has been successfully verified.
\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tPlease check your email \n\t\t\t\t\t\t\tWe've sent a code to alan@siumui.com
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tDidn't get a code?\n\t\t\t\t\t\t\t@if (isResendDisabled()) {\n\t\t\t\t\t\t\t\tResend after {{ countdown() }}s \n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tClick to resend\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t\t@if (isInvalidCode()) {\n\t\t\t\t\t\t\t
Invalid code. Please try again.
\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\tClose \n\t\t\t\t\t} @else {\n\t\t\t\t\t\tClose \n\t\t\t\t\t\tVerify \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog13Component implements OnDestroy {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic defaultOtpValue = '1234';\n\tpublic otpValue = model('');\n\tpublic countdown = signal(60);\n\tpublic isVerified = signal(false);\n\tpublic isInvalidCode = signal(false);\n\tpublic isResendDisabled = computed(() => this.countdown() > 0);\n\tprivate _intervalId?: NodeJS.Timeout;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startCountdown());\n\t}\n\n\totpChanged(event: string) {\n\t\tthis.otpValue.set(event);\n\n\t\tif (this.otpValue().length === 0) {\n\t\t\tthis.isVerified.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.otpValue().length < 4) {\n\t\t\tthis.isInvalidCode.set(false);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n\n\tsubmit() {\n\t\tif (this.otpValue() === this.defaultOtpValue) {\n\t\t\tthis.isVerified.set(true);\n\t\t\tthis.isInvalidCode.set(false);\n\t\t} else {\n\t\t\tthis.isVerified.set(false);\n\t\t\tthis.isInvalidCode.set(true);\n\t\t\tthis.otpValue.set('');\n\t\t}\n\t}\n\n\tresendCode() {\n\t\tthis.resetCountdown();\n\t}\n\n\tresendOtp() {\n\t\tthis.resetCountdown();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.otpValue.set('');\n\t\tthis.stopCountdown();\n\t}\n\n\tprivate resetCountdown() {\n\t\tthis.countdown.set(60);\n\t\tthis.startCountdown();\n\t}\n\n\tprivate startCountdown() {\n\t\tthis.stopCountdown();\n\t\tthis._intervalId = setInterval(() => {\n\t\t\tthis.countdown.update((countdown) => Math.max(0, countdown - 1));\n\t\t\tif (this.countdown() === 0) {\n\t\t\t\tthis.stopCountdown();\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tprivate stopCountdown() {\n\t\tif (this._intervalId) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = undefined;\n\t\t}\n\t}\n}"
+ "content": "import { afterNextRender, Component, computed, model, OnDestroy, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail } from '@ng-icons/lucide';\nimport { BrnInputOtpImports } from '@spartan-ng/brain/input-otp';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputOtpImports } from '@spartan-ng/helm/input-otp';\n\n@Component({\n\tselector: 'sim-dialog-13',\n\tproviders: [provideIcons({ lucideMail })],\n\timports: [\n\t\tFormsModule,\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmInputOtpImports,\n\t\tBrnInputOtpImports,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tEmail OTP \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCode verified! \n\t\t\t\t\t\t\tYour code has been successfully verified.
\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tPlease check your email \n\t\t\t\t\t\t\tWe've sent a code to alan@siumui.com
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tDidn't get a code?\n\t\t\t\t\t\t\t@if (isResendDisabled()) {\n\t\t\t\t\t\t\t\tResend after {{ countdown() }}s \n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tClick to resend\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t \n\t\t\t\t\t\t@if (isInvalidCode()) {\n\t\t\t\t\t\t\t
Invalid code. Please try again.
\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t@if (isVerified()) {\n\t\t\t\t\t\tClose \n\t\t\t\t\t} @else {\n\t\t\t\t\t\tClose \n\t\t\t\t\t\tVerify \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog13Component implements OnDestroy {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly defaultOtpValue = '1234';\n\tprotected readonly otpValue = model('');\n\tprotected readonly countdown = signal(60);\n\tprotected readonly isVerified = signal(false);\n\tprotected readonly isInvalidCode = signal(false);\n\tprotected readonly isResendDisabled = computed(() => this.countdown() > 0);\n\tprivate _intervalId?: NodeJS.Timeout;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startCountdown());\n\t}\n\n\tprotected otpChanged(event: string) {\n\t\tthis.otpValue.set(event);\n\n\t\tif (this.otpValue().length === 0) {\n\t\t\tthis.isVerified.set(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.otpValue().length < 4) {\n\t\t\tthis.isInvalidCode.set(false);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n\n\tprotected submit() {\n\t\tif (this.otpValue() === this.defaultOtpValue) {\n\t\t\tthis.isVerified.set(true);\n\t\t\tthis.isInvalidCode.set(false);\n\t\t} else {\n\t\t\tthis.isVerified.set(false);\n\t\t\tthis.isInvalidCode.set(true);\n\t\t\tthis.otpValue.set('');\n\t\t}\n\t}\n\n\tprotected resendCode(): void {\n\t\tthis.resetCountdown();\n\t}\n\n\tprotected resendOtp(): void {\n\t\tthis.resetCountdown();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.otpValue.set('');\n\t\tthis.stopCountdown();\n\t}\n\n\tprivate resetCountdown(): void {\n\t\tthis.countdown.set(60);\n\t\tthis.startCountdown();\n\t}\n\n\tprivate startCountdown(): void {\n\t\tthis.stopCountdown();\n\t\tthis._intervalId = setInterval(() => {\n\t\t\tthis.countdown.update((countdown) => Math.max(0, countdown - 1));\n\t\t\tif (this.countdown() === 0) {\n\t\t\t\tthis.stopCountdown();\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tprivate stopCountdown(): void {\n\t\tif (this._intervalId) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = undefined;\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-14.json b/public/registry/dialog-14.json
index 93e71882..97589945 100644
--- a/public/registry/dialog-14.json
+++ b/public/registry/dialog-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, viewChild } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-14',\n\timports: [FormsModule, ReactiveFormsModule, HlmButton, HlmLabel, HlmInput, HlmButton, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tSign Up \n\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog14Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tprivate _formBuilder = inject(FormBuilder);\n\n\tpublic form = this._formBuilder.group({\n\t\tfullName: ['', Validators.required],\n\t\temail: ['', Validators.compose([Validators.required, Validators.email])],\n\t\tpassword: ['', Validators.required],\n\t});\n\n\tcloseDialog() {\n\t\tthis.form.updateValueAndValidity();\n\t\tif (this.form.valid) {\n\t\t\tthis.dialogRef()?.close({});\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, viewChild } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-14',\n\timports: [\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmButtonImports,\n\t\tHlmLabelImports,\n\t\tHlmInputImports,\n\t\tHlmButtonImports,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tSign Up \n\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog14Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprivate readonly formBuilder = inject(FormBuilder);\n\n\tprotected readonly form = this.formBuilder.group({\n\t\tfullName: ['', Validators.required],\n\t\temail: ['', Validators.compose([Validators.required, Validators.email])],\n\t\tpassword: ['', Validators.required],\n\t});\n\n\tprotected closeDialog(): void {\n\t\tthis.form.updateValueAndValidity();\n\t\tif (this.form.valid) {\n\t\t\tthis.dialogRef()?.close({});\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-15.json b/public/registry/dialog-15.json
index 11279c60..5ba15ec9 100644
--- a/public/registry/dialog-15.json
+++ b/public/registry/dialog-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, viewChild } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-15',\n\timports: [FormsModule, ReactiveFormsModule, HlmButton, HlmDialogImports, HlmLabel, HlmInput, HlmButton, HlmCheckbox],\n\ttemplate: `\n\t\t\n\t\t\tSign In \n\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog15Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tprivate _formBuilder = inject(FormBuilder);\n\n\tpublic form = this._formBuilder.group({\n\t\temail: ['', Validators.compose([Validators.required, Validators.email])],\n\t\tpassword: ['', Validators.required],\n\t\trememberMe: [false],\n\t});\n\n\tcloseDialog() {\n\t\tthis.form.updateValueAndValidity();\n\t\tif (this.form.valid) {\n\t\t\tthis.dialogRef()?.close({});\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, viewChild } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-15',\n\timports: [\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmButtonImports,\n\t\tHlmDialogImports,\n\t\tHlmLabelImports,\n\t\tHlmInputImports,\n\t\tHlmButtonImports,\n\t\tHlmCheckboxImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tSign In \n\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog15Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprivate readonly formBuilder = inject(FormBuilder);\n\n\tprotected readonly form = this.formBuilder.group({\n\t\temail: ['', Validators.compose([Validators.required, Validators.email])],\n\t\tpassword: ['', Validators.required],\n\t\trememberMe: [false],\n\t});\n\n\tprotected closeDialog(): void {\n\t\tthis.form.updateValueAndValidity();\n\t\tif (this.form.valid) {\n\t\t\tthis.dialogRef()?.close({});\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-16.json b/public/registry/dialog-16.json
index 1ca70d61..8a5cbff5 100644
--- a/public/registry/dialog-16.json
+++ b/public/registry/dialog-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, viewChild } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInput } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-dialog-16',\n\timports: [FormsModule, ReactiveFormsModule, HlmButton, HlmDialogImports, HlmInput, HlmButton],\n\ttemplate: `\n\t\t\n\t\t\tCreate account \n\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog16Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tprivate _formBuilder = inject(FormBuilder);\n\n\tpublic form = this._formBuilder.group({\n\t\temail: ['', Validators.compose([Validators.required, Validators.email])],\n\t});\n\n\tcloseDialog() {\n\t\tthis.form.updateValueAndValidity();\n\t\tif (this.form.valid) {\n\t\t\tthis.dialogRef()?.close({});\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, viewChild } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-dialog-16',\n\timports: [FormsModule, ReactiveFormsModule, HlmButtonImports, HlmDialogImports, HlmInputImports, HlmButtonImports],\n\ttemplate: `\n\t\t\n\t\t\tCreate account \n\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog16Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprivate readonly formBuilder = inject(FormBuilder);\n\n\tprotected readonly form = this.formBuilder.group({\n\t\temail: ['', Validators.compose([Validators.required, Validators.email])],\n\t});\n\n\tprotected closeDialog(): void {\n\t\tthis.form.updateValueAndValidity();\n\t\tif (this.form.valid) {\n\t\t\tthis.dialogRef()?.close({});\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-17.json b/public/registry/dialog-17.json
index 8fbeaf60..809759d5 100644
--- a/public/registry/dialog-17.json
+++ b/public/registry/dialog-17.json
@@ -1,3 +1,3 @@
{
- "content": "import { Clipboard } from '@angular/cdk/clipboard';\nimport { NgClass } from '@angular/common';\nimport { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideCopy, lucidePlus, lucideTrash2, lucideUserPlus } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-dialog-17',\n\tproviders: [provideIcons({ lucideUserPlus, lucidePlus, lucideTrash2, lucideCheck, lucideCopy })],\n\timports: [NgIcon, NgClass, ReactiveFormsModule, HlmIcon, HlmInput, HlmButton, HlmDialogImports, HlmTooltipImports],\n\ttemplate: `\n\t\t\n\t\t\tInvite members \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Invite contributors \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tYour new project has been created. Invite new member to contribute on this project.\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invite via link
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog17Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic copied = signal(false);\n\tpublic clipboard = inject(Clipboard);\n\tpublic form: FormGroup;\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\n\tconstructor() {\n\t\tthis.form = this._formBuilder.group({\n\t\t\tmembers: this._formBuilder.array(['alancooper@simui.com', 'christina@siumui.com']),\n\t\t});\n\t}\n\n\tget members(): FormArray {\n\t\treturn this.form.get('members') as FormArray;\n\t}\n\n\taddMember(): void {\n\t\tthis.members.push(this._formBuilder.control('', Validators.email));\n\t}\n\n\tremoveMember(index: number): void {\n\t\tthis.members.removeAt(index, { emitEvent: true });\n\t}\n\n\tcloseDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n\n\tonSelect(): void {\n\t\tthis.copied.set(true);\n\t\tthis.clipboard.copy('https://simui.dev/reference/12374');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.copied.set(false);\n\t\t}, 1500);\n\t}\n}"
+ "content": "import { Clipboard } from '@angular/cdk/clipboard';\nimport { NgClass } from '@angular/common';\nimport { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideCopy, lucidePlus, lucideTrash2, lucideUserPlus } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmTooltipImports } from '@spartan-ng/helm/tooltip';\n\n@Component({\n\tselector: 'sim-dialog-17',\n\tproviders: [provideIcons({ lucideUserPlus, lucidePlus, lucideTrash2, lucideCheck, lucideCopy })],\n\timports: [\n\t\tNgIcon,\n\t\tNgClass,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmInputImports,\n\t\tHlmButtonImports,\n\t\tHlmDialogImports,\n\t\tHlmTooltipImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tInvite members \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Invite contributors \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tYour new project has been created. Invite new member to contribute on this project.\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invite via link
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog17Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly copied = signal(false);\n\tprotected readonly clipboard = inject(Clipboard);\n\tprotected readonly form: FormGroup;\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\n\tconstructor() {\n\t\tthis.form = this._formBuilder.group({\n\t\t\tmembers: this._formBuilder.array(['alancooper@simui.com', 'christina@siumui.com']),\n\t\t});\n\t}\n\n\tget members(): FormArray {\n\t\treturn this.form.get('members') as FormArray;\n\t}\n\n\tprotected addMember(): void {\n\t\tthis.members.push(this._formBuilder.control('', Validators.email));\n\t}\n\n\tprotected removeMember(index: number): void {\n\t\tthis.members.removeAt(index, { emitEvent: true });\n\t}\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n\n\tprotected onSelect(): void {\n\t\tthis.copied.set(true);\n\t\tthis.clipboard.copy('https://simui.dev/reference/12374');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.copied.set(false);\n\t\t}, 1500);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-18.json b/public/registry/dialog-18.json
index b7b49aea..83523bf2 100644
--- a/public/registry/dialog-18.json
+++ b/public/registry/dialog-18.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCreditCard, lucideWallet } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-18',\n\tproviders: [provideIcons({ lucideWallet, lucideCreditCard })],\n\timports: [\n\t\tNgIcon,\n\t\tReactiveFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmButton,\n\t\tHlmInput,\n\t\tHlmLabel,\n\t\tHlmSpinner,\n\t\tHlmCheckbox,\n\t\tMaskitoDirective,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tCard update \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Update your card \n\t\t\t\t\t\t
Your new card will replace your current card.
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog18Component {\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic form: FormGroup = this._formBuilder.group(\n\t\t{\n\t\t\tfullName: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcardNumber: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t\texpiryDate: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t\tisDefault: [false],\n\t\t\tcvc: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{ updateOn: 'submit' },\n\t);\n\tpublic readonly cvcMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [\n\t\t\t({ elementState, data }) => ({\n\t\t\t\telementState,\n\t\t\t\tdata: data.replace(/\\D/g, ''),\n\t\t\t}),\n\t\t],\n\t};\n\tpublic readonly expiryDateMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /[0-9]/, '/', /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t};\n\tpublic readonly nameMask: MaskitoOptions = {\n\t\tmask: /.+/,\n\t\toverwriteMode: 'replace',\n\t\tpostprocessors: [({ value, selection }) => ({ value: value.toUpperCase(), selection })],\n\t};\n\tpublic readonly creditCardMask: MaskitoOptions = {\n\t\tmask: [\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [({ elementState, data }) => ({ elementState, data: data.replace(/\\D/g, '') })],\n\t};\n\n\tpublic isProcessing = signal(false);\n\n\tpublic onSubmit() {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCreditCard, lucideWallet } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-18',\n\timports: [\n\t\tNgIcon,\n\t\tMaskitoDirective,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmLabelImports,\n\t\tHlmSpinnerImports,\n\t\tHlmCheckboxImports,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideWallet, lucideCreditCard })],\n\ttemplate: `\n\t\t\n\t\t\tCard update \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Update your card \n\t\t\t\t\t\t
Your new card will replace your current card.
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog18Component {\n\tprivate readonly formBuilder = inject(FormBuilder);\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly isProcessing = signal(false);\n\tprotected readonly form: FormGroup = this.formBuilder.group(\n\t\t{\n\t\t\tfullName: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t\tcardNumber: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t\texpiryDate: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t\tisDefault: [false],\n\t\t\tcvc: [\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\tvalidators: Validators.required,\n\t\t\t\t\tupdateOn: 'submit',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{ updateOn: 'submit' },\n\t);\n\tprotected readonly cvcMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [\n\t\t\t({ elementState, data }) => ({\n\t\t\t\telementState,\n\t\t\t\tdata: data.replace(/\\D/g, ''),\n\t\t\t}),\n\t\t],\n\t};\n\tprotected readonly expiryDateMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /[0-9]/, '/', /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t};\n\tprotected readonly nameMask: MaskitoOptions = {\n\t\tmask: /.+/,\n\t\toverwriteMode: 'replace',\n\t\tpostprocessors: [({ value, selection }) => ({ value: value.toUpperCase(), selection })],\n\t};\n\tprotected readonly creditCardMask: MaskitoOptions = {\n\t\tmask: [\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [({ elementState, data }) => ({ elementState, data: data.replace(/\\D/g, '') })],\n\t};\n\n\tprotected onSubmit(): void {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-19.json b/public/registry/dialog-19.json
index 30d119f6..43b7c042 100644
--- a/public/registry/dialog-19.json
+++ b/public/registry/dialog-19.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCreditCard, lucideWalletCards } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-19',\n\tproviders: [provideIcons({ lucideWalletCards, lucideCreditCard })],\n\timports: [\n\t\tNgIcon,\n\t\tReactiveFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmButton,\n\t\tHlmInput,\n\t\tHlmLabel,\n\t\tHlmSpinner,\n\t\tHlmCheckbox,\n\t\tMaskitoDirective,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tCard update (2) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Update payment method \n\t\t\t\t\t\t
Your new card will replace your current card.
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog19Component {\n\tprivate _formBuilder = inject(FormBuilder);\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic form: FormGroup = this._formBuilder.group(\n\t\t{\n\t\t\tfullName: ['', Validators.required],\n\t\t\tcardNumber: ['', Validators.required],\n\t\t\texpiryDate: ['', Validators.required],\n\t\t\tisDefault: [false],\n\t\t\tcvc: ['', Validators.required],\n\t\t},\n\t\t{ updateOn: 'submit' },\n\t);\n\tpublic readonly cvcMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [\n\t\t\t({ elementState, data }) => ({\n\t\t\t\telementState,\n\t\t\t\tdata: data.replace(/\\D/g, ''),\n\t\t\t}),\n\t\t],\n\t};\n\tpublic readonly expiryDateMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /[0-9]/, '/', /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t};\n\tpublic readonly nameMask: MaskitoOptions = {\n\t\tmask: /.+/,\n\t\toverwriteMode: 'replace',\n\t\tpostprocessors: [({ value, selection }) => ({ value: value.toUpperCase(), selection })],\n\t};\n\tpublic readonly creditCardMask: MaskitoOptions = {\n\t\tmask: [\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [({ elementState, data }) => ({ elementState, data: data.replace(/\\D/g, '') })],\n\t};\n\n\tpublic isProcessing = signal(false);\n\n\tpublic onSubmit() {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCreditCard, lucideWalletCards } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-19',\n\tproviders: [provideIcons({ lucideWalletCards, lucideCreditCard })],\n\timports: [\n\t\tNgIcon,\n\t\tMaskitoDirective,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmInputImports,\n\t\tHlmLabelImports,\n\t\tHlmButtonImports,\n\t\tHlmDialogImports,\n\t\tHlmSpinnerImports,\n\t\tHlmCheckboxImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tCard update (2) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Update payment method \n\t\t\t\t\t\t
Your new card will replace your current card.
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog19Component {\n\tprivate readonly formBuilder = inject(FormBuilder);\n\tprotected readonly isProcessing = signal(false);\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly form: FormGroup = this.formBuilder.group(\n\t\t{\n\t\t\tfullName: ['', Validators.required],\n\t\t\tcardNumber: ['', Validators.required],\n\t\t\texpiryDate: ['', Validators.required],\n\t\t\tisDefault: [false],\n\t\t\tcvc: ['', Validators.required],\n\t\t},\n\t\t{ updateOn: 'submit' },\n\t);\n\tprotected readonly cvcMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [\n\t\t\t({ elementState, data }) => ({\n\t\t\t\telementState,\n\t\t\t\tdata: data.replace(/\\D/g, ''),\n\t\t\t}),\n\t\t],\n\t};\n\tprotected readonly expiryDateMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /[0-9]/, '/', /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t};\n\tprotected readonly nameMask: MaskitoOptions = {\n\t\tmask: /.+/,\n\t\toverwriteMode: 'replace',\n\t\tpostprocessors: [({ value, selection }) => ({ value: value.toUpperCase(), selection })],\n\t};\n\tprotected readonly creditCardMask: MaskitoOptions = {\n\t\tmask: [\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [({ elementState, data }) => ({ elementState, data: data.replace(/\\D/g, '') })],\n\t};\n\n\tprotected onSubmit(): void {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-20.json b/public/registry/dialog-20.json
index 47c66c6c..8141f159 100644
--- a/public/registry/dialog-20.json
+++ b/public/registry/dialog-20.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCreditCard, lucideWalletCards } from '@ng-icons/lucide';\nimport { HlmBadge } from '@spartan-ng/helm/badge';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmRadio, HlmRadioGroup } from '@spartan-ng/helm/radio-group';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-20',\n\tproviders: [provideIcons({ lucideWalletCards, lucideCreditCard })],\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmInput,\n\t\tHlmLabel,\n\t\tHlmSpinner,\n\t\tHlmRadio,\n\t\tHlmRadioGroup,\n\t\tHlmBadge,\n\t\tMaskitoDirective,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tCheckout \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Confirm and pay \n\t\t\t\t\t\t\t
Pay securely and cancel any time.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog20Component {\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic form: FormGroup = this._formBuilder.group(\n\t\t{\n\t\t\tplan: ['yearly'],\n\t\t\tfullName: ['', Validators.required],\n\t\t\tcardNumber: ['', Validators.required],\n\t\t\texpiryDate: ['', Validators.required],\n\t\t\tcvc: ['', Validators.required],\n\t\t},\n\t\t{ updateOn: 'submit' },\n\t);\n\tpublic readonly cvcMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [\n\t\t\t({ elementState, data }) => ({\n\t\t\t\telementState,\n\t\t\t\tdata: data.replace(/\\D/g, ''),\n\t\t\t}),\n\t\t],\n\t};\n\tpublic readonly expiryDateMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /[0-9]/, '/', /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t};\n\tpublic readonly nameMask: MaskitoOptions = {\n\t\tmask: /.+/,\n\t\toverwriteMode: 'replace',\n\t\tpostprocessors: [({ value, selection }) => ({ value: value.toUpperCase(), selection })],\n\t};\n\tpublic readonly creditCardMask: MaskitoOptions = {\n\t\tmask: [\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [({ elementState, data }) => ({ elementState, data: data.replace(/\\D/g, '') })],\n\t};\n\n\tpublic isProcessing = signal(false);\n\n\tpublic onSubmit() {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MaskitoOptions } from '@maskito/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCreditCard, lucideWalletCards } from '@ng-icons/lucide';\nimport { HlmBadgeImports } from '@spartan-ng/helm/badge';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmRadioGroupImports } from '@spartan-ng/helm/radio-group';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-20',\n\tproviders: [provideIcons({ lucideWalletCards, lucideCreditCard })],\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tMaskitoDirective,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmLabelImports,\n\t\tHlmSpinnerImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmBadgeImports,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tCheckout \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Confirm and pay \n\t\t\t\t\t\t\t
Pay securely and cancel any time.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog20Component {\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\tprotected readonly isProcessing = signal(false);\n\n\tprotected dialogRef = viewChild(HlmDialog);\n\tprotected form: FormGroup = this._formBuilder.group(\n\t\t{\n\t\t\tplan: ['yearly'],\n\t\t\tfullName: ['', Validators.required],\n\t\t\tcardNumber: ['', Validators.required],\n\t\t\texpiryDate: ['', Validators.required],\n\t\t\tcvc: ['', Validators.required],\n\t\t},\n\t\t{ updateOn: 'submit' },\n\t);\n\tprotected readonly cvcMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [\n\t\t\t({ elementState, data }) => ({\n\t\t\t\telementState,\n\t\t\t\tdata: data.replace(/\\D/g, ''),\n\t\t\t}),\n\t\t],\n\t};\n\tprotected readonly expiryDateMask: MaskitoOptions = {\n\t\tmask: [/\\d/, /[0-9]/, '/', /\\d/, /\\d/],\n\t\toverwriteMode: 'replace',\n\t};\n\tprotected readonly nameMask: MaskitoOptions = {\n\t\tmask: /.+/,\n\t\toverwriteMode: 'replace',\n\t\tpostprocessors: [({ value, selection }) => ({ value: value.toUpperCase(), selection })],\n\t};\n\tprotected readonly creditCardMask: MaskitoOptions = {\n\t\tmask: [\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t' ',\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t\t/[0-9]/,\n\t\t],\n\t\toverwriteMode: 'replace',\n\t\tpreprocessors: [({ elementState, data }) => ({ elementState, data: data.replace(/\\D/g, '') })],\n\t};\n\n\tprotected onSubmit(): void {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-21.json b/public/registry/dialog-21.json
index 6c55f935..3e4c9dd4 100644
--- a/public/registry/dialog-21.json
+++ b/public/registry/dialog-21.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBadgeCheck, lucideCreditCard, lucideMessagesSquare, lucideWalletCards } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmRadio, HlmRadioGroup } from '@spartan-ng/helm/radio-group';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-21',\n\tproviders: [provideIcons({ lucideWalletCards, lucideCreditCard, lucideBadgeCheck, lucideMessagesSquare })],\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmLabel,\n\t\tHlmSpinner,\n\t\tHlmRadio,\n\t\tHlmRadioGroup,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tSelect plan \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Select plan \n\t\t\t\t\t\t\t
Simple and flexible per-user pricing.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tChat to us\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCancel \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@if (isProcessing()) {\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tProcessing...\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\tSelect plan\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog21Component {\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic form: FormGroup = this._formBuilder.group({\n\t\tplan: ['basic'],\n\t});\n\tpublic isProcessing = signal(false);\n\n\tpublic onSubmit(): void {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 1000);\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBadgeCheck, lucideCreditCard, lucideMessagesSquare, lucideWalletCards } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmRadioGroupImports } from '@spartan-ng/helm/radio-group';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-21',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmLabelImports,\n\t\tHlmSpinnerImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideWalletCards, lucideCreditCard, lucideBadgeCheck, lucideMessagesSquare })],\n\ttemplate: `\n\t\t\n\t\t\tSelect plan \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Select plan \n\t\t\t\t\t\t\t
Simple and flexible per-user pricing.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tChat to us\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCancel \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@if (isProcessing()) {\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tProcessing...\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\tSelect plan\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog21Component {\n\tprivate readonly formBuilder = inject(FormBuilder);\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly form: FormGroup = this.formBuilder.group({\n\t\tplan: ['basic'],\n\t});\n\tprotected readonly isProcessing = signal(false);\n\n\tprotected onSubmit(): void {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 1000);\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-22.json b/public/registry/dialog-22.json
index 0b5def74..80818b76 100644
--- a/public/registry/dialog-22.json
+++ b/public/registry/dialog-22.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideRefreshCw } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmRadio, HlmRadioGroup } from '@spartan-ng/helm/radio-group';\nimport { HlmSpinner } from '@spartan-ng/helm/spinner';\n\n@Component({\n\tselector: 'sim-dialog-22',\n\tproviders: [provideIcons({ lucideCheck, lucideRefreshCw })],\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmLabel,\n\t\tHlmSpinner,\n\t\tHlmRadio,\n\t\tHlmRadioGroup,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tChange plan \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Change your plan \n\t\t\t\t\t\t\t
Pick one of the following plans.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog22Component {\n\tprivate _formBuilder = inject(FormBuilder);\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic form: FormGroup = this._formBuilder.group({\n\t\tplan: ['standard'],\n\t});\n\tpublic isProcessing = signal(false);\n\n\tpublic options = [\n\t\t{\n\t\t\ttitle: 'Essential',\n\t\t\tsubtitle: '$4 per member/month',\n\t\t\tvalue: 'essential',\n\t\t},\n\t\t{\n\t\t\ttitle: 'Standard',\n\t\t\tsubtitle: '$19 per member/month',\n\t\t\tvalue: 'standard',\n\t\t},\n\t\t{\n\t\t\ttitle: 'Enterprise',\n\t\t\tsubtitle: '$32 per member/month',\n\t\t\tvalue: 'enterprise',\n\t\t},\n\t];\n\n\tpublic onSubmit() {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
+ "content": "import { Component, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideRefreshCw } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmRadioGroupImports } from '@spartan-ng/helm/radio-group';\nimport { HlmSpinnerImports } from '@spartan-ng/helm/spinner';\n\ninterface PlanOption {\n\ttitle: string;\n\tsubtitle: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'sim-dialog-22',\n\tproviders: [provideIcons({ lucideCheck, lucideRefreshCw })],\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmLabelImports,\n\t\tHlmSpinnerImports,\n\t\tHlmRadioGroupImports,\n\t\tHlmDialogImports,\n\t],\n\ttemplate: `\n\t\t\n\t\t\tChange plan \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Change your plan \n\t\t\t\t\t\t\t
Pick one of the following plans.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog22Component {\n\tprivate readonly formBuilder = inject(FormBuilder);\n\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly form: FormGroup = this.formBuilder.group({\n\t\tplan: ['standard'],\n\t});\n\tprotected readonly isProcessing = signal(false);\n\tprotected readonly options: PlanOption[] = [\n\t\t{\n\t\t\ttitle: 'Essential',\n\t\t\tsubtitle: '$4 per member/month',\n\t\t\tvalue: 'essential',\n\t\t},\n\t\t{\n\t\t\ttitle: 'Standard',\n\t\t\tsubtitle: '$19 per member/month',\n\t\t\tvalue: 'standard',\n\t\t},\n\t\t{\n\t\t\ttitle: 'Enterprise',\n\t\t\tsubtitle: '$32 per member/month',\n\t\t\tvalue: 'enterprise',\n\t\t},\n\t];\n\n\tprotected onSubmit(): void {\n\t\tif (this.form.valid) {\n\t\t\tthis.isProcessing.set(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.isProcessing.set(false);\n\t\t\t\tthis.dialogRef()?.close();\n\t\t\t}, 2000);\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-23.json b/public/registry/dialog-23.json
index dcf825af..060522b2 100644
--- a/public/registry/dialog-23.json
+++ b/public/registry/dialog-23.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideImagePlus, lucideX } from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'profile-background',\n\timports: [NgIcon, HlmButton, HlmIcon],\n\tproviders: [provideIcons({ lucideImagePlus, lucideX })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t@if (backgroundUrl()) {\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class ProfileBackgroundComponent {\n\tbackgroundUrl = signal('assets/backgrounds/bg-01.jpg');\n\n\tpublic removeBackground(): void {\n\t\tthis.backgroundUrl.set(null);\n\t}\n\n\tpublic onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.backgroundUrl.set(url);\n\t\t}\n\t}\n}\n\n@Component({\n\tselector: 'profile-avatar',\n\timports: [NgIcon, HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmButton, HlmIcon],\n\tproviders: [provideIcons({ lucideImagePlus })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class ProfileAvatarComponent {\n\tavatarUrl = signal('assets/avatars/mathilde-lewis.png');\n\n\tpublic onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.avatarUrl.set(url);\n\t\t}\n\t}\n}\n\n@Component({\n\tselector: 'sim-dialog-23',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmInput,\n\t\tHlmLabel,\n\t\tHlmButton,\n\t\tProfileBackgroundComponent,\n\t\tProfileAvatarComponent,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideCheck })],\n\ttemplate: `\n\t\t\n\t\t\tEdit profile (2) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tEdit profile \n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tMake changes to your profile here. You can change your photo and set a username.\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tFirst name\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tLast name\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUsername\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@if (isValidUserName()) {\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tWebsite\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\thttps://\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tBiography\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{{ leftCharacters() }} characters left.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tSave changes \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog23Component {\n\tprivate readonly _formBuilder = inject(FormBuilder);\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic maxLength = 180;\n\tpublic lengthCount = signal(0);\n\tpublic isValidUserName = signal(true);\n\tpublic form: FormGroup = this._formBuilder.group({\n\t\tfirstName: ['Alan'],\n\t\tlastName: ['Cooper'],\n\t\tuserName: ['alan-cooper-dev-12'],\n\t\twebsite: ['www.simui.dev'],\n\t\tbiography: [\n\t\t\t'Hi, I am Alan Cooper. I am a software engineer and designer. I love to create beautiful and functional user interfaces.',\n\t\t],\n\t});\n\tpublic leftCharacters = computed(() => this.maxLength - this.lengthCount());\n\n\tconstructor() {\n\t\tthis.lengthCount.set(this.form.get('biography')?.value.length);\n\n\t\tthis.form.get('biography')?.valueChanges.subscribe((value) => {\n\t\t\tthis.lengthCount.set(value.length);\n\t\t});\n\n\t\tthis.form.get('userName')?.valueChanges.subscribe((value) => {\n\t\t\tthis.isValidUserName.set(value.length > 17);\n\t\t});\n\t}\n\n\tpublic closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideImagePlus, lucideX } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-profile-background',\n\timports: [NgIcon, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideImagePlus, lucideX })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t@if (backgroundUrl()) {\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n})\nexport class ProfileBackgroundComponent {\n\tprotected readonly backgroundUrl = signal('assets/backgrounds/bg-01.jpg');\n\n\tprotected removeBackground(): void {\n\t\tthis.backgroundUrl.set(null);\n\t}\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.backgroundUrl.set(url);\n\t\t}\n\t}\n}\n\n@Component({\n\tselector: 'sim-profile-avatar',\n\timports: [NgIcon, HlmAvatarImports, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideImagePlus })],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t \n\t\t\t\tML \n\t\t\t \n\t\t\t
\n\t\t\t\t \n\t\t\t \n\t\t\t
\n\t\t
\n\t`,\n})\nexport class ProfileAvatarComponent {\n\tprotected readonly avatarUrl = signal('assets/avatars/mathilde-lewis.png');\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.avatarUrl.set(url);\n\t\t}\n\t}\n}\n\n@Component({\n\tselector: 'sim-dialog-23',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tProfileAvatarComponent,\n\t\tProfileBackgroundComponent,\n\t\tHlmIconImports,\n\t\tHlmDialogImports,\n\t\tHlmInputImports,\n\t\tHlmLabelImports,\n\t\tHlmButtonImports,\n\t],\n\tproviders: [provideIcons({ lucideCheck })],\n\ttemplate: `\n\t\t\n\t\t\tEdit profile (2) \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tEdit profile \n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tMake changes to your profile here. You can change your photo and set a username.\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tFirst name\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tLast name\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tUsername\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t@if (isValidUserName()) {\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tWebsite\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\thttps://\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tBiography\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{{ leftCharacters() }} characters left.\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tSave changes \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog23Component {\n\tprivate readonly formBuilder = inject(FormBuilder);\n\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly maxLength = 180;\n\tprotected readonly lengthCount = signal(0);\n\tprotected readonly isValidUserName = signal(true);\n\tprotected readonly form: FormGroup = this.formBuilder.group({\n\t\tfirstName: ['Alan'],\n\t\tlastName: ['Cooper'],\n\t\tuserName: ['alan-cooper-dev-12'],\n\t\twebsite: ['www.simui.dev'],\n\t\tbiography: [\n\t\t\t'Hi, I am Alan Cooper. I am a software engineer and designer. I love to create beautiful and functional user interfaces.',\n\t\t],\n\t});\n\tprotected readonly leftCharacters = computed(() => this.maxLength - this.lengthCount());\n\n\tconstructor() {\n\t\tthis.lengthCount.set(this.form.get('biography')?.value.length);\n\n\t\tthis.form.get('biography')?.valueChanges.subscribe((value) => {\n\t\t\tthis.lengthCount.set(value.length);\n\t\t});\n\n\t\tthis.form.get('userName')?.valueChanges.subscribe((value) => {\n\t\t\tthis.isValidUserName.set(value.length > 17);\n\t\t});\n\t}\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-24.json b/public/registry/dialog-24.json
index 31bf2dad..39c5008a 100644
--- a/public/registry/dialog-24.json
+++ b/public/registry/dialog-24.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogContent, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-24',\n\timports: [NgIcon, HlmIcon, HlmDialog, HlmDialogContent, HlmButton, HlmDialogImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\tOnboarding \n\t\t\tbutton>ng-icon]:text-primary-foreground top-1/2 left-1/2 max-h-[calc(100vh-2rem)] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 gap-0 rounded-lg p-0 sm:max-h-[min(640px,80vh)] sm:max-w-[400px]\"\n\t\t\t\t*hlmDialogPortal=\"let ctx\">\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ currentStep()?.title }} \n\t\t\t\t\t\t
{{ currentStep()?.description }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t@for (step of steps; track step.id) {\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSkip \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@if (currentStepIndex() === steps.length) {\n\t\t\t\t\t\t\t\t\tOkay\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\tNext\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog24Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\tpublic currentStepIndex = signal(1);\n\tpublic currentStep = computed(() => this.steps.find((step) => step.id === this.currentStepIndex()));\n\n\tpublic steps = [\n\t\t{\n\t\t\tid: 1,\n\t\t\ttitle: 'Welcome to SimUI',\n\t\t\tdescription: 'Discover a powerful collection of components designed to enhance your development workflow.',\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\ttitle: 'Explore the Components',\n\t\t\tdescription: 'Browse through a wide range of components that can be easily integrated into your projects.',\n\t\t},\n\t\t{\n\t\t\tid: 3,\n\t\t\ttitle: 'Join the Community',\n\t\t\tdescription: 'Connect with other developers, share your projects, and get inspired by the SimUI community.',\n\t\t},\n\t\t{\n\t\t\tid: 4,\n\t\t\ttitle: 'Get Started',\n\t\t\tdescription: 'Start building amazing applications with SimUI and take your development to the next level.',\n\t\t},\n\t];\n\n\tonNextStep(): void {\n\t\tif (this.currentStepIndex() < this.steps.length) {\n\t\t\tthis.currentStepIndex.update((index) => index + 1);\n\t\t} else {\n\t\t\tthis.closeDialog();\n\t\t}\n\t}\n\n\tcloseDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideArrowRight } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface DialogStep {\n\tid: number;\n\ttitle: string;\n\tdescription: string;\n}\n\n@Component({\n\tselector: 'sim-dialog-24',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideArrowRight })],\n\ttemplate: `\n\t\t\n\t\t\tOnboarding \n\t\t\tbutton>ng-icon]:text-primary-foreground top-1/2 left-1/2 max-h-[calc(100vh-2rem)] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 gap-0 rounded-lg p-0 sm:max-h-[min(640px,80vh)] sm:max-w-[400px]\"\n\t\t\t\t*hlmDialogPortal=\"let ctx\">\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ currentStep()?.title }} \n\t\t\t\t\t\t
{{ currentStep()?.description }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t@for (step of steps; track step.id) {\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSkip \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@if (currentStepIndex() === steps.length) {\n\t\t\t\t\t\t\t\t\tOkay\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\tNext\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog24Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\tprotected readonly currentStepIndex = signal(1);\n\tprotected readonly currentStep = computed(() => this.steps.find((step) => step.id === this.currentStepIndex()));\n\n\tprotected readonly steps: DialogStep[] = [\n\t\t{\n\t\t\tid: 1,\n\t\t\ttitle: 'Welcome to SimUI',\n\t\t\tdescription: 'Discover a powerful collection of components designed to enhance your development workflow.',\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\ttitle: 'Explore the Components',\n\t\t\tdescription: 'Browse through a wide range of components that can be easily integrated into your projects.',\n\t\t},\n\t\t{\n\t\t\tid: 3,\n\t\t\ttitle: 'Join the Community',\n\t\t\tdescription: 'Connect with other developers, share your projects, and get inspired by the SimUI community.',\n\t\t},\n\t\t{\n\t\t\tid: 4,\n\t\t\ttitle: 'Get Started',\n\t\t\tdescription: 'Start building amazing applications with SimUI and take your development to the next level.',\n\t\t},\n\t];\n\n\tprotected onNextStep(): void {\n\t\tif (this.currentStepIndex() < this.steps.length) {\n\t\t\tthis.currentStepIndex.update((index) => index + 1);\n\t\t} else {\n\t\t\tthis.closeDialog();\n\t\t}\n\t}\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-25.json b/public/registry/dialog-25.json
index dc5c67a6..74eff54b 100644
--- a/public/registry/dialog-25.json
+++ b/public/registry/dialog-25.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBellRing, lucideCalendar, lucideClock, lucidePlus } from '@ng-icons/lucide';\nimport { toast } from '@spartan-ng/brain/sonner';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-25',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCalendar, lucideClock, lucideBellRing, lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\tMeeting invitation \n\t\t\tbutton>ng-icon]:text-primary-foreground top-1/2 left-1/2 max-h-[calc(100vh-2rem)] !w-100 max-w-[calc(100%-2rem)] -translate-x-1/2 gap-0 rounded-lg p-0 sm:max-h-[min(640px,80vh)] sm:max-w-[400px]\"\n\t\t\t\t*hlmDialogPortal=\"let ctx\">\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
JAN
\n\t\t\t\t\t\t
10
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
Invitation: Product demo
\n\t\t\t\t\t
Phuong Tran - Friday, Jan 10, 2025
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
Details \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tFriday, Jan 10, 2025 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t1:30 PM - 3:30 PM \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t10 min before \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
Organizer \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\t\t\tlewis@simui.dev \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
Attendees \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t+3 \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
7 guests \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
5 accept \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
2 pending \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tDecline \n\t\t\t\t\tAccept \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog25Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\tpublic acceptInvitation(): void {\n\t\ttoast.success('Accepted!', {\n\t\t\tdescription: 'Your response has been sent to the organizer.',\n\t\t});\n\t\tthis.dialogRef()?.close();\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBellRing, lucideCalendar, lucideClock, lucidePlus } from '@ng-icons/lucide';\nimport { toast } from '@spartan-ng/brain/sonner';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-25',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAvatarImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCalendar, lucideClock, lucideBellRing, lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\tMeeting invitation \n\t\t\tbutton>ng-icon]:text-primary-foreground top-1/2 left-1/2 max-h-[calc(100vh-2rem)] w-100! max-w-[calc(100%-2rem)] -translate-x-1/2 gap-0 rounded-lg p-0 sm:max-h-[min(640px,80vh)] sm:max-w-[400px]\"\n\t\t\t\t*hlmDialogPortal=\"let ctx\">\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
JAN
\n\t\t\t\t\t\t
10
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
Invitation: Product demo
\n\t\t\t\t\t
Phuong Tran - Friday, Jan 10, 2025
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
Details \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tFriday, Jan 10, 2025 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t1:30 PM - 3:30 PM \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t10 min before \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
Organizer \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\t\t\tlewis@simui.dev \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
Attendees \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t+3 \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
7 guests \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
5 accept \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
2 pending \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tDecline \n\t\t\t\t\tAccept \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog25Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\n\tprotected acceptInvitation(): void {\n\t\ttoast.success('Accepted!', {\n\t\t\tdescription: 'Your response has been sent to the organizer.',\n\t\t});\n\t\tthis.dialogRef()?.close();\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-26.json b/public/registry/dialog-26.json
index 815a59f6..9aeb4ce0 100644
--- a/public/registry/dialog-26.json
+++ b/public/registry/dialog-26.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChartColumnStacked,\n\tlucideChevronDown,\n\tlucideImagePlus,\n\tlucideMic,\n\tlucideNotepadText,\n\tlucidePaperclip,\n\tlucidePenLine,\n\tlucideSparkles,\n\tlucideSquareSlash,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\n\n@Component({\n\tselector: 'sim-dialog-26',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmAvatar,\n\t\tHlmAvatarFallback,\n\t\tHlmAvatarImage,\n\t\tHlmCheckbox,\n\t\tHlmInput,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideImagePlus,\n\t\t\tlucideChartColumnStacked,\n\t\t\tlucideZap,\n\t\t\tlucideNotepadText,\n\t\t\tlucidePenLine,\n\t\t\tlucideSparkles,\n\t\t\tlucideChevronDown,\n\t\t\tlucideSquareSlash,\n\t\t\tlucidePaperclip,\n\t\t\tlucideMic,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\tRequest support \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHi Alexa \n\t\t\t\t\t\t\tWelcome back! How can I help you? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tI’m here to help tackle your tasks. Choose from the prompts below or tell me what you need!\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t@for (item of reasons; track item.id) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.text }}
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAC \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAlexa \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tShortcuts \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAttach \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog26Component {\n\tpublic dialogRef = viewChild(HlmDialog);\n\n\treasons = [\n\t\t{\n\t\t\tid: 1,\n\t\t\ttext: 'Create image',\n\t\t\ticon: 'lucideImagePlus',\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\ttext: 'Analyze data',\n\t\t\ticon: 'lucideChartColumnStacked',\n\t\t},\n\t\t{\n\t\t\tid: 3,\n\t\t\ttext: 'Make a plan',\n\t\t\ticon: 'lucideZap',\n\t\t},\n\t\t{\n\t\t\tid: 4,\n\t\t\ttext: 'Summarize text',\n\t\t\ticon: 'lucideNotepadText',\n\t\t},\n\t\t{\n\t\t\tid: 5,\n\t\t\ttext: 'Help me write',\n\t\t\ticon: 'lucidePenLine',\n\t\t},\n\t\t{\n\t\t\tid: 6,\n\t\t\ttext: 'More',\n\t\t\ticon: 'lucideSparkles',\n\t\t},\n\t];\n\n\tcloseDialog() {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
+ "content": "import { Component, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChartColumnStacked,\n\tlucideChevronDown,\n\tlucideImagePlus,\n\tlucideMic,\n\tlucideNotepadText,\n\tlucidePaperclip,\n\tlucidePenLine,\n\tlucideSparkles,\n\tlucideSquareSlash,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmDialog, HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\n\ninterface SupportReason {\n\tid: number;\n\ttext: string;\n\ticon: string;\n}\n\n@Component({\n\tselector: 'sim-dialog-26',\n\timports: [\n\t\tNgIcon,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmAvatarImports,\n\t\tHlmCheckboxImports,\n\t\tHlmInputImports,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideImagePlus,\n\t\t\tlucideChartColumnStacked,\n\t\t\tlucideZap,\n\t\t\tlucideNotepadText,\n\t\t\tlucidePenLine,\n\t\t\tlucideSparkles,\n\t\t\tlucideChevronDown,\n\t\t\tlucideSquareSlash,\n\t\t\tlucidePaperclip,\n\t\t\tlucideMic,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\tRequest support \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHi Alexa \n\t\t\t\t\t\t\tWelcome back! How can I help you? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tI’m here to help tackle your tasks. Choose from the prompts below or tell me what you need!\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t\t@for (item of reasons; track item.id) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{{ item.text }}
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAC \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAlexa \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tShortcuts \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAttach \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog26Component {\n\tprotected readonly dialogRef = viewChild(HlmDialog);\n\n\tprotected readonly reasons: SupportReason[] = [\n\t\t{\n\t\t\tid: 1,\n\t\t\ttext: 'Create image',\n\t\t\ticon: 'lucideImagePlus',\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\ttext: 'Analyze data',\n\t\t\ticon: 'lucideChartColumnStacked',\n\t\t},\n\t\t{\n\t\t\tid: 3,\n\t\t\ttext: 'Make a plan',\n\t\t\ticon: 'lucideZap',\n\t\t},\n\t\t{\n\t\t\tid: 4,\n\t\t\ttext: 'Summarize text',\n\t\t\ticon: 'lucideNotepadText',\n\t\t},\n\t\t{\n\t\t\tid: 5,\n\t\t\ttext: 'Help me write',\n\t\t\ticon: 'lucidePenLine',\n\t\t},\n\t\t{\n\t\t\tid: 6,\n\t\t\ttext: 'More',\n\t\t\ticon: 'lucideSparkles',\n\t\t},\n\t];\n\n\tprotected closeDialog(): void {\n\t\tthis.dialogRef()?.close({});\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-27.json b/public/registry/dialog-27.json
index a72f41ca..2b806147 100644
--- a/public/registry/dialog-27.json
+++ b/public/registry/dialog-27.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideUserPlus } from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-27',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAvatar, HlmAvatarFallback, HlmAvatarImage, HlmDialogImports],\n\tproviders: [provideIcons({ lucideUserPlus })],\n\ttemplate: `\n\t\t\n\t\t\tRequest access \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Candice has requested edit access \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tOne of your team has requested edit access to your project\n\t\t\t\t\t\t\t\tMarketing Website Design \n\t\t\t\t\t\t\t\t.\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\t\t\tmathilde@simui.dev \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCancel \n\t\t\t\t\t\t\tApprove \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog27Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideUserPlus } from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-27',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAvatarImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideUserPlus })],\n\ttemplate: `\n\t\t\n\t\t\tRequest access \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Candice has requested edit access \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tOne of your team has requested edit access to your project\n\t\t\t\t\t\t\t\tMarketing Website Design \n\t\t\t\t\t\t\t\t.\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tML \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\t\t\tmathilde@simui.dev \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCancel \n\t\t\t\t\t\t\tApprove \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog27Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-28.json b/public/registry/dialog-28.json
index 3b3812e7..e2425532 100644
--- a/public/registry/dialog-28.json
+++ b/public/registry/dialog-28.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-28',\n\timports: [HlmButton, HlmAvatar, HlmAvatarFallback, HlmAvatarImage, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tMember accepted \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
You've been added to the team
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tThanks for accepting the invitation to join the team. You can now access all the features and\n\t\t\t\t\t\t\tfunctionality of the app.\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tGet started \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog28Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\n\n@Component({\n\tselector: 'sim-dialog-28',\n\timports: [HlmButtonImports, HlmAvatarImports, HlmDialogImports],\n\ttemplate: `\n\t\t\n\t\t\tMember accepted \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
You've been added to the team
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tThanks for accepting the invitation to join the team. You can now access all the features and\n\t\t\t\t\t\t\tfunctionality of the app.\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tGet started \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog28Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-29.json b/public/registry/dialog-29.json
index 88914289..d828de4a 100644
--- a/public/registry/dialog-29.json
+++ b/public/registry/dialog-29.json
@@ -1,3 +1,3 @@
{
- "content": "import { Clipboard } from '@angular/cdk/clipboard';\nimport { NgClass, NgOptimizedImage } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideCopy } from '@ng-icons/lucide';\nimport { HlmAspectRatioImports } from '@spartan-ng/helm/aspect-ratio';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-29',\n\timports: [NgIcon, NgClass, HlmIcon, HlmButton, NgOptimizedImage, HlmAspectRatioImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCopy, lucideCheck })],\n\ttemplate: `\n\t\t\n\t\t\tPublish post \n\t\t\tbutton>ng-icon]:text-primary-foreground top-1/2 left-1/2 max-h-[calc(100vh-2rem)] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 gap-0 rounded-lg p-0 sm:max-h-[min(640px,80vh)] sm:max-w-[400px]\"\n\t\t\t\t*hlmDialogPortal=\"let ctx\">\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tBlog post published \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tThis blog post has been published. Team members will be able to edit this post and republish changes.\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCopy link \n\t\t\t\t\t\t \n\t\t\t\t\t\t
Finished \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog29Component {\n\tclipboard = inject(Clipboard);\n\tcopied = signal(false);\n\n\tpublic onSelect(): void {\n\t\tthis.copied.set(true);\n\t\tthis.clipboard.copy('I love Angular!');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.copied.set(false);\n\t\t}, 1500);\n\t}\n}"
+ "content": "import { Clipboard } from '@angular/cdk/clipboard';\nimport { NgClass, NgOptimizedImage } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCheck, lucideCopy } from '@ng-icons/lucide';\nimport { HlmAspectRatioImports } from '@spartan-ng/helm/aspect-ratio';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-29',\n\timports: [\n\t\tNgIcon,\n\t\tNgClass,\n\t\tNgOptimizedImage,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmAspectRatioImports,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideCopy, lucideCheck })],\n\ttemplate: `\n\t\t\n\t\t\tPublish post \n\t\t\tbutton>ng-icon]:text-primary-foreground top-1/2 left-1/2 max-h-[calc(100vh-2rem)] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 gap-0 rounded-lg p-0 sm:max-h-[min(640px,80vh)] sm:max-w-[400px]\"\n\t\t\t\t*hlmDialogPortal=\"let ctx\">\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tBlog post published \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tThis blog post has been published. Team members will be able to edit this post and republish changes.\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\tCopy link \n\t\t\t\t\t\t \n\t\t\t\t\t\t
Finished \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog29Component {\n\tprivate readonly clipboard = inject(Clipboard);\n\tprotected readonly copied = signal(false);\n\n\tprotected onSelect(): void {\n\t\tthis.copied.set(true);\n\t\tthis.clipboard.copy('I love Angular!');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.copied.set(false);\n\t\t}, 1500);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-30.json b/public/registry/dialog-30.json
index afa9bd2a..c7969ca5 100644
--- a/public/registry/dialog-30.json
+++ b/public/registry/dialog-30.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmSwitch } from '@spartan-ng/helm/switch';\n\n@Component({\n\tselector: 'sim-dialog-30',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmLabel, HlmSwitch, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\ttemplate: `\n\t\t\n\t\t\tPost setting \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Blog post published \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tThis blog post has been published. Team members will be able to edit this post and republish changes.\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tShare on X \n\t\t\t\t\t\t\t\t@trandongphuong \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tShare on Instagram \n\t\t\t\t\t\t\t\t@phuonginsta \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tShare on Facebook \n\t\t\t\t\t\t\t\t@dongphuong \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog30Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmSwitchImports } from '@spartan-ng/helm/switch';\n\n@Component({\n\tselector: 'sim-dialog-30',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmLabelImports, HlmSwitchImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\ttemplate: `\n\t\t\n\t\t\tPost setting \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Blog post published \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tThis blog post has been published. Team members will be able to edit this post and republish changes.\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tShare on X \n\t\t\t\t\t\t\t\t@trandongphuong \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tShare on Instagram \n\t\t\t\t\t\t\t\t@phuonginsta \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tShare on Facebook \n\t\t\t\t\t\t\t\t@dongphuong \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog30Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-31.json b/public/registry/dialog-31.json
index aeac54cc..1edd00e7 100644
--- a/public/registry/dialog-31.json
+++ b/public/registry/dialog-31.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-31',\n\timports: [HlmInput, HlmButton, HlmLabel, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\ttemplate: `\n\t\t\n\t\t\tCreate project \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t
Project created \n\t\t\t\t\t\t
Please enter a name for this project. \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tProject name\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog31Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { provideIcons } from '@ng-icons/core';\nimport { lucideCircleCheck } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-31',\n\timports: [HlmInputImports, HlmButtonImports, HlmLabelImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCircleCheck })],\n\ttemplate: `\n\t\t\n\t\t\tCreate project \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t
Project created \n\t\t\t\t\t\t
Please enter a name for this project. \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tProject name\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog31Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-32.json b/public/registry/dialog-32.json
index 2d0436b3..6979fc12 100644
--- a/public/registry/dialog-32.json
+++ b/public/registry/dialog-32.json
@@ -1,3 +1,3 @@
{
- "content": "import { afterNextRender, Component, computed, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideLockKeyhole } from '@ng-icons/lucide';\nimport { BrnInputOtp } from '@spartan-ng/brain/input-otp';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInputOtp, HlmInputOtpGroup, HlmInputOtpSlot } from '@spartan-ng/helm/input-otp';\n\n@Component({\n\tselector: 'sim-dialog-32',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmInputOtp,\n\t\tHlmInputOtpGroup,\n\t\tHlmInputOtpSlot,\n\t\tBrnInputOtp,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideLockKeyhole })],\n\ttemplate: `\n\t\t\n\t\t\t2FA \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Set up two-factor authentication \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tTo authorize transactions, please scan this QR code with your Google Authenticator App and enter the\n\t\t\t\t\t\t\t\tverification code below.\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tVerification code \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t- \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDidn't get a code?\n\t\t\t\t\t\t\t\t@if (this.isResendDisabled()) {\n\t\t\t\t\t\t\t\t\t{{ this.countdown() }} seconds \n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tClick to resend\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog32Component {\n\tpublic otpValue = model('');\n\tpublic isResendDisabled = computed(() => this.countdown() > 0);\n\tpublic countdown = signal(60);\n\n\tprivate _intervalId?: NodeJS.Timeout;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startCountdown());\n\t}\n\n\tresendCode(): void {\n\t\tthis.resetCountdown();\n\t}\n\n\tprivate resetCountdown(): void {\n\t\tthis.countdown.set(60);\n\t\tthis.startCountdown();\n\t}\n\n\tprivate startCountdown(): void {\n\t\tthis.stopCountdown();\n\t\tthis._intervalId = setInterval(() => {\n\t\t\tthis.countdown.update((countdown) => Math.max(0, countdown - 1));\n\t\t\tif (this.countdown() === 0) {\n\t\t\t\tthis.stopCountdown();\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tprivate stopCountdown(): void {\n\t\tif (this._intervalId) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = undefined;\n\t\t}\n\t}\n}"
+ "content": "import { afterNextRender, Component, computed, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideLockKeyhole } from '@ng-icons/lucide';\nimport { BrnInputOtpImports } from '@spartan-ng/brain/input-otp';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputOtpImports } from '@spartan-ng/helm/input-otp';\n\n@Component({\n\tselector: 'sim-dialog-32',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmInputOtpImports,\n\t\tBrnInputOtpImports,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideLockKeyhole })],\n\ttemplate: `\n\t\t\n\t\t\t2FA \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Set up two-factor authentication \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tTo authorize transactions, please scan this QR code with your Google Authenticator App and enter the\n\t\t\t\t\t\t\t\tverification code below.\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tVerification code \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t- \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDidn't get a code?\n\t\t\t\t\t\t\t\t@if (this.isResendDisabled()) {\n\t\t\t\t\t\t\t\t\t{{ this.countdown() }} seconds \n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tClick to resend\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog32Component {\n\tprotected readonly otpValue = model('');\n\tprotected readonly isResendDisabled = computed(() => this.countdown() > 0);\n\tprotected readonly countdown = signal(60);\n\n\tprivate _intervalId?: NodeJS.Timeout;\n\n\tconstructor() {\n\t\tafterNextRender(() => this.startCountdown());\n\t}\n\n\tprotected resendCode(): void {\n\t\tthis.resetCountdown();\n\t}\n\n\tprivate resetCountdown(): void {\n\t\tthis.countdown.set(60);\n\t\tthis.startCountdown();\n\t}\n\n\tprivate startCountdown(): void {\n\t\tthis.stopCountdown();\n\t\tthis._intervalId = setInterval(() => {\n\t\t\tthis.countdown.update((countdown) => Math.max(0, countdown - 1));\n\t\t\tif (this.countdown() === 0) {\n\t\t\t\tthis.stopCountdown();\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tprivate stopCountdown(): void {\n\t\tif (this._intervalId) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = undefined;\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-33.json b/public/registry/dialog-33.json
index 43bc12e2..2460b6b3 100644
--- a/public/registry/dialog-33.json
+++ b/public/registry/dialog-33.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleDollarSign } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmCheckbox } from '@spartan-ng/helm/checkbox';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmLabel } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-33',\n\timports: [NgIcon, FormsModule, ReactiveFormsModule, HlmIcon, HlmButton, HlmCheckbox, HlmLabel, HlmDialogImports],\n\tproviders: [provideIcons({ lucideCircleDollarSign })],\n\ttemplate: `\n\t\t\n\t\t\tPayment method \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Change your payment method \n\t\t\t\t\t\t\t
Update your plan payment details.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tVisa ending in \n\t\t\t\t\t\t\t\t\tExpiry 06/2024 \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tMastercard ending in 1234 \n\t\t\t\t\t\t\t\t\tExpiry 06/2024 \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tApple Pay ending in 2299 \n\t\t\t\t\t\t\t\t\tExpiry 11/2026 \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog33Component {\n\tformGroup = new FormGroup({\n\t\tvisa: new FormControl(true),\n\t\tmastercard: new FormControl(false),\n\t\tapplepay: new FormControl(false),\n\t});\n}"
+ "content": "import { Component } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleDollarSign } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmCheckboxImports } from '@spartan-ng/helm/checkbox';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\n\n@Component({\n\tselector: 'sim-dialog-33',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmCheckboxImports,\n\t\tHlmLabelImports,\n\t\tHlmDialogImports,\n\t],\n\tproviders: [provideIcons({ lucideCircleDollarSign })],\n\ttemplate: `\n\t\t\n\t\t\tPayment method \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Change your payment method \n\t\t\t\t\t\t\t
Update your plan payment details.
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tVisa ending in \n\t\t\t\t\t\t\t\t\tExpiry 06/2024 \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tMastercard ending in 1234 \n\t\t\t\t\t\t\t\t\tExpiry 06/2024 \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tApple Pay ending in 2299 \n\t\t\t\t\t\t\t\t\tExpiry 11/2026 \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tCancel \n\t\t\t\t\t\tConfirm \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog33Component {\n\tprotected readonly formGroup = new FormGroup({\n\t\tvisa: new FormControl(true),\n\t\tmastercard: new FormControl(false),\n\t\tapplepay: new FormControl(false),\n\t});\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-34.json b/public/registry/dialog-34.json
index 69e4c8ff..93ded48a 100644
--- a/public/registry/dialog-34.json
+++ b/public/registry/dialog-34.json
@@ -1,3 +1,3 @@
{
- "content": "import { HlmInputGroupImports } from '@/libs/ui/input-group/src';\nimport { NgOptimizedImage } from '@angular/common';\nimport { Component, signal } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideSave } from '@ng-icons/lucide';\nimport { BrnSelectImports } from '@spartan-ng/brain/select';\nimport { HlmAspectRatioImports } from '@spartan-ng/helm/aspect-ratio';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmInput } from '@spartan-ng/helm/input';\nimport { HlmLabel } from '@spartan-ng/helm/label';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\n@Component({\n\tselector: 'sim-dialog-34',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tHlmIcon,\n\t\tHlmButton,\n\t\tHlmInput,\n\t\tHlmLabel,\n\t\tNgOptimizedImage,\n\t\tHlmAvatarImports,\n\t\tBrnSelectImports,\n\t\tHlmSelectImports,\n\t\tHlmDialogImports,\n\t\tHlmAspectRatioImports,\n\t\tHlmInputGroupImports,\n\t],\n\tproviders: [provideIcons({ lucideSave, lucideMail })],\n\ttemplate: `\n\t\t\n\t\t\tEdit profile \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Mathilde Lewis \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
@matlewis \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFollowers \n\t\t\t\t\t\t\t\t47,198 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFollowing \n\t\t\t\t\t\t\t\t2,421 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tPosts \n\t\t\t\t\t\t\t\t873 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tCollections \n\t\t\t\t\t\t\t\t87 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSave as draft\n\t\t\t\t\t \n\t\t\t\t\tPublish changes \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog34Component {\n\tisEmailVerified = signal(true);\n\tcountries = [\n\t\t{\n\t\t\tid: 1,\n\t\t\tlabel: 'Australia',\n\t\t\ticon: 'AU.svg',\n\t\t\ttimezone: 'UTC/GMT+10',\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\tlabel: 'Switzerland',\n\t\t\ticon: 'CH.svg',\n\t\t\ttimezone: 'UTC/GMT+1',\n\t\t},\n\t\t{\n\t\t\tid: 3,\n\t\t\tlabel: 'China',\n\t\t\ticon: 'CN.svg',\n\t\t\ttimezone: 'UTC/GMT+8',\n\t\t},\n\t\t{\n\t\t\tid: 4,\n\t\t\tlabel: 'Japan',\n\t\t\ticon: 'JP.svg',\n\t\t\ttimezone: 'UTC/GMT+9',\n\t\t},\n\t\t{\n\t\t\tid: 5,\n\t\t\tlabel: 'Korea',\n\t\t\ticon: 'KR.svg',\n\t\t\ttimezone: 'UTC/GMT+9',\n\t\t},\n\t\t{\n\t\t\tid: 6,\n\t\t\tlabel: 'United States',\n\t\t\ticon: 'US.svg',\n\t\t\ttimezone: 'UTC/GMT-5',\n\t\t},\n\t\t{\n\t\t\tid: 7,\n\t\t\tlabel: 'Vietnam',\n\t\t\ticon: 'VN.svg',\n\t\t\ttimezone: 'UTC/GMT+7',\n\t\t},\n\t];\n\n\tformGroup = new FormGroup({\n\t\tfirstName: new FormControl('Mathilde'),\n\t\tlastName: new FormControl('Lewis'),\n\t\temail: new FormControl('mathilde@simui.dev'),\n\t\tuserName: new FormControl('mathilde.lewis842'),\n\t\tcountry: new FormControl(this.countries[0]),\n\t});\n}"
+ "content": "import { HlmInputGroupImports } from '@/libs/ui/input-group/src';\nimport { NgOptimizedImage } from '@angular/common';\nimport { Component, signal } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMail, lucideSave } from '@ng-icons/lucide';\nimport { BrnSelectImports } from '@spartan-ng/brain/select';\nimport { HlmAspectRatioImports } from '@spartan-ng/helm/aspect-ratio';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmInputImports } from '@spartan-ng/helm/input';\nimport { HlmLabelImports } from '@spartan-ng/helm/label';\nimport { HlmSelectImports } from '@spartan-ng/helm/select';\n\ninterface Country {\n\tid: number;\n\tlabel: string;\n\ticon: string;\n\ttimezone: string;\n}\n\n@Component({\n\tselector: 'sim-dialog-34',\n\timports: [\n\t\tNgIcon,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tNgOptimizedImage,\n\t\tBrnSelectImports,\n\t\tHlmIconImports,\n\t\tHlmButtonImports,\n\t\tHlmInputImports,\n\t\tHlmLabelImports,\n\t\tHlmAvatarImports,\n\t\tHlmSelectImports,\n\t\tHlmDialogImports,\n\t\tHlmAspectRatioImports,\n\t\tHlmInputGroupImports,\n\t],\n\tproviders: [provideIcons({ lucideSave, lucideMail })],\n\ttemplate: `\n\t\t\n\t\t\tEdit profile \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tML \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Mathilde Lewis \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
@matlewis \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFollowers \n\t\t\t\t\t\t\t\t47,198 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFollowing \n\t\t\t\t\t\t\t\t2,421 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tPosts \n\t\t\t\t\t\t\t\t873 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tCollections \n\t\t\t\t\t\t\t\t87 \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSave as draft\n\t\t\t\t\t \n\t\t\t\t\tPublish changes \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog34Component {\n\tprotected readonly isEmailVerified = signal(true);\n\tprotected readonly countries: Country[] = [\n\t\t{\n\t\t\tid: 1,\n\t\t\tlabel: 'Australia',\n\t\t\ticon: 'AU.svg',\n\t\t\ttimezone: 'UTC/GMT+10',\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\tlabel: 'Switzerland',\n\t\t\ticon: 'CH.svg',\n\t\t\ttimezone: 'UTC/GMT+1',\n\t\t},\n\t\t{\n\t\t\tid: 3,\n\t\t\tlabel: 'China',\n\t\t\ticon: 'CN.svg',\n\t\t\ttimezone: 'UTC/GMT+8',\n\t\t},\n\t\t{\n\t\t\tid: 4,\n\t\t\tlabel: 'Japan',\n\t\t\ticon: 'JP.svg',\n\t\t\ttimezone: 'UTC/GMT+9',\n\t\t},\n\t\t{\n\t\t\tid: 5,\n\t\t\tlabel: 'Korea',\n\t\t\ticon: 'KR.svg',\n\t\t\ttimezone: 'UTC/GMT+9',\n\t\t},\n\t\t{\n\t\t\tid: 6,\n\t\t\tlabel: 'United States',\n\t\t\ticon: 'US.svg',\n\t\t\ttimezone: 'UTC/GMT-5',\n\t\t},\n\t\t{\n\t\t\tid: 7,\n\t\t\tlabel: 'Vietnam',\n\t\t\ticon: 'VN.svg',\n\t\t\ttimezone: 'UTC/GMT+7',\n\t\t},\n\t];\n\n\tprotected readonly formGroup = new FormGroup({\n\t\tfirstName: new FormControl('Mathilde'),\n\t\tlastName: new FormControl('Lewis'),\n\t\temail: new FormControl('mathilde@simui.dev'),\n\t\tuserName: new FormControl('mathilde.lewis842'),\n\t\tcountry: new FormControl(this.countries[0]),\n\t});\n}"
}
\ No newline at end of file
diff --git a/public/registry/dialog-35.json b/public/registry/dialog-35.json
index 5d2bdd14..c1d02098 100644
--- a/public/registry/dialog-35.json
+++ b/public/registry/dialog-35.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus, lucideUserRoundCheck } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-35',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmButton, HlmDialogImports],\n\tproviders: [provideIcons({ lucideUserRoundCheck, lucideMinus, lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\tPurchase seats \n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ purchaseSeats() }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tPrice per seat \n\t\t\t\t\t\t\t$ {{ pricePerSeat() }} \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTotal \n\t\t\t\t\t\t\t$ {{ totalPrice() }} \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tPurchase seats \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog35Component {\n\tpurchaseSeats = signal(28);\n\tpricePerSeat = signal(10);\n\ttotalPrice = computed(() => this.purchaseSeats() * this.pricePerSeat());\n\n\tincreaseSeats(): void {\n\t\tthis.purchaseSeats.set(this.purchaseSeats() + 1);\n\t}\n\n\tdecreaseSeats(): void {\n\t\tif (this.purchaseSeats() > 1) {\n\t\t\tthis.purchaseSeats.set(this.purchaseSeats() - 1);\n\t\t}\n\t}\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMinus, lucidePlus, lucideUserRoundCheck } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDialogImports } from '@spartan-ng/helm/dialog';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dialog-35',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmButtonImports, HlmDialogImports],\n\tproviders: [provideIcons({ lucideUserRoundCheck, lucideMinus, lucidePlus })],\n\ttemplate: `\n\t\t\n\t\t\tPurchase seats \n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{ purchaseSeats() }}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tPrice per seat \n\t\t\t\t\t\t\t$ {{ pricePerSeat() }} \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTotal \n\t\t\t\t\t\t\t$ {{ totalPrice() }} \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\tCancel \n\t\t\t\t\tPurchase seats \n\t\t\t\t
\n\t\t\t \n\t\t \n\t`,\n})\nexport class Dialog35Component {\n\tprotected readonly purchaseSeats = signal(28);\n\tprotected readonly pricePerSeat = signal(10);\n\tprotected readonly totalPrice = computed(() => this.purchaseSeats() * this.pricePerSeat());\n\n\tprotected increaseSeats(): void {\n\t\tthis.purchaseSeats.set(this.purchaseSeats() + 1);\n\t}\n\n\tprotected decreaseSeats(): void {\n\t\tif (this.purchaseSeats() > 1) {\n\t\t\tthis.purchaseSeats.set(this.purchaseSeats() - 1);\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-01.json b/public/registry/dropdown-01.json
index 88c56177..d329ff6e 100644
--- a/public/registry/dropdown-01.json
+++ b/public/registry/dropdown-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideEllipsis } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-01',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideEllipsis })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tOption 1 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 2 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 3 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 4 \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown01Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideEllipsis } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-01',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideEllipsis })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tOption 1 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 2 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 3 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 4 \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown01Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-02.json b/public/registry/dropdown-02.json
index e453a316..f76e440c 100644
--- a/public/registry/dropdown-02.json
+++ b/public/registry/dropdown-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-02',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tSame width of trigger \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tOption 1 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 2 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 3 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 4 \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown02Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-02',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tSame width of trigger \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tOption 1 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 2 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 3 \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tOption 4 \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown02Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-03.json b/public/registry/dropdown-03.json
index 5ecef711..f7a92e34 100644
--- a/public/registry/dropdown-03.json
+++ b/public/registry/dropdown-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBolt, lucideChevronDown, lucideCopyPlus, lucideFile, lucideLayers2 } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-03',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tMenu with icons \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCopy \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tEdit \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tGroup \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tClone \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown03Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBolt, lucideChevronDown, lucideCopyPlus, lucideFile, lucideLayers2 } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-03',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tMenu with icons \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCopy \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tEdit \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tGroup \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tClone \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown03Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-04.json b/public/registry/dropdown-04.json
index 99154860..97cda30b 100644
--- a/public/registry/dropdown-04.json
+++ b/public/registry/dropdown-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBolt,\n\tlucideChevronDown,\n\tlucideCopyPlus,\n\tlucideFile,\n\tlucideLayers2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-04',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile, lucideTrash })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tGrouped items \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCopy \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tEdit \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tGroup \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tClone \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDelete \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown04Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBolt,\n\tlucideChevronDown,\n\tlucideCopyPlus,\n\tlucideFile,\n\tlucideLayers2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-04',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile, lucideTrash })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tGrouped items \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCopy \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tEdit \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tGroup \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tClone \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDelete \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown04Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-05.json b/public/registry/dropdown-05.json
index e09b6efc..46eff3df 100644
--- a/public/registry/dropdown-05.json
+++ b/public/registry/dropdown-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBolt,\n\tlucideChevronDown,\n\tlucideCopyPlus,\n\tlucideFile,\n\tlucideLayers2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-05',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile, lucideTrash })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tLabeled grouped items \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tQuick action\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCopy \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tEdit \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tPinned action\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tGroup \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tClone \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDelete \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown05Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBolt,\n\tlucideChevronDown,\n\tlucideCopyPlus,\n\tlucideFile,\n\tlucideLayers2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-05',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile, lucideTrash })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tLabeled grouped items \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tQuick action\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCopy \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tEdit \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tPinned action\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tGroup \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tClone \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDelete \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown05Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-06.json b/public/registry/dropdown-06.json
index e465d841..12587df4 100644
--- a/public/registry/dropdown-06.json
+++ b/public/registry/dropdown-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBolt, lucideChevronDown, lucideCopyPlus, lucideFile, lucideLayers2 } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-06',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tMenu with icons \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tAngular \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTailwindCSS \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tRxJS \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTypeScript \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown06Component {\n\tangular = signal(true);\n\ttailwind = signal(false);\n\trxjs = signal(false);\n\ttypescript = signal(true);\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBolt, lucideChevronDown, lucideCopyPlus, lucideFile, lucideLayers2 } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-06',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tMenu with icons \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tAngular \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTailwindCSS \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tRxJS \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTypeScript \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown06Component {\n\tangular = signal(true);\n\ttailwind = signal(false);\n\trxjs = signal(false);\n\ttypescript = signal(true);\n}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-07.json b/public/registry/dropdown-07.json
index bff29df6..eefe06bf 100644
--- a/public/registry/dropdown-07.json
+++ b/public/registry/dropdown-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBolt, lucideChevronDown, lucideCopyPlus, lucideFile, lucideLayers2 } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-07',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tRadio items \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tAngular \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTypeScript \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tRxJS \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTailwindCSS \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown07Component {\n\tvalue = signal('angular');\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBolt, lucideChevronDown, lucideCopyPlus, lucideFile, lucideLayers2 } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-07',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideChevronDown, lucideCopyPlus, lucideBolt, lucideLayers2, lucideFile })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tRadio items \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tAngular \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTypeScript \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tRxJS \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTailwindCSS \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown07Component {\n\tprotected readonly value = signal('angular');\n}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-08.json b/public/registry/dropdown-08.json
index 53c7eb85..f8f31cbc 100644
--- a/public/registry/dropdown-08.json
+++ b/public/registry/dropdown-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBolt,\n\tlucideChevronDown,\n\tlucideChevronRight,\n\tlucideCopyPlus,\n\tlucideFile,\n\tlucideLayers2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-08',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideChevronRight,\n\t\t\tlucideCopyPlus,\n\t\t\tlucideBolt,\n\t\t\tlucideLayers2,\n\t\t\tlucideFile,\n\t\t\tlucideTrash,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tRich menu \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tEdit \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘E\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tDuplicate \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘D\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tArchive \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘A\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMore \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tShare \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tAdd to favorites \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tDelete \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘⌫\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\n\t\t\n\t\t\t\n\t\t\t\tMove to project \n\t\t\t\tMove to folder \n\t\t\t\t \n\t\t\t\tAdvance options \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown08Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBolt,\n\tlucideChevronDown,\n\tlucideChevronRight,\n\tlucideCopyPlus,\n\tlucideFile,\n\tlucideLayers2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-08',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideChevronRight,\n\t\t\tlucideCopyPlus,\n\t\t\tlucideBolt,\n\t\t\tlucideLayers2,\n\t\t\tlucideFile,\n\t\t\tlucideTrash,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tRich menu \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tEdit \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘E\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tDuplicate \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘D\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tArchive \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘A\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMore \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tShare \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tAdd to favorites \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tDelete \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘⌫\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\n\t\t\n\t\t\t\n\t\t\t\tMove to project \n\t\t\t\tMove to folder \n\t\t\t\t \n\t\t\t\tAdvance options \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown08Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-09.json b/public/registry/dropdown-09.json
index 23f2f974..2ebf811e 100644
--- a/public/registry/dropdown-09.json
+++ b/public/registry/dropdown-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideArchiveRestore,\n\tlucideBell,\n\tlucideChevronDown,\n\tlucideChevronRight,\n\tlucideCpu,\n\tlucidePlus,\n\tlucideShare2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-09',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideChevronRight,\n\t\t\tlucidePlus,\n\t\t\tlucideTrash,\n\t\t\tlucideCpu,\n\t\t\tlucideBell,\n\t\t\tlucideShare2,\n\t\t\tlucideArchiveRestore,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tRich menu with icons \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tNew \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘N\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tNotifications \n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tShare \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tArchive \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDelete \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘⌫\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tAngular \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tTypeScript \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tRxJS \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tTailwindCSS \n\t\t\t\t \n\t\t\t \n\t\t \n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tEmail \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tPush \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown09Component {\n\tvalue = signal('angular');\n\temail = signal(true);\n\tpush = signal(false);\n}"
+ "content": "import { Component, signal } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideArchiveRestore,\n\tlucideBell,\n\tlucideChevronDown,\n\tlucideChevronRight,\n\tlucideCpu,\n\tlucidePlus,\n\tlucideShare2,\n\tlucideTrash,\n} from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-09',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideChevronRight,\n\t\t\tlucidePlus,\n\t\t\tlucideTrash,\n\t\t\tlucideCpu,\n\t\t\tlucideBell,\n\t\t\tlucideShare2,\n\t\t\tlucideArchiveRestore,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tRich menu with icons \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tNew \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘N\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tFramework \n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tNotifications \n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tShare \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tArchive \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDelete \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘⌫\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tAngular \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tTypeScript \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tRxJS \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tTailwindCSS \n\t\t\t\t \n\t\t\t \n\t\t \n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tEmail \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tPush \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown09Component {\n\tprotected readonly value = signal('angular');\n\tprotected readonly email = signal(true);\n\tprotected readonly push = signal(false);\n}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-10.json b/public/registry/dropdown-10.json
index 2a0cdd3d..e807fcb6 100644
--- a/public/registry/dropdown-10.json
+++ b/public/registry/dropdown-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUser } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-10',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideCircleUser })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSigned in as \n\t\t\t\t\t\ttdphuong@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tProfile \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tSettings \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tPermissions \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tLogout \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown10Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUser } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-10',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideCircleUser })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSigned in as \n\t\t\t\t\t\ttdphuong@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tProfile \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tSettings \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tPermissions \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tLogout \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown10Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-11.json b/public/registry/dropdown-11.json
index fbd5b7d5..26e92c6e 100644
--- a/public/registry/dropdown-11.json
+++ b/public/registry/dropdown-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleUser,\n\tlucideLifeBuoy,\n\tlucideLogOut,\n\tlucideMessageSquareWarning,\n\tlucideSettings,\n\tlucideShieldCheck,\n\tlucideUserPen,\n} from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-dropdown-11',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideCircleUser,\n\t\t\tlucideUserPen,\n\t\t\tlucideSettings,\n\t\t\tlucideShieldCheck,\n\t\t\tlucideLifeBuoy,\n\t\t\tlucideMessageSquareWarning,\n\t\t\tlucideLogOut,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tML \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\tm.lewis@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tProfile \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSettings \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tPermissions \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tHelp & Support \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tReport a Problem \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLogout \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown11Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleUser,\n\tlucideLifeBuoy,\n\tlucideLogOut,\n\tlucideMessageSquareWarning,\n\tlucideSettings,\n\tlucideShieldCheck,\n\tlucideUserPen,\n} from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-dropdown-11',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAvatarImports, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideCircleUser,\n\t\t\tlucideUserPen,\n\t\t\tlucideSettings,\n\t\t\tlucideShieldCheck,\n\t\t\tlucideLifeBuoy,\n\t\t\tlucideMessageSquareWarning,\n\t\t\tlucideLogOut,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tML \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\tm.lewis@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tProfile \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSettings \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tPermissions \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tHelp & Support \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tReport a Problem \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLogout \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown11Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-12.json b/public/registry/dropdown-12.json
index 32c3bd87..d118bf95 100644
--- a/public/registry/dropdown-12.json
+++ b/public/registry/dropdown-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChevronDown,\n\tlucideLifeBuoy,\n\tlucideLogOut,\n\tlucideMessageSquareWarning,\n\tlucideSettings,\n\tlucideShieldCheck,\n\tlucideUserPen,\n} from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-dropdown-12',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideUserPen,\n\t\t\tlucideSettings,\n\t\t\tlucideShieldCheck,\n\t\t\tlucideLifeBuoy,\n\t\t\tlucideMessageSquareWarning,\n\t\t\tlucideLogOut,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
ng-icon]:px-[3px]\"\n\t\t\t\t[hlmDropdownMenuTrigger]=\"menu\">\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\tm.lewis@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tProfile \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSettings \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tPermissions \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tHelp & Support \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tReport a Problem \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLogout \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown12Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideChevronDown,\n\tlucideLifeBuoy,\n\tlucideLogOut,\n\tlucideMessageSquareWarning,\n\tlucideSettings,\n\tlucideShieldCheck,\n\tlucideUserPen,\n} from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-dropdown-12',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAvatarImports, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideUserPen,\n\t\t\tlucideSettings,\n\t\t\tlucideShieldCheck,\n\t\t\tlucideLifeBuoy,\n\t\t\tlucideMessageSquareWarning,\n\t\t\tlucideLogOut,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t
ng-icon]:px-[3px]\"\n\t\t\t\t[hlmDropdownMenuTrigger]=\"menu\">\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\tML \n\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\tm.lewis@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tProfile \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSettings \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tPermissions \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tHelp & Support \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tReport a Problem \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLogout \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown12Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-13.json b/public/registry/dropdown-13.json
index 1f47deba..6c5cc1b3 100644
--- a/public/registry/dropdown-13.json
+++ b/public/registry/dropdown-13.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBookText, lucideCircleAlert, lucideLifeBuoy, lucideMessageCircleMore } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-13',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideCircleAlert, lucideLifeBuoy, lucideMessageCircleMore, lucideBookText })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tNeed help?\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDocumentation \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSupport \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tContact Us \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown13Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideBookText, lucideCircleAlert, lucideLifeBuoy, lucideMessageCircleMore } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-13',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideCircleAlert, lucideLifeBuoy, lucideMessageCircleMore, lucideBookText })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tNeed help?\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDocumentation \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSupport \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tContact Us \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown13Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-14.json b/public/registry/dropdown-14.json
index 1f7a5210..931aa686 100644
--- a/public/registry/dropdown-14.json
+++ b/public/registry/dropdown-14.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHeading1, lucideHeading2, lucideMinus, lucidePlus, lucideTextQuote, lucideType } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-14',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucidePlus, lucideType, lucideTextQuote, lucideMinus, lucideHeading1, lucideHeading2 })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tAdd block \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tText \n\t\t\t\t\t\t\tStart writing with plain text \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tQuote \n\t\t\t\t\t\t\tCapture a quote \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tDivider \n\t\t\t\t\t\t\tVisually separate content \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHeading 1 \n\t\t\t\t\t\t\tBig section heading \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHeading 2 \n\t\t\t\t\t\t\tMedium section heading \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown14Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideHeading1, lucideHeading2, lucideMinus, lucidePlus, lucideTextQuote, lucideType } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-14',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucidePlus, lucideType, lucideTextQuote, lucideMinus, lucideHeading1, lucideHeading2 })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tAdd block \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tText \n\t\t\t\t\t\t\tStart writing with plain text \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tQuote \n\t\t\t\t\t\t\tCapture a quote \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tDivider \n\t\t\t\t\t\t\tVisually separate content \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHeading 1 \n\t\t\t\t\t\t\tBig section heading \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHeading 2 \n\t\t\t\t\t\t\tMedium section heading \n\t\t\t\t\t\t
\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown14Component {}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-15.json b/public/registry/dropdown-15.json
index 79e2b99d..c4c5ada7 100644
--- a/public/registry/dropdown-15.json
+++ b/public/registry/dropdown-15.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal } from '@angular/core';\nimport { IconType, NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMonitorCog, lucideMoon, lucideSun } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-15',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideSun, lucideMoon, lucideMonitorCog })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLight \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDark \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSystem \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown15Component {\n\tthemeValue = signal<'light' | 'dark' | 'system'>('light');\n\tcomputedIcon = computed(() => {\n\t\tswitch (this.themeValue()) {\n\t\t\tcase 'light':\n\t\t\t\treturn 'lucideSun';\n\t\t\tcase 'dark':\n\t\t\t\treturn 'lucideMoon';\n\t\t\tcase 'system':\n\t\t\t\treturn 'lucideMonitorCog';\n\t\t}\n\t});\n}"
+ "content": "import { Component, computed, signal } from '@angular/core';\nimport { IconType, NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideMonitorCog, lucideMoon, lucideSun } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-dropdown-15',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmDropdownMenuImports],\n\tproviders: [provideIcons({ lucideSun, lucideMoon, lucideMonitorCog })],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLight \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tDark \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSystem \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown15Component {\n\tprotected readonly themeValue = signal<'light' | 'dark' | 'system'>('light');\n\tprotected readonly computedIcon = computed(() => {\n\t\tswitch (this.themeValue()) {\n\t\t\tcase 'light':\n\t\t\t\treturn 'lucideSun';\n\t\t\tcase 'dark':\n\t\t\t\treturn 'lucideMoon';\n\t\t\tcase 'system':\n\t\t\t\treturn 'lucideMonitorCog';\n\t\t}\n\t});\n}"
}
\ No newline at end of file
diff --git a/public/registry/dropdown-16.json b/public/registry/dropdown-16.json
index 01dce58c..5dcbd0d1 100644
--- a/public/registry/dropdown-16.json
+++ b/public/registry/dropdown-16.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBox,\n\tlucideChevronDown,\n\tlucideLayers2,\n\tlucideLogOut,\n\tlucideMessageCircleQuestion,\n\tlucideSettings,\n\tlucideSlack,\n\tlucideUser,\n\tlucideUserPlus,\n\tlucideUsers,\n\tlucideWarehouse,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { HlmAvatar, HlmAvatarFallback, HlmAvatarImage } from '@spartan-ng/helm/avatar';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-dropdown-16',\n\timports: [NgIcon, HlmIcon, HlmButton, HlmAvatar, HlmAvatarImage, HlmAvatarFallback, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideUser,\n\t\t\tlucideSettings,\n\t\t\tlucideZap,\n\t\t\tlucideWarehouse,\n\t\t\tlucideUsers,\n\t\t\tlucideUserPlus,\n\t\t\tlucideLayers2,\n\t\t\tlucideSlack,\n\t\t\tlucideMessageCircleQuestion,\n\t\t\tlucideBox,\n\t\t\tlucideLogOut,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tAccount \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tML \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\tm.lewis@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tView profile \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘K+P\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSettings \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘S\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tKeyboard shortcuts \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t?\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCompany profile \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘K+C\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTeam \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘K+T\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tInvite colleagues \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘I\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tChangelog \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSlack Community \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSupport \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tAPI \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLogout \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌥⇧Q\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown16Component {}"
+ "content": "import { Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideBox,\n\tlucideChevronDown,\n\tlucideLayers2,\n\tlucideLogOut,\n\tlucideMessageCircleQuestion,\n\tlucideSettings,\n\tlucideSlack,\n\tlucideUser,\n\tlucideUserPlus,\n\tlucideUsers,\n\tlucideWarehouse,\n\tlucideZap,\n} from '@ng-icons/lucide';\nimport { HlmAvatarImports } from '@spartan-ng/helm/avatar';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmDropdownMenuImports } from '@spartan-ng/helm/dropdown-menu';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-dropdown-16',\n\timports: [NgIcon, HlmIconImports, HlmButtonImports, HlmAvatarImports, HlmDropdownMenuImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideChevronDown,\n\t\t\tlucideUser,\n\t\t\tlucideSettings,\n\t\t\tlucideZap,\n\t\t\tlucideWarehouse,\n\t\t\tlucideUsers,\n\t\t\tlucideUserPlus,\n\t\t\tlucideLayers2,\n\t\t\tlucideSlack,\n\t\t\tlucideMessageCircleQuestion,\n\t\t\tlucideBox,\n\t\t\tlucideLogOut,\n\t\t}),\n\t],\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\tAccount \n\t\t\t\t \n\t\t\t \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tML \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\tMathilde Lewis \n\t\t\t\t\t\tm.lewis@simui.dev \n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tView profile \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘K+P\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSettings \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘S\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tKeyboard shortcuts \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t?\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tCompany profile \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘K+C\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tTeam \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘K+T\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tInvite colleagues \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌘I\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tChangelog \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSlack Community \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tSupport \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tAPI \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\tLogout \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t⌥⇧Q\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t`,\n})\nexport class Dropdown16Component {}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-01.json b/public/registry/file-upload-01.json
index 18c3f2e7..9f1920c4 100644
--- a/public/registry/file-upload-01.json
+++ b/public/registry/file-upload-01.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-01',\n\tproviders: [provideIcons({ lucideCircleUserRound })],\n\timports: [HlmButton, HlmIcon, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ buttonLabel() }}\n\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ fileName() }}\n\t\t\t\t\t
\n\t\t\t\t\t
Remove \n\t\t\t\t
\n\t\t\t}\n\t\t\t
Basic image uploader
\n\t\t
\n\t`,\n})\nexport class FileUpload01Component {\n\tpreviewUrl = signal(null);\n\tfileName = signal(null);\n\tfileInput = viewChild('fileInput');\n\tbuttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tonRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
+ "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-01',\n\tproviders: [provideIcons({ lucideCircleUserRound })],\n\timports: [NgIcon, HlmButtonImports, HlmIconImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ buttonLabel() }}\n\t\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ fileName() }}\n\t\t\t\t\t
\n\t\t\t\t\t
Remove \n\t\t\t\t
\n\t\t\t}\n\t\t\t
Basic image uploader
\n\t\t
\n\t`,\n})\nexport class FileUpload01Component {\n\tprotected readonly previewUrl = signal(null);\n\tprotected readonly fileName = signal(null);\n\tprotected readonly fileInput = viewChild('fileInput');\n\tprotected readonly buttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tprotected onRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-02.json b/public/registry/file-upload-02.json
index 3a4d363a..f206ef5a 100644
--- a/public/registry/file-upload-02.json
+++ b/public/registry/file-upload-02.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound, lucideX } from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-02',\n\tproviders: [provideIcons({ lucideCircleUserRound, lucideX })],\n\timports: [HlmButton, HlmIcon, NgIcon],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t{{ fileName() }}\n\t\t\t\t
\n\t\t\t}\n\t\t\t
Avatar upload button
\n\t\t
\n\t`,\n})\nexport class FileUpload02Component {\n\tpreviewUrl = signal(null);\n\tfileName = signal(null);\n\tfileInput = viewChild('fileInput');\n\tbuttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tonRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
+ "content": "import { Component, computed, ElementRef, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound, lucideX } from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-02',\n\tproviders: [provideIcons({ lucideCircleUserRound, lucideX })],\n\timports: [NgIcon, HlmButtonImports, HlmIconImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t\t@if (previewUrl()) {\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (previewUrl()) {\n\t\t\t\t
\n\t\t\t\t\t{{ fileName() }}\n\t\t\t\t
\n\t\t\t}\n\t\t\t
Avatar upload button
\n\t\t
\n\t`,\n})\nexport class FileUpload02Component {\n\tprotected readonly previewUrl = signal(null);\n\tprotected readonly fileName = signal(null);\n\tprotected readonly fileInput = viewChild('fileInput');\n\tprotected readonly buttonLabel = computed(() => (this.previewUrl() ? 'Change image' : 'Upload image'));\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tconst file = input.files[0];\n\t\t\tconst url = URL.createObjectURL(file);\n\t\t\tthis.previewUrl.set(url);\n\t\t\tthis.fileName.set(file.name);\n\t\t}\n\t}\n\n\tprotected onRemoveImage(): void {\n\t\tthis.previewUrl.set(null);\n\t\tthis.fileName.set(null);\n\t\tconst fileInputElement = this.fileInput()?.nativeElement;\n\t\tif (fileInputElement) {\n\t\t\tfileInputElement.value = '';\n\t\t}\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-03.json b/public/registry/file-upload-03.json
index 61af54a4..871b76bb 100644
--- a/public/registry/file-upload-03.json
+++ b/public/registry/file-upload-03.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileUploadState } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-03',\n\tproviders: [provideIcons({ lucideCircleUserRound, lucideX })],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (this.files().length > 0) {\n\t\t\t\t
\n\t\t\t\t\t{{ this.files()[0].file.name }}\n\t\t\t\t
\n\t\t\t}\n\t\t\t
Avatar uploader with droppable area
\n\t\t
\n\t`,\n})\nexport class FileUpload03Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\tmaxSize = 5 * 1024 * 1024; // 5MB\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleUserRound, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileUploadState } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-03',\n\tproviders: [provideIcons({ lucideCircleUserRound, lucideX })],\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t\t \n\t\t\t\t\t} @else {\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t \n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t\t@if (this.files().length > 0) {\n\t\t\t\t
\n\t\t\t\t\t{{ this.files()[0].file.name }}\n\t\t\t\t
\n\t\t\t}\n\t\t\t
Avatar uploader with droppable area
\n\t\t
\n\t`,\n})\nexport class FileUpload03Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly maxSize = 5 * 1024 * 1024; // 5MB\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-04.json b/public/registry/file-upload-04.json
index 3a554073..9feda0d5 100644
--- a/public/registry/file-upload-04.json
+++ b/public/registry/file-upload-04.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileUploadState } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-04',\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert })],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your image here or click to browse \n\t\t\t\t\t\t\t
Max size: 5MB \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t\n\t\t\t\t \n\t\t\t\t{{ this.errors()[0] }}\n\t\t\t \n\t\t}\n\t\tSingle image uploader w/ max size
\n\t`,\n})\nexport class FileUpload04Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tmaxSize = 5 * 1024 * 1024; // 5MB\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileUploadState } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-04',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your image here or click to browse \n\t\t\t\t\t\t\t
Max size: 5MB \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t\n\t\t\t\t \n\t\t\t\t{{ this.errors()[0] }}\n\t\t\t \n\t\t}\n\t\tSingle image uploader w/ max size
\n\t`,\n})\nexport class FileUpload04Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly maxSize = 5 * 1024 * 1024; // 5MB\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-05.json b/public/registry/file-upload-05.json
index 514a87d5..48d42686 100644
--- a/public/registry/file-upload-05.json
+++ b/public/registry/file-upload-05.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileUploadState } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-05',\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert, lucideUpload })],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your image here \n\t\t\t\t\t\t\t
SVG, PNG, JPG or GIF (max. 5MB) \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t\n\t\t\t\t \n\t\t\t\t{{ this.errors()[0] }}\n\t\t\t \n\t\t}\n\t\t\n\t\t\tSingle image uploader w/ max size (drop area + button)\n\t\t
\n\t`,\n})\nexport class FileUpload05Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxSize = 5 * 1024 * 1024; // 5MB\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tacceptedFileTypes = 'image/svg+xml,image/jpeg,image/jpg,image/gif';\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileUploadState } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-05',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert, lucideUpload })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your image here \n\t\t\t\t\t\t\t
SVG, PNG, JPG or GIF (max. 5MB) \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t\n\t\t\t\t \n\t\t\t\t{{ this.errors()[0] }}\n\t\t\t \n\t\t}\n\t\t\n\t\t\tSingle image uploader w/ max size (drop area + button)\n\t\t
\n\t`,\n})\nexport class FileUpload05Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxSize = 5 * 1024 * 1024; // 5MB\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly acceptedFileTypes = 'image/svg+xml,image/jpeg,image/jpg,image/gif';\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-06.json b/public/registry/file-upload-06.json
index 24f72e1d..0e4012c3 100644
--- a/public/registry/file-upload-06.json
+++ b/public/registry/file-upload-06.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideTrash2, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-06',\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert, lucideUpload, lucideTrash2 })],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Uploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your image here or click to browse \n\t\t\t\t\t\t\t
SVG, PNG, JPG or GIF (max. 5MB) \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple image uploader w/ image grid
\n\t`,\n})\nexport class FileUpload06Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxSize = 5 * 1024 * 1024; // 5MB\n\taccept = 'image/svg+xml,image/png,image/jpeg,image/jpg,image/gif';\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tinitialFiles = signal([\n\t\t{\n\t\t\tid: '123',\n\t\t\tname: 'bg-03.jpg',\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '234',\n\t\t\tname: 'bg-04.jpg',\n\t\t\turl: 'assets/backgrounds/bg-04.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '345',\n\t\t\tname: 'bg-05.jpg',\n\t\t\turl: 'assets/backgrounds/bg-05.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '456',\n\t\t\tname: 'bg-06.jpg',\n\t\t\turl: 'assets/backgrounds/bg-06.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t]);\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideTrash2, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-06',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert, lucideUpload, lucideTrash2 })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Uploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your image here or click to browse \n\t\t\t\t\t\t\t
SVG, PNG, JPG or GIF (max. 5MB) \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple image uploader w/ image grid
\n\t`,\n})\nexport class FileUpload06Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxSize = 5 * 1024 * 1024; // 5MB\n\tprotected readonly accept = 'image/svg+xml,image/png,image/jpeg,image/jpg,image/gif';\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly initialFiles = signal([\n\t\t{\n\t\t\tid: '123',\n\t\t\tname: 'bg-03.jpg',\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '234',\n\t\t\tname: 'bg-04.jpg',\n\t\t\turl: 'assets/backgrounds/bg-04.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '345',\n\t\t\tname: 'bg-05.jpg',\n\t\t\turl: 'assets/backgrounds/bg-05.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '456',\n\t\t\tname: 'bg-06.jpg',\n\t\t\turl: 'assets/backgrounds/bg-06.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t]);\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-07.json b/public/registry/file-upload-07.json
index ce24837f..fe9525d2 100644
--- a/public/registry/file-upload-07.json
+++ b/public/registry/file-upload-07.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-07',\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert, lucideUpload })],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Drop your image here \n\t\t\t\t\t\t
SVG, PNG, JPG or GIF (max. 5MB) \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 1) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tRemove all files\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple image uploader w/ image list
\n\t`,\n})\nexport class FileUpload07Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxSize = 5 * 1024 * 1024; // 5MB\n\taccept = 'image/svg+xml,image/png,image/jpeg,image/jpg,image/gif';\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tformatBytes = formatBytes;\n\tinitialFiles: FileMetadata[] = [\n\t\t{\n\t\t\tid: '123',\n\t\t\tname: 'bg-03.jpg',\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '234',\n\t\t\tname: 'bg-04.jpg',\n\t\t\turl: 'assets/backgrounds/bg-04.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '345',\n\t\t\tname: 'bg-05.jpg',\n\t\t\turl: 'assets/backgrounds/bg-05.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '456',\n\t\t\tname: 'bg-06.jpg',\n\t\t\turl: 'assets/backgrounds/bg-06.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t];\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucideImageUp, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-07',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideX, lucideImageUp, lucideCircleAlert, lucideUpload })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Drop your image here \n\t\t\t\t\t\t
SVG, PNG, JPG or GIF (max. 5MB) \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t@if (this.files().length > 1) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tRemove all files\n\t\t\t\t\t\t \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple image uploader w/ image list
\n\t`,\n})\nexport class FileUpload07Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxSize = 5 * 1024 * 1024; // 5MB\n\tprotected readonly accept = 'image/svg+xml,image/png,image/jpeg,image/jpg,image/gif';\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly formatBytes = formatBytes;\n\tprotected readonly initialFiles: FileMetadata[] = [\n\t\t{\n\t\t\tid: '123',\n\t\t\tname: 'bg-03.jpg',\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '234',\n\t\t\tname: 'bg-04.jpg',\n\t\t\turl: 'assets/backgrounds/bg-04.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '345',\n\t\t\tname: 'bg-05.jpg',\n\t\t\turl: 'assets/backgrounds/bg-05.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tid: '456',\n\t\t\tname: 'bg-06.jpg',\n\t\t\turl: 'assets/backgrounds/bg-06.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t];\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-08.json b/public/registry/file-upload-08.json
index 7adcd54e..bc3a4c6d 100644
--- a/public/registry/file-upload-08.json
+++ b/public/registry/file-upload-08.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucidePaperclip, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-file-upload-08',\n\tproviders: [provideIcons({ lucideX, lucideCircleAlert, lucideUpload, lucidePaperclip })],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t
Drag & drop or click to browse (max. 10MB) \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{{ file.file.name }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tSingle file uploader w/ max size
\n\t`,\n})\nexport class FileUpload08Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxSize = 10 * 1024 * 1024; // 10MB\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tdisabled = computed(() => this.files().length >= 1);\n\tinitialFiles = signal([\n\t\t{\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\tname: 'background-01.jpg',\n\t\t\tsize: 1258291.2,\n\t\t\tid: '123',\n\t\t\ttype: 'image/jpeg',\n\t\t},\n\t]);\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideCircleAlert, lucidePaperclip, lucideUpload, lucideX } from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n@Component({\n\tselector: 'sim-file-upload-08',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [provideIcons({ lucideX, lucideCircleAlert, lucideUpload, lucidePaperclip })],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t
Drag & drop or click to browse (max. 10MB) \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{{ file.file.name }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tSingle file uploader w/ max size
\n\t`,\n})\nexport class FileUpload08Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxSize = 10 * 1024 * 1024; // 10MB\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly disabled = computed(() => this.files().length >= 1);\n\tprotected readonly initialFiles = signal([\n\t\t{\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\tname: 'background-01.jpg',\n\t\t\tsize: 1258291.2,\n\t\t\tid: '123',\n\t\t\ttype: 'image/jpeg',\n\t\t},\n\t]);\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-09.json b/public/registry/file-upload-09.json
index 7891550a..3a9841a9 100644
--- a/public/registry/file-upload-09.json
+++ b/public/registry/file-upload-09.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-09',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t}),\n\t],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t
Drag & drop or click to browse \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tUp to 100MB \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tRemove all files\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Total files: {{ files().length }} \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Total size: {{ totalSize() }} \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tSingle file uploader w/ max size
\n\t`,\n})\nexport class FileUpload09Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxTotalSize = 100 * 1024 * 1024; // 100MB\n\tmaxFiles = 10;\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\ttotalSize = computed(() => formatBytes(this.files().reduce((acc, file) => acc + file.file.size, 0)));\n\tinitialFiles = signal([\n\t\t{\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\tname: 'background-01.jpg',\n\t\t\tsize: 1258291.2,\n\t\t\tid: '123',\n\t\t\ttype: 'image/jpeg',\n\t\t},\n\t]);\n\tformatBytes = formatBytes;\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tgetFileIcon = (file: { file: File | { type: string; name: string } }) => {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t};\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { IconName, NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-09',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t}),\n\t],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t
Drag & drop or click to browse \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tUp to 100MB \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t@if (this.files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tRemove all files\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Total files: {{ files().length }} \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Total size: {{ totalSize() }} \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tSingle file uploader w/ max size
\n\t`,\n})\nexport class FileUpload09Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxTotalSize = 100 * 1024 * 1024; // 100MB\n\tprotected readonly maxFiles = 10;\n\tprotected readonly filesState = signal(null);\n\tprotected readonly initialFiles = signal([\n\t\t{\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\tname: 'background-01.jpg',\n\t\t\tsize: 1258291.2,\n\t\t\tid: '123',\n\t\t\ttype: 'image/jpeg',\n\t\t},\n\t]);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly totalSize = computed(() =>\n\t\tformatBytes(this.files().reduce((acc, file) => acc + file.file.size, 0)),\n\t);\n\n\tprotected formatBytes = formatBytes;\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tprotected getFileIcon(file: { file: File | { type: string; name: string } }): IconName {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-10.json b/public/registry/file-upload-10.json
index 9de13b85..ccb5b39d 100644
--- a/public/registry/file-upload-10.json
+++ b/public/registry/file-upload-10.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideFileUp,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideTrash2,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-10',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideFileUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t}),\n\t],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tUploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tUp to 200MB \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect files\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple files uploader w/ list inside
\n\t`,\n})\nexport class FileUpload10Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxTotalSize = 200 * 1024 * 1024;\n\tmaxFiles = 10;\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tinitialFiles = signal([\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-11',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-11',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-11',\n\t\t},\n\t]);\n\tformatBytes = formatBytes;\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tgetFileIcon = (file: { file: File | { type: string; name: string } }) => {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t};\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { IconName, NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideFileUp,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideTrash2,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-10',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideFileUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t}),\n\t],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tUploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tUp to 200MB \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect files\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple files uploader w/ list inside
\n\t`,\n})\nexport class FileUpload10Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxTotalSize = 200 * 1024 * 1024;\n\tprotected readonly maxFiles = 10;\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly initialFiles = signal([\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-11',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-11',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-11',\n\t\t},\n\t]);\n\tprotected formatBytes = formatBytes;\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tprotected getFileIcon(file: { file: File | { type: string; name: string } }): IconName {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-11.json b/public/registry/file-upload-11.json
index 6a256e6d..cf140888 100644
--- a/public/registry/file-upload-11.json
+++ b/public/registry/file-upload-11.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideCloudUpload,\n\tlucideDownload,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideFileUp,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideTrash2,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\nimport { HlmTable, HlmTd, HlmTh, HlmTr } from '@spartan-ng/helm/table';\n\n@Component({\n\tselector: 'sim-file-upload-11',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideFileUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideCloudUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t\tlucideDownload,\n\t\t}),\n\t],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective, HlmTable, HlmTr, HlmTh, HlmTd],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Files: {{ files().length }} ∙ ({{ this.totalSize() }}) \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAdd files\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t\t\tType \n\t\t\t\t\t\t\t\t\t\tSize \n\t\t\t\t\t\t\t\t\t\tAction \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t@for (file of files(); track file.id) {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{{ file.file.type.split('/')[1].toUpperCase() || 'UNKNOWN' }}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{{ formatBytes(file.file.size) }}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"border-input has-[input:focus]:border-ring has-[input:focus]:ring-ring/50 relative flex min-h-52 flex-col items-center justify-center overflow-hidden rounded-xl border border-dashed p-4 transition-colors motion-reduce:transition-none has-disabled:pointer-events-none has-disabled:opacity-50 has-[img]:items-start! has-[input:focus]:ring-[3px]\"\n\t\t\t\t\tdragClass=\"bg-accent/50\"\n\t\t\t\t\t[multiple]=\"true\"\n\t\t\t\t\t[maxFiles]=\"maxFiles\"\n\t\t\t\t\t[maxTotalSize]=\"maxTotalSize\"\n\t\t\t\t\t[initialFiles]=\"initialFiles()\"\n\t\t\t\t\t(filesChange)=\"onFileStateChange($event)\">\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tUp to 200MB \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSelect files\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple files uploader w/ table
\n\t`,\n})\nexport class FileUpload11Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxTotalSize = 200 * 1024 * 1024;\n\tmaxFiles = 10;\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\ttotalSize = computed(() => formatBytes(this.files().reduce((acc, file) => acc + file.file.size, 0)));\n\tinitialFiles = signal([\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-10',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-10',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-10',\n\t\t},\n\t]);\n\tformatBytes = formatBytes;\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tgetFileIcon = (file: { file: File | { type: string; name: string } }) => {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t};\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { IconName, NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideCloudUpload,\n\tlucideDownload,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideFileUp,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideTrash2,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\nimport { HlmTableImports } from '@spartan-ng/helm/table';\n\n@Component({\n\tselector: 'sim-file-upload-11',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideFileUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideCloudUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t\tlucideDownload,\n\t\t}),\n\t],\n\timports: [HlmButtonImports, HlmIconImports, NgIcon, FileDragDropDirective, HlmTableImports],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Files: {{ files().length }} ∙ ({{ this.totalSize() }}) \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tAdd files\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t\t\tType \n\t\t\t\t\t\t\t\t\t\tSize \n\t\t\t\t\t\t\t\t\t\tAction \n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t@for (file of files(); track file.id) {\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{{ file.file.type.split('/')[1].toUpperCase() || 'UNKNOWN' }}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{{ formatBytes(file.file.size) }}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t
0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"border-input has-[input:focus]:border-ring has-[input:focus]:ring-ring/50 relative flex min-h-52 flex-col items-center justify-center overflow-hidden rounded-xl border border-dashed p-4 transition-colors has-disabled:pointer-events-none has-disabled:opacity-50 has-[img]:items-start! has-[input:focus]:ring-[3px] motion-reduce:transition-none\"\n\t\t\t\t\tdragClass=\"bg-accent/50\"\n\t\t\t\t\t[multiple]=\"true\"\n\t\t\t\t\t[maxFiles]=\"maxFiles\"\n\t\t\t\t\t[maxTotalSize]=\"maxTotalSize\"\n\t\t\t\t\t[initialFiles]=\"initialFiles()\"\n\t\t\t\t\t(filesChange)=\"onFileStateChange($event)\">\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\tUp to 200MB \n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tSelect files\n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMultiple files uploader w/ table
\n\t`,\n})\nexport class FileUpload11Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxTotalSize = 200 * 1024 * 1024;\n\tprotected readonly maxFiles = 10;\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly totalSize = computed(() =>\n\t\tformatBytes(this.files().reduce((acc, file) => acc + file.file.size, 0)),\n\t);\n\tprotected readonly initialFiles = signal([\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-10',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-10',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-10',\n\t\t},\n\t]);\n\tprotected formatBytes = formatBytes;\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tprotected getFileIcon(file: { file: File | { type: string; name: string } }): IconName {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-12.json b/public/registry/file-upload-12.json
index fa06df70..0255869b 100644
--- a/public/registry/file-upload-12.json
+++ b/public/registry/file-upload-12.json
@@ -1,3 +1,3 @@
{
- "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideDownload,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideImageUp,\n\tlucideTrash2,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-12',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideImageUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t\tlucideDownload,\n\t\t}),\n\t],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Uploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t@if (file.file.type.startsWith('image/')) {\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
{{ file.file.name }}
\n\t\t\t\t\t\t\t\t\t\t\t
{{ formatBytes(file.file.size) }}
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your files here \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tMax 6 files \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMixed content w/ card
\n\t`,\n})\nexport class FileUpload12Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxSize = 5 * 1024 * 1024; // 5MB\n\tmaxFiles = 6;\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tinitialFiles = signal([\n\t\t{\n\t\t\tid: '123',\n\t\t\tname: 'bg-03.jpg',\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-10',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-10',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-10',\n\t\t},\n\t]);\n\tformatBytes = formatBytes;\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tgetFileIcon(file: { file: File | { type: string; name: string } }) {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t}\n}"
+ "content": "import { Component, computed, signal, viewChild } from '@angular/core';\nimport { IconName, NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideDownload,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideImageUp,\n\tlucideTrash2,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { FileDragDropDirective, FileMetadata, FileUploadState, formatBytes } from '@sim/file';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\n@Component({\n\tselector: 'sim-file-upload-12',\n\timports: [NgIcon, FileDragDropDirective, HlmButtonImports, HlmIconImports],\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideImageUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t\tlucideDownload,\n\t\t}),\n\t],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Uploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t@if (file.file.type.startsWith('image/')) {\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
{{ file.file.name }}
\n\t\t\t\t\t\t\t\t\t\t\t
{{ formatBytes(file.file.size) }}
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Drop your files here \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tMax 6 files \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect image\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tMixed content w/ card
\n\t`,\n})\nexport class FileUpload12Component {\n\tprotected readonly fileUploadDirective = viewChild(FileDragDropDirective);\n\tprotected readonly maxSize = 5 * 1024 * 1024; // 5MB\n\tprotected readonly maxFiles = 6;\n\tprotected readonly filesState = signal(null);\n\tprotected readonly files = computed(() => this.filesState()?.files ?? []);\n\tprotected readonly errors = computed(() => this.filesState()?.errors ?? []);\n\tprotected readonly initialFiles = signal([\n\t\t{\n\t\t\tid: '123',\n\t\t\tname: 'bg-03.jpg',\n\t\t\turl: 'assets/backgrounds/bg-03.jpg',\n\t\t\ttype: 'image/jpeg',\n\t\t\tsize: 1.2 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-10',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-10',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-10',\n\t\t},\n\t]);\n\tprotected formatBytes = formatBytes;\n\n\tprotected onFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tprotected onFileStateChange(event: FileUploadState): void {\n\t\tthis.filesState.set(event);\n\t}\n\n\tprotected removeAllFiles(): void {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tprotected onRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tprotected getFileIcon(file: { file: File | { type: string; name: string } }): IconName {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t}\n}"
}
\ No newline at end of file
diff --git a/public/registry/file-upload-13.json b/public/registry/file-upload-13.json
index 748f4f11..c74a3e22 100644
--- a/public/registry/file-upload-13.json
+++ b/public/registry/file-upload-13.json
@@ -1,3 +1,3 @@
{
- "content": "import {\n\tFileDragDropDirective,\n\tFileMetadata,\n\tFileUploadState,\n\tFileWithPreview,\n\tformatBytes,\n} from '@/libs/sim/file/file-drag-drop.directive';\nimport { Component, computed, input, signal, viewChild } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideFileUp,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideTrash2,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { HlmButton } from '@spartan-ng/helm/button';\nimport { HlmIcon } from '@spartan-ng/helm/icon';\n\ntype UploadProgress = {\n\tfileId: string;\n\tprogress: number;\n\tcompleted: boolean;\n};\n\n@Component({\n\tselector: 'sim-progress-bar',\n\ttemplate: `\n\t\t@if (fileProgress() && !completed()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
{{ progress() }}% \n\t\t\t
\n\t\t}\n\t`,\n})\nexport class ProgressBarComponent {\n\tfileId = input();\n\tuploadProgress = input([]);\n\n\tfileProgress = computed(() => {\n\t\treturn this.uploadProgress().find((item) => item.fileId === this.fileId());\n\t});\n\tprogress = computed(() => {\n\t\treturn this.uploadProgress().find((item) => item.fileId === this.fileId())?.progress ?? 0;\n\t});\n\tcompleted = computed(() => {\n\t\treturn this.fileProgress() ? this.fileProgress()?.completed : false;\n\t});\n}\n\n@Component({\n\tselector: 'sim-file-upload-13',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideFileUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t}),\n\t],\n\timports: [HlmButton, HlmIcon, NgIcon, FileDragDropDirective, ProgressBarComponent],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Uploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{{ file.file.name }} \n\t\t\t\t\t\t\t\t\t\t\t\t{{ this.formatBytes(file.file.size) }} \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Upload file \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tAll files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tMax 10 files \n\t\t\t\t\t\t\t\t∙ \n\t\t\t\t\t\t\t\tUp to 200MB \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\tSelect files\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t@if (this.errors().length > 0) {\n\t\t\t@for (error of this.errors(); track error) {\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t{{ error }}\n\t\t\t\t \n\t\t\t}\n\t\t}\n\t\tWith simulated progress track
\n\t`,\n})\nexport class FileUpload13Component {\n\tfileUploadDirective = viewChild(FileDragDropDirective);\n\tmaxTotalSize = 200 * 1024 * 1024;\n\tmaxFiles = 10;\n\tfilesState = signal(null);\n\tfiles = computed(() => this.filesState()?.files ?? []);\n\terrors = computed(() => this.filesState()?.errors ?? []);\n\tinitialFiles = signal([\n\t\t{\n\t\t\tname: 'certificate.pdf',\n\t\t\tsize: 312412,\n\t\t\ttype: 'application/pdf',\n\t\t\turl: 'https://example.com/document.pdf',\n\t\t\tid: 'document.pdf-11',\n\t\t},\n\t\t{\n\t\t\tname: 'software.zip',\n\t\t\tsize: 534234,\n\t\t\ttype: 'application/zip',\n\t\t\turl: 'https://example.com/intro.zip',\n\t\t\tid: 'intro.zip-11',\n\t\t},\n\t\t{\n\t\t\tname: 'sheet.xlsx',\n\t\t\tsize: 154235,\n\t\t\ttype: 'application/xlsx',\n\t\t\turl: 'https://example.com/conclusion.xlsx',\n\t\t\tid: 'conclusion.xlsx-11',\n\t\t},\n\t]);\n\tformatBytes = formatBytes;\n\n\tuploadProgress = signal([]);\n\n\tonFileSelected(event: Event): void {\n\t\tconst input = event.target as HTMLInputElement;\n\t\tif (input.files && input.files.length > 0) {\n\t\t\tthis.fileUploadDirective()?.addFiles(input.files);\n\t\t}\n\t}\n\n\tonFileStateChange(event: FileUploadState) {\n\t\tthis.filesState.set(event);\n\t}\n\n\tremoveAllFiles() {\n\t\tthis.fileUploadDirective()?.clearFiles();\n\t}\n\n\tonRemoveImage(id: string): void {\n\t\tthis.fileUploadDirective()?.removeFile(id);\n\t}\n\n\tgetFileIcon = (file: { file: File | { type: string; name: string } }) => {\n\t\tconst fileType = file.file instanceof File ? file.file.type : file.file.type;\n\t\tconst fileName = file.file instanceof File ? file.file.name : file.file.name;\n\n\t\tif (\n\t\t\tfileType.includes('pdf') ||\n\t\t\tfileName.endsWith('.pdf') ||\n\t\t\tfileType.includes('word') ||\n\t\t\tfileName.endsWith('.doc') ||\n\t\t\tfileName.endsWith('.docx')\n\t\t) {\n\t\t\treturn 'lucideFileText';\n\t\t} else if (\n\t\t\tfileType.includes('zip') ||\n\t\t\tfileType.includes('archive') ||\n\t\t\tfileName.endsWith('.zip') ||\n\t\t\tfileName.endsWith('.rar')\n\t\t) {\n\t\t\treturn 'lucideFileArchive';\n\t\t} else if (fileType.includes('excel') || fileName.endsWith('.xls') || fileName.endsWith('.xlsx')) {\n\t\t\treturn 'lucideFileSpreadsheet';\n\t\t} else if (fileType.includes('video/')) {\n\t\t\treturn 'lucideVideo';\n\t\t} else if (fileType.includes('audio/')) {\n\t\t\treturn 'lucideHeadphones';\n\t\t} else if (fileType.startsWith('image/')) {\n\t\t\treturn 'lucideImage';\n\t\t}\n\t\treturn 'lucideFile';\n\t};\n\n\tsimulateUpload = (totalBytes: number, onProgress: (progress: number) => void, onComplete: () => void) => {\n\t\tlet timeoutId: NodeJS.Timeout;\n\t\tlet uploadedBytes = 0;\n\t\tlet lastProgressReport = 0;\n\n\t\tconst simulateChunk = () => {\n\t\t\t// Simulate variable network conditions with random chunk sizes\n\t\t\tconst chunkSize = Math.floor(Math.random() * 300000) + 2000;\n\t\t\tuploadedBytes = Math.min(totalBytes, uploadedBytes + chunkSize);\n\n\t\t\t// Calculate progress percentage (0-100)\n\t\t\tconst progressPercent = Math.floor((uploadedBytes / totalBytes) * 100);\n\n\t\t\t// Only report progress if it's changed by at least 1%\n\t\t\tif (progressPercent > lastProgressReport) {\n\t\t\t\tlastProgressReport = progressPercent;\n\t\t\t\tonProgress(progressPercent);\n\t\t\t}\n\n\t\t\t// Continue simulation if not complete\n\t\t\tif (uploadedBytes < totalBytes) {\n\t\t\t\t// Variable delay between 50ms and 500ms to simulate network fluctuations (reduced for faster uploads)\n\t\t\t\tconst delay = Math.floor(Math.random() * 450) + 50;\n\n\t\t\t\t// Occasionally add a longer pause to simulate network congestion (5% chance, shorter duration)\n\t\t\t\tconst extraDelay = Math.random() < 0.05 ? 500 : 0;\n\n\t\t\t\ttimeoutId = setTimeout(simulateChunk, delay + extraDelay);\n\t\t\t} else {\n\t\t\t\t// Upload complete\n\t\t\t\tonComplete();\n\t\t\t}\n\t\t};\n\n\t\t// Start the simulation\n\t\ttimeoutId = setTimeout(simulateChunk, 100);\n\n\t\t// Return a cleanup function to cancel the simulation\n\t\treturn () => {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t};\n\t};\n\n\thandleFilesAdded = (addedFiles: FileWithPreview[]) => {\n\t\t// Initialize progress tracking for each new file\n\t\tconst newProgressItems = addedFiles.map((file) => ({\n\t\t\tfileId: file.id,\n\t\t\tprogress: 0,\n\t\t\tcompleted: false,\n\t\t}));\n\n\t\t// Add new progress items to state\n\t\tthis.uploadProgress.update((prev) => [...prev, ...newProgressItems]);\n\n\t\t// Store cleanup functions\n\t\tconst cleanupFunctions: Array<() => void> = [];\n\n\t\t// Start simulated upload for each file\n\t\taddedFiles.forEach((file) => {\n\t\t\tconst fileSize = file.file instanceof File ? file.file.size : file.file.size;\n\n\t\t\t// Start the upload simulation and store the cleanup function\n\t\t\tconst cleanup = this.simulateUpload(\n\t\t\t\tfileSize,\n\t\t\t\t// Progress callback\n\t\t\t\t(progress) => {\n\t\t\t\t\tthis.uploadProgress.update((prev) =>\n\t\t\t\t\t\tprev.map((item) => (item.fileId === file.id ? { ...item, progress } : item)),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t// Complete callback\n\t\t\t\t() => {\n\t\t\t\t\tthis.uploadProgress.update((prev) =>\n\t\t\t\t\t\tprev.map((item) => (item.fileId === file.id ? { ...item, completed: true } : item)),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tcleanupFunctions.push(cleanup);\n\t\t});\n\n\t\t// Return a cleanup function that cancels all animations\n\t\treturn () => {\n\t\t\tcleanupFunctions.forEach((cleanup) => cleanup());\n\t\t};\n\t};\n}"
+ "content": "import {\n\tFileDragDropDirective,\n\tFileMetadata,\n\tFileUploadState,\n\tFileWithPreview,\n\tformatBytes,\n} from '@/libs/sim/file/file-drag-drop.directive';\nimport { Component, computed, input, signal, viewChild } from '@angular/core';\nimport { IconName, NgIcon, provideIcons } from '@ng-icons/core';\nimport {\n\tlucideCircleAlert,\n\tlucideFile,\n\tlucideFileArchive,\n\tlucideFileSpreadsheet,\n\tlucideFileText,\n\tlucideFileUp,\n\tlucideHeadphones,\n\tlucideImage,\n\tlucideTrash2,\n\tlucideUpload,\n\tlucideVideo,\n\tlucideX,\n} from '@ng-icons/lucide';\nimport { HlmButtonImports } from '@spartan-ng/helm/button';\nimport { HlmIconImports } from '@spartan-ng/helm/icon';\n\ninterface UploadProgress {\n\tfileId: string;\n\tprogress: number;\n\tcompleted: boolean;\n}\n\n@Component({\n\tselector: 'sim-progress-bar',\n\ttemplate: `\n\t\t@if (fileProgress() && !completed()) {\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
{{ progress() }}% \n\t\t\t
\n\t\t}\n\t`,\n})\nexport class ProgressBarComponent {\n\tpublic readonly fileId = input();\n\tpublic readonly uploadProgress = input([]);\n\n\tprotected readonly fileProgress = computed(() => {\n\t\treturn this.uploadProgress().find((item) => item.fileId === this.fileId());\n\t});\n\tprotected readonly progress = computed(() => {\n\t\treturn this.uploadProgress().find((item) => item.fileId === this.fileId())?.progress ?? 0;\n\t});\n\tprotected readonly completed = computed(() => {\n\t\treturn this.fileProgress() ? this.fileProgress()?.completed : false;\n\t});\n}\n\n@Component({\n\tselector: 'sim-file-upload-13',\n\tproviders: [\n\t\tprovideIcons({\n\t\t\tlucideX,\n\t\t\tlucideFileUp,\n\t\t\tlucideCircleAlert,\n\t\t\tlucideUpload,\n\t\t\tlucideTrash2,\n\t\t\tlucideFileText,\n\t\t\tlucideFileArchive,\n\t\t\tlucideFileSpreadsheet,\n\t\t\tlucideVideo,\n\t\t\tlucideHeadphones,\n\t\t\tlucideImage,\n\t\t\tlucideFile,\n\t\t}),\n\t],\n\timports: [HlmButtonImports, HlmIconImports, NgIcon, FileDragDropDirective, ProgressBarComponent],\n\thost: {\n\t\tclass: 'w-full',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t@if (files().length > 0) {\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Uploaded files: {{ files().length }} \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tAdd more\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tRemove all\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t@for (file of this.files(); track file.id; let idx = $index) {\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t