@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,324 @@
|
|
|
1
|
+
# CdsButton — 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 button is the primary way to trigger an action: submit a form, open a modal, confirm a choice. Its appearance signals the role it plays: `primary` is the main action on the screen, `secondary` and `tertiary` are the supporting ones.
|
|
7
|
+
|
|
8
|
+
## Appearance
|
|
9
|
+
|
|
10
|
+
The `appearance` prop sets the visual role of the button — from the most contrasting `primary` to `inverse` for dark backgrounds.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsButton } from '@central-design-system/components';
|
|
17
|
+
|
|
18
|
+
const { appearances } = CdsButton.constants;
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<div class="flex flex-wrap justify-center gap-4">
|
|
23
|
+
<CdsButton v-for="appearance of appearances" :key="appearance" :text="appearance" :appearance="appearance" />
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Sizes
|
|
29
|
+
|
|
30
|
+
The `size` prop changes the height and the paddings of the button. The default size is `md`.
|
|
31
|
+
|
|
32
|
+
**Example (SFC):**
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<script setup lang="ts">
|
|
36
|
+
import { CdsButton } from '@central-design-system/components';
|
|
37
|
+
|
|
38
|
+
const { sizes } = CdsButton.constants;
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<template>
|
|
42
|
+
<div class="flex flex-wrap justify-center gap-4">
|
|
43
|
+
<CdsButton v-for="size of sizes" :key="size" :text="'Button ' + size" :size="size" />
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Icons
|
|
49
|
+
|
|
50
|
+
The `prepend-icon` and `append-icon` props add an icon before and after the text from `text`.
|
|
51
|
+
|
|
52
|
+
**Example (SFC):**
|
|
53
|
+
|
|
54
|
+
```vue
|
|
55
|
+
<script setup lang="ts">
|
|
56
|
+
import { CdsButton } from '@central-design-system/components';
|
|
57
|
+
|
|
58
|
+
const { appearances } = CdsButton.constants;
|
|
59
|
+
</script>
|
|
60
|
+
|
|
61
|
+
<template>
|
|
62
|
+
<div class="flex flex-wrap justify-center gap-4">
|
|
63
|
+
<CdsButton
|
|
64
|
+
v-for="appearance of appearances"
|
|
65
|
+
:key="appearance"
|
|
66
|
+
prepend-icon="add"
|
|
67
|
+
append-icon="settings"
|
|
68
|
+
:text="appearance"
|
|
69
|
+
:appearance="appearance"
|
|
70
|
+
/>
|
|
71
|
+
</div>
|
|
72
|
+
</template>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Icons
|
|
76
|
+
|
|
77
|
+
The `icon` prop turns the button into an icon button: the text is hidden and a square button with a single icon remains.
|
|
78
|
+
|
|
79
|
+
**Example (SFC):**
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<script setup lang="ts">
|
|
83
|
+
import { CdsButton } from '@central-design-system/components';
|
|
84
|
+
|
|
85
|
+
const { appearances } = CdsButton.constants;
|
|
86
|
+
</script>
|
|
87
|
+
|
|
88
|
+
<template>
|
|
89
|
+
<div class="flex flex-wrap justify-center gap-4">
|
|
90
|
+
<CdsButton
|
|
91
|
+
v-for="appearance of appearances"
|
|
92
|
+
:key="appearance"
|
|
93
|
+
icon="copy"
|
|
94
|
+
:text="appearance"
|
|
95
|
+
:appearance="appearance"
|
|
96
|
+
/>
|
|
97
|
+
</div>
|
|
98
|
+
</template>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Layout
|
|
102
|
+
|
|
103
|
+
The `block` prop stretches the button to the full width of its parent container.
|
|
104
|
+
|
|
105
|
+
**Example (SFC):**
|
|
106
|
+
|
|
107
|
+
```vue
|
|
108
|
+
<script setup lang="ts">
|
|
109
|
+
import { CdsButton } from '@central-design-system/components';
|
|
110
|
+
</script>
|
|
111
|
+
|
|
112
|
+
<template>
|
|
113
|
+
<div class="flex flex-col m-auto items-start gap-4 w-[400px]">
|
|
114
|
+
<CdsButton block text="Block button" />
|
|
115
|
+
<CdsButton block prepend-icon="add" append-icon="settings" text="Block button with icons" />
|
|
116
|
+
<CdsButton text="Обычная кнопка" />
|
|
117
|
+
</div>
|
|
118
|
+
</template>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Layout
|
|
122
|
+
|
|
123
|
+
The `stacked` prop places the icon above the text. Such a button is twice as tall as a regular one of the same size, and its minimum width equals its height.
|
|
124
|
+
|
|
125
|
+
**Example (SFC):**
|
|
126
|
+
|
|
127
|
+
```vue
|
|
128
|
+
<script setup lang="ts">
|
|
129
|
+
import { CdsButton } from '@central-design-system/components';
|
|
130
|
+
|
|
131
|
+
const { sizes } = CdsButton.constants;
|
|
132
|
+
</script>
|
|
133
|
+
|
|
134
|
+
<template>
|
|
135
|
+
<div class="flex flex-wrap justify-center gap-4">
|
|
136
|
+
<CdsButton
|
|
137
|
+
v-for="size of sizes"
|
|
138
|
+
:key="size"
|
|
139
|
+
stacked
|
|
140
|
+
appearance="tertiary"
|
|
141
|
+
prepend-icon="settings"
|
|
142
|
+
:text="'Button ' + size"
|
|
143
|
+
:size="size"
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
</template>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Layout
|
|
150
|
+
|
|
151
|
+
The `spaced` prop pushes the `prepend` and `append` slots to the edges of the button. The value decides on which side of the content the free space appears: `start` moves the content towards `append`, `end` moves it towards `prepend`, `both` keeps it centered. The effect shows up only when the button is wider than its content, so `spaced` usually goes together with `block` or an explicit width.
|
|
152
|
+
|
|
153
|
+
**Example (SFC):**
|
|
154
|
+
|
|
155
|
+
```vue
|
|
156
|
+
<script setup lang="ts">
|
|
157
|
+
import { CdsButton } from '@central-design-system/components';
|
|
158
|
+
</script>
|
|
159
|
+
|
|
160
|
+
<template>
|
|
161
|
+
<div class="flex flex-col m-auto gap-4 w-[320px]">
|
|
162
|
+
<CdsButton
|
|
163
|
+
block
|
|
164
|
+
appearance="tertiary"
|
|
165
|
+
prepend-icon="add"
|
|
166
|
+
append-icon="settings"
|
|
167
|
+
spaced="start"
|
|
168
|
+
text="spaced=start"
|
|
169
|
+
/>
|
|
170
|
+
<CdsButton block appearance="tertiary" prepend-icon="add" append-icon="settings" spaced="end" text="spaced=end" />
|
|
171
|
+
<CdsButton block appearance="tertiary" prepend-icon="add" append-icon="settings" spaced="both" text="spaced=both" />
|
|
172
|
+
<CdsButton block appearance="tertiary" prepend-icon="add" append-icon="settings" text="без spaced" />
|
|
173
|
+
</div>
|
|
174
|
+
</template>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Slots
|
|
178
|
+
|
|
179
|
+
Slots replace the content coming from props when you need full control over the markup.
|
|
180
|
+
|
|
181
|
+
**Example (SFC):**
|
|
182
|
+
|
|
183
|
+
```vue
|
|
184
|
+
<script setup lang="ts">
|
|
185
|
+
import { CdsButton, CdsIcon, CdsProgressCircle } from '@central-design-system/components';
|
|
186
|
+
import { ref } from 'vue';
|
|
187
|
+
|
|
188
|
+
const loading = ref(false);
|
|
189
|
+
|
|
190
|
+
const onClick = async () => {
|
|
191
|
+
loading.value = true;
|
|
192
|
+
|
|
193
|
+
await new Promise((resolve) =>
|
|
194
|
+
setTimeout(() => {
|
|
195
|
+
loading.value = false;
|
|
196
|
+
resolve(true);
|
|
197
|
+
}, 3000)
|
|
198
|
+
);
|
|
199
|
+
};
|
|
200
|
+
</script>
|
|
201
|
+
|
|
202
|
+
<template>
|
|
203
|
+
<div class="flex justify-center">
|
|
204
|
+
<CdsButton appearance="tertiary" :loading="loading" @click="onClick">
|
|
205
|
+
<template #prepend>
|
|
206
|
+
<CdsIcon icon="settings" color="green" />
|
|
207
|
+
</template>
|
|
208
|
+
|
|
209
|
+
<span class="text-purple-500 font-bold">Click me</span>
|
|
210
|
+
|
|
211
|
+
<template #append>
|
|
212
|
+
<CdsIcon icon="copy" color="red" />
|
|
213
|
+
</template>
|
|
214
|
+
|
|
215
|
+
<template #loader>
|
|
216
|
+
<CdsProgressCircle indeterminate color="yellow-light-500" />
|
|
217
|
+
</template>
|
|
218
|
+
</CdsButton>
|
|
219
|
+
</div>
|
|
220
|
+
</template>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Link button
|
|
224
|
+
|
|
225
|
+
Pass `href` (or `to` with a `RouteLocationRaw` object from vue-router) and the button renders as an `a` tag with all the link attributes, keeping the look and the props of a button.
|
|
226
|
+
|
|
227
|
+
**Example (SFC):**
|
|
228
|
+
|
|
229
|
+
```vue
|
|
230
|
+
<script setup lang="ts">
|
|
231
|
+
import { CdsButton } from '@central-design-system/components';
|
|
232
|
+
</script>
|
|
233
|
+
|
|
234
|
+
<template>
|
|
235
|
+
<div class="flex justify-center">
|
|
236
|
+
<CdsButton href="https://www.google.com" target="_blank" text="External Link" />
|
|
237
|
+
</div>
|
|
238
|
+
</template>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Submitting a form
|
|
242
|
+
|
|
243
|
+
The primary button triggers the main action of the form. The `loading` prop shows the request in progress and guards against a double submit, while the neighboring `tertiary` button gives a way to back out.
|
|
244
|
+
|
|
245
|
+
**Example (SFC):**
|
|
246
|
+
|
|
247
|
+
```vue
|
|
248
|
+
<script setup lang="ts">
|
|
249
|
+
import { CdsButton, CdsTextInput } from '@central-design-system/components';
|
|
250
|
+
import { ref } from 'vue';
|
|
251
|
+
|
|
252
|
+
const email = ref('');
|
|
253
|
+
const loading = ref(false);
|
|
254
|
+
|
|
255
|
+
const submit = async () => {
|
|
256
|
+
loading.value = true;
|
|
257
|
+
|
|
258
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
259
|
+
|
|
260
|
+
loading.value = false;
|
|
261
|
+
};
|
|
262
|
+
</script>
|
|
263
|
+
|
|
264
|
+
<template>
|
|
265
|
+
<form class="flex w-full max-w-md flex-col gap-4" @submit.prevent="submit">
|
|
266
|
+
<CdsTextInput v-model="email" label="Рабочая почта" placeholder="name@company.ru" hint="Пришлём ссылку для входа" />
|
|
267
|
+
|
|
268
|
+
<div class="flex gap-3">
|
|
269
|
+
<CdsButton type="submit" text="Отправить приглашение" :loading="loading" />
|
|
270
|
+
<CdsButton appearance="tertiary" text="Отмена" :disabled="loading" />
|
|
271
|
+
</div>
|
|
272
|
+
</form>
|
|
273
|
+
</template>
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Action bar
|
|
277
|
+
|
|
278
|
+
Repeating actions on a record — edit, duplicate, delete — fit nicely into a compact bar of icon buttons. The `icon` prop drops the text and `size="sm"` saves space. Do not forget `aria-label`: without text it stays the only name of the action.
|
|
279
|
+
|
|
280
|
+
**Example (SFC):**
|
|
281
|
+
|
|
282
|
+
```vue
|
|
283
|
+
<script setup lang="ts">
|
|
284
|
+
import { CdsButton } from '@central-design-system/components';
|
|
285
|
+
</script>
|
|
286
|
+
|
|
287
|
+
<template>
|
|
288
|
+
<div class="flex w-full max-w-md items-center justify-between gap-4">
|
|
289
|
+
<span>Шаблон отчёта за квартал</span>
|
|
290
|
+
|
|
291
|
+
<div class="flex gap-2">
|
|
292
|
+
<CdsButton appearance="tertiary" size="sm" icon="edit" aria-label="Редактировать" />
|
|
293
|
+
<CdsButton appearance="tertiary" size="sm" icon="copy" aria-label="Дублировать" />
|
|
294
|
+
<CdsButton appearance="tertiary" size="sm" icon="delete" aria-label="Удалить" />
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
</template>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Step navigation
|
|
301
|
+
|
|
302
|
+
In wizards and multi-step forms the primary button moves forward and the secondary one moves back. Chevron icons in `prepend-icon` and `append-icon` reinforce the direction, and `disabled` blocks moving past the first and the last step.
|
|
303
|
+
|
|
304
|
+
**Example (SFC):**
|
|
305
|
+
|
|
306
|
+
```vue
|
|
307
|
+
<script setup lang="ts">
|
|
308
|
+
import { CdsButton } from '@central-design-system/components';
|
|
309
|
+
import { ref } from 'vue';
|
|
310
|
+
|
|
311
|
+
const step = ref(2);
|
|
312
|
+
const totalSteps = 4;
|
|
313
|
+
</script>
|
|
314
|
+
|
|
315
|
+
<template>
|
|
316
|
+
<div class="flex w-full max-w-md items-center justify-between m-auto gap-4">
|
|
317
|
+
<CdsButton appearance="secondary" prepend-icon="chevron-left" text="Назад" :disabled="step === 1" @click="step--" />
|
|
318
|
+
|
|
319
|
+
<span>Шаг {{ step }} из {{ totalSteps }}</span>
|
|
320
|
+
|
|
321
|
+
<CdsButton append-icon="chevron-right" text="Далее" :disabled="step === totalSteps" @click="step++" />
|
|
322
|
+
</div>
|
|
323
|
+
</template>
|
|
324
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsButton — 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
|
+
| One primary action per screen; everything else stays less prominent. | Several primary buttons compete for attention, and the main action gets lost. |
|
|
9
|
+
| The label names the action and its outcome. | По «Да» и «ОК» не понятно, что именно произойдёт. |
|
|
10
|
+
| Use an icon button only for widely understood actions: edit, copy, delete. | A rare operation is impossible to guess from an icon alone — give the button a label. |
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# CdsButton — 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
|
+
## _CdsButton.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use 'sass:map';
|
|
11
|
+
@use '../../../styles/tools';
|
|
12
|
+
@use '../../../styles/settings';
|
|
13
|
+
|
|
14
|
+
// ======================= Variables =======================
|
|
15
|
+
$button-border: var(--cds-border-100) solid !default;
|
|
16
|
+
$button-outline: var(--cds-border-200) solid !default;
|
|
17
|
+
$button-outline-offset: var(--cds-spacing-50) !default;
|
|
18
|
+
$button-border-radius: var(--cds-border-radius-200) !default;
|
|
19
|
+
$button-white-space: nowrap !default;
|
|
20
|
+
$button-content-transition: transform, opacity .2s settings.$standard-easing !default;
|
|
21
|
+
$button-stacked-gap: var(--cds-spacing-100) !default;
|
|
22
|
+
|
|
23
|
+
// ======================= Appearances =======================
|
|
24
|
+
$button-appearances: (
|
|
25
|
+
primary: (
|
|
26
|
+
default: (
|
|
27
|
+
'background': rgb(var(--cds-color-brand-primary)),
|
|
28
|
+
'border': rgb(var(--cds-color-brand-primary)),
|
|
29
|
+
'content': rgb(var(--cds-color-content-on-dark)),
|
|
30
|
+
),
|
|
31
|
+
hover: (
|
|
32
|
+
'background': rgb(var(--cds-color-brand-primary-hover)),
|
|
33
|
+
'border': rgb(var(--cds-color-brand-primary-hover)),
|
|
34
|
+
'content': rgb(var(--cds-color-content-on-dark)),
|
|
35
|
+
),
|
|
36
|
+
active: (
|
|
37
|
+
'background': rgb(var(--cds-color-brand-primary-active)),
|
|
38
|
+
'border': rgb(var(--cds-color-brand-primary-active)),
|
|
39
|
+
'content': rgb(var(--cds-color-content-on-dark)),
|
|
40
|
+
),
|
|
41
|
+
disabled: (
|
|
42
|
+
'background': rgb(var(--cds-color-fill-disable)),
|
|
43
|
+
'border': rgb(var(--cds-color-fill-disable)),
|
|
44
|
+
'content': rgb(var(--cds-color-content-disable)),
|
|
45
|
+
),
|
|
46
|
+
focus: (
|
|
47
|
+
'outline': rgb(var(--cds-color-line-focus-outline))
|
|
48
|
+
),
|
|
49
|
+
),
|
|
50
|
+
secondary: (
|
|
51
|
+
default: (
|
|
52
|
+
'background': rgb(var(--cds-color-brand-secondary)),
|
|
53
|
+
'border': rgb(var(--cds-color-brand-secondary-border)),
|
|
54
|
+
'content': rgb(var(--cds-color-brand-primary-content)),
|
|
55
|
+
),
|
|
56
|
+
hover: (
|
|
57
|
+
'background': rgb(var(--cds-color-brand-secondary-hover)),
|
|
58
|
+
'border': rgb(var(--cds-color-brand-secondary-hover)),
|
|
59
|
+
'content': rgb(var(--cds-color-brand-primary-content)),
|
|
60
|
+
),
|
|
61
|
+
active: (
|
|
62
|
+
'background': rgb(var(--cds-color-brand-secondary-active)),
|
|
63
|
+
'border': rgb(var(--cds-color-brand-secondary-active)),
|
|
64
|
+
'content': rgb(var(--cds-color-brand-primary-content)),
|
|
65
|
+
),
|
|
66
|
+
disabled: (
|
|
67
|
+
'background': rgb(var(--cds-color-fill-disable)),
|
|
68
|
+
'border': rgb(var(--cds-color-fill-disable)),
|
|
69
|
+
'content': rgb(var(--cds-color-content-disable)),
|
|
70
|
+
),
|
|
71
|
+
focus: (
|
|
72
|
+
'outline': rgb(var(--cds-color-line-focus-outline))
|
|
73
|
+
),
|
|
74
|
+
),
|
|
75
|
+
tertiary: (
|
|
76
|
+
default: (
|
|
77
|
+
'background': rgb(var(--cds-color-fill-secondary)),
|
|
78
|
+
'border': rgb(var(--cds-color-fill-secondary)),
|
|
79
|
+
'content': rgb(var(--cds-color-content-primary)),
|
|
80
|
+
),
|
|
81
|
+
hover: (
|
|
82
|
+
'background': rgb(var(--cds-color-fill-secondary-hover)),
|
|
83
|
+
'border': rgb(var(--cds-color-fill-secondary-hover)),
|
|
84
|
+
'content': rgb(var(--cds-color-content-primary)),
|
|
85
|
+
),
|
|
86
|
+
active: (
|
|
87
|
+
'background': rgb(var(--cds-color-fill-secondary-active)),
|
|
88
|
+
'border': rgb(var(--cds-color-fill-secondary-active)),
|
|
89
|
+
'content': rgb(var(--cds-color-content-primary)),
|
|
90
|
+
),
|
|
91
|
+
disabled: (
|
|
92
|
+
'background': rgb(var(--cds-color-fill-disable)),
|
|
93
|
+
'border': rgb(var(--cds-color-fill-disable)),
|
|
94
|
+
'content': rgb(var(--cds-color-content-disable)),
|
|
95
|
+
),
|
|
96
|
+
focus: (
|
|
97
|
+
'outline': rgb(var(--cds-color-line-focus-outline))
|
|
98
|
+
),
|
|
99
|
+
),
|
|
100
|
+
inverse: (
|
|
101
|
+
default: (
|
|
102
|
+
'background': rgb(var(--cds-color-fill-primary)),
|
|
103
|
+
'border': transparent,
|
|
104
|
+
'content': rgb(var(--cds-color-content-primary)),
|
|
105
|
+
),
|
|
106
|
+
hover: (
|
|
107
|
+
'background': rgb(var(--cds-color-fill-primary-hover)),
|
|
108
|
+
'border': transparent,
|
|
109
|
+
'content': rgb(var(--cds-color-content-primary)),
|
|
110
|
+
),
|
|
111
|
+
active: (
|
|
112
|
+
'background': rgb(var(--cds-color-fill-primary-active)),
|
|
113
|
+
'border': transparent,
|
|
114
|
+
'content': rgb(var(--cds-color-content-primary)),
|
|
115
|
+
),
|
|
116
|
+
disabled: (
|
|
117
|
+
'background': rgb(var(--cds-color-fill-disable)),
|
|
118
|
+
'border': rgb(var(--cds-color-fill-disable)),
|
|
119
|
+
'content': rgb(var(--cds-color-content-disable)),
|
|
120
|
+
),
|
|
121
|
+
focus: (
|
|
122
|
+
'outline': rgb(var(--cds-color-line-focus-outline))
|
|
123
|
+
),
|
|
124
|
+
)
|
|
125
|
+
) !default;
|
|
126
|
+
|
|
127
|
+
// ======================= Sizes =======================
|
|
128
|
+
$button-sizes: (
|
|
129
|
+
xs: (
|
|
130
|
+
'height': tools.to-rem(20px),
|
|
131
|
+
'padding': var(--cds-spacing-100),
|
|
132
|
+
'gap': var(--cds-spacing-100),
|
|
133
|
+
'font-size': '100',
|
|
134
|
+
'loader': tools.to-rem(12px)
|
|
135
|
+
),
|
|
136
|
+
sm: (
|
|
137
|
+
'height': tools.to-rem(24px),
|
|
138
|
+
'padding': var(--cds-spacing-200),
|
|
139
|
+
'gap': var(--cds-spacing-200),
|
|
140
|
+
'font-size': '200',
|
|
141
|
+
'loader': tools.to-rem(16px)
|
|
142
|
+
),
|
|
143
|
+
md: (
|
|
144
|
+
'height': tools.to-rem(32px),
|
|
145
|
+
'padding': var(--cds-spacing-400),
|
|
146
|
+
'gap': var(--cds-spacing-200),
|
|
147
|
+
'font-size': '200',
|
|
148
|
+
'loader': tools.to-rem(20px)
|
|
149
|
+
),
|
|
150
|
+
lg: (
|
|
151
|
+
'height': tools.to-rem(48px),
|
|
152
|
+
'padding': var(--cds-spacing-500),
|
|
153
|
+
'gap': var(--cds-spacing-300),
|
|
154
|
+
'font-size': '400',
|
|
155
|
+
'loader': tools.to-rem(24px)
|
|
156
|
+
),
|
|
157
|
+
xl: (
|
|
158
|
+
'height': tools.to-rem(64px),
|
|
159
|
+
'padding': var(--cds-spacing-600),
|
|
160
|
+
'gap': var(--cds-spacing-400),
|
|
161
|
+
'font-size': '600',
|
|
162
|
+
'loader': tools.to-rem(32px)
|
|
163
|
+
),
|
|
164
|
+
) !default;
|
|
165
|
+
|
|
166
|
+
// ======================= Stacked sizes =======================
|
|
167
|
+
// Высота удвоена относительно обычной кнопки, чтобы вместить иконку над текстом.
|
|
168
|
+
$button-stacked-sizes: (
|
|
169
|
+
xs: (
|
|
170
|
+
'height': tools.to-rem(40px),
|
|
171
|
+
'padding': var(--cds-spacing-100)
|
|
172
|
+
),
|
|
173
|
+
sm: (
|
|
174
|
+
'height': tools.to-rem(48px),
|
|
175
|
+
'padding': var(--cds-spacing-200)
|
|
176
|
+
),
|
|
177
|
+
md: (
|
|
178
|
+
'height': tools.to-rem(64px),
|
|
179
|
+
'padding': var(--cds-spacing-300)
|
|
180
|
+
),
|
|
181
|
+
lg: (
|
|
182
|
+
'height': tools.to-rem(96px),
|
|
183
|
+
'padding': var(--cds-spacing-400)
|
|
184
|
+
),
|
|
185
|
+
xl: (
|
|
186
|
+
'height': tools.to-rem(128px),
|
|
187
|
+
'padding': var(--cds-spacing-500)
|
|
188
|
+
),
|
|
189
|
+
) !default;
|
|
190
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# CdsButtonGroup — 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 button group joins several [CdsButton](../cds-button/api.md) into one block: the buttons sit flush against each other, only the outer corners stay rounded, and shared props are set once on the group. This is how you present sets of related actions — a toolbar over a record or zoom controls.
|
|
7
|
+
|
|
8
|
+
## CdsButtonGroup
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `appearance` | `"primary" \| "secondary" \| "tertiary" \| "inverse" \| undefined` | `'primary'` | no | Visual appearance of the component |
|
|
15
|
+
| `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
|
|
16
|
+
| `color` | `string \| undefined` | — | no | Component color |
|
|
17
|
+
| `direction` | `"horizontal" \| "vertical" \| undefined` | `'horizontal'` | no | Switches the component between horizontal and vertical layout. |
|
|
18
|
+
| `divided` | `boolean \| undefined` | — | no | Adds dividers between the buttons of the group. |
|
|
19
|
+
| `size` | `number \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| undefined` | `'md'` | no | Size of the component |
|
|
20
|
+
| `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
|
|
21
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
22
|
+
|
|
23
|
+
**Slots**
|
|
24
|
+
|
|
25
|
+
| Name | Type | Description |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| `default` | `any` | Buttons of the group. |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CdsButtonGroup — 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 button group joins several [CdsButton](../cds-button/api.md) into one block: the buttons sit flush against each other, only the outer corners stay rounded, and shared props are set once on the group. This is how you present sets of related actions — a toolbar over a record or zoom controls.
|
|
7
|
+
|
|
8
|
+
## Variations
|
|
9
|
+
|
|
10
|
+
The group passes the `appearance`, `size` and `color` props down to every button inside — you do not need to repeat them on each button. The `divided` prop adds dividers between the buttons, and `direction="vertical"` turns the group into a column.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsButton, CdsButtonGroup } from '@central-design-system/components';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div class="flex flex-wrap items-center justify-center gap-4">
|
|
21
|
+
<CdsButtonGroup appearance="tertiary" divided>
|
|
22
|
+
<CdsButton text="Копировать" prepend-icon="copy" />
|
|
23
|
+
<CdsButton text="Переместить" prepend-icon="insert" />
|
|
24
|
+
<CdsButton text="Удалить" prepend-icon="delete" />
|
|
25
|
+
</CdsButtonGroup>
|
|
26
|
+
|
|
27
|
+
<CdsButtonGroup appearance="secondary" direction="vertical" divided>
|
|
28
|
+
<CdsButton icon="plus" aria-label="Приблизить" />
|
|
29
|
+
<CdsButton icon="minus" aria-label="Отдалить" />
|
|
30
|
+
</CdsButtonGroup>
|
|
31
|
+
</div>
|
|
32
|
+
</template>
|
|
33
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# CdsButtonGroup — 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
|
+
## _CdsButtonGroup.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/settings';
|
|
11
|
+
@use '../../CdsButton/styles/CdsButton.variables' as button;
|
|
12
|
+
|
|
13
|
+
$button-group-border-radius: button.$button-border-radius !default;
|
|
14
|
+
$button-group-divider-border-width: var(--cds-border-100) !default;
|
|
15
|
+
$button-group-divider-border-style: settings.$border-style-root !default;
|
|
16
|
+
$button-group-divider-border-color: rgb(var(--cds-color-line-tertiary)) !default;
|
|
17
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CdsButtonToggle — 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 toggle group turns [CdsButton](../cds-button/api.md) into a switch: the pressed button stays selected, and the choice is available through `v-model`. Use it for modes and filters that are visible right away — the layout of a list, the period of a report, formatting options.
|
|
7
|
+
|
|
8
|
+
## CdsButtonToggle
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `activeColor` | `string \| undefined` | — | no | Color of the component in its active state |
|
|
15
|
+
| `appearance` | `"primary" \| "secondary" \| "tertiary" \| "inverse" \| undefined` | `'primary'` | no | Visual appearance of the component |
|
|
16
|
+
| `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
|
|
17
|
+
| `color` | `string \| undefined` | — | no | Component color |
|
|
18
|
+
| `direction` | `"horizontal" \| "vertical" \| undefined` | `'horizontal'` | no | Switches the component between horizontal and vertical layout. |
|
|
19
|
+
| `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
|
|
20
|
+
| `divided` | `boolean \| undefined` | — | no | Adds dividers between the buttons of the group. |
|
|
21
|
+
| `mandatory` | `boolean \| "force" \| undefined` | — | no | Requires at least one item to stay selected |
|
|
22
|
+
| `max` | `number \| undefined` | — | no | Maximum number of items that can be selected |
|
|
23
|
+
| `modelValue` | `any` | — | no | Value of the selected items of the group |
|
|
24
|
+
| `multiple` | `boolean \| undefined` | — | no | Allows selecting several items at once |
|
|
25
|
+
| `required` | `boolean \| "force" \| undefined` | — | no | Requires at least one item to stay selected |
|
|
26
|
+
| `selectedClass` | `string \| undefined` | — | no | CSS class applied in the selected state |
|
|
27
|
+
| `size` | `number \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| undefined` | `'md'` | no | Size of the component |
|
|
28
|
+
| `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
|
|
29
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
30
|
+
|
|
31
|
+
**Events**
|
|
32
|
+
|
|
33
|
+
| Name | Type | Description |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `update:modelValue` | `[value: unknown]` | Fires when the selected value changes. |
|
|
36
|
+
|
|
37
|
+
**Slots**
|
|
38
|
+
|
|
39
|
+
| Name | Type | Description |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| `default` | `CdsButtonToggleSlotProps` | Buttons of the toggle group. The slot props expose the state of the group (selection, navigation). |
|
|
42
|
+
|
|
43
|
+
**Exposed**
|
|
44
|
+
|
|
45
|
+
| Name | Type | Description |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| `isSelected` | `(id: string) => boolean` | Checks whether the button with this id is selected |
|
|
48
|
+
| `next` | `() => void` | Selects the next button |
|
|
49
|
+
| `prev` | `() => void` | Selects the previous button |
|
|
50
|
+
| `select` | `(id: string, value: boolean) => void` | Selects a button by its id |
|
|
51
|
+
| `selected` | `readonly string[]` | Ids of the selected buttons |
|