@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,10 @@
|
|
|
1
|
+
# CdsSelect — 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
|
+
| Show two or three options as radio buttons — every option is visible without a click. | A select hides a short list behind an extra click. |
|
|
9
|
+
| The label names the field and stays visible after the choice. | Without a label the selected value does not explain what the field is. |
|
|
10
|
+
| A select picks a value. Leave actions to buttons or to a menu. | Commands inside a select look like a field value: it is unclear what will happen after the choice. |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# CdsSelect — 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
|
+
## _CdsSelect.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/settings';
|
|
11
|
+
|
|
12
|
+
$select-content-border-radius: var(--cds-border-radius-200) !default;
|
|
13
|
+
$select-content-padding-inline: var(--cds-spacing-100) !default;
|
|
14
|
+
$select-mask-background: rgb(var(--cds-color-content-placeholder)) !default;
|
|
15
|
+
$select-selection-inline-gap: var(--cds-spacing-50) !default;
|
|
16
|
+
$select-transition: .2s settings.$standard-easing !default;
|
|
17
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# CdsSelectionControl — API
|
|
2
|
+
|
|
3
|
+
> Generated from meta.json by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> Examples: [examples.md](examples.md)
|
|
5
|
+
|
|
6
|
+
The base of the selection controls: a native `input` with state icons, a label and a description. The component holds the value, can work with its own `true`/`false` values and with multiple selection, and picks up the settings of [CdsSelectionControlGroup](../cds-selection-control-group/api.md). The checkboxes, radio buttons and toggles of the design system are built on it.
|
|
7
|
+
|
|
8
|
+
## CdsSelectionControl
|
|
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
|
+
| `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
|
|
16
|
+
| `bgColor` | `string \| undefined` | — | no | Background color of the component |
|
|
17
|
+
| `color` | `string \| undefined` | — | no | Component color |
|
|
18
|
+
| `defaultsTarget` | `string \| undefined` | — | no | Name of the child component the group prop values are passed to as defaults |
|
|
19
|
+
| `description` | `string \| undefined` | — | no | Description of the component, shown under the label |
|
|
20
|
+
| `direction` | `"horizontal" \| "vertical" \| undefined` | `'horizontal'` | no | Switches the component between horizontal and vertical layout. |
|
|
21
|
+
| `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
|
|
22
|
+
| `error` | `boolean \| undefined` | — | no | Puts the component into the visual error state |
|
|
23
|
+
| `falseIcon` | `IconValue \| undefined` | — | no | Icon of the unselected state |
|
|
24
|
+
| `falseValue` | `any` | — | no | Value for the false state. |
|
|
25
|
+
| `id` | `string \| undefined` | — | no | Unique identifier of the component |
|
|
26
|
+
| `inline` | `boolean \| undefined` | — | no | Renders the control as an inline element — the container does not stretch to the full width |
|
|
27
|
+
| `label` | `string \| undefined` | — | no | Label text of the component |
|
|
28
|
+
| `modelValue` | `any` | — | no | Value of the component (v-model). In a group it is the value of the selected control, with `multiple` — an array of the selected values |
|
|
29
|
+
| `multiple` | `boolean \| null \| undefined` | `null` | no | Allows selecting several values — the model becomes an array. Turns on automatically when an array is passed to `modelValue` |
|
|
30
|
+
| `name` | `string \| undefined` | — | no | The `name` attribute of the native input element. In a group one name joins all the nested controls |
|
|
31
|
+
| `readonly` | `boolean \| null \| undefined` | `null` | no | Read-only state |
|
|
32
|
+
| `textColor` | `string \| undefined` | — | no | Text color of the component |
|
|
33
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
34
|
+
| `trueIcon` | `IconValue \| undefined` | — | no | Icon of the selected state |
|
|
35
|
+
| `trueValue` | `any` | — | no | Value for the true state. |
|
|
36
|
+
| `type` | `string \| undefined` | — | no | Type of the native input element — `radio` or `checkbox`, for example |
|
|
37
|
+
| `value` | `any` | — | no | Value used when the component is selected inside a group. When it is not set, a unique identifier is used. |
|
|
38
|
+
| `valueComparator` | `ValueComparator \| undefined` | `true` | no | Function comparing the model value with the `value` of the control. Deep comparison by default |
|
|
39
|
+
|
|
40
|
+
**Events**
|
|
41
|
+
|
|
42
|
+
| Name | Type | Description |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `update:modelValue` | `[value: any]` | Fires when the model of the component changes. |
|
|
45
|
+
|
|
46
|
+
**Slots**
|
|
47
|
+
|
|
48
|
+
| Name | Type | Description |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| `default` | `{ backgroundColorClasses: Ref<string[], string[]>; backgroundColorStyles: Ref<CSSProperties, CSSProperties>; }` | Default slot |
|
|
51
|
+
| `description` | `{ description: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsDescription component |
|
|
52
|
+
| `input` | `SelectionControlSlot` | Slot for the default input element. |
|
|
53
|
+
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
54
|
+
|
|
55
|
+
**Exposed**
|
|
56
|
+
|
|
57
|
+
| Name | Type | Description |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| `input` | `HTMLInputElement \| undefined` | Ref to the native `input` element — a checkbox or a radio button. |
|
|
60
|
+
| `isFocused` | `boolean` | Whether the control is focused. |
|
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
# CdsSelectionControl — 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
|
+
The base of the selection controls: a native `input` with state icons, a label and a description. The component holds the value, can work with its own `true`/`false` values and with multiple selection, and picks up the settings of [CdsSelectionControlGroup](../cds-selection-control-group/api.md). The checkboxes, radio buttons and toggles of the design system are built on it.
|
|
7
|
+
|
|
8
|
+
## Type and icons
|
|
9
|
+
|
|
10
|
+
The `type` prop sets the type of the native `input` — the behavior and the accessibility depend on it: a `checkbox` is turned on and off, a `radio` is only selected. The state icons come from `true-icon` and `false-icon`; without them the control has no visible part.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
17
|
+
import { ref } from 'vue';
|
|
18
|
+
|
|
19
|
+
const checkbox = ref(true);
|
|
20
|
+
const radio = ref(true);
|
|
21
|
+
const star = ref(true);
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<div class="flex flex-wrap items-center justify-center gap-4">
|
|
26
|
+
<CdsSelectionControl
|
|
27
|
+
v-model="checkbox"
|
|
28
|
+
type="checkbox"
|
|
29
|
+
true-icon="checkbox-on"
|
|
30
|
+
false-icon="checkbox-off"
|
|
31
|
+
label="Чекбокс"
|
|
32
|
+
class="gap-x-2"
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
<CdsSelectionControl
|
|
36
|
+
v-model="radio"
|
|
37
|
+
type="radio"
|
|
38
|
+
true-icon="radio-on"
|
|
39
|
+
false-icon="radio-off"
|
|
40
|
+
label="Радиокнопка"
|
|
41
|
+
class="gap-x-2"
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
<CdsSelectionControl
|
|
45
|
+
v-model="star"
|
|
46
|
+
type="checkbox"
|
|
47
|
+
true-icon="star-fill"
|
|
48
|
+
false-icon="star"
|
|
49
|
+
label="Своя пара иконок"
|
|
50
|
+
class="gap-x-2"
|
|
51
|
+
/>
|
|
52
|
+
</div>
|
|
53
|
+
</template>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Label and description
|
|
57
|
+
|
|
58
|
+
The `label` prop names the option, `description` explains it. Name the option briefly in the label, and move the details — the price, the deadlines, the limitations — into the description.
|
|
59
|
+
|
|
60
|
+
**Example (SFC):**
|
|
61
|
+
|
|
62
|
+
```vue
|
|
63
|
+
<script setup lang="ts">
|
|
64
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
65
|
+
import { ref } from 'vue';
|
|
66
|
+
|
|
67
|
+
const digest = ref(true);
|
|
68
|
+
const report = ref(false);
|
|
69
|
+
</script>
|
|
70
|
+
|
|
71
|
+
<template>
|
|
72
|
+
<div class="m-auto flex w-[350px] flex-col gap-3">
|
|
73
|
+
<CdsSelectionControl
|
|
74
|
+
v-model="digest"
|
|
75
|
+
type="checkbox"
|
|
76
|
+
true-icon="checkbox-on"
|
|
77
|
+
false-icon="checkbox-off"
|
|
78
|
+
label="Еженедельный дайджест"
|
|
79
|
+
description="Письмо с новыми закупками по понедельникам"
|
|
80
|
+
class="gap-x-2"
|
|
81
|
+
/>
|
|
82
|
+
|
|
83
|
+
<CdsSelectionControl
|
|
84
|
+
v-model="report"
|
|
85
|
+
type="checkbox"
|
|
86
|
+
true-icon="checkbox-on"
|
|
87
|
+
false-icon="checkbox-off"
|
|
88
|
+
label="Отчёт по заявкам"
|
|
89
|
+
class="gap-x-2"
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
92
|
+
</template>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Values
|
|
96
|
+
|
|
97
|
+
By default the model holds `true` or `false`. The `true-value` and `false-value` props replace them with your own values — handy when what goes to the server is not a boolean.
|
|
98
|
+
|
|
99
|
+
**Example (SFC):**
|
|
100
|
+
|
|
101
|
+
```vue
|
|
102
|
+
<script setup lang="ts">
|
|
103
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
104
|
+
import { ref } from 'vue';
|
|
105
|
+
|
|
106
|
+
const delivery = ref('pickup');
|
|
107
|
+
</script>
|
|
108
|
+
|
|
109
|
+
<template>
|
|
110
|
+
<div class="m-auto flex w-[350px] flex-col gap-2">
|
|
111
|
+
<CdsSelectionControl
|
|
112
|
+
v-model="delivery"
|
|
113
|
+
type="checkbox"
|
|
114
|
+
true-value="courier"
|
|
115
|
+
false-value="pickup"
|
|
116
|
+
true-icon="checkbox-on"
|
|
117
|
+
false-icon="checkbox-off"
|
|
118
|
+
label="Доставка курьером"
|
|
119
|
+
class="gap-x-2"
|
|
120
|
+
/>
|
|
121
|
+
|
|
122
|
+
<span class="text-content-secondary">Значение модели: {{ delivery }}</span>
|
|
123
|
+
</div>
|
|
124
|
+
</template>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Multiple selection
|
|
128
|
+
|
|
129
|
+
If the model is an array, the controls work in `multiple` mode: every control adds its `value` to it and removes it when unchecked. The mode is turned on automatically — the `multiple` prop is needed only to set it by hand. Comparing the values is the job of `value-comparator`, a deep comparison by default.
|
|
130
|
+
|
|
131
|
+
**Example (SFC):**
|
|
132
|
+
|
|
133
|
+
```vue
|
|
134
|
+
<script setup lang="ts">
|
|
135
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
136
|
+
import { ref } from 'vue';
|
|
137
|
+
|
|
138
|
+
const channels = [
|
|
139
|
+
{ value: 'email', label: 'Почта' },
|
|
140
|
+
{ value: 'sms', label: 'SMS' },
|
|
141
|
+
{ value: 'push', label: 'Push-уведомления' }
|
|
142
|
+
];
|
|
143
|
+
|
|
144
|
+
const selected = ref(['sms']);
|
|
145
|
+
</script>
|
|
146
|
+
|
|
147
|
+
<template>
|
|
148
|
+
<div class="m-auto flex w-[350px] flex-col gap-2">
|
|
149
|
+
<CdsSelectionControl
|
|
150
|
+
v-for="channel of channels"
|
|
151
|
+
:key="channel.value"
|
|
152
|
+
v-model="selected"
|
|
153
|
+
type="checkbox"
|
|
154
|
+
:value="channel.value"
|
|
155
|
+
true-icon="checkbox-on"
|
|
156
|
+
false-icon="checkbox-off"
|
|
157
|
+
:label="channel.label"
|
|
158
|
+
class="gap-x-2"
|
|
159
|
+
/>
|
|
160
|
+
|
|
161
|
+
<span class="text-content-secondary">Значение модели: {{ selected }}</span>
|
|
162
|
+
</div>
|
|
163
|
+
</template>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## States
|
|
167
|
+
|
|
168
|
+
`disabled` blocks the control and dims its color, `readonly` forbids changing the value while keeping the look. `error` puts the `--error` modifier on the root — the error color is drawn for it by the styles of the particular control, the base component has none.
|
|
169
|
+
|
|
170
|
+
**Example (SFC):**
|
|
171
|
+
|
|
172
|
+
```vue
|
|
173
|
+
<script setup lang="ts">
|
|
174
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
175
|
+
import { ref } from 'vue';
|
|
176
|
+
|
|
177
|
+
const readonly = ref(true);
|
|
178
|
+
const error = ref(true);
|
|
179
|
+
</script>
|
|
180
|
+
|
|
181
|
+
<template>
|
|
182
|
+
<div class="m-auto flex w-[350px] flex-col gap-2">
|
|
183
|
+
<CdsSelectionControl
|
|
184
|
+
:model-value="true"
|
|
185
|
+
color="green"
|
|
186
|
+
type="checkbox"
|
|
187
|
+
true-icon="checkbox-on"
|
|
188
|
+
false-icon="checkbox-off"
|
|
189
|
+
label="Обычное состояние"
|
|
190
|
+
class="gap-x-2"
|
|
191
|
+
/>
|
|
192
|
+
|
|
193
|
+
<CdsSelectionControl
|
|
194
|
+
:model-value="true"
|
|
195
|
+
disabled
|
|
196
|
+
color="green"
|
|
197
|
+
type="checkbox"
|
|
198
|
+
true-icon="checkbox-on"
|
|
199
|
+
false-icon="checkbox-off"
|
|
200
|
+
label="Заблокирован (disabled)"
|
|
201
|
+
class="gap-x-2"
|
|
202
|
+
/>
|
|
203
|
+
|
|
204
|
+
<CdsSelectionControl
|
|
205
|
+
v-model="readonly"
|
|
206
|
+
readonly
|
|
207
|
+
color="green"
|
|
208
|
+
type="checkbox"
|
|
209
|
+
true-icon="checkbox-on"
|
|
210
|
+
false-icon="checkbox-off"
|
|
211
|
+
label="Только для чтения (readonly)"
|
|
212
|
+
class="gap-x-2"
|
|
213
|
+
/>
|
|
214
|
+
|
|
215
|
+
<CdsSelectionControl
|
|
216
|
+
v-model="error"
|
|
217
|
+
error
|
|
218
|
+
color="green"
|
|
219
|
+
type="checkbox"
|
|
220
|
+
true-icon="checkbox-on"
|
|
221
|
+
false-icon="checkbox-off"
|
|
222
|
+
label="Ошибка (error)"
|
|
223
|
+
class="gap-x-2"
|
|
224
|
+
/>
|
|
225
|
+
</div>
|
|
226
|
+
</template>
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Colors
|
|
230
|
+
|
|
231
|
+
`color` sets the color of the selected control, `base-color` the color of an unselected one. The values are the colors of the design system palette.
|
|
232
|
+
|
|
233
|
+
**Example (SFC):**
|
|
234
|
+
|
|
235
|
+
```vue
|
|
236
|
+
<script setup lang="ts">
|
|
237
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
238
|
+
import { ref } from 'vue';
|
|
239
|
+
|
|
240
|
+
const selected = ref(true);
|
|
241
|
+
const unselected = ref(false);
|
|
242
|
+
</script>
|
|
243
|
+
|
|
244
|
+
<template>
|
|
245
|
+
<div class="m-auto flex w-[350px] flex-col gap-2">
|
|
246
|
+
<CdsSelectionControl
|
|
247
|
+
v-model="selected"
|
|
248
|
+
color="green"
|
|
249
|
+
base-color="purple"
|
|
250
|
+
type="checkbox"
|
|
251
|
+
true-icon="checkbox-on"
|
|
252
|
+
false-icon="checkbox-off"
|
|
253
|
+
label="Выбран: цвет из color"
|
|
254
|
+
class="gap-x-2"
|
|
255
|
+
/>
|
|
256
|
+
|
|
257
|
+
<CdsSelectionControl
|
|
258
|
+
v-model="unselected"
|
|
259
|
+
color="green"
|
|
260
|
+
base-color="purple"
|
|
261
|
+
type="checkbox"
|
|
262
|
+
true-icon="checkbox-on"
|
|
263
|
+
false-icon="checkbox-off"
|
|
264
|
+
label="Не выбран: цвет из base-color"
|
|
265
|
+
class="gap-x-2"
|
|
266
|
+
/>
|
|
267
|
+
</div>
|
|
268
|
+
</template>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Layout
|
|
272
|
+
|
|
273
|
+
Inside a flex container the control stretches together with its neighbors. The `inline` prop leaves it the width of its content — that way the controls can stand in a row without extra gaps.
|
|
274
|
+
|
|
275
|
+
**Example (SFC):**
|
|
276
|
+
|
|
277
|
+
```vue
|
|
278
|
+
<script setup lang="ts">
|
|
279
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
280
|
+
import { ref } from 'vue';
|
|
281
|
+
|
|
282
|
+
const stretched = ref(['first']);
|
|
283
|
+
const inline = ref(['first']);
|
|
284
|
+
</script>
|
|
285
|
+
|
|
286
|
+
<template>
|
|
287
|
+
<div class="m-auto flex w-[350px] flex-col gap-4">
|
|
288
|
+
<div class="flex flex-col gap-1">
|
|
289
|
+
<span class="text-content-secondary">По умолчанию контролы делят ширину поровну</span>
|
|
290
|
+
|
|
291
|
+
<div class="flex">
|
|
292
|
+
<CdsSelectionControl
|
|
293
|
+
v-model="stretched"
|
|
294
|
+
value="first"
|
|
295
|
+
type="checkbox"
|
|
296
|
+
true-icon="checkbox-on"
|
|
297
|
+
false-icon="checkbox-off"
|
|
298
|
+
label="Да"
|
|
299
|
+
class="gap-x-2"
|
|
300
|
+
/>
|
|
301
|
+
|
|
302
|
+
<CdsSelectionControl
|
|
303
|
+
v-model="stretched"
|
|
304
|
+
value="second"
|
|
305
|
+
type="checkbox"
|
|
306
|
+
true-icon="checkbox-on"
|
|
307
|
+
false-icon="checkbox-off"
|
|
308
|
+
label="Нет"
|
|
309
|
+
class="gap-x-2"
|
|
310
|
+
/>
|
|
311
|
+
</div>
|
|
312
|
+
</div>
|
|
313
|
+
|
|
314
|
+
<div class="flex flex-col gap-1">
|
|
315
|
+
<span class="text-content-secondary">С inline контрол занимает ширину своего содержимого</span>
|
|
316
|
+
|
|
317
|
+
<div class="flex gap-3">
|
|
318
|
+
<CdsSelectionControl
|
|
319
|
+
v-model="inline"
|
|
320
|
+
inline
|
|
321
|
+
value="first"
|
|
322
|
+
type="checkbox"
|
|
323
|
+
true-icon="checkbox-on"
|
|
324
|
+
false-icon="checkbox-off"
|
|
325
|
+
label="Да"
|
|
326
|
+
class="gap-x-2"
|
|
327
|
+
/>
|
|
328
|
+
|
|
329
|
+
<CdsSelectionControl
|
|
330
|
+
v-model="inline"
|
|
331
|
+
inline
|
|
332
|
+
value="second"
|
|
333
|
+
type="checkbox"
|
|
334
|
+
true-icon="checkbox-on"
|
|
335
|
+
false-icon="checkbox-off"
|
|
336
|
+
label="Нет"
|
|
337
|
+
class="gap-x-2"
|
|
338
|
+
/>
|
|
339
|
+
</div>
|
|
340
|
+
</div>
|
|
341
|
+
</div>
|
|
342
|
+
</template>
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Slots
|
|
346
|
+
|
|
347
|
+
Slots replace the content coming from the props and the markup of the control itself.
|
|
348
|
+
|
|
349
|
+
**Example (SFC):**
|
|
350
|
+
|
|
351
|
+
```vue
|
|
352
|
+
<script setup lang="ts">
|
|
353
|
+
import { CdsLink, CdsSelectionControl, CdsTag } from '@central-design-system/components';
|
|
354
|
+
import { ref } from 'vue';
|
|
355
|
+
|
|
356
|
+
const beta = ref(true);
|
|
357
|
+
</script>
|
|
358
|
+
|
|
359
|
+
<template>
|
|
360
|
+
<div class="m-auto flex w-[350px] flex-col gap-2">
|
|
361
|
+
<CdsSelectionControl
|
|
362
|
+
v-model="beta"
|
|
363
|
+
type="checkbox"
|
|
364
|
+
true-icon="checkbox-on"
|
|
365
|
+
false-icon="checkbox-off"
|
|
366
|
+
class="gap-x-2"
|
|
367
|
+
>
|
|
368
|
+
<template #label>
|
|
369
|
+
<span class="flex items-center gap-1">
|
|
370
|
+
Ранний доступ
|
|
371
|
+
<CdsTag text="beta" size="sm" />
|
|
372
|
+
</span>
|
|
373
|
+
</template>
|
|
374
|
+
|
|
375
|
+
<template #description> Новые возможности до общего релиза — <CdsLink href="#" text="что входит" /> </template>
|
|
376
|
+
</CdsSelectionControl>
|
|
377
|
+
</div>
|
|
378
|
+
</template>
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
## A selection tile
|
|
382
|
+
|
|
383
|
+
The `input` slot replaces the icon with your own markup, and the native `input` from `inputNode` stays on top of it and catches the clicks and the focus. The size of the clickable area is set by the `--cds-selection-control-width` and `--cds-selection-control-height` variables, and the state arrives in the slot through `model`.
|
|
384
|
+
|
|
385
|
+
**Example (SFC):**
|
|
386
|
+
|
|
387
|
+
```vue
|
|
388
|
+
<script setup lang="ts">
|
|
389
|
+
import { CdsSelectionControl } from '@central-design-system/components';
|
|
390
|
+
import { ref } from 'vue';
|
|
391
|
+
|
|
392
|
+
const plans = [
|
|
393
|
+
{ value: 'base', title: 'Базовый', price: '0 ₽ в месяц' },
|
|
394
|
+
{ value: 'pro', title: 'Профи', price: '2 900 ₽ в месяц' }
|
|
395
|
+
];
|
|
396
|
+
|
|
397
|
+
const plan = ref('base');
|
|
398
|
+
</script>
|
|
399
|
+
|
|
400
|
+
<template>
|
|
401
|
+
<div class="flex flex-wrap justify-center gap-2">
|
|
402
|
+
<CdsSelectionControl
|
|
403
|
+
v-for="item of plans"
|
|
404
|
+
:key="item.value"
|
|
405
|
+
v-model="plan"
|
|
406
|
+
inline
|
|
407
|
+
type="radio"
|
|
408
|
+
:value="item.value"
|
|
409
|
+
:aria-label="item.title"
|
|
410
|
+
:style="{ '--cds-selection-control-width': '170px', '--cds-selection-control-height': '72px' }"
|
|
411
|
+
>
|
|
412
|
+
<template #input="{ inputNode, model }">
|
|
413
|
+
<component :is="inputNode" />
|
|
414
|
+
|
|
415
|
+
<div
|
|
416
|
+
class="flex h-full w-full flex-col justify-center rounded-200 border px-3"
|
|
417
|
+
:class="model.value ? 'border-line-selected ring-1 ring-line-selected' : 'border-line-primary'"
|
|
418
|
+
>
|
|
419
|
+
<span>{{ item.title }}</span>
|
|
420
|
+
<span class="text-content-secondary">{{ item.price }}</span>
|
|
421
|
+
</div>
|
|
422
|
+
</template>
|
|
423
|
+
</CdsSelectionControl>
|
|
424
|
+
</div>
|
|
425
|
+
</template>
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
## Consent before submitting
|
|
429
|
+
|
|
430
|
+
The control does not show messages — that is the job of the [CdsInput](../cds-input/api.md) wrapper. Without it, render the error text next to the control and pass `error` to it: the modifier will come in handy for your styles.
|
|
431
|
+
|
|
432
|
+
**Example (SFC):**
|
|
433
|
+
|
|
434
|
+
```vue
|
|
435
|
+
<script setup lang="ts">
|
|
436
|
+
import { CdsButton, CdsLink, CdsSelectionControl } from '@central-design-system/components';
|
|
437
|
+
import { ref } from 'vue';
|
|
438
|
+
|
|
439
|
+
const agreed = ref(false);
|
|
440
|
+
const touched = ref(false);
|
|
441
|
+
const sent = ref(false);
|
|
442
|
+
|
|
443
|
+
function submit() {
|
|
444
|
+
touched.value = true;
|
|
445
|
+
sent.value = agreed.value;
|
|
446
|
+
}
|
|
447
|
+
</script>
|
|
448
|
+
|
|
449
|
+
<template>
|
|
450
|
+
<div class="m-auto flex w-[350px] flex-col gap-2">
|
|
451
|
+
<CdsSelectionControl
|
|
452
|
+
v-model="agreed"
|
|
453
|
+
type="checkbox"
|
|
454
|
+
true-icon="checkbox-on"
|
|
455
|
+
false-icon="checkbox-off"
|
|
456
|
+
:error="touched && !agreed"
|
|
457
|
+
class="gap-x-2"
|
|
458
|
+
>
|
|
459
|
+
<template #label> Согласен с <CdsLink href="#" text="условиями обработки данных" /> </template>
|
|
460
|
+
</CdsSelectionControl>
|
|
461
|
+
|
|
462
|
+
<span v-if="touched && !agreed" class="text-status-danger-content">Без согласия заявку не отправить</span>
|
|
463
|
+
<span v-else-if="sent" class="text-status-success-content">Заявка отправлена</span>
|
|
464
|
+
|
|
465
|
+
<CdsButton text="Отправить заявку" class="self-start" @click="submit" />
|
|
466
|
+
</div>
|
|
467
|
+
</template>
|
|
468
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# CdsSelectionControlGroup — API
|
|
2
|
+
|
|
3
|
+
> Generated from meta.json by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> Examples: [examples.md](examples.md)
|
|
5
|
+
|
|
6
|
+
A container for a set of selection controls: it holds the shared value, hands the nested [CdsSelectionControl](../cds-selection-control/api.md) the type, the icons, the colors and the states, and ties them together with a single `name` attribute. The radio button group of the design system is built on it.
|
|
7
|
+
|
|
8
|
+
## CdsSelectionControlGroup
|
|
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
|
+
| `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
|
|
16
|
+
| `bgColor` | `string \| undefined` | — | no | Background color of the component |
|
|
17
|
+
| `color` | `string \| undefined` | — | no | Component color |
|
|
18
|
+
| `defaultsTarget` | `string \| undefined` | — | no | Name of the child component the group prop values are passed to as defaults |
|
|
19
|
+
| `direction` | `"horizontal" \| "vertical" \| undefined` | `'horizontal'` | no | Switches the component between horizontal and vertical layout. |
|
|
20
|
+
| `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
|
|
21
|
+
| `error` | `boolean \| undefined` | — | no | Puts the component into the visual error state |
|
|
22
|
+
| `falseIcon` | `IconValue \| undefined` | — | no | Icon of the unselected state |
|
|
23
|
+
| `id` | `string \| undefined` | — | no | Unique identifier of the component |
|
|
24
|
+
| `inline` | `boolean \| undefined` | — | no | Renders the control as an inline element — the container does not stretch to the full width |
|
|
25
|
+
| `modelValue` | `any` | — | no | Value of the component (v-model). In a group it is the value of the selected control, with `multiple` — an array of the selected values |
|
|
26
|
+
| `multiple` | `boolean \| null \| undefined` | `null` | no | Allows selecting several values — the model becomes an array. Turns on automatically when an array is passed to `modelValue` |
|
|
27
|
+
| `name` | `string \| undefined` | — | no | The `name` attribute of the native input element. In a group one name joins all the nested controls |
|
|
28
|
+
| `readonly` | `boolean \| null \| undefined` | `null` | no | Read-only state |
|
|
29
|
+
| `textColor` | `string \| undefined` | — | no | Text color of the component |
|
|
30
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
31
|
+
| `trueIcon` | `IconValue \| undefined` | — | no | Icon of the selected state |
|
|
32
|
+
| `type` | `string \| undefined` | — | no | Type of the native input element — `radio` or `checkbox`, for example |
|
|
33
|
+
| `valueComparator` | `ValueComparator \| undefined` | `true` | no | Function comparing the model value with the `value` of the control. Deep comparison by default |
|
|
34
|
+
|
|
35
|
+
**Events**
|
|
36
|
+
|
|
37
|
+
| Name | Type | Description |
|
|
38
|
+
| --- | --- | --- |
|
|
39
|
+
| `update:modelValue` | `[value: any]` | Fires when the selection inside the group changes. Passes the new value of the group |
|
|
40
|
+
|
|
41
|
+
**Slots**
|
|
42
|
+
|
|
43
|
+
| Name | Type | Description |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| `default` | `any` | The controls of the group — checkboxes or radio buttons |
|