@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,314 @@
|
|
|
1
|
+
# CdsNotification — 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 notification is a block with a message about an event or a state: a successful save, a warning about a limit, a loading error. The semantic status sets the color and the icon, and the display modes let you embed the message into a form, a card or a list.
|
|
7
|
+
|
|
8
|
+
## Statuses
|
|
9
|
+
|
|
10
|
+
The `status` prop sets the semantics of the message — its color and its icon. The default status is `info`.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsNotification } from '@central-design-system/components';
|
|
17
|
+
|
|
18
|
+
const statuses = CdsNotification.constants.statuses;
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<div class="flex flex-col gap-2 max-w-[640px] m-auto">
|
|
23
|
+
<CdsNotification
|
|
24
|
+
v-for="status in statuses"
|
|
25
|
+
:key="status"
|
|
26
|
+
:status="status"
|
|
27
|
+
title="Заголовок уведомления"
|
|
28
|
+
text="Описание события, на которое стоит обратить внимание"
|
|
29
|
+
/>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Display modes
|
|
35
|
+
|
|
36
|
+
The `variant` prop changes the styling: `default` — with a border, `flat` — without a border, `compact` — a single line, `important` — a neutral background and a shadow for showing above the content.
|
|
37
|
+
|
|
38
|
+
**Example (SFC):**
|
|
39
|
+
|
|
40
|
+
```vue
|
|
41
|
+
<script setup lang="ts">
|
|
42
|
+
import { CdsNotification } from '@central-design-system/components';
|
|
43
|
+
|
|
44
|
+
const variants = CdsNotification.constants.variants;
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<template>
|
|
48
|
+
<div class="flex flex-col gap-4 max-w-[720px] m-auto">
|
|
49
|
+
<div v-for="variant in variants" :key="variant" class="flex items-center gap-2">
|
|
50
|
+
<span class="w-[96px] text-content-secondary text-100">{{ variant }}</span>
|
|
51
|
+
<CdsNotification
|
|
52
|
+
:variant="variant"
|
|
53
|
+
title="Заголовок уведомления"
|
|
54
|
+
text="Описание события, на которое стоит обратить внимание"
|
|
55
|
+
closable
|
|
56
|
+
class="flex-1"
|
|
57
|
+
/>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</template>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Display modes
|
|
64
|
+
|
|
65
|
+
`variant="compact"` puts the icon, the text and the actions on one line and hides the heading. It fits tight places: a filter panel, a table row, the footer of a card.
|
|
66
|
+
|
|
67
|
+
**Example (SFC):**
|
|
68
|
+
|
|
69
|
+
```vue
|
|
70
|
+
<script setup lang="ts">
|
|
71
|
+
import { CdsButton, CdsNotification } from '@central-design-system/components';
|
|
72
|
+
|
|
73
|
+
const statuses = CdsNotification.constants.statuses;
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<template>
|
|
77
|
+
<div class="flex flex-col gap-2 w-[415px] m-auto">
|
|
78
|
+
<CdsNotification
|
|
79
|
+
v-for="status in statuses"
|
|
80
|
+
:key="status"
|
|
81
|
+
:status="status"
|
|
82
|
+
variant="compact"
|
|
83
|
+
text="Текст уведомления"
|
|
84
|
+
closable
|
|
85
|
+
>
|
|
86
|
+
<template #actions>
|
|
87
|
+
<CdsButton size="sm" text="Кнопка" />
|
|
88
|
+
</template>
|
|
89
|
+
</CdsNotification>
|
|
90
|
+
</div>
|
|
91
|
+
</template>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Icons
|
|
95
|
+
|
|
96
|
+
By default the icon matches the status. The `icon` prop replaces it with any icon from the pack, and the value `false` removes it altogether.
|
|
97
|
+
|
|
98
|
+
**Example (SFC):**
|
|
99
|
+
|
|
100
|
+
```vue
|
|
101
|
+
<script setup lang="ts">
|
|
102
|
+
import { CdsNotification } from '@central-design-system/components';
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
<template>
|
|
106
|
+
<div class="flex flex-col gap-2 max-w-[640px] m-auto">
|
|
107
|
+
<CdsNotification
|
|
108
|
+
status="success"
|
|
109
|
+
icon="winner"
|
|
110
|
+
title="Вы выиграли торги"
|
|
111
|
+
text="Иконка задана пропом icon вместо иконки статуса"
|
|
112
|
+
/>
|
|
113
|
+
<CdsNotification :icon="false" title="Без иконки" text="Значение icon: false скрывает иконку статуса" />
|
|
114
|
+
</div>
|
|
115
|
+
</template>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Closing
|
|
119
|
+
|
|
120
|
+
The `closable` prop adds a close button; the visibility of the notification is controlled through `v-model`. A click on the button also emits `click:close`.
|
|
121
|
+
|
|
122
|
+
**Example (SFC):**
|
|
123
|
+
|
|
124
|
+
```vue
|
|
125
|
+
<script setup lang="ts">
|
|
126
|
+
import { CdsButton, CdsNotification } from '@central-design-system/components';
|
|
127
|
+
import { ref } from 'vue';
|
|
128
|
+
|
|
129
|
+
const active = ref(true);
|
|
130
|
+
</script>
|
|
131
|
+
|
|
132
|
+
<template>
|
|
133
|
+
<div class="flex justify-center max-w-[640px] m-auto">
|
|
134
|
+
<CdsNotification
|
|
135
|
+
v-model="active"
|
|
136
|
+
title="Заголовок уведомления"
|
|
137
|
+
text="Кнопка закрытия скрывает уведомление и обновляет v-model"
|
|
138
|
+
closable
|
|
139
|
+
/>
|
|
140
|
+
<CdsButton v-if="!active" text="Показать уведомление" @click="active = true" />
|
|
141
|
+
</div>
|
|
142
|
+
</template>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Slots
|
|
146
|
+
|
|
147
|
+
Slots replace the content coming from props when you need your own markup.
|
|
148
|
+
|
|
149
|
+
**Example (SFC):**
|
|
150
|
+
|
|
151
|
+
```vue
|
|
152
|
+
<script setup lang="ts">
|
|
153
|
+
import { CdsButton, CdsFunctionalButton, CdsNotification } from '@central-design-system/components';
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<template>
|
|
157
|
+
<CdsNotification class="max-w-[640px] m-auto">
|
|
158
|
+
<template #title> Заголовок уведомления </template>
|
|
159
|
+
<template #text> Описание уведомления, на которое пользователь <strong>должен обратить внимание</strong> </template>
|
|
160
|
+
<template #actions>
|
|
161
|
+
<CdsButton text="Опубликовать" />
|
|
162
|
+
</template>
|
|
163
|
+
<template #close="{ props }">
|
|
164
|
+
<CdsFunctionalButton v-bind="props" />
|
|
165
|
+
</template>
|
|
166
|
+
</CdsNotification>
|
|
167
|
+
</template>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Form submission result
|
|
171
|
+
|
|
172
|
+
After a successful request a notification with the `success` status appears through `v-model` and confirms the result. The `closable` prop lets the user dismiss the message once it is read.
|
|
173
|
+
|
|
174
|
+
**Example (SFC):**
|
|
175
|
+
|
|
176
|
+
```vue
|
|
177
|
+
<script setup lang="ts">
|
|
178
|
+
import { CdsButton, CdsForm, CdsNotification, CdsTextInput } from '@central-design-system/components';
|
|
179
|
+
import { ref } from 'vue';
|
|
180
|
+
|
|
181
|
+
const email = ref('');
|
|
182
|
+
const loading = ref(false);
|
|
183
|
+
const sent = ref(false);
|
|
184
|
+
|
|
185
|
+
async function submit() {
|
|
186
|
+
loading.value = true;
|
|
187
|
+
sent.value = false;
|
|
188
|
+
|
|
189
|
+
// Имитация запроса к серверу
|
|
190
|
+
await new Promise((resolve) => setTimeout(resolve, 1200));
|
|
191
|
+
|
|
192
|
+
loading.value = false;
|
|
193
|
+
sent.value = true;
|
|
194
|
+
}
|
|
195
|
+
</script>
|
|
196
|
+
|
|
197
|
+
<template>
|
|
198
|
+
<CdsForm class="flex flex-col gap-2 w-[350px] m-auto" @submit.prevent="submit">
|
|
199
|
+
<CdsNotification
|
|
200
|
+
v-model="sent"
|
|
201
|
+
status="success"
|
|
202
|
+
title="Приглашение отправлено"
|
|
203
|
+
:text="`Письмо со ссылкой ушло на ${email || 'указанную почту'}`"
|
|
204
|
+
closable
|
|
205
|
+
/>
|
|
206
|
+
|
|
207
|
+
<CdsTextInput v-model="email" label="Рабочая почта" placeholder="name@company.ru" />
|
|
208
|
+
|
|
209
|
+
<CdsButton class="self-start" type="submit" text="Отправить приглашение" :loading="loading" />
|
|
210
|
+
</CdsForm>
|
|
211
|
+
</template>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## A warning with an action
|
|
215
|
+
|
|
216
|
+
A `warning` notification does not just report a problem — it offers a solution right away with a button in the `actions` slot. On click the status changes to `progress`, and after the server responds — to `success`: the user sees the whole course of the operation in a single block.
|
|
217
|
+
|
|
218
|
+
**Example (SFC):**
|
|
219
|
+
|
|
220
|
+
```vue
|
|
221
|
+
<script setup lang="ts">
|
|
222
|
+
import { CdsButton, CdsNotification } from '@central-design-system/components';
|
|
223
|
+
import { ref } from 'vue';
|
|
224
|
+
|
|
225
|
+
type Step = 'warning' | 'progress' | 'success';
|
|
226
|
+
|
|
227
|
+
const step = ref<Step>('warning');
|
|
228
|
+
|
|
229
|
+
const content: Record<Step, { title: string; text: string }> = {
|
|
230
|
+
warning: {
|
|
231
|
+
title: 'Почта не подтверждена',
|
|
232
|
+
text: 'Подтвердите почту, чтобы получать уведомления о ходе торгов'
|
|
233
|
+
},
|
|
234
|
+
progress: {
|
|
235
|
+
title: 'Отправляем письмо…',
|
|
236
|
+
text: 'Обычно это занимает меньше минуты'
|
|
237
|
+
},
|
|
238
|
+
success: {
|
|
239
|
+
title: 'Письмо отправлено',
|
|
240
|
+
text: 'Проверьте входящие на name@company.ru и перейдите по ссылке'
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
async function resend() {
|
|
245
|
+
step.value = 'progress';
|
|
246
|
+
|
|
247
|
+
// Имитация запроса к серверу
|
|
248
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
249
|
+
|
|
250
|
+
step.value = 'success';
|
|
251
|
+
}
|
|
252
|
+
</script>
|
|
253
|
+
|
|
254
|
+
<template>
|
|
255
|
+
<div class="max-w-[640px] m-auto">
|
|
256
|
+
<CdsNotification :status="step" :title="content[step].title" :text="content[step].text">
|
|
257
|
+
<template v-if="step === 'warning'" #actions>
|
|
258
|
+
<CdsButton size="sm" appearance="secondary" text="Отправить письмо ещё раз" @click="resend" />
|
|
259
|
+
</template>
|
|
260
|
+
</CdsNotification>
|
|
261
|
+
</div>
|
|
262
|
+
</template>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Loading error with a retry
|
|
266
|
+
|
|
267
|
+
If the data failed to load, a `danger` notification explains what happened and offers to repeat the request. The `progress` status shows that the retry is already running.
|
|
268
|
+
|
|
269
|
+
**Example (SFC):**
|
|
270
|
+
|
|
271
|
+
```vue
|
|
272
|
+
<script setup lang="ts">
|
|
273
|
+
import { CdsButton, CdsNotification } from '@central-design-system/components';
|
|
274
|
+
import { ref } from 'vue';
|
|
275
|
+
|
|
276
|
+
type Step = 'danger' | 'progress' | 'success';
|
|
277
|
+
|
|
278
|
+
const step = ref<Step>('danger');
|
|
279
|
+
|
|
280
|
+
const content: Record<Step, { title: string; text: string }> = {
|
|
281
|
+
danger: {
|
|
282
|
+
title: 'Не удалось загрузить список закупок',
|
|
283
|
+
text: 'Сервер не ответил вовремя — данные могли устареть'
|
|
284
|
+
},
|
|
285
|
+
progress: {
|
|
286
|
+
title: 'Обновляем данные…',
|
|
287
|
+
text: 'Запрашиваем актуальный список закупок'
|
|
288
|
+
},
|
|
289
|
+
success: {
|
|
290
|
+
title: 'Данные обновлены',
|
|
291
|
+
text: 'Список закупок актуален'
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
async function retry() {
|
|
296
|
+
step.value = 'progress';
|
|
297
|
+
|
|
298
|
+
// Имитация повторного запроса
|
|
299
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
300
|
+
|
|
301
|
+
step.value = 'success';
|
|
302
|
+
}
|
|
303
|
+
</script>
|
|
304
|
+
|
|
305
|
+
<template>
|
|
306
|
+
<div class="max-w-[640px] m-auto">
|
|
307
|
+
<CdsNotification :status="step" :title="content[step].title" :text="content[step].text">
|
|
308
|
+
<template v-if="step === 'danger'" #actions>
|
|
309
|
+
<CdsButton size="sm" appearance="secondary" text="Повторить" @click="retry" />
|
|
310
|
+
</template>
|
|
311
|
+
</CdsNotification>
|
|
312
|
+
</div>
|
|
313
|
+
</template>
|
|
314
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsNotification — 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 status matches the meaning of the message: success — the action went through. | Danger for neutral news is alarming: the reader looks for an error that is not there. |
|
|
9
|
+
| The heading names the event briefly, the details go into the text. | A long heading with no text is hard to read, and the event gets lost. |
|
|
10
|
+
| One or two secondary actions help the user react to the event. | Primary buttons inside a notification compete with the main action of the screen. |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# CdsNotification — 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
|
+
## _CdsNotification.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/tools';
|
|
11
|
+
|
|
12
|
+
$notification-border: var(--cds-border-100) solid !default;
|
|
13
|
+
$notification-border-radius: var(--cds-border-radius-200) !default;
|
|
14
|
+
$notification-min-width: tools.to-rem(348px) !default;
|
|
15
|
+
$notification-padding: var(--cds-spacing-300) !default;
|
|
16
|
+
$notification-prepend-height: var(--cds-font-line-height-400) !default;
|
|
17
|
+
$notification-content-padding: 0 var(--cds-spacing-200) !default;
|
|
18
|
+
$notification-action-offset: var(--cds-spacing-300) !default;
|
|
19
|
+
$notification-action-gap: var(--cds-spacing-400) !default;
|
|
20
|
+
$notification-append-padding: var(--cds-spacing-300) var(--cds-spacing-200) !default;
|
|
21
|
+
$notification-close-button-size: tools.to-rem(16px) !default;
|
|
22
|
+
$notification-important-background: rgb(var(--cds-color-surface-elevated)) !default;
|
|
23
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# CdsNotificationAlert — API
|
|
2
|
+
|
|
3
|
+
> Generated from meta.json by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> Examples: [examples.md](examples.md) · Tokens: [tokens.md](tokens.md)
|
|
5
|
+
|
|
6
|
+
A pop-up notification above the page — the counterpart of `CdsNotificationAlert` from CDS 3. It is assembled from [CdsOverlay](../cds-overlay/api.md) and [CdsNotification](../cds-notification/api.md) in the `important` variant; it hides automatically after `timeout`, while hovering the cursor or focusing inside pauses the timer.
|
|
7
|
+
|
|
8
|
+
## CdsNotificationAlert
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `absolute` | `boolean \| undefined` | — | no | Positions the element absolutely instead of fixed. This is useful for overlays that must stay inside a certain area, for example inside a container with `position: relative`. |
|
|
15
|
+
| `activator` | `(string & {}) \| Element \| "parent" \| ComponentPublicInstance \| undefined` | — | no | The element that activates the component |
|
|
16
|
+
| `activatorProps` | `Record<string, any> \| undefined` | `{}` | no | Props for the activator element |
|
|
17
|
+
| `attach` | `string \| boolean \| Element \| undefined` | — | no | Sets the DOM element the overlay content is moved to. It accepts a direct element reference, a querySelector string, or true to disable moving. By default the body element is used. Changing this prop is usually not recommended except for edge cases: the default positioning algorithm handles most scenarios better than it can without moving, and unexpected behavior may appear if the menu ends up being a child of its activator. |
|
|
18
|
+
| `bgColor` | `string \| undefined` | — | no | Background color of the component |
|
|
19
|
+
| `closable` | `boolean \| undefined` | — | no | Adds a close button that hides the notification. |
|
|
20
|
+
| `closeDelay` | `string \| number \| undefined` | — | no | Delay in milliseconds before the component closes. Works only together with open-on-hover. |
|
|
21
|
+
| `closeIcon` | `IconValue \| undefined` | `'remove'` | no | Icon of the close button. |
|
|
22
|
+
| `closeLabel` | `string \| undefined` | `'$cds.close'` | no | Accessible label (aria-label) for the close button. |
|
|
23
|
+
| `closeOnBack` | `boolean \| undefined` | `false` | no | Closes the overlay content when the browser Back button is pressed or $router.back() is called, cancelling the original navigation. `persistent` overlays cancel the navigation and animate as if they were clicked outside instead of closing. |
|
|
24
|
+
| `closeOnContentClick` | `boolean \| undefined` | — | no | Hide the component on a click on the content |
|
|
25
|
+
| `contained` | `boolean \| undefined` | — | no | Limits the size of the component and of its grid to the offset parent. Implies the `absolute` and `attach` props. (Note: the parent element must have `position: relative`.) |
|
|
26
|
+
| `content` | `string \| number \| undefined` | — | no | Content displayed in the component. |
|
|
27
|
+
| `contentClass` | `any` | — | no | Applies a custom class to the content element. This is handy because the content is moved to the beginning of the cds-app component (unless `attach` is set) and cannot be selected with classes passed to the component directly. |
|
|
28
|
+
| `contentProps` | `any` | — | no | Applies custom props to the moved content |
|
|
29
|
+
| `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
|
|
30
|
+
| `eager` | `boolean \| undefined` | — | no | Renders the content of the component right away. Useful when you have content that is not in the DOM but has to be indexed for SEO. |
|
|
31
|
+
| `height` | `string \| number \| undefined` | — | no | Component height |
|
|
32
|
+
| `icon` | `false \| IconValue \| undefined` | `null` | no | Icon before the content. Taken from `status` by default; `false` hides the icon. |
|
|
33
|
+
| `location` | `Anchor \| null \| undefined` | `'top center'` | no | Position of the element relative to its container, for example "top left", "center", "bottom right". |
|
|
34
|
+
| `locationStrategy` | `"static" \| "connected" \| LocationStrategyFunction \| undefined` | `'static'` | no | Sets the way the overlay content is positioned. By default static is used, which centers the content in its container. Use connected to attach the content to the activator element. |
|
|
35
|
+
| `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
|
|
36
|
+
| `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
|
|
37
|
+
| `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
|
|
38
|
+
| `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
|
|
39
|
+
| `modelValue` | `boolean \| undefined` | — | no | The v-model value of the component. If the component supports the **multiple** prop, an empty array is used by default. |
|
|
40
|
+
| `opacity` | `string \| number \| undefined` | — | no | Opacity of the scrim element. Applies only when `scrim=true`. |
|
|
41
|
+
| `openDelay` | `string \| number \| undefined` | — | no | Delay in milliseconds before the component opens. Works only together with open-on-hover. |
|
|
42
|
+
| `openOnClick` | `boolean \| undefined` | — | no | Show the component on a click on the activator |
|
|
43
|
+
| `openOnFocus` | `boolean \| undefined` | — | no | Show the component when the activator gets focus |
|
|
44
|
+
| `openOnHover` | `boolean \| undefined` | — | no | Show the component on hover over the activator |
|
|
45
|
+
| `origin` | `Anchor \| "auto" \| "overlap" \| undefined` | `'auto'` | no | Sets the anchor point of the overlay content that is aligned with the `location` anchor of the target. With "auto" the opposite side of the `location` point is used. With "overlap" the same anchor point is used, so the overlay overlaps the target. It also sets the CSS `transform-origin` property for the enter/leave transitions. |
|
|
46
|
+
| `position` | `"absolute" \| "static" \| "fixed" \| "relative" \| "sticky" \| undefined` | — | no | CSS positioning of the component — the value of the `position` property |
|
|
47
|
+
| `status` | `"progress" \| "success" \| "danger" \| "warning" \| "info" \| undefined` | `'info'` | no | Semantic status — drives the color and the default icon. |
|
|
48
|
+
| `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
|
|
49
|
+
| `target` | `(string & {}) \| Element \| "parent" \| ComponentPublicInstance \| "cursor" \| [x: number, y: number] \| undefined` | — | no | When `locationStrategy` is set to "connected", specify the element or the array of x, y coordinates the overlay is positioned against. By default the activator element is used. |
|
|
50
|
+
| `text` | `string \| number \| undefined` | — | no | Text displayed in the component. |
|
|
51
|
+
| `textColor` | `string \| undefined` | — | no | Text color of the component |
|
|
52
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
53
|
+
| `timeout` | `string \| number \| undefined` | `5000` | no | Delay in milliseconds before the notification hides automatically. The values `-1` and `0` turn auto-closing off. |
|
|
54
|
+
| `title` | `string \| undefined` | — | no | Notification heading. |
|
|
55
|
+
| `transition` | `string \| boolean \| (TransitionProps & { component?: Component \| undefined; }) \| null \| undefined` | `'notification-transition'` | no | Transition animation |
|
|
56
|
+
| `variant` | `"default" \| "flat" \| "compact" \| "important" \| undefined` | `'important'` | no | Appearance of the notification. `important` by default — an elevated surface with a shadow (the CdsNotificationAlert look). |
|
|
57
|
+
| `width` | `string \| number \| undefined` | — | no | Component width |
|
|
58
|
+
| `zIndex` | `string \| number \| undefined` | `2000` | no | The z-index value of the component. |
|
|
59
|
+
|
|
60
|
+
**Events**
|
|
61
|
+
|
|
62
|
+
| Name | Type | Description |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| `click:close` | `[event: MouseEvent]` | Click on the close button. |
|
|
65
|
+
| `update:modelValue` | `[value: boolean]` | The visibility of the notification changed. |
|
|
66
|
+
|
|
67
|
+
**Slots**
|
|
68
|
+
|
|
69
|
+
| Name | Type | Description |
|
|
70
|
+
| --- | --- | --- |
|
|
71
|
+
| `actions` | `any` | Slot for actions (buttons, links) below the text. |
|
|
72
|
+
| `activator` | `{ isActive: boolean; props: Record<string, any>; }` | Activator slot that controls the display of the notification. |
|
|
73
|
+
| `append` | `any` | Slot after the content. |
|
|
74
|
+
| `close` | `{ props: Record<string, any>; }` | Close button slot; receives `props` to bind to your own element. |
|
|
75
|
+
| `default` | `any` | Main content of the notification (complements `text`). |
|
|
76
|
+
| `prepend` | `any` | Slot before the content (the status icon by default). |
|
|
77
|
+
| `text` | `any` | Text slot (instead of the `text` prop). |
|
|
78
|
+
| `title` | `any` | Heading slot (instead of the `title` prop). |
|
|
79
|
+
|
|
80
|
+
**Exposed**
|
|
81
|
+
|
|
82
|
+
| Name | Type | Description |
|
|
83
|
+
| --- | --- | --- |
|
|
84
|
+
| `activatorEl` | `HTMLElement \| undefined` | The DOM element of the activator. |
|
|
85
|
+
| `activatorRef` | `TemplateRef` | Template ref for assigning the activator manually. |
|
|
86
|
+
| `animateClick` | `() => void` | Runs the bounce animation of the content — the same as on a click outside a `persistent` overlay. |
|
|
87
|
+
| `contentEl` | `HTMLElement \| undefined` | The DOM element of the overlay content. |
|
|
88
|
+
| `globalTop` | `boolean` | Whether the overlay is the top one in the global stack of open overlays. |
|
|
89
|
+
| `rootEl` | `HTMLElement \| undefined` | The root DOM element of the overlay. |
|
|
90
|
+
| `scrimEl` | `HTMLElement \| undefined` | The DOM element of the scrim that dims the page. |
|
|
91
|
+
| `targetEl` | `HTMLElement \| undefined` | The DOM element of the positioning target. |
|
|
92
|
+
| `targetRef` | `TemplateRef` | Template ref for assigning the positioning target manually. |
|
|
93
|
+
| `updateLocation` | `((e: Event) => void) \| undefined` | Recalculates the position of the content relative to the target. |
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# CdsNotificationAlert — 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 pop-up notification above the page — the counterpart of `CdsNotificationAlert` from CDS 3. It is assembled from [CdsOverlay](../cds-overlay/api.md) and [CdsNotification](../cds-notification/api.md) in the `important` variant; it hides automatically after `timeout`, while hovering the cursor or focusing inside pauses the timer.
|
|
7
|
+
|
|
8
|
+
## Controlling the display
|
|
9
|
+
|
|
10
|
+
Visibility is controlled through `v-model` or the `activator` slot — the element inside the slot opens the notification on click. The text comes from the `text` prop.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsButton, CdsNotificationAlert } from '@central-design-system/components';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div class="flex justify-center">
|
|
21
|
+
<CdsNotificationAlert text="Изменения сохранены">
|
|
22
|
+
<template #activator="{ props }">
|
|
23
|
+
<CdsButton text="Показать уведомление" v-bind="props" />
|
|
24
|
+
</template>
|
|
25
|
+
</CdsNotificationAlert>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Statuses
|
|
31
|
+
|
|
32
|
+
The `status` prop sets the color of the content and the icon: `info`, `success`, `warning`, `danger`, `progress`. The icon can be replaced by the `icon` prop or hidden with the value `false`.
|
|
33
|
+
|
|
34
|
+
**Example (SFC):**
|
|
35
|
+
|
|
36
|
+
```vue
|
|
37
|
+
<script setup lang="ts">
|
|
38
|
+
import { CdsButton, CdsNotificationAlert } from '@central-design-system/components';
|
|
39
|
+
|
|
40
|
+
const statuses = CdsNotificationAlert.constants.statuses;
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<template>
|
|
44
|
+
<div class="flex justify-center gap-2">
|
|
45
|
+
<CdsButton v-for="status in statuses" :key="status" :color="'status-' + status + '-surface'" appearance="secondary">
|
|
46
|
+
{{ status }}
|
|
47
|
+
<CdsNotificationAlert activator="parent" :status="status" :text="'Уведомление со статусом ' + status" />
|
|
48
|
+
</CdsButton>
|
|
49
|
+
</div>
|
|
50
|
+
</template>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Positions
|
|
54
|
+
|
|
55
|
+
The `location` prop sets the position on the screen: the side (`top`, `bottom`) and the alignment (`left`, `center`, `right`).
|
|
56
|
+
|
|
57
|
+
**Example (SFC):**
|
|
58
|
+
|
|
59
|
+
```vue
|
|
60
|
+
<script setup lang="ts">
|
|
61
|
+
import { CdsButton, CdsNotificationAlert } from '@central-design-system/components';
|
|
62
|
+
|
|
63
|
+
const locations = ['top left', 'top center', 'top right', 'bottom left', 'bottom center', 'bottom right'] as const;
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<template>
|
|
67
|
+
<div class="grid grid-cols-3 justify-items-center gap-2">
|
|
68
|
+
<CdsButton v-for="location in locations" :key="location" appearance="tertiary">
|
|
69
|
+
{{ location }}
|
|
70
|
+
<CdsNotificationAlert activator="parent" :location="location" :text="'Уведомление в позиции ' + location" />
|
|
71
|
+
</CdsButton>
|
|
72
|
+
</div>
|
|
73
|
+
</template>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Auto-closing
|
|
77
|
+
|
|
78
|
+
The `timeout` prop controls the auto-close delay in milliseconds, 5000 by default. The values `-1` and `0` turn auto-closing off — the notification stays until the user closes it (`closable`). Hovering the cursor and focusing inside pause the countdown.
|
|
79
|
+
|
|
80
|
+
**Example (SFC):**
|
|
81
|
+
|
|
82
|
+
```vue
|
|
83
|
+
<script setup lang="ts">
|
|
84
|
+
import { CdsButton, CdsNotificationAlert } from '@central-design-system/components';
|
|
85
|
+
</script>
|
|
86
|
+
|
|
87
|
+
<template>
|
|
88
|
+
<div class="flex justify-center gap-2">
|
|
89
|
+
<CdsNotificationAlert :timeout="4000" text="Уведомление закроется через 4 секунды">
|
|
90
|
+
<template #activator="{ props }">
|
|
91
|
+
<CdsButton text="Закроется через 4 секунды" v-bind="props" />
|
|
92
|
+
</template>
|
|
93
|
+
</CdsNotificationAlert>
|
|
94
|
+
<CdsNotificationAlert :timeout="-1" closable status="info" text="Останется до закрытия вручную">
|
|
95
|
+
<template #activator="{ props }">
|
|
96
|
+
<CdsButton text="Без автозакрытия" appearance="secondary" v-bind="props" />
|
|
97
|
+
</template>
|
|
98
|
+
</CdsNotificationAlert>
|
|
99
|
+
</div>
|
|
100
|
+
</template>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Undoing an action
|
|
104
|
+
|
|
105
|
+
After an irreversible operation the notification gives a short window to undo it: the button in the `actions` slot closes it through `v-model`, and an increased `timeout` leaves time to change one's mind.
|
|
106
|
+
|
|
107
|
+
**Example (SFC):**
|
|
108
|
+
|
|
109
|
+
```vue
|
|
110
|
+
<script setup lang="ts">
|
|
111
|
+
import { CdsButton, CdsNotificationAlert } from '@central-design-system/components';
|
|
112
|
+
import { ref } from 'vue';
|
|
113
|
+
|
|
114
|
+
const isActive = ref(false);
|
|
115
|
+
</script>
|
|
116
|
+
|
|
117
|
+
<template>
|
|
118
|
+
<div class="flex justify-center">
|
|
119
|
+
<CdsButton text="Удалить черновик" appearance="secondary" @click="isActive = true" />
|
|
120
|
+
<CdsNotificationAlert
|
|
121
|
+
v-model="isActive"
|
|
122
|
+
title="Черновик удалён"
|
|
123
|
+
text="Черновик заявки №42 удалён без возможности восстановления"
|
|
124
|
+
status="warning"
|
|
125
|
+
closable
|
|
126
|
+
:timeout="8000"
|
|
127
|
+
>
|
|
128
|
+
<template #actions>
|
|
129
|
+
<CdsButton text="Отменить" appearance="tertiary" @click="isActive = false" />
|
|
130
|
+
</template>
|
|
131
|
+
</CdsNotificationAlert>
|
|
132
|
+
</div>
|
|
133
|
+
</template>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## A stack of notifications
|
|
137
|
+
|
|
138
|
+
Every instance is an independent overlay: notifications sharing a position pile up into a vertical stack. On close (`update:model-value` → `false`) remove the item from the list.
|
|
139
|
+
|
|
140
|
+
**Example (SFC):**
|
|
141
|
+
|
|
142
|
+
```vue
|
|
143
|
+
<script setup lang="ts">
|
|
144
|
+
import type { Anchor } from '@central-design-system/components';
|
|
145
|
+
import { CdsButton, CdsNotificationAlert } from '@central-design-system/components';
|
|
146
|
+
import { reactive } from 'vue';
|
|
147
|
+
|
|
148
|
+
const statuses = CdsNotificationAlert.constants.statuses;
|
|
149
|
+
|
|
150
|
+
type Notification = {
|
|
151
|
+
id: string;
|
|
152
|
+
modelValue: boolean;
|
|
153
|
+
status: (typeof statuses)[number];
|
|
154
|
+
text: string;
|
|
155
|
+
location: Anchor;
|
|
156
|
+
closable: boolean;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const notifications = reactive<Notification[]>([]);
|
|
160
|
+
let uid = 0;
|
|
161
|
+
|
|
162
|
+
function addNotification(text: string, location: Anchor) {
|
|
163
|
+
notifications.push({
|
|
164
|
+
id: String(uid++),
|
|
165
|
+
modelValue: true,
|
|
166
|
+
status: statuses[Math.floor(Math.random() * statuses.length)],
|
|
167
|
+
text,
|
|
168
|
+
location,
|
|
169
|
+
closable: true
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function onUpdateModelValue(value: boolean, id: string) {
|
|
174
|
+
if (value) return;
|
|
175
|
+
|
|
176
|
+
const index = notifications.findIndex((notification) => notification.id === id);
|
|
177
|
+
if (index !== -1) notifications.splice(index, 1);
|
|
178
|
+
}
|
|
179
|
+
</script>
|
|
180
|
+
|
|
181
|
+
<template>
|
|
182
|
+
<div class="flex gap-4 justify-around">
|
|
183
|
+
<CdsButton text="Сверху слева" @click="addNotification('Тестовое уведомление', 'top left')" />
|
|
184
|
+
<CdsButton
|
|
185
|
+
text="Снизу справа"
|
|
186
|
+
appearance="secondary"
|
|
187
|
+
@click="addNotification('Тестовое уведомление', 'bottom right')"
|
|
188
|
+
/>
|
|
189
|
+
<CdsNotificationAlert
|
|
190
|
+
v-for="notification in notifications"
|
|
191
|
+
:key="notification.id"
|
|
192
|
+
title="Заголовок"
|
|
193
|
+
v-bind="notification"
|
|
194
|
+
@update:model-value="(value) => onUpdateModelValue(value, notification.id)"
|
|
195
|
+
>
|
|
196
|
+
<template #actions>
|
|
197
|
+
<CdsButton text="Кнопка" appearance="tertiary" />
|
|
198
|
+
</template>
|
|
199
|
+
</CdsNotificationAlert>
|
|
200
|
+
</div>
|
|
201
|
+
</template>
|
|
202
|
+
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# CdsNotificationAlert — 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
|
+
## _CdsNotificationAlert.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/settings';
|
|
11
|
+
|
|
12
|
+
$notification-alert-z-index: 10000 !default;
|
|
13
|
+
$notification-alert-margin: var(--cds-spacing-400) !default;
|
|
14
|
+
$notification-alert-transition: 0.2s settings.$standard-easing !default;
|
|
15
|
+
```
|