2 Commits
v2.8.0 ... main

Author SHA1 Message Date
9d1471a363 v2.9.0 2026-03-19 16:01:34 +00:00
6db2e3ff4f feat(app-store-view): add app details action to store cards 2026-03-19 16:01:34 +00:00
4 changed files with 62 additions and 12 deletions

View File

@@ -1,5 +1,12 @@
# Changelog # Changelog
## 2026-03-19 - 2.9.0 - feat(app-store-view)
add app details action to store cards
- adds a new "View Details" button alongside the existing deploy action
- dispatches a bubbling "view-app" event with the selected app payload for parent handlers
- updates card action layout and button styling to support multiple actions
## 2026-03-18 - 2.8.0 - feat(elements) ## 2026-03-18 - 2.8.0 - feat(elements)
add app store view component for browsing and deploying app templates add app store view component for browsing and deploying app templates

View File

@@ -1,6 +1,6 @@
{ {
"name": "@serve.zone/catalog", "name": "@serve.zone/catalog",
"version": "2.8.0", "version": "2.9.0",
"private": false, "private": false,
"description": "UI component catalog for serve.zone", "description": "UI component catalog for serve.zone",
"main": "dist_ts_web/index.js", "main": "dist_ts_web/index.js",

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@serve.zone/catalog', name: '@serve.zone/catalog',
version: '2.8.0', version: '2.9.0',
description: 'UI component catalog for serve.zone' description: 'UI component catalog for serve.zone'
} }

View File

@@ -396,6 +396,34 @@ export class SzAppStoreView extends DeesElement {
height: 14px; height: 14px;
} }
.details-button {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 7px 12px;
border-radius: 6px;
font-size: 13px;
font-weight: 500;
cursor: pointer;
transition: all 200ms ease;
border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
background: transparent;
color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
white-space: nowrap;
flex-shrink: 0;
}
.details-button:hover {
border-color: ${cssManager.bdTheme('#d4d4d8', '#3f3f46')};
color: ${cssManager.bdTheme('#18181b', '#fafafa')};
}
.card-actions {
display: flex;
align-items: center;
gap: 8px;
}
.empty-state { .empty-state {
grid-column: 1 / -1; grid-column: 1 / -1;
padding: 64px 24px; padding: 64px 24px;
@@ -524,6 +552,10 @@ export class SzAppStoreView extends DeesElement {
<div class="app-description">${app.description}</div> <div class="app-description">${app.description}</div>
<div class="card-footer"> <div class="card-footer">
<span class="image-tag" title="${app.image}">${app.image}</span> <span class="image-tag" title="${app.image}">${app.image}</span>
<div class="card-actions">
<button class="details-button" @click=${() => this.handleViewDetails(app)}>
View Details
</button>
<button class="deploy-button" @click=${() => this.handleDeploy(app)}> <button class="deploy-button" @click=${() => this.handleDeploy(app)}>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="20 12 20 22 4 22 4 12"></polyline> <polyline points="20 12 20 22 4 22 4 12"></polyline>
@@ -536,6 +568,7 @@ export class SzAppStoreView extends DeesElement {
</button> </button>
</div> </div>
</div> </div>
</div>
`; `;
} }
@@ -556,6 +589,16 @@ export class SzAppStoreView extends DeesElement {
return icons[name] || html`<span class="letter-fallback">?</span>`; return icons[name] || html`<span class="letter-fallback">?</span>`;
} }
private handleViewDetails(app: IAppTemplate) {
this.dispatchEvent(
new CustomEvent('view-app', {
detail: { app },
bubbles: true,
composed: true,
})
);
}
private handleDeploy(app: IAppTemplate) { private handleDeploy(app: IAppTemplate) {
this.dispatchEvent( this.dispatchEvent(
new CustomEvent('deploy-app', { new CustomEvent('deploy-app', {