@dgplsoares/singulai-ds-mcp 0.9.1 → 0.10.1

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,9 +1,9 @@
1
1
  {
2
- "version": "0.9.1",
3
- "generated_at": "2026-06-19",
2
+ "version": "0.10.1",
3
+ "generated_at": "2026-06-19T03:00:00.000Z",
4
4
  "design_system": {
5
5
  "name": "Singulai Design System",
6
- "version": "DS-2.1",
6
+ "version": "0.10.1",
7
7
  "homepage": "https://design.singulai.ai",
8
8
  "repo": "https://github.com/dgplsoares/singulai-design-system",
9
9
  "stack": [
@@ -270,6 +270,17 @@
270
270
  "formal",
271
271
  "casual",
272
272
  "tecnico"
273
+ ],
274
+ "AccordionItemKind": [
275
+ "ebook",
276
+ "aula",
277
+ "quiz",
278
+ "custom"
279
+ ],
280
+ "AccordionBadgeVariant": [
281
+ "success",
282
+ "warning",
283
+ "neutral"
273
284
  ]
274
285
  },
275
286
  "components": [
@@ -2196,6 +2207,378 @@
2196
2207
  "<ds-filter-dropdown [options]=\"statusOptions\" [selectedValues]=\"selected()\" triggerLabel=\"Status\" mode=\"multi\" (filtersChange)=\"onFilters($event)\" />",
2197
2208
  "<ds-filter-dropdown [options]=\"statusOptions\" [selectedValues]=\"[currentFilter()]\" triggerLabel=\"Todos\" mode=\"single\" (filtersChange)=\"onFilterChange($event)\" />"
2198
2209
  ]
2210
+ },
2211
+ {
2212
+ "name": "FormSectionComponent",
2213
+ "selector": "ds-form-section",
2214
+ "description": "Card section para forms — header com icone neumorphic 34x34 + titulo + subtitle opcional + chevron toggle. Card body com 2-border canonical (Figma 683:2370): border #DBE0E5 + bg linear-gradient(rgba(229,235,242,0.70)) sobre #FFF + inset shadow branca. Suporta collapsible (default false). Animacao collapse via grid-template-rows 0fr<->1fr usando DS tokens --ds-duration-medium + --ds-ease-in-out-soft (C.4-polish). LIGHTMODE-FIRST. Wrap thin (DEC-PREP3-A) de <app-form-section> shared — propaga visual pixel-perfect para ~95 consumidores (events form, setup website, certificates, agents, courses, lives, plans, combos, mentorias).",
2215
+ "tags": [
2216
+ "form",
2217
+ "section",
2218
+ "card",
2219
+ "collapsible",
2220
+ "neumorphic",
2221
+ "wizard"
2222
+ ],
2223
+ "props": [
2224
+ {
2225
+ "name": "title",
2226
+ "type": "string",
2227
+ "default": "''",
2228
+ "description": "Titulo da secao."
2229
+ },
2230
+ {
2231
+ "name": "icon",
2232
+ "type": "string",
2233
+ "default": "'heroClipboardDocumentList'",
2234
+ "description": "Heroicon do header neumorphic 34x34."
2235
+ },
2236
+ {
2237
+ "name": "subtitle",
2238
+ "type": "string",
2239
+ "default": "''",
2240
+ "description": "Subtitulo opcional sob o titulo."
2241
+ },
2242
+ {
2243
+ "name": "collapsible",
2244
+ "type": "boolean",
2245
+ "default": "false",
2246
+ "description": "Habilita click no header para colapsar/expandir."
2247
+ },
2248
+ {
2249
+ "name": "collapsed",
2250
+ "type": "boolean",
2251
+ "default": "false",
2252
+ "description": "Estado inicial collapsed (so usado quando collapsible=true)."
2253
+ },
2254
+ {
2255
+ "name": "containerClass",
2256
+ "type": "string",
2257
+ "default": "''",
2258
+ "description": "Class CSS adicional no container externo."
2259
+ }
2260
+ ],
2261
+ "outputs": [],
2262
+ "examples": [
2263
+ "<ds-form-section title=\"Informacoes do Curso\" icon=\"heroAcademicCap\"><!-- form fields --></ds-form-section>",
2264
+ "<ds-form-section title=\"Modulos do Curso\" subtitle=\"Click para colapsar\" icon=\"heroSquares2x2\" [collapsible]=\"true\"><!-- content --></ds-form-section>",
2265
+ "<ds-form-section title=\"Mais Configuracoes\" icon=\"heroCog6Tooth\" [collapsible]=\"true\" [collapsed]=\"true\"><!-- content --></ds-form-section>"
2266
+ ]
2267
+ },
2268
+ {
2269
+ "name": "PageFooterStickyComponent",
2270
+ "selector": "ds-page-footer-sticky",
2271
+ "description": "Footer sticky para wizards/forms com Cancelar + Salvar (split button + dropdown opcional). Pixel-perfect contra Figma 590:1353. Container bg #F4F7FA + divider 2-tone (#DFE5ED + border-bottom #FFF). Cancelar: border #DADADA + bg #F6F6F6 + inset neumorphic + color #7285A4 — heuristica: label=\"Voltar\" -> heroArrowLeft, else heroXMark (sem input extra). Salvar: bg #3E619E + inset shadow #305493/rgba(93,135,208,0.8). Dropdown split (+ chevron) para acoes secundarias. Ortografia PT-BR canonica (Salvar e avancar / Salvar alteracoes / Salvando...). LIGHTMODE-FIRST. Wrap thin (DEC-PREP3-A) de <app-form-actions-footer> shared — ~28 consumidores.",
2272
+ "tags": [
2273
+ "footer",
2274
+ "sticky",
2275
+ "form",
2276
+ "actions",
2277
+ "split-button",
2278
+ "dropdown",
2279
+ "wizard"
2280
+ ],
2281
+ "props": [
2282
+ {
2283
+ "name": "isSaving",
2284
+ "type": "boolean",
2285
+ "default": "false",
2286
+ "description": "Mostra spinner no botao Salvar e desabilita."
2287
+ },
2288
+ {
2289
+ "name": "isEditMode",
2290
+ "type": "boolean",
2291
+ "default": "false",
2292
+ "description": "Altera label default: edit='Salvar alteracoes', create='Salvar e avancar'."
2293
+ },
2294
+ {
2295
+ "name": "submitLabel",
2296
+ "type": "string | undefined",
2297
+ "default": "undefined",
2298
+ "description": "Override do label do Salvar."
2299
+ },
2300
+ {
2301
+ "name": "cancelLabel",
2302
+ "type": "string",
2303
+ "default": "'Cancelar'",
2304
+ "description": "Label do Cancelar. 'Voltar' -> icon arrow-left."
2305
+ },
2306
+ {
2307
+ "name": "submitDisabled",
2308
+ "type": "boolean",
2309
+ "default": "false",
2310
+ "description": "Desabilita o Salvar (alem de isSaving)."
2311
+ },
2312
+ {
2313
+ "name": "submitType",
2314
+ "type": "'submit' | 'button'",
2315
+ "default": "'submit'",
2316
+ "description": "type HTML do Salvar."
2317
+ },
2318
+ {
2319
+ "name": "showDropdown",
2320
+ "type": "boolean",
2321
+ "default": "false",
2322
+ "description": "Exibe split com chevron dropdown."
2323
+ },
2324
+ {
2325
+ "name": "dropdownActions",
2326
+ "type": "FooterDropdownAction[]",
2327
+ "default": "[]",
2328
+ "description": "Acoes secundarias (id, label, icon)."
2329
+ },
2330
+ {
2331
+ "name": "showCancelButton",
2332
+ "type": "boolean",
2333
+ "default": "true",
2334
+ "description": "Mostra o botao Cancelar."
2335
+ }
2336
+ ],
2337
+ "outputs": [
2338
+ {
2339
+ "name": "cancel",
2340
+ "type": "EventEmitter<void>"
2341
+ },
2342
+ {
2343
+ "name": "formSubmit",
2344
+ "type": "EventEmitter<void>"
2345
+ },
2346
+ {
2347
+ "name": "dropdownAction",
2348
+ "type": "EventEmitter<string>"
2349
+ }
2350
+ ],
2351
+ "examples": [
2352
+ "<ds-page-footer-sticky [isSaving]=\"saving()\" (cancel)=\"onCancel()\" (formSubmit)=\"onSave()\" />",
2353
+ "<ds-page-footer-sticky [isEditMode]=\"true\" cancelLabel=\"Voltar\" (cancel)=\"goBack()\" (formSubmit)=\"saveEdit()\" />",
2354
+ "<ds-page-footer-sticky [showDropdown]=\"true\" [dropdownActions]=\"actions\" (formSubmit)=\"save()\" (dropdownAction)=\"onAction($event)\" />"
2355
+ ]
2356
+ },
2357
+ {
2358
+ "name": "ImageDropzoneComponent",
2359
+ "selector": "ds-image-dropzone",
2360
+ "description": "Area de drag-and-drop para upload de imagem. Pixel-perfect contra Figma 784:13836 — container neumorphic claro (border #D7E2F2 + radius 5 + bg #F8FBFF + inset shadow -3 -3 10 #FFF + 5 5 15 rgba(208,221,234,0.5)). Texto Manrope Medium 12/18 #4B5872 'Arraste e solte os arquivos ou clique aqui' + linha 2 com formatos e tamanho maximo. Estados: idle, hover, dragover, uploading (progress bar), preview (com overlay hover Trocar/Remover), error. Suporta URL manual via toggle. LIGHTMODE-FIRST. Wrap thin (DEC-PREP3-A) de <app-image-dropzone> shared — preserva ImageUploadService DI + signals de estado + validacao. Outputs alinhados (DEC-C-I): imageUploaded/imageRemoved (mesmo nome do shared). ~13 consumidores (events/event-form, setup/website-*, plans, combo, lives).",
2361
+ "tags": [
2362
+ "upload",
2363
+ "image",
2364
+ "dropzone",
2365
+ "drag-drop",
2366
+ "preview",
2367
+ "form"
2368
+ ],
2369
+ "props": [
2370
+ {
2371
+ "name": "imageUrl",
2372
+ "type": "string | null",
2373
+ "default": "null",
2374
+ "description": "URL da imagem atual — habilita preview mode."
2375
+ },
2376
+ {
2377
+ "name": "context",
2378
+ "type": "string",
2379
+ "default": "'website'",
2380
+ "description": "Contexto para o ImageUploadService (path no MinIO)."
2381
+ },
2382
+ {
2383
+ "name": "label",
2384
+ "type": "string",
2385
+ "default": "'Imagem'",
2386
+ "description": "Alt text e label semantico."
2387
+ },
2388
+ {
2389
+ "name": "maxSizeMb",
2390
+ "type": "number",
2391
+ "default": "5",
2392
+ "description": "Tamanho maximo em MB (validacao client-side)."
2393
+ },
2394
+ {
2395
+ "name": "accept",
2396
+ "type": "string",
2397
+ "default": "'image/jpeg,image/png,image/webp,image/gif'",
2398
+ "description": "MIME types aceitos (attr accept + validacao)."
2399
+ },
2400
+ {
2401
+ "name": "aspectHint",
2402
+ "type": "string",
2403
+ "default": "''",
2404
+ "description": "Hint de aspect ratio (ex: 'Recomendado 800x450px (16:9)')."
2405
+ },
2406
+ {
2407
+ "name": "acceptHint",
2408
+ "type": "string",
2409
+ "default": "'JPG, JPEG, WebP ou PNG'",
2410
+ "description": "Hint de formatos visivel no texto do dropzone."
2411
+ }
2412
+ ],
2413
+ "outputs": [
2414
+ {
2415
+ "name": "imageUploaded",
2416
+ "type": "EventEmitter<string>"
2417
+ },
2418
+ {
2419
+ "name": "imageRemoved",
2420
+ "type": "EventEmitter<void>"
2421
+ }
2422
+ ],
2423
+ "examples": [
2424
+ "<ds-image-dropzone [imageUrl]=\"thumb\" context=\"course\" aspectHint=\"800x450px (16:9)\" (imageUploaded)=\"setThumb($event)\" (imageRemoved)=\"clearThumb()\" />",
2425
+ "<ds-image-dropzone label=\"Banner\" [maxSizeMb]=\"2\" acceptHint=\"PNG ou JPG\" (imageUploaded)=\"onUpload($event)\" />"
2426
+ ]
2427
+ },
2428
+ {
2429
+ "name": "PageNavComponent",
2430
+ "selector": "ds-page-nav",
2431
+ "description": "Nav horizontal de steps para wizards (Cursos/Mentorias/Eventos da Fase D). Pixel-perfect contra Figma 590:1121 (estrutura) + 784:14261 (tipografia). Outer padding 20 + tab-bar bg #EFF3F8 + border #FFF + radius 12 + 3-layer outer shadow neumorphic. Active step REPLICA visual canonico do <ds-sidebar__menu-item--active> expanded (DEC-C1-iter2): bg #EFF3F8 + border 2px #FFF + radius 9 + ring duplo box-shadow (1.375px #3577EB + 5px rgba(255,255,255,0.35)) + inset neumorphic (-5 -5 7 #FFF + 5 5 10 #B3C0CF) + [dsActiveSpin] one-shot. Inactive: Manrope Bold 13/11 #3E6FCA (Figma blue_1). API: iconSrc preferido (SVG custom em public/wizard-tabs-nav/) ou icon heroicon como fallback. Mobile (<=768px): labels colapsam (icons-only).",
2432
+ "tags": [
2433
+ "nav",
2434
+ "wizard",
2435
+ "steps",
2436
+ "tabs",
2437
+ "active-button",
2438
+ "neumorphic"
2439
+ ],
2440
+ "props": [
2441
+ {
2442
+ "name": "steps",
2443
+ "type": "PageNavStep[]",
2444
+ "required": true,
2445
+ "description": "Lista de steps a renderizar."
2446
+ },
2447
+ {
2448
+ "name": "activeStepId",
2449
+ "type": "string",
2450
+ "required": true,
2451
+ "description": "Id do step ativo (renderiza com visual canonico do sidebar active)."
2452
+ }
2453
+ ],
2454
+ "outputs": [
2455
+ {
2456
+ "name": "stepClick",
2457
+ "type": "EventEmitter<string>"
2458
+ }
2459
+ ],
2460
+ "examples": [
2461
+ "<ds-page-nav [steps]=\"cursosSteps\" [activeStepId]=\"currentStep()\" (stepClick)=\"goToStep($event)\" />"
2462
+ ]
2463
+ },
2464
+ {
2465
+ "name": "AccordionComponent",
2466
+ "selector": "ds-accordion",
2467
+ "description": "Accordion de modulos com items (Ebooks, Aulas, Quizzes) para wizards Cursos/Mentorias/Eventos da Fase D. Pixel-perfect contra Figma 590:3272. Outer card translucido (rgba(255,255,255,0.25)) + header com botoes dual-border neumorphic (Editar/Deletar Modulo) + subsection 'Aulas do modulo' + list items com badges status (success-teal #46969C / warning-bege #6E5A2E) + 3 row actions (REUSAM ds-button action-icon). API discriminated union (DEC-C-3-A): modules: AccordionModule[] com items tipados (kind: ebook|aula|quiz|custom). Toggle expanded/collapsed: header-left clicavel (icon + title + chevron) + animacao grid-template-rows 1fr<->0fr com DS tokens (mesmo pattern do form-section). Acessibilidade: aria-expanded + aria-controls. LIGHTMODE-FIRST. Componente NOVO standalone (DEC-C-A).",
2468
+ "tags": [
2469
+ "accordion",
2470
+ "module",
2471
+ "list",
2472
+ "collapsible",
2473
+ "wizard",
2474
+ "course",
2475
+ "cards"
2476
+ ],
2477
+ "props": [
2478
+ {
2479
+ "name": "modules",
2480
+ "type": "AccordionModule[]",
2481
+ "required": true,
2482
+ "description": "Modulos a renderizar (com items tipados)."
2483
+ },
2484
+ {
2485
+ "name": "addItemLabel",
2486
+ "type": "string",
2487
+ "default": "'Adicionar Aula'",
2488
+ "description": "Label do botao + Adicionar item (header e footer)."
2489
+ },
2490
+ {
2491
+ "name": "addModuleLabel",
2492
+ "type": "string",
2493
+ "default": "'Adicionar Modulo'",
2494
+ "description": "Label do botao + Adicionar modulo (footer global, se exibido pelo caller)."
2495
+ }
2496
+ ],
2497
+ "outputs": [
2498
+ {
2499
+ "name": "moduleEdit",
2500
+ "type": "EventEmitter<string>"
2501
+ },
2502
+ {
2503
+ "name": "moduleDelete",
2504
+ "type": "EventEmitter<string>"
2505
+ },
2506
+ {
2507
+ "name": "addItem",
2508
+ "type": "EventEmitter<string>"
2509
+ },
2510
+ {
2511
+ "name": "itemView",
2512
+ "type": "EventEmitter<AccordionItemEvent>"
2513
+ },
2514
+ {
2515
+ "name": "itemEdit",
2516
+ "type": "EventEmitter<AccordionItemEvent>"
2517
+ },
2518
+ {
2519
+ "name": "itemDelete",
2520
+ "type": "EventEmitter<AccordionItemEvent>"
2521
+ },
2522
+ {
2523
+ "name": "moduleToggle",
2524
+ "type": "EventEmitter<{ moduleId: string; expanded: boolean }>"
2525
+ }
2526
+ ],
2527
+ "examples": [
2528
+ "<ds-accordion [modules]=\"cursoModules\" (moduleEdit)=\"editModule($event)\" (addItem)=\"addLesson($event)\" (itemView)=\"viewItem($event)\" />",
2529
+ "<ds-accordion [modules]=\"mentoriaModules\" addItemLabel=\"Adicionar Sessao\" (moduleToggle)=\"trackToggle($event)\" />"
2530
+ ]
2531
+ },
2532
+ {
2533
+ "name": "TypePickerComponent",
2534
+ "selector": "ds-type-picker",
2535
+ "description": "Cards visuais para selecao de tipo (kind). Componente NOVO no DS para selecao via cards 104x99 — usado no offcanvas de criar/editar aula (Cursos), sessao (Mentorias) e programacao (Eventos) da Fase D. Pixel-perfect contra Figma 657:4912. Card 2-layer nested: outer border 1px #DFE3EA + radius 10; inner bg rgba(255,255,255,0.25) + border 1px #FFFFFF + padding 20. Estado SELECTED: bg #F5F7FA + border 1px #CFD7E2 + 5-layer drop shadow (effect_box_2) + inset neumorphic (-4 4 rgba(94,114,150,0.14) + 4 4 #FFF) + label #2C5CB1. API discriminated union (DEC-D-H): TypePickerOption[] com kind tipado. Suporta iconSrc (SVG custom Figma — preferido) ou icon (heroicon como fallback) + iconWidth/Height per option. Acessibilidade: role=radiogroup + role=radio + aria-checked + aria-disabled + focus-visible outline. Mobile responsive: cards menores em <=480px.",
2536
+ "tags": [
2537
+ "type-picker",
2538
+ "selection",
2539
+ "cards",
2540
+ "radio",
2541
+ "kind",
2542
+ "wizard",
2543
+ "form"
2544
+ ],
2545
+ "props": [
2546
+ {
2547
+ "name": "options",
2548
+ "type": "TypePickerOption[]",
2549
+ "required": true,
2550
+ "description": "Opcoes a renderizar (1 card por opcao). Each: { kind, label, iconSrc?, icon?, iconWidth?, iconHeight?, disabled? }."
2551
+ },
2552
+ {
2553
+ "name": "selectedKind",
2554
+ "type": "string | null",
2555
+ "default": "null",
2556
+ "description": "Kind atualmente selecionado (null = nenhum)."
2557
+ },
2558
+ {
2559
+ "name": "disabled",
2560
+ "type": "boolean",
2561
+ "default": "false",
2562
+ "description": "Desabilita TODOS os cards (override do disabled per-option)."
2563
+ },
2564
+ {
2565
+ "name": "ariaLabel",
2566
+ "type": "string",
2567
+ "default": "'Selecione um tipo'",
2568
+ "description": "Aria-label do grupo de radio buttons."
2569
+ }
2570
+ ],
2571
+ "outputs": [
2572
+ {
2573
+ "name": "selectedKindChange",
2574
+ "type": "EventEmitter<string>"
2575
+ }
2576
+ ],
2577
+ "examples": [
2578
+ "<ds-type-picker [options]=\"typeOptions\" [(selectedKind)]=\"kind\" ariaLabel=\"Tipo de aula\" />",
2579
+ "<ds-type-picker [options]=\"[{ kind: 'videoaula', label: 'Videoaula', icon: 'heroVideoCamera', iconWidth: 27, iconHeight: 15 }, { kind: 'ebook', label: 'Ebook', icon: 'heroBookOpen', iconWidth: 23, iconHeight: 23 }]\" [selectedKind]=\"selected()\" (selectedKindChange)=\"onSelect($event)\" />",
2580
+ "<ds-type-picker [options]=\"opts\" [selectedKind]=\"null\" [disabled]=\"isSaving\" />"
2581
+ ]
2199
2582
  }
2200
2583
  ],
2201
2584
  "services": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dgplsoares/singulai-ds-mcp",
3
- "version": "0.9.1",
3
+ "version": "0.10.1",
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",