@central-design-system/skills 4.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +6 -0
- package/README.md +218 -0
- package/bin/cds-skills.mjs +124 -0
- package/package.json +33 -0
- package/skills/cds-builder/GENERATION.md +44 -0
- package/skills/cds-builder/SKILL.md +308 -0
- package/skills/cds-builder/references/component-decision-tree.md +310 -0
- package/skills/cds-builder/references/components/cds-app/api.md +19 -0
- package/skills/cds-builder/references/components/cds-app/tokens.md +12 -0
- package/skills/cds-builder/references/components/cds-autocomplete/api.md +155 -0
- package/skills/cds-builder/references/components/cds-autocomplete/examples.md +447 -0
- package/skills/cds-builder/references/components/cds-autocomplete/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-autocomplete/tokens.md +19 -0
- package/skills/cds-builder/references/components/cds-avatar/api.md +35 -0
- package/skills/cds-builder/references/components/cds-avatar/examples.md +240 -0
- package/skills/cds-builder/references/components/cds-avatar/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-avatar/tokens.md +32 -0
- package/skills/cds-builder/references/components/cds-badge/api.md +44 -0
- package/skills/cds-builder/references/components/cds-badge/examples.md +332 -0
- package/skills/cds-builder/references/components/cds-badge/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-badge/tokens.md +32 -0
- package/skills/cds-builder/references/components/cds-breadcrumbs/api.md +83 -0
- package/skills/cds-builder/references/components/cds-breadcrumbs/examples.md +219 -0
- package/skills/cds-builder/references/components/cds-breadcrumbs/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-breadcrumbs/tokens.md +24 -0
- package/skills/cds-builder/references/components/cds-button/api.md +66 -0
- package/skills/cds-builder/references/components/cds-button/examples.md +324 -0
- package/skills/cds-builder/references/components/cds-button/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-button/tokens.md +190 -0
- package/skills/cds-builder/references/components/cds-button-group/api.md +27 -0
- package/skills/cds-builder/references/components/cds-button-group/examples.md +33 -0
- package/skills/cds-builder/references/components/cds-button-group/tokens.md +17 -0
- package/skills/cds-builder/references/components/cds-button-toggle/api.md +51 -0
- package/skills/cds-builder/references/components/cds-button-toggle/examples.md +278 -0
- package/skills/cds-builder/references/components/cds-button-toggle/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-button-toggle/tokens.md +13 -0
- package/skills/cds-builder/references/components/cds-card/api.md +221 -0
- package/skills/cds-builder/references/components/cds-card/examples.md +652 -0
- package/skills/cds-builder/references/components/cds-card/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-card/tokens.md +46 -0
- package/skills/cds-builder/references/components/cds-carousel/api.md +107 -0
- package/skills/cds-builder/references/components/cds-carousel/examples.md +444 -0
- package/skills/cds-builder/references/components/cds-carousel/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-carousel/tokens.md +17 -0
- package/skills/cds-builder/references/components/cds-checkbox/api.md +93 -0
- package/skills/cds-builder/references/components/cds-checkbox/examples.md +319 -0
- package/skills/cds-builder/references/components/cds-checkbox/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-checkbox/tokens.md +18 -0
- package/skills/cds-builder/references/components/cds-checkbox-button/api.md +56 -0
- package/skills/cds-builder/references/components/cds-checkbox-button/examples.md +29 -0
- package/skills/cds-builder/references/components/cds-checkbox-button/tokens.md +56 -0
- package/skills/cds-builder/references/components/cds-combobox/api.md +158 -0
- package/skills/cds-builder/references/components/cds-combobox/examples.md +264 -0
- package/skills/cds-builder/references/components/cds-combobox/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-combobox/tokens.md +19 -0
- package/skills/cds-builder/references/components/cds-counter/api.md +24 -0
- package/skills/cds-builder/references/components/cds-counter/examples.md +93 -0
- package/skills/cds-builder/references/components/cds-counter/tokens.md +11 -0
- package/skills/cds-builder/references/components/cds-date-input/api.md +151 -0
- package/skills/cds-builder/references/components/cds-date-input/examples.md +479 -0
- package/skills/cds-builder/references/components/cds-date-input/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-date-input/tokens.md +16 -0
- package/skills/cds-builder/references/components/cds-date-picker/api.md +63 -0
- package/skills/cds-builder/references/components/cds-date-picker/examples.md +394 -0
- package/skills/cds-builder/references/components/cds-date-picker/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-date-picker/tokens.md +66 -0
- package/skills/cds-builder/references/components/cds-defaults-provider/api.md +21 -0
- package/skills/cds-builder/references/components/cds-description/api.md +22 -0
- package/skills/cds-builder/references/components/cds-description/examples.md +69 -0
- package/skills/cds-builder/references/components/cds-description/tokens.md +11 -0
- package/skills/cds-builder/references/components/cds-divider/api.md +29 -0
- package/skills/cds-builder/references/components/cds-divider/examples.md +374 -0
- package/skills/cds-builder/references/components/cds-divider/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-divider/tokens.md +38 -0
- package/skills/cds-builder/references/components/cds-drawer/api.md +53 -0
- package/skills/cds-builder/references/components/cds-drawer/examples.md +432 -0
- package/skills/cds-builder/references/components/cds-drawer/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-drawer/tokens.md +27 -0
- package/skills/cds-builder/references/components/cds-empty-state/api.md +55 -0
- package/skills/cds-builder/references/components/cds-empty-state/examples.md +330 -0
- package/skills/cds-builder/references/components/cds-empty-state/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-empty-state/tokens.md +25 -0
- package/skills/cds-builder/references/components/cds-expandable-panel/api.md +157 -0
- package/skills/cds-builder/references/components/cds-expandable-panel/examples.md +569 -0
- package/skills/cds-builder/references/components/cds-expandable-panel/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-expandable-panel/tokens.md +34 -0
- package/skills/cds-builder/references/components/cds-field/api.md +62 -0
- package/skills/cds-builder/references/components/cds-field/examples.md +202 -0
- package/skills/cds-builder/references/components/cds-field/tokens.md +94 -0
- package/skills/cds-builder/references/components/cds-file-input/api.md +109 -0
- package/skills/cds-builder/references/components/cds-file-input/examples.md +368 -0
- package/skills/cds-builder/references/components/cds-file-input/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-file-input/tokens.md +15 -0
- package/skills/cds-builder/references/components/cds-file-upload/api.md +296 -0
- package/skills/cds-builder/references/components/cds-file-upload/examples.md +411 -0
- package/skills/cds-builder/references/components/cds-file-upload/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-file-upload/tokens.md +50 -0
- package/skills/cds-builder/references/components/cds-footer/api.md +35 -0
- package/skills/cds-builder/references/components/cds-footer/examples.md +219 -0
- package/skills/cds-builder/references/components/cds-footer/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-footer/tokens.md +14 -0
- package/skills/cds-builder/references/components/cds-form/api.md +48 -0
- package/skills/cds-builder/references/components/cds-form/examples.md +552 -0
- package/skills/cds-builder/references/components/cds-form/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-form/tokens.md +15 -0
- package/skills/cds-builder/references/components/cds-functional-button/api.md +34 -0
- package/skills/cds-builder/references/components/cds-functional-button/examples.md +254 -0
- package/skills/cds-builder/references/components/cds-functional-button/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-functional-button/tokens.md +35 -0
- package/skills/cds-builder/references/components/cds-grid/api.md +66 -0
- package/skills/cds-builder/references/components/cds-grid/examples.md +687 -0
- package/skills/cds-builder/references/components/cds-grid/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-header/api.md +35 -0
- package/skills/cds-builder/references/components/cds-header/examples.md +345 -0
- package/skills/cds-builder/references/components/cds-header/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-header/tokens.md +13 -0
- package/skills/cds-builder/references/components/cds-highlight/api.md +22 -0
- package/skills/cds-builder/references/components/cds-highlight/examples.md +313 -0
- package/skills/cds-builder/references/components/cds-highlight/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-highlight/tokens.md +18 -0
- package/skills/cds-builder/references/components/cds-icon/api.md +33 -0
- package/skills/cds-builder/references/components/cds-icon/examples.md +272 -0
- package/skills/cds-builder/references/components/cds-icon/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-icon/tokens.md +30 -0
- package/skills/cds-builder/references/components/cds-image/api.md +67 -0
- package/skills/cds-builder/references/components/cds-image/examples.md +437 -0
- package/skills/cds-builder/references/components/cds-image/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-image/tokens.md +14 -0
- package/skills/cds-builder/references/components/cds-input/api.md +80 -0
- package/skills/cds-builder/references/components/cds-input/examples.md +205 -0
- package/skills/cds-builder/references/components/cds-input/tokens.md +108 -0
- package/skills/cds-builder/references/components/cds-label/api.md +25 -0
- package/skills/cds-builder/references/components/cds-label/examples.md +72 -0
- package/skills/cds-builder/references/components/cds-label/tokens.md +12 -0
- package/skills/cds-builder/references/components/cds-layout/api.md +50 -0
- package/skills/cds-builder/references/components/cds-layout/examples.md +431 -0
- package/skills/cds-builder/references/components/cds-layout/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-layout/tokens.md +12 -0
- package/skills/cds-builder/references/components/cds-link/api.md +33 -0
- package/skills/cds-builder/references/components/cds-link/examples.md +195 -0
- package/skills/cds-builder/references/components/cds-link/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-link/tokens.md +16 -0
- package/skills/cds-builder/references/components/cds-list/api.md +329 -0
- package/skills/cds-builder/references/components/cds-list/examples.md +653 -0
- package/skills/cds-builder/references/components/cds-list/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-list/tokens.md +125 -0
- package/skills/cds-builder/references/components/cds-loader/api.md +18 -0
- package/skills/cds-builder/references/components/cds-loader/examples.md +59 -0
- package/skills/cds-builder/references/components/cds-loader/tokens.md +50 -0
- package/skills/cds-builder/references/components/cds-main/api.md +14 -0
- package/skills/cds-builder/references/components/cds-main/examples.md +60 -0
- package/skills/cds-builder/references/components/cds-menu/api.md +84 -0
- package/skills/cds-builder/references/components/cds-menu/examples.md +595 -0
- package/skills/cds-builder/references/components/cds-menu/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-menu/tokens.md +19 -0
- package/skills/cds-builder/references/components/cds-messages/api.md +29 -0
- package/skills/cds-builder/references/components/cds-messages/examples.md +119 -0
- package/skills/cds-builder/references/components/cds-messages/tokens.md +15 -0
- package/skills/cds-builder/references/components/cds-modal/api.md +86 -0
- package/skills/cds-builder/references/components/cds-modal/examples.md +516 -0
- package/skills/cds-builder/references/components/cds-modal/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-modal/tokens.md +22 -0
- package/skills/cds-builder/references/components/cds-notification/api.md +46 -0
- package/skills/cds-builder/references/components/cds-notification/examples.md +314 -0
- package/skills/cds-builder/references/components/cds-notification/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-notification/tokens.md +23 -0
- package/skills/cds-builder/references/components/cds-notification-alert/api.md +93 -0
- package/skills/cds-builder/references/components/cds-notification-alert/examples.md +202 -0
- package/skills/cds-builder/references/components/cds-notification-alert/tokens.md +15 -0
- package/skills/cds-builder/references/components/cds-otp-input/api.md +106 -0
- package/skills/cds-builder/references/components/cds-otp-input/examples.md +329 -0
- package/skills/cds-builder/references/components/cds-otp-input/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-otp-input/tokens.md +41 -0
- package/skills/cds-builder/references/components/cds-overlay/api.md +85 -0
- package/skills/cds-builder/references/components/cds-overlay/examples.md +409 -0
- package/skills/cds-builder/references/components/cds-overlay/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-overlay/tokens.md +12 -0
- package/skills/cds-builder/references/components/cds-page/api.md +21 -0
- package/skills/cds-builder/references/components/cds-page/examples.md +123 -0
- package/skills/cds-builder/references/components/cds-pagination/api.md +67 -0
- package/skills/cds-builder/references/components/cds-pagination/examples.md +320 -0
- package/skills/cds-builder/references/components/cds-pagination/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-pagination/tokens.md +20 -0
- package/skills/cds-builder/references/components/cds-progress-bar/api.md +53 -0
- package/skills/cds-builder/references/components/cds-progress-bar/examples.md +393 -0
- package/skills/cds-builder/references/components/cds-progress-bar/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-progress-bar/tokens.md +33 -0
- package/skills/cds-builder/references/components/cds-progress-circle/api.md +30 -0
- package/skills/cds-builder/references/components/cds-progress-circle/examples.md +326 -0
- package/skills/cds-builder/references/components/cds-progress-circle/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-progress-circle/tokens.md +31 -0
- package/skills/cds-builder/references/components/cds-radio/api.md +47 -0
- package/skills/cds-builder/references/components/cds-radio/tokens.md +36 -0
- package/skills/cds-builder/references/components/cds-radio-group/api.md +87 -0
- package/skills/cds-builder/references/components/cds-radio-group/examples.md +320 -0
- package/skills/cds-builder/references/components/cds-radio-group/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-radio-group/tokens.md +14 -0
- package/skills/cds-builder/references/components/cds-responsive/api.md +29 -0
- package/skills/cds-builder/references/components/cds-responsive/examples.md +271 -0
- package/skills/cds-builder/references/components/cds-responsive/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-responsive/tokens.md +13 -0
- package/skills/cds-builder/references/components/cds-select/api.md +155 -0
- package/skills/cds-builder/references/components/cds-select/examples.md +794 -0
- package/skills/cds-builder/references/components/cds-select/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-select/tokens.md +17 -0
- package/skills/cds-builder/references/components/cds-selection-control/api.md +60 -0
- package/skills/cds-builder/references/components/cds-selection-control/examples.md +468 -0
- package/skills/cds-builder/references/components/cds-selection-control-group/api.md +45 -0
- package/skills/cds-builder/references/components/cds-selection-control-group/examples.md +349 -0
- package/skills/cds-builder/references/components/cds-skeleton-loader/api.md +30 -0
- package/skills/cds-builder/references/components/cds-skeleton-loader/examples.md +297 -0
- package/skills/cds-builder/references/components/cds-skeleton-loader/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-skeleton-loader/tokens.md +62 -0
- package/skills/cds-builder/references/components/cds-slide-group/api.md +76 -0
- package/skills/cds-builder/references/components/cds-slide-group/examples.md +304 -0
- package/skills/cds-builder/references/components/cds-slide-group/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-slide-group/tokens.md +11 -0
- package/skills/cds-builder/references/components/cds-slide-view/api.md +88 -0
- package/skills/cds-builder/references/components/cds-slide-view/examples.md +311 -0
- package/skills/cds-builder/references/components/cds-slide-view/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-slide-view/tokens.md +14 -0
- package/skills/cds-builder/references/components/cds-stages/api.md +31 -0
- package/skills/cds-builder/references/components/cds-stages/examples.md +230 -0
- package/skills/cds-builder/references/components/cds-stages/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-stages/tokens.md +27 -0
- package/skills/cds-builder/references/components/cds-status/api.md +24 -0
- package/skills/cds-builder/references/components/cds-status/examples.md +170 -0
- package/skills/cds-builder/references/components/cds-status/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-status/tokens.md +17 -0
- package/skills/cds-builder/references/components/cds-steps/api.md +176 -0
- package/skills/cds-builder/references/components/cds-steps/examples.md +320 -0
- package/skills/cds-builder/references/components/cds-steps/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-steps/tokens.md +52 -0
- package/skills/cds-builder/references/components/cds-surface/api.md +30 -0
- package/skills/cds-builder/references/components/cds-surface/examples.md +106 -0
- package/skills/cds-builder/references/components/cds-table/api.md +120 -0
- package/skills/cds-builder/references/components/cds-table/examples.md +3049 -0
- package/skills/cds-builder/references/components/cds-table/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-table/tokens.md +92 -0
- package/skills/cds-builder/references/components/cds-tabs/api.md +179 -0
- package/skills/cds-builder/references/components/cds-tabs/examples.md +610 -0
- package/skills/cds-builder/references/components/cds-tabs/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-tabs/tokens.md +40 -0
- package/skills/cds-builder/references/components/cds-tag/api.md +64 -0
- package/skills/cds-builder/references/components/cds-tag/examples.md +278 -0
- package/skills/cds-builder/references/components/cds-tag/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-tag/tokens.md +67 -0
- package/skills/cds-builder/references/components/cds-tag-group/api.md +58 -0
- package/skills/cds-builder/references/components/cds-tag-group/examples.md +346 -0
- package/skills/cds-builder/references/components/cds-tag-group/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-tag-group/tokens.md +18 -0
- package/skills/cds-builder/references/components/cds-text-area/api.md +113 -0
- package/skills/cds-builder/references/components/cds-text-area/examples.md +327 -0
- package/skills/cds-builder/references/components/cds-text-area/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-text-area/tokens.md +16 -0
- package/skills/cds-builder/references/components/cds-text-input/api.md +115 -0
- package/skills/cds-builder/references/components/cds-text-input/examples.md +546 -0
- package/skills/cds-builder/references/components/cds-text-input/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-text-input/tokens.md +17 -0
- package/skills/cds-builder/references/components/cds-time-picker/api.md +44 -0
- package/skills/cds-builder/references/components/cds-time-picker/examples.md +407 -0
- package/skills/cds-builder/references/components/cds-time-picker/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-time-picker/tokens.md +23 -0
- package/skills/cds-builder/references/components/cds-toast/api.md +97 -0
- package/skills/cds-builder/references/components/cds-toast/examples.md +296 -0
- package/skills/cds-builder/references/components/cds-toast/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-toast/tokens.md +26 -0
- package/skills/cds-builder/references/components/cds-toast-queue/api.md +86 -0
- package/skills/cds-builder/references/components/cds-toast-queue/examples.md +227 -0
- package/skills/cds-builder/references/components/cds-toggle/api.md +97 -0
- package/skills/cds-builder/references/components/cds-toggle/examples.md +335 -0
- package/skills/cds-builder/references/components/cds-toggle/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-toggle/tokens.md +91 -0
- package/skills/cds-builder/references/components/cds-toolbar/api.md +44 -0
- package/skills/cds-builder/references/components/cds-toolbar/examples.md +186 -0
- package/skills/cds-builder/references/components/cds-toolbar/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-toolbar/tokens.md +13 -0
- package/skills/cds-builder/references/components/cds-tooltip/api.md +83 -0
- package/skills/cds-builder/references/components/cds-tooltip/examples.md +321 -0
- package/skills/cds-builder/references/components/cds-tooltip/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-tooltip/tokens.md +25 -0
- package/skills/cds-builder/references/components/cds-tree/api.md +169 -0
- package/skills/cds-builder/references/components/cds-tree/examples.md +785 -0
- package/skills/cds-builder/references/components/cds-tree/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-tree/tokens.md +39 -0
- package/skills/cds-builder/references/components/cds-uploader/api.md +105 -0
- package/skills/cds-builder/references/components/cds-uploader/examples.md +553 -0
- package/skills/cds-builder/references/components/cds-uploader/guidelines.md +10 -0
- package/skills/cds-builder/references/components/cds-uploader/tokens.md +26 -0
- package/skills/cds-builder/references/components/cds-virtual-scroll/api.md +60 -0
- package/skills/cds-builder/references/components/cds-virtual-scroll/examples.md +272 -0
- package/skills/cds-builder/references/components/cds-virtual-scroll/guidelines.md +9 -0
- package/skills/cds-builder/references/components/cds-virtual-scroll/tokens.md +13 -0
- package/skills/cds-builder/references/guides/conventions.md +48 -0
- package/skills/cds-builder/references/guides/date-utils.md +301 -0
- package/skills/cds-builder/references/guides/display-and-platform.md +263 -0
- package/skills/cds-builder/references/guides/forms.md +77 -0
- package/skills/cds-builder/references/guides/global-configuration.md +354 -0
- package/skills/cds-builder/references/guides/icons.md +172 -0
- package/skills/cds-builder/references/guides/internationalization.md +470 -0
- package/skills/cds-builder/references/guides/migration-cds3-to-cds4.md +49 -0
- package/skills/cds-builder/references/guides/sass-variables.md +238 -0
- package/skills/cds-builder/references/guides/setup.md +81 -0
- package/skills/cds-builder/references/guides/tailwindcss.md +93 -0
- package/skills/cds-builder/references/guides/theme.md +343 -0
- package/skills/cds-builder/references/guides/treeshaking.md +237 -0
- package/skills/cds-builder/references/patterns/dialogs.md +89 -0
- package/skills/cds-builder/references/patterns/forms.md +101 -0
- package/skills/cds-builder/references/patterns/page-layout.md +78 -0
- package/skills/cds-builder/references/patterns/tables.md +87 -0
- package/skills/cds-builder/references/tokens/colors.md +507 -0
- package/skills/cds-builder/references/tokens/themes.md +981 -0
- package/skills/cds-builder/scripts/check-contracts.mjs +264 -0
- package/skills/cds-migrate/GENERATION.md +44 -0
- package/skills/cds-migrate/SKILL.md +160 -0
- package/skills/cds-migrate/references/migration-full.md +2225 -0
- package/skills/cds-refactor/GENERATION.md +44 -0
- package/skills/cds-refactor/SKILL.md +187 -0
- package/skills/cds-refactor/references/html-to-cds.md +80 -0
- package/skills/cds-refactor/references/review-checklist.md +73 -0
- package/skills/cds-refactor/references/tailwind-to-cds.md +65 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# CdsAvatar — usage examples
|
|
2
|
+
|
|
3
|
+
> Extracted from Storybook stories (`docs/*.stories.ts`) by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> The full component contract is in [api.md](api.md). `v-bind="args"` in templates refers to the props from the **Args** block of the corresponding example.
|
|
5
|
+
|
|
6
|
+
An avatar shows a person, a team or a company: a photo, initials or an icon inside a round container. Use it in member lists, comments and profile headers — anywhere the reader needs to recognize "who is this" at a glance.
|
|
7
|
+
|
|
8
|
+
## Content
|
|
9
|
+
|
|
10
|
+
The content comes from one of three props: `image` — a photo, `icon` — an icon, `text` — initials. If you pass several of them, `image` wins, then `icon`.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsAvatar } from '@central-design-system/components';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div class="flex justify-center gap-3">
|
|
21
|
+
<CdsAvatar image="https://i.pravatar.cc/120?img=12" />
|
|
22
|
+
<CdsAvatar icon="user-avatar" color="brand-secondary" />
|
|
23
|
+
<CdsAvatar text="ВМ" color="brand-primary" />
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Sizes
|
|
29
|
+
|
|
30
|
+
The `size` prop takes a token from `xs` to `xl` or a number of pixels. The default size is `md`.
|
|
31
|
+
|
|
32
|
+
**Example (SFC):**
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<script setup lang="ts">
|
|
36
|
+
import { CdsAvatar } from '@central-design-system/components';
|
|
37
|
+
|
|
38
|
+
const sizes = CdsAvatar.constants.sizes;
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<template>
|
|
42
|
+
<div class="flex items-center justify-center gap-2">
|
|
43
|
+
<CdsAvatar v-for="size in sizes" :key="size" :size="size" text="ВМ" color="brand-primary" />
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Colors
|
|
49
|
+
|
|
50
|
+
The `color` prop paints the background of an avatar with initials or an icon: a theme token or any CSS color will do.
|
|
51
|
+
|
|
52
|
+
**Example (SFC):**
|
|
53
|
+
|
|
54
|
+
```vue
|
|
55
|
+
<script setup lang="ts">
|
|
56
|
+
import { CdsAvatar } from '@central-design-system/components';
|
|
57
|
+
|
|
58
|
+
const items = [
|
|
59
|
+
{ color: 'brand-primary', text: 'BP' },
|
|
60
|
+
{ color: 'brand-secondary', text: 'BS' },
|
|
61
|
+
{ color: '#0f9d58', text: 'GR' },
|
|
62
|
+
{ color: '#db4437', text: 'RD' },
|
|
63
|
+
{ color: '#673ab7', text: 'PR' }
|
|
64
|
+
];
|
|
65
|
+
</script>
|
|
66
|
+
|
|
67
|
+
<template>
|
|
68
|
+
<div class="flex justify-center gap-2">
|
|
69
|
+
<CdsAvatar v-for="item in items" :key="item.text" size="md" :color="item.color" :text="item.text" />
|
|
70
|
+
</div>
|
|
71
|
+
</template>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Badge
|
|
75
|
+
|
|
76
|
+
The `badge` prop set to `true` shows a dot in the corner of the avatar. An object is passed through as props of [CdsBadge](../cds-badge/api.md): this is how you change the color of the dot, show a counter (`dot: false` plus `content`) or move the badge away from the edge (`floating`). The `badge` slot replaces the content of the badge with anything you like — an icon, for example.
|
|
77
|
+
|
|
78
|
+
**Example (SFC):**
|
|
79
|
+
|
|
80
|
+
```vue
|
|
81
|
+
<script setup lang="ts">
|
|
82
|
+
import { CdsAvatar, CdsIcon } from '@central-design-system/components';
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
<template>
|
|
86
|
+
<div class="flex justify-center gap-3">
|
|
87
|
+
<CdsAvatar size="lg" badge image="https://i.pravatar.cc/120?img=12" />
|
|
88
|
+
<CdsAvatar size="lg" text="АД" color="brand-primary" :badge="{ color: 'status-success-surface' }" />
|
|
89
|
+
<CdsAvatar size="lg" icon="user-group" color="brand-secondary" :badge="{ dot: false, content: 3 }" />
|
|
90
|
+
<CdsAvatar size="lg" image="https://i.pravatar.cc/120?img=32" :badge="{ color: 'status-success-surface' }">
|
|
91
|
+
<template #badge>
|
|
92
|
+
<CdsIcon icon="check" />
|
|
93
|
+
</template>
|
|
94
|
+
</CdsAvatar>
|
|
95
|
+
</div>
|
|
96
|
+
</template>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Spacing
|
|
100
|
+
|
|
101
|
+
The `start` and `end` props add a margin on the side of the neighboring content: `start` — for an avatar at the beginning of a line, `end` — at the end. This way the avatar fits into text without wrappers that carry outer margins.
|
|
102
|
+
|
|
103
|
+
**Example (SFC):**
|
|
104
|
+
|
|
105
|
+
```vue
|
|
106
|
+
<script setup lang="ts">
|
|
107
|
+
import { CdsAvatar } from '@central-design-system/components';
|
|
108
|
+
</script>
|
|
109
|
+
|
|
110
|
+
<template>
|
|
111
|
+
<div class="flex flex-col gap-2">
|
|
112
|
+
<div class="flex items-center justify-center">
|
|
113
|
+
<CdsAvatar start size="sm" text="АД" color="brand-primary" />
|
|
114
|
+
<span>Анна Дмитриева оставила комментарий</span>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div class="flex items-center justify-center">
|
|
118
|
+
<span>Задачу проверяет</span>
|
|
119
|
+
<CdsAvatar end size="sm" image="https://i.pravatar.cc/80?img=32" />
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</template>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Member list
|
|
126
|
+
|
|
127
|
+
In a list of people the avatar is a fast visual anchor. The `start` prop gives the margin before the text, photos and initials alternate depending on what the user has, and the badge dot shows who is online right now.
|
|
128
|
+
|
|
129
|
+
**Example (SFC):**
|
|
130
|
+
|
|
131
|
+
```vue
|
|
132
|
+
<script setup lang="ts">
|
|
133
|
+
import { CdsAvatar } from '@central-design-system/components';
|
|
134
|
+
|
|
135
|
+
const members = [
|
|
136
|
+
{ name: 'Анна Дмитриева', role: 'Менеджер проекта', image: 'https://i.pravatar.cc/80?img=47', online: true },
|
|
137
|
+
{ name: 'Павел Соколов', role: 'Аналитик', text: 'ПС', color: 'brand-primary', online: false },
|
|
138
|
+
{ name: 'Мария Ильина', role: 'Дизайнер', image: 'https://i.pravatar.cc/80?img=32', online: true },
|
|
139
|
+
{ name: 'Служба поддержки', role: 'Общий канал', icon: 'user-group', color: 'brand-secondary', online: false }
|
|
140
|
+
];
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
<template>
|
|
144
|
+
<div class="m-auto flex w-[350px] flex-col gap-3">
|
|
145
|
+
<div v-for="member in members" :key="member.name" class="flex items-center">
|
|
146
|
+
<CdsAvatar
|
|
147
|
+
start
|
|
148
|
+
:image="member.image"
|
|
149
|
+
:icon="member.icon"
|
|
150
|
+
:text="member.text"
|
|
151
|
+
:color="member.color"
|
|
152
|
+
:badge="member.online && { color: 'status-success-surface' }"
|
|
153
|
+
/>
|
|
154
|
+
|
|
155
|
+
<div class="flex flex-col">
|
|
156
|
+
<span>{{ member.name }}</span>
|
|
157
|
+
<span class="text-200 text-content-secondary">{{ member.role }}</span>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</template>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Group of members
|
|
165
|
+
|
|
166
|
+
When there are many members and little space, avatars are stacked with a slight overlap — a border in the background color separates the neighbors from each other. The last avatar with `text="+3"` tells how many people did not fit.
|
|
167
|
+
|
|
168
|
+
**Example (SFC):**
|
|
169
|
+
|
|
170
|
+
```vue
|
|
171
|
+
<script setup lang="ts">
|
|
172
|
+
import { CdsAvatar } from '@central-design-system/components';
|
|
173
|
+
|
|
174
|
+
const images = [
|
|
175
|
+
'https://i.pravatar.cc/80?img=12',
|
|
176
|
+
'https://i.pravatar.cc/80?img=47',
|
|
177
|
+
'https://i.pravatar.cc/80?img=32',
|
|
178
|
+
'https://i.pravatar.cc/80?img=56'
|
|
179
|
+
];
|
|
180
|
+
</script>
|
|
181
|
+
|
|
182
|
+
<template>
|
|
183
|
+
<div class="flex items-center justify-center gap-3">
|
|
184
|
+
<div class="avatar-stack flex items-center">
|
|
185
|
+
<CdsAvatar v-for="image in images" :key="image" :image="image" />
|
|
186
|
+
<CdsAvatar text="+3" color="brand-secondary" />
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
<span class="text-content-secondary">7 участников</span>
|
|
190
|
+
</div>
|
|
191
|
+
</template>
|
|
192
|
+
|
|
193
|
+
<style scoped>
|
|
194
|
+
.avatar-stack .cds-avatar {
|
|
195
|
+
border: 2px solid rgb(var(--cds-color-surface-primary));
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.avatar-stack .cds-avatar:not(:first-child) {
|
|
199
|
+
margin-inline-start: -8px;
|
|
200
|
+
}
|
|
201
|
+
</style>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Uploading a profile photo
|
|
205
|
+
|
|
206
|
+
While there is no photo yet, the avatar shows the initials from `text` — the page is not left with an empty circle. As soon as `image` gets a link, the photo replaces the initials; after the photo is removed, the initials come back on their own.
|
|
207
|
+
|
|
208
|
+
**Example (SFC):**
|
|
209
|
+
|
|
210
|
+
```vue
|
|
211
|
+
<script setup lang="ts">
|
|
212
|
+
import { CdsAvatar, CdsButton } from '@central-design-system/components';
|
|
213
|
+
import { ref } from 'vue';
|
|
214
|
+
|
|
215
|
+
const image = ref('');
|
|
216
|
+
const loading = ref(false);
|
|
217
|
+
|
|
218
|
+
const upload = async () => {
|
|
219
|
+
loading.value = true;
|
|
220
|
+
|
|
221
|
+
await new Promise((resolve) => setTimeout(resolve, 1200));
|
|
222
|
+
|
|
223
|
+
image.value = 'https://i.pravatar.cc/160?img=47';
|
|
224
|
+
loading.value = false;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const remove = () => {
|
|
228
|
+
image.value = '';
|
|
229
|
+
};
|
|
230
|
+
</script>
|
|
231
|
+
|
|
232
|
+
<template>
|
|
233
|
+
<div class="flex items-center justify-center gap-3">
|
|
234
|
+
<CdsAvatar size="xl" :image="image" text="АД" color="brand-primary" />
|
|
235
|
+
|
|
236
|
+
<CdsButton v-if="!image" prepend-icon="upload" text="Загрузить фото" :loading="loading" @click="upload" />
|
|
237
|
+
<CdsButton v-else appearance="tertiary" text="Удалить фото" @click="remove" />
|
|
238
|
+
</div>
|
|
239
|
+
</template>
|
|
240
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsAvatar — guidelines
|
|
2
|
+
|
|
3
|
+
> Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> The full component contract is in [api.md](api.md).
|
|
5
|
+
|
|
6
|
+
| ✅ Do | ❌ Don't |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| Initials are one or two letters: the first letters of the first and last name. | Long text does not fit into the round container and gets cut off. |
|
|
9
|
+
| Inside one list keep avatars the same size — the row reads as a whole. | Different sizes read as different importance of the members. |
|
|
10
|
+
| A colored dot shows the status — it is noticeable and does not fight the content. | A text badge covers the avatar; for a caption there is the line next to it. |
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# CdsAvatar — tokens (level 3)
|
|
2
|
+
|
|
3
|
+
> Copy of the component's `styles/*.variables.scss`, taken by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> `--cds-*` are global level-2 tokens whose values come from the active theme: see [themes.md](../../tokens/themes.md).
|
|
5
|
+
> Variables marked `!default` can be overridden at build time via SCSS.
|
|
6
|
+
|
|
7
|
+
## _CdsAvatar.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/tools';
|
|
11
|
+
|
|
12
|
+
// Геометрия
|
|
13
|
+
$avatar-border-radius: 50% !default;
|
|
14
|
+
$avatar-line-height: normal !default;
|
|
15
|
+
$avatar-vertical-align: middle !default;
|
|
16
|
+
|
|
17
|
+
// Отступы модификаторов start / end
|
|
18
|
+
$avatar-margin-start: var(--cds-spacing-200) !default;
|
|
19
|
+
$avatar-margin-end: var(--cds-spacing-200) !default;
|
|
20
|
+
|
|
21
|
+
// Длительность перехода размеров
|
|
22
|
+
$avatar-transition-duration: 0.2s !default;
|
|
23
|
+
|
|
24
|
+
// Размеры
|
|
25
|
+
$avatar-sizes: (
|
|
26
|
+
'xs': tools.to-rem(24px),
|
|
27
|
+
'sm': tools.to-rem(32px),
|
|
28
|
+
'md': tools.to-rem(40px),
|
|
29
|
+
'lg': tools.to-rem(48px),
|
|
30
|
+
'xl': tools.to-rem(56px)
|
|
31
|
+
) !default;
|
|
32
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# CdsBadge — API
|
|
2
|
+
|
|
3
|
+
> Generated from meta.json by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> Examples: [examples.md](examples.md) · Guidelines: [guidelines.md](guidelines.md) · Tokens: [tokens.md](tokens.md)
|
|
5
|
+
|
|
6
|
+
A badge is a small marker in the corner of an element or next to it: a counter of unread messages, a "there is something new" dot, a short label. A badge is not interactive — it draws attention to the element it is attached to instead of acting on its own.
|
|
7
|
+
|
|
8
|
+
## CdsBadge
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `color` | `string \| undefined` | — | no | Component color |
|
|
15
|
+
| `content` | `string \| number \| undefined` | — | no | Content displayed in the component. |
|
|
16
|
+
| `dot` | `boolean \| undefined` | — | no | Shrinks the component and hides its content, rendering it as a dot |
|
|
17
|
+
| `dotSize` | `string \| number \| undefined` | — | no | Dot size |
|
|
18
|
+
| `floating` | `boolean \| undefined` | — | no | Moves the component further away from the content — an 8 pixel offset. |
|
|
19
|
+
| `height` | `string \| number \| undefined` | — | no | Component height |
|
|
20
|
+
| `icon` | `IconValue \| undefined` | — | no | Icon shown inside the component. Ignored when the `dot` prop is set. |
|
|
21
|
+
| `inline` | `boolean \| undefined` | — | no | Renders as an inline block instead of using absolute positioning. The location, floating and offset props are ignored. |
|
|
22
|
+
| `label` | `string \| undefined` | `'$cds.badge'` | no | Aria-label for the component. Falls back to the default value when not set. |
|
|
23
|
+
| `location` | `Anchor \| null \| undefined` | `'top end'` | no | Position of the element relative to its container, for example "top left", "center", "bottom right". |
|
|
24
|
+
| `max` | `string \| number \| undefined` | — | no | Sets the maximum allowed value when content holds a number. If the number exceeds the maximum, a "+" suffix is added. |
|
|
25
|
+
| `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
|
|
26
|
+
| `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
|
|
27
|
+
| `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
|
|
28
|
+
| `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
|
|
29
|
+
| `modelValue` | `boolean \| undefined` | `true` | no | Controls whether the component is shown or hidden. |
|
|
30
|
+
| `offsetX` | `string \| number \| undefined` | — | no | Offset along the X axis |
|
|
31
|
+
| `offsetY` | `string \| number \| undefined` | — | no | Offset along the Y axis |
|
|
32
|
+
| `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
|
|
33
|
+
| `text` | `string \| number \| undefined` | — | no | Text displayed in the component. |
|
|
34
|
+
| `textColor` | `string \| undefined` | — | no | Text color of the component |
|
|
35
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
36
|
+
| `transition` | `string \| boolean \| (TransitionProps & { component?: Component \| undefined; }) \| null \| undefined` | `'fade-transition'` | no | Transition animation |
|
|
37
|
+
| `width` | `string \| number \| undefined` | — | no | Component width |
|
|
38
|
+
|
|
39
|
+
**Slots**
|
|
40
|
+
|
|
41
|
+
| Name | Type | Description |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| `badge` | `any` | Slot for the content placed inside the badge. |
|
|
44
|
+
| `default` | `any` | Default slot |
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# CdsBadge — usage examples
|
|
2
|
+
|
|
3
|
+
> Extracted from Storybook stories (`docs/*.stories.ts`) by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> The full component contract is in [api.md](api.md). `v-bind="args"` in templates refers to the props from the **Args** block of the corresponding example.
|
|
5
|
+
|
|
6
|
+
A badge is a small marker in the corner of an element or next to it: a counter of unread messages, a "there is something new" dot, a short label. A badge is not interactive — it draws attention to the element it is attached to instead of acting on its own.
|
|
7
|
+
|
|
8
|
+
## Content
|
|
9
|
+
|
|
10
|
+
The `content` prop sets what the badge shows — most often a counter of events. By default the badge sits in the top right corner of the element from the slot.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div class="flex justify-center">
|
|
21
|
+
<CdsBadge content="10">
|
|
22
|
+
<CdsFunctionalButton icon="notification" aria-label="Уведомления" />
|
|
23
|
+
</CdsBadge>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Content
|
|
29
|
+
|
|
30
|
+
The `max` prop caps the counter: anything above it collapses into "99+". Without `max` the value is printed in full.
|
|
31
|
+
|
|
32
|
+
**Example (SFC):**
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<script setup lang="ts">
|
|
36
|
+
import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<template>
|
|
40
|
+
<div class="flex justify-center gap-4">
|
|
41
|
+
<CdsBadge content="150">
|
|
42
|
+
<CdsFunctionalButton icon="notification" aria-label="Уведомления" />
|
|
43
|
+
</CdsBadge>
|
|
44
|
+
<CdsBadge content="150" :max="99">
|
|
45
|
+
<CdsFunctionalButton icon="notification" aria-label="Уведомления" />
|
|
46
|
+
</CdsBadge>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Content
|
|
52
|
+
|
|
53
|
+
Besides a number, `content` accepts a short text — a "new section" mark in a menu, for example. Here the badge is placed into the line by the `inline` prop — more on it in the positioning section.
|
|
54
|
+
|
|
55
|
+
**Example (SFC):**
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<script setup lang="ts">
|
|
59
|
+
import { CdsBadge, CdsCard, CdsList, CdsListItem } from '@central-design-system/components';
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<template>
|
|
63
|
+
<CdsCard class="m-auto w-[200px]">
|
|
64
|
+
<CdsList>
|
|
65
|
+
<CdsListItem value="0">
|
|
66
|
+
<template #title>Главная</template>
|
|
67
|
+
</CdsListItem>
|
|
68
|
+
<CdsListItem value="1">
|
|
69
|
+
<template #title>Входящие</template>
|
|
70
|
+
<template #append>
|
|
71
|
+
<CdsBadge content="new" inline />
|
|
72
|
+
</template>
|
|
73
|
+
</CdsListItem>
|
|
74
|
+
<CdsListItem value="2">
|
|
75
|
+
<template #title>Исходящие</template>
|
|
76
|
+
</CdsListItem>
|
|
77
|
+
</CdsList>
|
|
78
|
+
</CdsCard>
|
|
79
|
+
</template>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Content
|
|
83
|
+
|
|
84
|
+
The `icon` prop shows an icon instead of text.
|
|
85
|
+
|
|
86
|
+
**Example (SFC):**
|
|
87
|
+
|
|
88
|
+
```vue
|
|
89
|
+
<script setup lang="ts">
|
|
90
|
+
import { CdsBadge } from '@central-design-system/components';
|
|
91
|
+
</script>
|
|
92
|
+
|
|
93
|
+
<template>
|
|
94
|
+
<div class="flex justify-center">
|
|
95
|
+
<CdsBadge icon="check" inline />
|
|
96
|
+
</div>
|
|
97
|
+
</template>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Dot
|
|
101
|
+
|
|
102
|
+
The `dot` prop shrinks the badge to a dot and hides its content — only the "there is something new" signal is left. The diameter is changed via `dot-size`.
|
|
103
|
+
|
|
104
|
+
**Example (SFC):**
|
|
105
|
+
|
|
106
|
+
```vue
|
|
107
|
+
<script setup lang="ts">
|
|
108
|
+
import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
|
|
109
|
+
</script>
|
|
110
|
+
|
|
111
|
+
<template>
|
|
112
|
+
<div class="flex justify-center">
|
|
113
|
+
<CdsBadge dot>
|
|
114
|
+
<CdsFunctionalButton icon="notification" aria-label="Уведомления" />
|
|
115
|
+
</CdsBadge>
|
|
116
|
+
</div>
|
|
117
|
+
</template>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Colors
|
|
121
|
+
|
|
122
|
+
The `color` prop accepts any color alias of the design system, `text-color` changes the color of the content. By default the badge is red — the color of indication.
|
|
123
|
+
|
|
124
|
+
**Example (SFC):**
|
|
125
|
+
|
|
126
|
+
```vue
|
|
127
|
+
<script setup lang="ts">
|
|
128
|
+
import { CdsBadge } from '@central-design-system/components';
|
|
129
|
+
|
|
130
|
+
const colors = CdsBadge.constants.colors;
|
|
131
|
+
</script>
|
|
132
|
+
|
|
133
|
+
<template>
|
|
134
|
+
<div class="flex flex-wrap justify-center gap-2">
|
|
135
|
+
<CdsBadge v-for="color in colors" :key="color" :color="color" :content="color" inline />
|
|
136
|
+
</div>
|
|
137
|
+
</template>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Positioning
|
|
141
|
+
|
|
142
|
+
By default the badge is positioned absolutely relative to the element from the slot. The `location` prop picks the corner.
|
|
143
|
+
|
|
144
|
+
**Example (SFC):**
|
|
145
|
+
|
|
146
|
+
```vue
|
|
147
|
+
<script setup lang="ts">
|
|
148
|
+
import { CdsBadge, CdsButton } from '@central-design-system/components';
|
|
149
|
+
</script>
|
|
150
|
+
|
|
151
|
+
<template>
|
|
152
|
+
<div class="flex justify-center gap-4">
|
|
153
|
+
<CdsBadge content="1" location="top end">
|
|
154
|
+
<CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
|
|
155
|
+
</CdsBadge>
|
|
156
|
+
<CdsBadge content="2" location="bottom end">
|
|
157
|
+
<CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
|
|
158
|
+
</CdsBadge>
|
|
159
|
+
<CdsBadge content="3" location="top start">
|
|
160
|
+
<CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
|
|
161
|
+
</CdsBadge>
|
|
162
|
+
<CdsBadge content="4" location="bottom start">
|
|
163
|
+
<CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
|
|
164
|
+
</CdsBadge>
|
|
165
|
+
</div>
|
|
166
|
+
</template>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Positioning
|
|
170
|
+
|
|
171
|
+
The `floating` prop moves the badge 8 pixels away from the content, so it overlaps the element less. For fine-tuning there are `offset-x` and `offset-y`.
|
|
172
|
+
|
|
173
|
+
**Example (SFC):**
|
|
174
|
+
|
|
175
|
+
```vue
|
|
176
|
+
<script setup lang="ts">
|
|
177
|
+
import { CdsBadge, CdsButton } from '@central-design-system/components';
|
|
178
|
+
</script>
|
|
179
|
+
|
|
180
|
+
<template>
|
|
181
|
+
<div class="flex justify-center">
|
|
182
|
+
<CdsBadge content="3" floating>
|
|
183
|
+
<CdsButton icon="notification" aria-label="Уведомления" />
|
|
184
|
+
</CdsBadge>
|
|
185
|
+
</div>
|
|
186
|
+
</template>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Visibility
|
|
190
|
+
|
|
191
|
+
The `model-value` prop shows and hides the badge. The change of state is animated, and the animation is configured through `transition`.
|
|
192
|
+
|
|
193
|
+
**Example (SFC):**
|
|
194
|
+
|
|
195
|
+
```vue
|
|
196
|
+
<script setup lang="ts">
|
|
197
|
+
import { CdsBadge, CdsButton } from '@central-design-system/components';
|
|
198
|
+
import { ref } from 'vue';
|
|
199
|
+
|
|
200
|
+
const visible = ref(false);
|
|
201
|
+
const toggle = () => {
|
|
202
|
+
visible.value = !visible.value;
|
|
203
|
+
};
|
|
204
|
+
</script>
|
|
205
|
+
|
|
206
|
+
<template>
|
|
207
|
+
<div class="flex flex-col items-center gap-4">
|
|
208
|
+
<CdsBadge content="5" :model-value="visible" :inline="false">
|
|
209
|
+
<CdsButton appearance="secondary" @click="toggle"> {{ visible ? 'Скрыть' : 'Показать' }} бейдж </CdsButton>
|
|
210
|
+
</CdsBadge>
|
|
211
|
+
</div>
|
|
212
|
+
</template>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Slots
|
|
216
|
+
|
|
217
|
+
Слот `badge` полностью замещает содержимое из `content` и `icon`.
|
|
218
|
+
|
|
219
|
+
**Example (SFC):**
|
|
220
|
+
|
|
221
|
+
```vue
|
|
222
|
+
<script setup lang="ts">
|
|
223
|
+
import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
|
|
224
|
+
</script>
|
|
225
|
+
|
|
226
|
+
<template>
|
|
227
|
+
<div class="flex justify-center">
|
|
228
|
+
<CdsBadge>
|
|
229
|
+
<CdsFunctionalButton icon="notification" aria-label="Уведомления" />
|
|
230
|
+
|
|
231
|
+
<template #badge> Alert </template>
|
|
232
|
+
</CdsBadge>
|
|
233
|
+
</div>
|
|
234
|
+
</template>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Notification center
|
|
238
|
+
|
|
239
|
+
A counter on the notifications icon: `max` keeps the badge compact for any number of events, and `model-value` hides it once nothing is unread — an empty "0" does not hang on the icon.
|
|
240
|
+
|
|
241
|
+
**Example (SFC):**
|
|
242
|
+
|
|
243
|
+
```vue
|
|
244
|
+
<script setup lang="ts">
|
|
245
|
+
import { CdsBadge, CdsButton, CdsFunctionalButton } from '@central-design-system/components';
|
|
246
|
+
import { ref } from 'vue';
|
|
247
|
+
|
|
248
|
+
const unread = ref(3);
|
|
249
|
+
</script>
|
|
250
|
+
|
|
251
|
+
<template>
|
|
252
|
+
<div class="flex flex-col items-center gap-4">
|
|
253
|
+
<CdsBadge :content="unread" :model-value="unread > 0" :max="99">
|
|
254
|
+
<CdsFunctionalButton icon="notification" aria-label="Уведомления" />
|
|
255
|
+
</CdsBadge>
|
|
256
|
+
|
|
257
|
+
<div class="flex flex-wrap justify-center gap-2">
|
|
258
|
+
<CdsButton appearance="secondary" text="Новое уведомление" @click="unread++" />
|
|
259
|
+
<CdsButton appearance="secondary" text="+100" @click="unread += 100" />
|
|
260
|
+
<CdsButton appearance="tertiary" text="Прочитать все" :disabled="unread === 0" @click="unread = 0" />
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</template>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Menu with updates
|
|
267
|
+
|
|
268
|
+
Counters in menu items hint where to look. A badge with `inline` goes into the `append` slot of a list item, and once the section is opened `model-value` removes it. Open "Входящие" — the counter disappears.
|
|
269
|
+
|
|
270
|
+
**Example (SFC):**
|
|
271
|
+
|
|
272
|
+
```vue
|
|
273
|
+
<script setup lang="ts">
|
|
274
|
+
import { CdsBadge, CdsCard, CdsList, CdsListItem } from '@central-design-system/components';
|
|
275
|
+
import { ref } from 'vue';
|
|
276
|
+
|
|
277
|
+
const sections = ref([
|
|
278
|
+
{ title: 'Входящие', unread: 12 },
|
|
279
|
+
{ title: 'Задачи', unread: 3 },
|
|
280
|
+
{ title: 'Архив', unread: 0 }
|
|
281
|
+
]);
|
|
282
|
+
</script>
|
|
283
|
+
|
|
284
|
+
<template>
|
|
285
|
+
<CdsCard class="m-auto w-[240px]">
|
|
286
|
+
<CdsList>
|
|
287
|
+
<CdsListItem v-for="section in sections" :key="section.title" :value="section.title" @click="section.unread = 0">
|
|
288
|
+
<template #title>{{ section.title }}</template>
|
|
289
|
+
<template #append>
|
|
290
|
+
<CdsBadge :content="section.unread" :model-value="section.unread > 0" inline />
|
|
291
|
+
</template>
|
|
292
|
+
</CdsListItem>
|
|
293
|
+
</CdsList>
|
|
294
|
+
</CdsCard>
|
|
295
|
+
</template>
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Contacts online
|
|
299
|
+
|
|
300
|
+
A dot indicator shows the state without words: `color="green"` — the contact is online, `neutral` — not. `inline` puts the dot into the list row, and the `label` prop announces the state to screen readers.
|
|
301
|
+
|
|
302
|
+
**Example (SFC):**
|
|
303
|
+
|
|
304
|
+
```vue
|
|
305
|
+
<script setup lang="ts">
|
|
306
|
+
import { CdsBadge, CdsCard, CdsList, CdsListItem } from '@central-design-system/components';
|
|
307
|
+
|
|
308
|
+
const contacts = [
|
|
309
|
+
{ name: 'Анна Савельева', online: true },
|
|
310
|
+
{ name: 'Пётр Максимов', online: true },
|
|
311
|
+
{ name: 'Мария Ким', online: false }
|
|
312
|
+
];
|
|
313
|
+
</script>
|
|
314
|
+
|
|
315
|
+
<template>
|
|
316
|
+
<CdsCard class="m-auto w-[240px]">
|
|
317
|
+
<CdsList>
|
|
318
|
+
<CdsListItem v-for="contact in contacts" :key="contact.name" :value="contact.name">
|
|
319
|
+
<template #prepend>
|
|
320
|
+
<CdsBadge
|
|
321
|
+
dot
|
|
322
|
+
inline
|
|
323
|
+
:color="contact.online ? 'green' : 'neutral'"
|
|
324
|
+
:label="contact.online ? 'В сети' : 'Не в сети'"
|
|
325
|
+
/>
|
|
326
|
+
</template>
|
|
327
|
+
<template #title>{{ contact.name }}</template>
|
|
328
|
+
</CdsListItem>
|
|
329
|
+
</CdsList>
|
|
330
|
+
</CdsCard>
|
|
331
|
+
</template>
|
|
332
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsBadge — guidelines
|
|
2
|
+
|
|
3
|
+
> Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> The full component contract is in [api.md](api.md).
|
|
5
|
+
|
|
6
|
+
| ✅ Do | ❌ Don't |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| The max prop collapses large numbers, so the badge stays compact. | Точное «1528» не помогает принять решение и растягивает бейдж. |
|
|
9
|
+
| A badge appears only where an update waits for the user to react. | A badge on every icon turns the signal into noise — nothing gets attention. |
|
|
10
|
+
| The badge text is one short word. | A long phrase turns the indicator into a label and breaks the layout. |
|