@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,311 @@
|
|
|
1
|
+
# CdsSlideView — 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 slide view shows one slide out of a set and switches them with a shift animation: arrows, swipes and `v-model` page forward and backward. It is the base for carousels and step-by-step interfaces — [CdsCarousel](../cds-carousel/api.md) is built on the slide view.
|
|
7
|
+
|
|
8
|
+
## Arrows
|
|
9
|
+
|
|
10
|
+
By default there are no arrows — the slides are paged with a swipe on touch devices or programmatically through `v-model`. The `show-arrows` prop turns the arrows on: `true` shows them at all times, `"hover"` only on hover over the slide. Keyboard navigation comes together with the arrows. The swipe is turned off with `:touch="false"`, and the icons of the arrows are changed with the `prev-icon` and `next-icon` props.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
17
|
+
import { ref } from 'vue';
|
|
18
|
+
|
|
19
|
+
const slide = ref(0);
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<CdsSlideView v-model="slide" show-arrows="hover" continuous class="m-auto max-w-[520px]">
|
|
24
|
+
<CdsSlideViewItem v-for="n in 4" :key="n">
|
|
25
|
+
<div class="flex h-[180px] items-center justify-center bg-surface-secondary text-500">Слайд {{ n }}</div>
|
|
26
|
+
</CdsSlideViewItem>
|
|
27
|
+
</CdsSlideView>
|
|
28
|
+
</template>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Vertical arrows
|
|
32
|
+
|
|
33
|
+
The `vertical-arrows` prop gathers the arrows turned on by `show-arrows` into a column at the edge of the slide: `true` or `'left'` puts them on the left, `'right'` on the right.
|
|
34
|
+
|
|
35
|
+
**Example (SFC):**
|
|
36
|
+
|
|
37
|
+
```vue
|
|
38
|
+
<script setup lang="ts">
|
|
39
|
+
import { CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
40
|
+
import { ref } from 'vue';
|
|
41
|
+
|
|
42
|
+
const slide = ref(0);
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<CdsSlideView v-model="slide" show-arrows vertical-arrows="right" continuous class="m-auto max-w-[520px]">
|
|
47
|
+
<CdsSlideViewItem v-for="n in 4" :key="n">
|
|
48
|
+
<div class="flex h-[180px] items-center justify-center bg-surface-secondary text-500">Слайд {{ n }}</div>
|
|
49
|
+
</CdsSlideViewItem>
|
|
50
|
+
</CdsSlideView>
|
|
51
|
+
</template>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Continuous paging
|
|
55
|
+
|
|
56
|
+
The `continuous` prop closes the slides into a ring: the first one follows the last. Without it the matching arrow is hidden on the edge slides.
|
|
57
|
+
|
|
58
|
+
**Example (SFC):**
|
|
59
|
+
|
|
60
|
+
```vue
|
|
61
|
+
<script setup lang="ts">
|
|
62
|
+
import { CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
63
|
+
import { ref } from 'vue';
|
|
64
|
+
|
|
65
|
+
const slide = ref(0);
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<template>
|
|
69
|
+
<CdsSlideView v-model="slide" show-arrows continuous class="m-auto max-w-[520px]">
|
|
70
|
+
<CdsSlideViewItem v-for="n in 4" :key="n">
|
|
71
|
+
<div class="flex h-[180px] items-center justify-center bg-surface-secondary text-500">Слайд {{ n }}</div>
|
|
72
|
+
</CdsSlideViewItem>
|
|
73
|
+
</CdsSlideView>
|
|
74
|
+
</template>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Direction
|
|
78
|
+
|
|
79
|
+
The `direction="vertical"` prop moves the slides vertically — the navigation keys change together with the animation: ↑ / ↓ work instead of ← / →.
|
|
80
|
+
|
|
81
|
+
**Example (SFC):**
|
|
82
|
+
|
|
83
|
+
```vue
|
|
84
|
+
<script setup lang="ts">
|
|
85
|
+
import { CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
86
|
+
import { ref } from 'vue';
|
|
87
|
+
|
|
88
|
+
const slide = ref(0);
|
|
89
|
+
</script>
|
|
90
|
+
|
|
91
|
+
<template>
|
|
92
|
+
<CdsSlideView v-model="slide" show-arrows direction="vertical" continuous class="m-auto max-w-[520px]">
|
|
93
|
+
<CdsSlideViewItem v-for="n in 4" :key="n">
|
|
94
|
+
<div class="flex h-[180px] items-center justify-center bg-surface-secondary text-500">Слайд {{ n }}</div>
|
|
95
|
+
</CdsSlideViewItem>
|
|
96
|
+
</CdsSlideView>
|
|
97
|
+
</template>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Transitions
|
|
101
|
+
|
|
102
|
+
The `crossfade` prop replaces the shift with a soft dissolve — a good fit when the slides are not lined up in a sequence. On a single `CdsSlideViewItem` the animation is configured with the `transition` and `reverse-transition` props: the name of your own transition animation or `false` to turn it off. The content of a slide is rendered on the first show; the `eager` prop renders it right away — useful for SEO.
|
|
103
|
+
|
|
104
|
+
**Example (SFC):**
|
|
105
|
+
|
|
106
|
+
```vue
|
|
107
|
+
<script setup lang="ts">
|
|
108
|
+
import { CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
109
|
+
import { ref } from 'vue';
|
|
110
|
+
|
|
111
|
+
const slide = ref(0);
|
|
112
|
+
</script>
|
|
113
|
+
|
|
114
|
+
<template>
|
|
115
|
+
<CdsSlideView v-model="slide" show-arrows crossfade continuous class="m-auto max-w-[520px]">
|
|
116
|
+
<CdsSlideViewItem v-for="n in 4" :key="n">
|
|
117
|
+
<div class="flex h-[180px] items-center justify-center bg-surface-secondary text-500">Слайд {{ n }}</div>
|
|
118
|
+
</CdsSlideViewItem>
|
|
119
|
+
</CdsSlideView>
|
|
120
|
+
</template>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Slots
|
|
124
|
+
|
|
125
|
+
The `additional` slot receives a `group` with the selection methods — but an outer `v-model` is usually enough, as in the demo with the dot indicators.
|
|
126
|
+
|
|
127
|
+
**Example (SFC):**
|
|
128
|
+
|
|
129
|
+
```vue
|
|
130
|
+
<script setup lang="ts">
|
|
131
|
+
import { CdsButton, CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
132
|
+
import { ref } from 'vue';
|
|
133
|
+
|
|
134
|
+
const slide = ref(0);
|
|
135
|
+
const total = 4;
|
|
136
|
+
</script>
|
|
137
|
+
|
|
138
|
+
<template>
|
|
139
|
+
<CdsSlideView v-model="slide" show-arrows continuous class="m-auto max-w-[520px]">
|
|
140
|
+
<template #prev="{ props }">
|
|
141
|
+
<CdsButton appearance="secondary" size="sm" icon="chevron-left" aria-label="Назад" @click="props.onClick" />
|
|
142
|
+
</template>
|
|
143
|
+
|
|
144
|
+
<CdsSlideViewItem v-for="n in total" :key="n">
|
|
145
|
+
<div class="flex h-[180px] items-center justify-center bg-surface-secondary text-500">Слайд {{ n }}</div>
|
|
146
|
+
</CdsSlideViewItem>
|
|
147
|
+
|
|
148
|
+
<template #next="{ props }">
|
|
149
|
+
<CdsButton appearance="secondary" size="sm" icon="chevron-right" aria-label="Вперёд" @click="props.onClick" />
|
|
150
|
+
</template>
|
|
151
|
+
|
|
152
|
+
<template #additional>
|
|
153
|
+
<div class="mt-2 flex justify-center gap-1">
|
|
154
|
+
<button
|
|
155
|
+
v-for="n in total"
|
|
156
|
+
:key="n"
|
|
157
|
+
type="button"
|
|
158
|
+
class="h-[8px] w-[8px] cursor-pointer rounded-full border-none p-0"
|
|
159
|
+
:class="slide === n - 1 ? 'bg-brand-primary' : 'bg-surface-secondary'"
|
|
160
|
+
:aria-label="`Слайд ${n}`"
|
|
161
|
+
@click="slide = n - 1"
|
|
162
|
+
/>
|
|
163
|
+
</div>
|
|
164
|
+
</template>
|
|
165
|
+
</CdsSlideView>
|
|
166
|
+
</template>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## A step-by-step form
|
|
170
|
+
|
|
171
|
+
The steps of a questionnaire are switched with buttons through `v-model`: the arrows stay off and the swipes are muted with `:touch="false"` — the only way to move is "Back" and "Next". The height of the container animates to the content of the active step automatically.
|
|
172
|
+
|
|
173
|
+
**Example (SFC):**
|
|
174
|
+
|
|
175
|
+
```vue
|
|
176
|
+
<script setup lang="ts">
|
|
177
|
+
import { CdsButton, CdsSlideView, CdsSlideViewItem, CdsTextInput } from '@central-design-system/components';
|
|
178
|
+
import { ref } from 'vue';
|
|
179
|
+
|
|
180
|
+
const step = ref(0);
|
|
181
|
+
const total = 3;
|
|
182
|
+
|
|
183
|
+
const name = ref('');
|
|
184
|
+
const email = ref('');
|
|
185
|
+
const company = ref('');
|
|
186
|
+
</script>
|
|
187
|
+
|
|
188
|
+
<template>
|
|
189
|
+
<div class="m-auto flex w-full max-w-[400px] flex-col gap-2">
|
|
190
|
+
<span class="text-200 text-content-secondary">Шаг {{ step + 1 }} из {{ total }}</span>
|
|
191
|
+
|
|
192
|
+
<CdsSlideView v-model="step" :touch="false">
|
|
193
|
+
<CdsSlideViewItem>
|
|
194
|
+
<div class="flex flex-col gap-2">
|
|
195
|
+
<CdsTextInput v-model="name" label="Имя" placeholder="Александра" />
|
|
196
|
+
<CdsTextInput v-model="email" label="Рабочая почта" placeholder="name@company.ru" />
|
|
197
|
+
</div>
|
|
198
|
+
</CdsSlideViewItem>
|
|
199
|
+
|
|
200
|
+
<CdsSlideViewItem>
|
|
201
|
+
<div class="flex flex-col gap-2">
|
|
202
|
+
<CdsTextInput v-model="company" label="Компания" placeholder="ООО «Ромашка»" />
|
|
203
|
+
</div>
|
|
204
|
+
</CdsSlideViewItem>
|
|
205
|
+
|
|
206
|
+
<CdsSlideViewItem>
|
|
207
|
+
<div class="rounded-200 bg-surface-secondary p-4">
|
|
208
|
+
<p class="m-0 text-200">Проверьте данные перед отправкой:</p>
|
|
209
|
+
<p class="m-0 mt-1 text-200 text-content-secondary">
|
|
210
|
+
{{ name || 'Имя не указано' }} · {{ email || 'почта не указана' }} · {{ company || 'компания не указана' }}
|
|
211
|
+
</p>
|
|
212
|
+
</div>
|
|
213
|
+
</CdsSlideViewItem>
|
|
214
|
+
</CdsSlideView>
|
|
215
|
+
|
|
216
|
+
<div class="flex justify-between">
|
|
217
|
+
<CdsButton appearance="secondary" text="Назад" :disabled="step === 0" @click="step--" />
|
|
218
|
+
<CdsButton v-if="step < total - 1" text="Далее" @click="step++" />
|
|
219
|
+
<CdsButton v-else text="Отправить" />
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
</template>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Customer testimonials
|
|
226
|
+
|
|
227
|
+
The quotes are not lined up in a sequence, so `crossfade` replaces the shift. The arrows appear on hover (`show-arrows="hover"`), the position is shown by a counter in the `additional` slot, and `continuous` pages the testimonials in a loop.
|
|
228
|
+
|
|
229
|
+
**Example (SFC):**
|
|
230
|
+
|
|
231
|
+
```vue
|
|
232
|
+
<script setup lang="ts">
|
|
233
|
+
import { CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
234
|
+
import { ref } from 'vue';
|
|
235
|
+
|
|
236
|
+
const slide = ref(0);
|
|
237
|
+
|
|
238
|
+
const reviews = [
|
|
239
|
+
{
|
|
240
|
+
text: 'Перевели закупки в электронный вид за две недели — поставщики подключились без единого звонка в поддержку.',
|
|
241
|
+
author: 'Мария, директор по закупкам'
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
text: 'Удобно сравнивать предложения: все документы и цены собраны в одном месте.',
|
|
245
|
+
author: 'Игорь, руководитель отдела снабжения'
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
text: 'Интеграция с нашей учётной системой заняла один день. Теперь заявки уходят автоматически.',
|
|
249
|
+
author: 'Светлана, ИТ-директор'
|
|
250
|
+
}
|
|
251
|
+
];
|
|
252
|
+
</script>
|
|
253
|
+
|
|
254
|
+
<template>
|
|
255
|
+
<CdsSlideView v-model="slide" crossfade continuous show-arrows="hover" class="m-auto max-w-[520px]">
|
|
256
|
+
<CdsSlideViewItem v-for="review in reviews" :key="review.author">
|
|
257
|
+
<figure class="m-0 flex h-[200px] flex-col justify-center gap-2 rounded-200 bg-surface-secondary px-12">
|
|
258
|
+
<blockquote class="m-0 text-300">«{{ review.text }}»</blockquote>
|
|
259
|
+
<figcaption class="text-200 text-content-secondary">{{ review.author }}</figcaption>
|
|
260
|
+
</figure>
|
|
261
|
+
</CdsSlideViewItem>
|
|
262
|
+
|
|
263
|
+
<template #additional>
|
|
264
|
+
<p class="m-0 mt-1 text-center text-200 text-content-secondary">{{ slide + 1 }} / {{ reviews.length }}</p>
|
|
265
|
+
</template>
|
|
266
|
+
</CdsSlideView>
|
|
267
|
+
</template>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## An events feed
|
|
271
|
+
|
|
272
|
+
A compact widget with vertical paging: `direction="vertical"` moves the events from the bottom up, and `vertical-arrows="right"` gathers the arrows into a column at the right edge.
|
|
273
|
+
|
|
274
|
+
**Example (SFC):**
|
|
275
|
+
|
|
276
|
+
```vue
|
|
277
|
+
<script setup lang="ts">
|
|
278
|
+
import { CdsIcon, CdsSlideView, CdsSlideViewItem } from '@central-design-system/components';
|
|
279
|
+
import { ref } from 'vue';
|
|
280
|
+
|
|
281
|
+
const slide = ref(0);
|
|
282
|
+
|
|
283
|
+
const events = [
|
|
284
|
+
{ icon: 'notification', text: 'Новая заявка № 142 от ООО «Ромашка»', time: '2 минуты назад' },
|
|
285
|
+
{ icon: 'comment', text: 'Поставщик ответил на вопрос по лоту № 7', time: '15 минут назад' },
|
|
286
|
+
{ icon: 'doc', text: 'Подписан договор по закупке № 89', time: 'час назад' },
|
|
287
|
+
{ icon: 'winner', text: 'Определён победитель тендера № 56', time: '3 часа назад' }
|
|
288
|
+
];
|
|
289
|
+
</script>
|
|
290
|
+
|
|
291
|
+
<template>
|
|
292
|
+
<CdsSlideView
|
|
293
|
+
v-model="slide"
|
|
294
|
+
show-arrows
|
|
295
|
+
direction="vertical"
|
|
296
|
+
vertical-arrows="right"
|
|
297
|
+
continuous
|
|
298
|
+
class="m-auto max-w-[440px]"
|
|
299
|
+
>
|
|
300
|
+
<CdsSlideViewItem v-for="event in events" :key="event.text">
|
|
301
|
+
<div class="flex h-[96px] items-center gap-3 rounded-200 bg-surface-secondary pl-4 pr-[64px]">
|
|
302
|
+
<CdsIcon :icon="event.icon" />
|
|
303
|
+
<div class="flex flex-col">
|
|
304
|
+
<span class="text-200">{{ event.text }}</span>
|
|
305
|
+
<span class="text-100 text-content-secondary">{{ event.time }}</span>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
</CdsSlideViewItem>
|
|
309
|
+
</CdsSlideView>
|
|
310
|
+
</template>
|
|
311
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# CdsSlideView — 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
|
+
| Dots or a counter show how many slides there are and which one is open now. | Without a position indicator it is unclear how much content is hidden and where you are. |
|
|
9
|
+
| Slides of the same height: the container is stable and the content below does not jump. | Slides of different heights jerk the page on every switch. |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# CdsSlideView — 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
|
+
## _CdsSlideView.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
$slide-view-transition: .3s cubic-bezier(.25, .8, .50, 1) !default;
|
|
11
|
+
$slide-view-controls-padding: 0 16px !default;
|
|
12
|
+
$slide-view-controls-vertical-gap: 12px !default;
|
|
13
|
+
$slide-view-crossfade-blend-mode: plus-lighter !default;
|
|
14
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CdsStages — 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 stage bar shows the course of a business process: which stages are behind, which one is running now and where the process stopped because of an error. The component only displays the status — the stages are not clickable, so the bar fits cards, headers and lists where the state of the process has to be read at a glance.
|
|
7
|
+
|
|
8
|
+
## CdsStages
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `current` | `string \| number \| null \| undefined` | `null` | no | Current stage |
|
|
15
|
+
| `finished` | `boolean \| undefined` | — | no | All stages are finished |
|
|
16
|
+
| `itemChildren` | `SelectItemKey` | `'children'` | no | Object field that holds the child items, or a function that returns them |
|
|
17
|
+
| `itemProps` | `SelectItemKey` | `'props'` | no | Object field that holds the props of the item, or a function that returns them |
|
|
18
|
+
| `items` | `any[] \| undefined` | `[]` | no | Array of items to display |
|
|
19
|
+
| `itemTitle` | `SelectItemKey` | `'title'` | no | Object field used as the item title, or a function that returns it |
|
|
20
|
+
| `itemType` | `SelectItemKey` | `'type'` | no | Object field that defines the item type (`item`, `divider`, `subheader`), or a function that returns it |
|
|
21
|
+
| `itemValue` | `SelectItemKey` | `'value'` | no | Object field used as the item value, or a function that returns it |
|
|
22
|
+
| `returnObject` | `boolean \| undefined` | — | no | Return an object in the model value instead of an array |
|
|
23
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
24
|
+
| `valueComparator` | `ValueComparator \| undefined` | — | no | Function that compares item values to determine the selected state |
|
|
25
|
+
|
|
26
|
+
**Exposed**
|
|
27
|
+
|
|
28
|
+
| Name | Type | Description |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `isCurrent` | `(idx: number) => boolean` | Checks whether the stage with the given index is the current one. |
|
|
31
|
+
| `isFinished` | `boolean` | Whether all the stages are passed. |
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# CdsStages — 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 stage bar shows the course of a business process: which stages are behind, which one is running now and where the process stopped because of an error. The component only displays the status — the stages are not clickable, so the bar fits cards, headers and lists where the state of the process has to be read at a glance.
|
|
7
|
+
|
|
8
|
+
## Stages
|
|
9
|
+
|
|
10
|
+
Pass an array of objects into `items`: the title and the value of a stage are read by the `item-title` and `item-value` keys (`title` and `value` by default). As long as `current` is not set, all the stages stay neutral — the process has not started yet.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsStages } from '@central-design-system/components';
|
|
17
|
+
|
|
18
|
+
const items = [
|
|
19
|
+
{ title: 'Заявка', value: 1 },
|
|
20
|
+
{ title: 'Проверка', value: 2 },
|
|
21
|
+
{ title: 'Согласование', value: 3 },
|
|
22
|
+
{ title: 'Договор', value: 4 }
|
|
23
|
+
];
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<div class="flex items-center justify-center">
|
|
28
|
+
<CdsStages :items="items" />
|
|
29
|
+
</div>
|
|
30
|
+
</template>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## The current stage
|
|
34
|
+
|
|
35
|
+
`current` takes the value of the active stage: it is highlighted with the accent color, and the stages to the left of it are marked as passed.
|
|
36
|
+
|
|
37
|
+
**Example (SFC):**
|
|
38
|
+
|
|
39
|
+
```vue
|
|
40
|
+
<script setup lang="ts">
|
|
41
|
+
import { CdsStages } from '@central-design-system/components';
|
|
42
|
+
|
|
43
|
+
const items = [
|
|
44
|
+
{ title: 'Заявка', value: 1 },
|
|
45
|
+
{ title: 'Проверка', value: 2 },
|
|
46
|
+
{ title: 'Согласование', value: 3 },
|
|
47
|
+
{ title: 'Договор', value: 4 }
|
|
48
|
+
];
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<template>
|
|
52
|
+
<div class="flex items-center justify-center">
|
|
53
|
+
<CdsStages :items="items" :current="3" />
|
|
54
|
+
</div>
|
|
55
|
+
</template>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## An error
|
|
59
|
+
|
|
60
|
+
An error is set in the data of a stage — `props: { error: true }` on an `items` element. The stage turns red once the process has reached it: when it is the current one or is already passed.
|
|
61
|
+
|
|
62
|
+
**Example (SFC):**
|
|
63
|
+
|
|
64
|
+
```vue
|
|
65
|
+
<script setup lang="ts">
|
|
66
|
+
import { CdsStages } from '@central-design-system/components';
|
|
67
|
+
|
|
68
|
+
const items = [
|
|
69
|
+
{ title: 'Заявка', value: 1 },
|
|
70
|
+
{ title: 'Проверка', value: 2 },
|
|
71
|
+
{ title: 'Согласование', value: 3, props: { error: true } },
|
|
72
|
+
{ title: 'Договор', value: 4 }
|
|
73
|
+
];
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<template>
|
|
77
|
+
<div class="flex items-center justify-center">
|
|
78
|
+
<CdsStages :items="items" :current="3" />
|
|
79
|
+
</div>
|
|
80
|
+
</template>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Finishing the process
|
|
84
|
+
|
|
85
|
+
The `finished` prop marks all the stages as passed at once — the value of `current` does not matter then.
|
|
86
|
+
|
|
87
|
+
**Example (SFC):**
|
|
88
|
+
|
|
89
|
+
```vue
|
|
90
|
+
<script setup lang="ts">
|
|
91
|
+
import { CdsStages } from '@central-design-system/components';
|
|
92
|
+
|
|
93
|
+
const items = [
|
|
94
|
+
{ title: 'Заявка', value: 1 },
|
|
95
|
+
{ title: 'Проверка', value: 2 },
|
|
96
|
+
{ title: 'Согласование', value: 3 },
|
|
97
|
+
{ title: 'Договор', value: 4 }
|
|
98
|
+
];
|
|
99
|
+
</script>
|
|
100
|
+
|
|
101
|
+
<template>
|
|
102
|
+
<div class="flex items-center justify-center">
|
|
103
|
+
<CdsStages :items="items" finished />
|
|
104
|
+
</div>
|
|
105
|
+
</template>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Order progress
|
|
109
|
+
|
|
110
|
+
The value of `current` comes from the data and changes as the order is processed. Once the last stage is passed, turn `finished` on — the whole bar becomes green.
|
|
111
|
+
|
|
112
|
+
**Example (SFC):**
|
|
113
|
+
|
|
114
|
+
```vue
|
|
115
|
+
<script setup lang="ts">
|
|
116
|
+
import { CdsButton, CdsStages } from '@central-design-system/components';
|
|
117
|
+
import { computed, ref } from 'vue';
|
|
118
|
+
|
|
119
|
+
const stages = [
|
|
120
|
+
{ title: 'Оформлен', value: 'created' },
|
|
121
|
+
{ title: 'Комплектация', value: 'assembly' },
|
|
122
|
+
{ title: 'В пути', value: 'shipping' },
|
|
123
|
+
{ title: 'Получен', value: 'delivered' }
|
|
124
|
+
];
|
|
125
|
+
|
|
126
|
+
const index = ref(0);
|
|
127
|
+
|
|
128
|
+
const finished = computed(() => index.value >= stages.length);
|
|
129
|
+
const current = computed(() => (finished.value ? null : stages[index.value].value));
|
|
130
|
+
</script>
|
|
131
|
+
|
|
132
|
+
<template>
|
|
133
|
+
<div class="flex flex-col items-center gap-3">
|
|
134
|
+
<CdsStages class="w-full" :items="stages" :current="current" :finished="finished" />
|
|
135
|
+
|
|
136
|
+
<CdsButton v-if="!finished" text="Следующий этап" @click="index++" />
|
|
137
|
+
<CdsButton v-else appearance="secondary" text="Оформить новый заказ" @click="index = 0" />
|
|
138
|
+
</div>
|
|
139
|
+
</template>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Rejected during review
|
|
143
|
+
|
|
144
|
+
The status of the listing is stored as a single string, and `items`, `current` and `finished` are computed from it. On rejection the "Проверка" stage gets `props.error` and turns red — the user immediately sees where the process stopped.
|
|
145
|
+
|
|
146
|
+
**Example (SFC):**
|
|
147
|
+
|
|
148
|
+
```vue
|
|
149
|
+
<script setup lang="ts">
|
|
150
|
+
import { CdsButton, CdsStages } from '@central-design-system/components';
|
|
151
|
+
import { computed, ref } from 'vue';
|
|
152
|
+
|
|
153
|
+
type Status = 'review' | 'rejected' | 'published';
|
|
154
|
+
|
|
155
|
+
const status = ref<Status>('review');
|
|
156
|
+
|
|
157
|
+
const items = computed(() => [
|
|
158
|
+
{ title: 'Черновик', value: 'draft' },
|
|
159
|
+
{ title: 'Проверка', value: 'review', props: { error: status.value === 'rejected' } },
|
|
160
|
+
{ title: 'Публикация', value: 'published' }
|
|
161
|
+
]);
|
|
162
|
+
|
|
163
|
+
const current = computed(() => (status.value === 'rejected' ? 'review' : status.value));
|
|
164
|
+
const finished = computed(() => status.value === 'published');
|
|
165
|
+
</script>
|
|
166
|
+
|
|
167
|
+
<template>
|
|
168
|
+
<div class="flex flex-col items-center gap-3">
|
|
169
|
+
<CdsStages class="w-full" :items="items" :current="current" :finished="finished" />
|
|
170
|
+
|
|
171
|
+
<div class="flex gap-2">
|
|
172
|
+
<template v-if="status === 'review'">
|
|
173
|
+
<CdsButton text="Одобрить" @click="status = 'published'" />
|
|
174
|
+
<CdsButton appearance="secondary" text="Отклонить" @click="status = 'rejected'" />
|
|
175
|
+
</template>
|
|
176
|
+
|
|
177
|
+
<CdsButton v-else appearance="secondary" text="Вернуть на проверку" @click="status = 'review'" />
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
</template>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Statuses in a list
|
|
184
|
+
|
|
185
|
+
The bar is compact and does not intercept clicks, so it is easy to repeat in every row of a list or a table: the width comes from a utility class, and the state of the row from its own `current`, `finished` and error.
|
|
186
|
+
|
|
187
|
+
**Example (SFC):**
|
|
188
|
+
|
|
189
|
+
```vue
|
|
190
|
+
<script setup lang="ts">
|
|
191
|
+
import { CdsStages } from '@central-design-system/components';
|
|
192
|
+
|
|
193
|
+
interface Order {
|
|
194
|
+
name: string;
|
|
195
|
+
current?: number;
|
|
196
|
+
error?: boolean;
|
|
197
|
+
finished?: boolean;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const stages = [
|
|
201
|
+
{ title: 'Заявка', value: 1 },
|
|
202
|
+
{ title: 'Проверка', value: 2 },
|
|
203
|
+
{ title: 'Договор', value: 3 }
|
|
204
|
+
];
|
|
205
|
+
|
|
206
|
+
const orders: Order[] = [
|
|
207
|
+
{ name: 'Поставка канцтоваров', current: 2 },
|
|
208
|
+
{ name: 'Обслуживание техники', current: 2, error: true },
|
|
209
|
+
{ name: 'Ремонт переговорной', finished: true }
|
|
210
|
+
];
|
|
211
|
+
|
|
212
|
+
const stagesFor = (order: Order) =>
|
|
213
|
+
stages.map((stage) => (order.error && stage.value === order.current ? { ...stage, props: { error: true } } : stage));
|
|
214
|
+
</script>
|
|
215
|
+
|
|
216
|
+
<template>
|
|
217
|
+
<div class="m-auto flex w-[560px] flex-col gap-3">
|
|
218
|
+
<div v-for="order in orders" :key="order.name" class="flex items-center justify-between gap-3">
|
|
219
|
+
<span class="text-200">{{ order.name }}</span>
|
|
220
|
+
|
|
221
|
+
<CdsStages
|
|
222
|
+
class="w-[300px] shrink-0"
|
|
223
|
+
:items="stagesFor(order)"
|
|
224
|
+
:current="order.current"
|
|
225
|
+
:finished="order.finished"
|
|
226
|
+
/>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</template>
|
|
230
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsStages — 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
|
+
| A stage title is one or two words: the bar is read at a glance. | Sentence-long titles stretch the stages and repeat the same words. |
|
|
9
|
+
| Three to six stages: each one is a meaningful milestone of the process. | Splitting into tiny steps turns the bar into an unreadable comb. |
|
|
10
|
+
| The error belongs to the stage where the process stopped: usually the current one. | Errors on passed stages alarm for nothing: the process moved on, they no longer matter. |
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# CdsStages — 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
|
+
## _CdsStages.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use 'sass:map';
|
|
11
|
+
|
|
12
|
+
$stages-color: (
|
|
13
|
+
'background': rgb(var(--cds-color-fill-primary)),
|
|
14
|
+
'color': rgb(var(--cds-color-line-primary)),
|
|
15
|
+
'text': rgb(var(--cds-color-content-tertiary)),
|
|
16
|
+
'active': rgb(var(--cds-color-status-progress-line)),
|
|
17
|
+
'active-text': rgb(var(--cds-color-status-progress-content)),
|
|
18
|
+
'success': rgb(var(--cds-color-status-success-line)),
|
|
19
|
+
'success-text': rgb(var(--cds-color-status-success-content)),
|
|
20
|
+
'error': rgb(var(--cds-color-status-danger-line)),
|
|
21
|
+
'error-text': rgb(var(--cds-color-status-danger-content))
|
|
22
|
+
) !default;
|
|
23
|
+
$stages-border: var(--cds-border-200) solid map.get($stages-color, 'color') !default;
|
|
24
|
+
$stages-border-radius: var(--cds-border-radius-200) !default;
|
|
25
|
+
$stages-inner-padding: var(--cds-spacing-200) var(--cds-spacing-400) var(--cds-spacing-200) var(--cds-spacing-500) !default;
|
|
26
|
+
$stages-arrow-offset: -15px !default;
|
|
27
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# CdsStatus — 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 status is a non-interactive indicator of the state of an object: the request is paid, the document is under review, the payment is overdue. The `status` prop sets the semantics — the color and the icon — while `variant` sets the display mode: a prominent filled badge or compact text with a colored icon.
|
|
7
|
+
|
|
8
|
+
## CdsStatus
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `content` | `string \| number \| undefined` | — | no | Content displayed in the component. |
|
|
15
|
+
| `status` | `"progress" \| "success" \| "danger" \| "warning" \| "info" \| undefined` | `'info'` | no | Semantic status — drives the color and the default icon. |
|
|
16
|
+
| `text` | `string \| number \| undefined` | — | no | Text displayed in the component. |
|
|
17
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
18
|
+
| `variant` | `"fill" \| "text" \| undefined` | `'fill'` | no | Display mode: `fill` — a filled badge without an icon; `text` — a transparent background with a colored status icon. |
|
|
19
|
+
|
|
20
|
+
**Slots**
|
|
21
|
+
|
|
22
|
+
| Name | Type | Description |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| `default` | `any` | Slot for the status text. |
|