@dgplsoares/singulai-ds-mcp 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.0",
2
+ "version": "0.6.0",
3
3
  "generated_at": "2026-05-12",
4
4
  "design_system": {
5
5
  "name": "Singulai Design System",
@@ -247,33 +247,19 @@
247
247
  "xl",
248
248
  "full"
249
249
  ],
250
- "StatColor": [
251
- "primary",
252
- "success",
253
- "warning",
254
- "danger",
255
- "info",
256
- "muted",
257
- "purple",
258
- "indigo",
259
- "pink"
260
- ],
261
- "StatTrend": [
262
- "up",
263
- "down",
264
- "neutral"
265
- ],
266
- "StatsBarVariant": [
267
- "default",
268
- "compact",
269
- "cards"
270
- ],
271
250
  "StatsBarColumns": [
251
+ 1,
272
252
  2,
273
253
  3,
274
254
  4,
275
255
  5,
276
256
  6
257
+ ],
258
+ "FilterDropdownPosition": [
259
+ "bottom-start",
260
+ "bottom-end",
261
+ "top-start",
262
+ "top-end"
277
263
  ]
278
264
  },
279
265
  "components": [
@@ -2053,42 +2039,116 @@
2053
2039
  {
2054
2040
  "name": "StatsBarComponent",
2055
2041
  "selector": "ds-stats-bar",
2056
- "description": "Barra horizontal de metricas clicaveis (N stat-cards em grid responsivo 2-6 colunas). Thin-wrap de <app-stats-bar> (221 LOC). NAO confundir com <ds-statsbar-card> que renderiza UMA stat individual do dashboard. Cada stat tem id, label, value, color (9 opcoes legacy DEC-DSA-M), opcionalmente icon, percent, trend (up/down/neutral) com trendValue, tooltip, clickable, onClick. Suporta selecao single (default) ou multi-select via config. Skeleton loading built-in. Padrao Listagem CRUD: barra de filtros visuais no topo da pagina (clicar filtra a tabela abaixo).",
2042
+ "description": "Container slot-based para barra horizontal de N <ds-statsbar-card>. Pattern visual do Figma DEC-FIG-A-2 (25 URLs catalogadas para todas as telas internas dashboards + listagens). Chrome: bg #EFF3F8 + gradient sobre white + border #DBE0E5 + radius 12px + inner white shadow. Caller compoe via <ds-statsbar-card> filhos. Desktop: flex row. Mobile (<=991px): auto-grid 2 colunas. Mobile pequeno (<=480px): 1 coluna. **NAO confundir** com <ds-statsbar-card> (UMA stat individual). **Nao envolve** o legado <app-stats-bar> de app/shared.",
2057
2043
  "tags": [
2058
2044
  "stats",
2045
+ "statsbar",
2059
2046
  "metrics",
2060
2047
  "kpi",
2048
+ "dashboard",
2049
+ "listagem",
2050
+ "container",
2051
+ "horizontal"
2052
+ ],
2053
+ "props": [
2054
+ {
2055
+ "name": "columns",
2056
+ "type": "StatsBarColumns",
2057
+ "default": "4",
2058
+ "description": "Numero de colunas em desktop (1-6). Mobile sempre vira 2x2 grid (exceto 1/2 que mantem)."
2059
+ },
2060
+ {
2061
+ "name": "ariaLabel",
2062
+ "type": "string",
2063
+ "default": "'Estatisticas'",
2064
+ "description": "Aria-label do container para screen readers."
2065
+ }
2066
+ ],
2067
+ "outputs": [],
2068
+ "slots": [
2069
+ {
2070
+ "name": "default",
2071
+ "description": "N <ds-statsbar-card> filhos. Cada um e uma stat independente com title/value/delta/variant/icon."
2072
+ }
2073
+ ],
2074
+ "examples": [
2075
+ "<ds-stats-bar [columns]=\"4\">\n <ds-statsbar-card title=\"Lives Realizadas\" value=\"97\" delta=\"5%\" variant=\"info\" />\n <ds-statsbar-card title=\"Lives Agendadas\" value=\"3\" delta=\"5%\" variant=\"warning\" />\n <ds-statsbar-card title=\"Audiencia Media\" value=\"127\" delta=\"5%\" variant=\"success\" />\n <ds-statsbar-card title=\"Gravacoes\" value=\"42\" delta=\"5%\" variant=\"purple\" />\n</ds-stats-bar>",
2076
+ "// Listagem sem delta (Figma 787-5195 Cursos):\n<ds-stats-bar [columns]=\"4\">\n <ds-statsbar-card variant=\"info\" title=\"Todos\" value=\"48\" />\n <ds-statsbar-card variant=\"success\" title=\"Publicados\" value=\"25\" />\n</ds-stats-bar>"
2077
+ ]
2078
+ },
2079
+ {
2080
+ "name": "FilterDropdownComponent",
2081
+ "selector": "ds-filter-dropdown",
2082
+ "description": "Filtro multi-select via overlay com checkboxes round neumorphic. Pattern do Figma DEC-FIG-A-4 (952-15654/16189/16231/16238). Trigger pill neumorphic (bg #EDF1F6 + drop shadow + inset top white / bottom dark) com icon filter + label dinamico + chevron. Overlay com border 1px #ADC2DD + checkboxes 16px round (selecionado: gradient azul #5C8DE2->#27467C + outer shadow neumorphic; nao-selecionado: bg #E3EDF7 + inset shadow). Estado controlado pelo caller (selectedValues array). Click fora ou ESC fecha. Usa CDK Overlay. Para single-select: caller pode emular passando array com 1 item ou usar <ds-dropdown-menu> action items.",
2083
+ "tags": [
2061
2084
  "filter",
2085
+ "dropdown",
2086
+ "multi-select",
2087
+ "checkbox",
2088
+ "overlay",
2062
2089
  "listagem",
2063
- "crud",
2064
- "horizontal",
2065
- "statsbar"
2090
+ "status",
2091
+ "neumorphic"
2066
2092
  ],
2067
2093
  "props": [
2068
2094
  {
2069
- "name": "stats",
2070
- "type": "StatItem[]",
2095
+ "name": "options",
2096
+ "type": "FilterDropdownItem[]",
2097
+ "required": true,
2098
+ "description": "Array de opcoes {value, label, count?, disabled?}."
2099
+ },
2100
+ {
2101
+ "name": "selectedValues",
2102
+ "type": "string[]",
2071
2103
  "default": "[]",
2072
- "description": "Lista de stats. Cada StatItem: {id, label, value (number|string), color?, icon?, percent?, total?, tooltip?, isActive?, clickable?, onClick?, trend?, trendValue?}."
2104
+ "description": "Values atualmente selecionados (controlado pelo caller)."
2073
2105
  },
2074
2106
  {
2075
- "name": "config",
2076
- "type": "StatsBarConfig",
2077
- "default": "{}",
2078
- "description": "{columns?: 2-6 (default 4), loading?, showSkeleton?, skeletonCount?, variant?: default|compact|cards, containerClass?, showIcons?, showTrends?, multiSelect?}."
2107
+ "name": "triggerLabel",
2108
+ "type": "string",
2109
+ "default": "'Filtro'",
2110
+ "description": "Label do trigger button. Pattern: nome do filtro ativo ou 'N selecionados'."
2111
+ },
2112
+ {
2113
+ "name": "triggerIcon",
2114
+ "type": "string",
2115
+ "default": "'heroFunnel'",
2116
+ "description": "Heroicon do trigger. Default funnel (filter)."
2117
+ },
2118
+ {
2119
+ "name": "position",
2120
+ "type": "FilterDropdownPosition",
2121
+ "default": "'bottom-start'",
2122
+ "description": "Posicao do overlay: bottom-start | bottom-end | top-start | top-end."
2123
+ },
2124
+ {
2125
+ "name": "ariaLabel",
2126
+ "type": "string",
2127
+ "default": "'Filtrar'",
2128
+ "description": "Aria-label do trigger e do listbox."
2129
+ },
2130
+ {
2131
+ "name": "minWidth",
2132
+ "type": "string",
2133
+ "default": "'200px'",
2134
+ "description": "Largura minima do overlay (CSS)."
2079
2135
  }
2080
2136
  ],
2081
2137
  "outputs": [
2082
2138
  {
2083
- "name": "statClick",
2084
- "type": "EventEmitter<StatSelectEvent>",
2085
- "description": "Emitido ao clicar em uma stat. Inclui item clicado + lista de selecionados (multi)."
2139
+ "name": "filtersChange",
2140
+ "type": "EventEmitter<string[]>",
2141
+ "description": "Emitido com o novo array de selectedValues apos cada toggle."
2142
+ },
2143
+ {
2144
+ "name": "openChange",
2145
+ "type": "EventEmitter<boolean>",
2146
+ "description": "Emitido quando o overlay abre ou fecha."
2086
2147
  }
2087
2148
  ],
2088
2149
  "examples": [
2089
- "<ds-stats-bar [stats]=\"courseStats()\" [config]=\"{ columns: 4, showTrends: true }\" (statClick)=\"onStatClick($event)\" />",
2090
- "// Stat com trend:\n{ id: 'active', label: 'Ativos', value: 89, color: 'success', percent: 72, trend: 'up', trendValue: '+12%' }",
2091
- "// Pipeline 6 colunas:\n<ds-stats-bar [stats]=\"pipelineStats\" [config]=\"{ columns: 6 }\" />"
2150
+ "<ds-filter-dropdown\n [options]=\"[\n { value: 'all', label: 'Todos', count: 7 },\n { value: 'confirmed', label: 'Confirmados', count: 3 },\n { value: 'pending', label: 'Pendentes', count: 2 }\n ]\"\n [selectedValues]=\"selected()\"\n triggerLabel=\"Todos\"\n (filtersChange)=\"onFilterChange($event)\"\n/>",
2151
+ "// Caller controla o label dinamico:\nfilterLabel = computed(() => {\n const sel = this.selected();\n if (sel.length === 0) return 'Filtro';\n if (sel.length === 1) return this.options.find(o => o.value === sel[0])?.label ?? 'Filtro';\n return `${sel.length} selecionados`;\n});"
2092
2152
  ]
2093
2153
  }
2094
2154
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dgplsoares/singulai-ds-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "MCP server exposing the Singulai Design System (Angular 20) to AI agents \u2014 Claude Desktop, Claude Code, Cursor, Continue.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",