@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,97 @@
|
|
|
1
|
+
# CdsToggle — 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 is an on/off switch for a setting that applies immediately, without a "Save" button: notifications, auto-renewal, profile visibility. It is built on [CdsInput](../cds-input/api.md): it can do a label and a description, messages and errors, loading and the indeterminate state.
|
|
7
|
+
|
|
8
|
+
## CdsToggle
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `appendIcon` | `IconValue \| undefined` | — | no | Icon in the append slot, after the content |
|
|
15
|
+
| `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
|
|
16
|
+
| `centerAffix` | `boolean \| undefined` | `true` | no | Vertically center the appendInner, prependInner, clearIcon and label elements. |
|
|
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
|
+
| `errorMessages` | `string \| readonly string[] \| null \| undefined` | `[]` | no | Puts the component into the error state and passes custom error messages. They are merged with any checks defined in the `rules` prop. This field does not trigger validation. |
|
|
24
|
+
| `falseIcon` | `IconValue \| undefined` | — | no | Icon of the unselected state |
|
|
25
|
+
| `falseValue` | `any` | — | no | Value for the false state. |
|
|
26
|
+
| `focused` | `boolean \| undefined` | — | no | Controls the focus state of the component. When `true`, the component is considered focused and may apply the corresponding styles or behavior. |
|
|
27
|
+
| `hideDetails` | `boolean \| "auto" \| undefined` | — | no | Hides the details block (messages and hints). With the 'auto' value the block is hidden when there are no messages |
|
|
28
|
+
| `hideMessages` | `boolean \| undefined` | — | no | Hide the messages under the input |
|
|
29
|
+
| `hint` | `string \| undefined` | — | no | Hint text shown under the input |
|
|
30
|
+
| `iconColor` | `string \| boolean \| undefined` | — | no | Icon color. Accepts a boolean or a color string |
|
|
31
|
+
| `id` | `string \| undefined` | — | no | Unique identifier of the component |
|
|
32
|
+
| `indeterminate` | `boolean \| undefined` | — | no | Indeterminate state of the toggle. |
|
|
33
|
+
| `inline` | `boolean \| undefined` | — | no | Renders the control as an inline element — the container does not stretch to the full width |
|
|
34
|
+
| `label` | `string \| undefined` | — | no | Label text of the component |
|
|
35
|
+
| `loading` | `string \| boolean \| undefined` | `false` | no | Loading indicator. Accepts a boolean or a string with the color of the loader. |
|
|
36
|
+
| `maxErrors` | `string \| number \| undefined` | `1` | no | Maximum number of validation errors shown |
|
|
37
|
+
| `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
|
|
38
|
+
| `messages` | `string \| readonly string[] \| undefined` | `[]` | no | Messages shown under the input |
|
|
39
|
+
| `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
|
|
40
|
+
| `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 |
|
|
41
|
+
| `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` |
|
|
42
|
+
| `name` | `string \| undefined` | — | no | The `name` attribute of the native input element. In a group one name joins all the nested controls |
|
|
43
|
+
| `persistentHint` | `boolean \| undefined` | — | no | Always show the hint, not only on focus |
|
|
44
|
+
| `prependIcon` | `IconValue \| undefined` | — | no | Icon in the prepend slot, before the content |
|
|
45
|
+
| `readonly` | `boolean \| null \| undefined` | `null` | no | Read-only state |
|
|
46
|
+
| `rules` | `readonly ValidationRule[] \| undefined` | `[]` | no | Accepts an array of items of different types: functions, booleans and strings. Functions take the input value as an argument and must return either true / false, or a string with an error message. The input goes into the error state if a function returns false (or any value in the array is false) or is a string. |
|
|
47
|
+
| `size` | `number \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| undefined` | `'md'` | no | Size of the component |
|
|
48
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
49
|
+
| `thumbColor` | `string \| undefined` | — | no | Color of the thumb. |
|
|
50
|
+
| `trueIcon` | `IconValue \| undefined` | — | no | Icon of the selected state |
|
|
51
|
+
| `trueValue` | `any` | — | no | Value for the true state. |
|
|
52
|
+
| `type` | `string \| undefined` | — | no | Type of the native input element — `radio` or `checkbox`, for example |
|
|
53
|
+
| `validateOn` | `ValidateOn \| undefined` | — | no | Changes the type of the event that triggers validation |
|
|
54
|
+
| `validationValue` | `any` | — | no | Value used when applying the validation rules |
|
|
55
|
+
| `value` | `any` | — | no | Value used when the component is selected inside a group. When it is not set, a unique identifier is used. |
|
|
56
|
+
| `valueComparator` | `ValueComparator \| undefined` | `true` | no | Function comparing the model value with the `value` of the control. Deep comparison by default |
|
|
57
|
+
| `width` | `string \| number \| undefined` | — | no | Component width |
|
|
58
|
+
|
|
59
|
+
**Events**
|
|
60
|
+
|
|
61
|
+
| Name | Type | Description |
|
|
62
|
+
| --- | --- | --- |
|
|
63
|
+
| `update:focused` | `[focused: boolean]` | Fires when the focus state of the component changes. |
|
|
64
|
+
| `update:indeterminate` | `[value: boolean]` | Fires when the indeterminate state changes. |
|
|
65
|
+
| `update:modelValue` | `[value: any]` | Fires when the model of the component changes. |
|
|
66
|
+
|
|
67
|
+
**Slots**
|
|
68
|
+
|
|
69
|
+
| Name | Type | Description |
|
|
70
|
+
| --- | --- | --- |
|
|
71
|
+
| `append` | `CdsInputSlot` | Adds an element after the input |
|
|
72
|
+
| `default` | `{ backgroundColorClasses: Ref<string[], string[]>; backgroundColorStyles: Ref<CSSProperties, CSSProperties>; }` | Default slot |
|
|
73
|
+
| `description` | `{ description: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsDescription component |
|
|
74
|
+
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
75
|
+
| `input` | `SelectionControlSlot` | Slot for the default input element. |
|
|
76
|
+
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
77
|
+
| `loader` | `LoaderSlotProps` | Slot for a custom loading indicator. |
|
|
78
|
+
| `message` | `CdsMessagesSlots` | Slot for customizing the content of a message |
|
|
79
|
+
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
80
|
+
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
81
|
+
| `thumb` | `{ icon: IconValue \| undefined; } & CdsToggleSlot` | Slot for the content of the thumb. |
|
|
82
|
+
| `track-false` | `CdsToggleSlot` | Slot for the content of the off part of the track. |
|
|
83
|
+
| `track-true` | `CdsToggleSlot` | Slot for the content of the on part of the track. |
|
|
84
|
+
|
|
85
|
+
**Exposed**
|
|
86
|
+
|
|
87
|
+
| Name | Type | Description |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| `isDirty` | `boolean` | Whether the input is dirty |
|
|
90
|
+
| `isDisabled` | `boolean` | Whether the input is disabled |
|
|
91
|
+
| `isPure` | `boolean` | Whether the input is pure |
|
|
92
|
+
| `isReadonly` | `boolean` | Whether the input is read-only |
|
|
93
|
+
| `isValid` | `boolean \| null` | Whether the input is valid |
|
|
94
|
+
| `isValidating` | `boolean` | Whether the input is being validated |
|
|
95
|
+
| `reset` | `() => Promise<void>` | Resets the input to its initial state |
|
|
96
|
+
| `resetValidation` | `() => Promise<void>` | Resets the validation of the input |
|
|
97
|
+
| `validate` | `(silent?: boolean) => Promise<string[]>` | Validates the input |
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
# CdsToggle — 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 toggle is an on/off switch for a setting that applies immediately, without a "Save" button: notifications, auto-renewal, profile visibility. It is built on [CdsInput](../cds-input/api.md): it can do a label and a description, messages and errors, loading and the indeterminate state.
|
|
7
|
+
|
|
8
|
+
## Label and description
|
|
9
|
+
|
|
10
|
+
`label` names the setting, `description` explains what turning it on leads to. Phrase the label so that it is clear what happens in the on position.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
17
|
+
import { ref } from 'vue';
|
|
18
|
+
|
|
19
|
+
const notifications = ref(true);
|
|
20
|
+
const autoRenew = ref(false);
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<div class="flex flex-col gap-3 w-fit m-auto">
|
|
25
|
+
<CdsToggle v-model="notifications" label="Уведомления о новых закупках" hide-details />
|
|
26
|
+
<CdsToggle
|
|
27
|
+
v-model="autoRenew"
|
|
28
|
+
label="Автопродление подписки"
|
|
29
|
+
description="Спишем оплату за день до окончания периода"
|
|
30
|
+
hide-details
|
|
31
|
+
/>
|
|
32
|
+
</div>
|
|
33
|
+
</template>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Sizes
|
|
37
|
+
|
|
38
|
+
Five sizes on the `size` scale — from `xs` to `xl`, `md` by default.
|
|
39
|
+
|
|
40
|
+
**Example (SFC):**
|
|
41
|
+
|
|
42
|
+
```vue
|
|
43
|
+
<script setup lang="ts">
|
|
44
|
+
import { CdsToggleConstants } from '@cds/components/CdsToggle/api/CdsToggle.constants';
|
|
45
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
46
|
+
import { ref } from 'vue';
|
|
47
|
+
|
|
48
|
+
const sizes = CdsToggleConstants.sizes;
|
|
49
|
+
const enabled = ref(true);
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
<template>
|
|
53
|
+
<div class="flex flex-col gap-3 w-fit m-auto">
|
|
54
|
+
<CdsToggle v-for="size in sizes" :key="size" v-model="enabled" :size="size" :label="size" hide-details />
|
|
55
|
+
</div>
|
|
56
|
+
</template>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## States
|
|
60
|
+
|
|
61
|
+
`disabled` blocks the toggle and lowers the contrast, `readonly` forbids changing the value, `error` paints the track with the error color. `indeterminate` is the undefined state: the thumb stops in the middle while the value is unknown — when only some of the nested options are on, for example. The first toggle removes it.
|
|
62
|
+
|
|
63
|
+
**Example (SFC):**
|
|
64
|
+
|
|
65
|
+
```vue
|
|
66
|
+
<script setup lang="ts">
|
|
67
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
68
|
+
import { ref } from 'vue';
|
|
69
|
+
|
|
70
|
+
const on = ref(true);
|
|
71
|
+
const off = ref(false);
|
|
72
|
+
const mixed = ref(false);
|
|
73
|
+
</script>
|
|
74
|
+
|
|
75
|
+
<template>
|
|
76
|
+
<div class="flex flex-col gap-3 w-fit m-auto">
|
|
77
|
+
<CdsToggle v-model="off" label="Выключен" hide-details />
|
|
78
|
+
<CdsToggle v-model="on" label="Включён" hide-details />
|
|
79
|
+
<CdsToggle v-model="off" label="Disabled (выключен)" disabled hide-details />
|
|
80
|
+
<CdsToggle v-model="on" label="Disabled (включён)" disabled hide-details />
|
|
81
|
+
<CdsToggle v-model="on" label="Readonly" readonly hide-details />
|
|
82
|
+
<CdsToggle v-model="off" label="Ошибка" error hide-details />
|
|
83
|
+
<CdsToggle v-model="mixed" :indeterminate="true" label="Неопределённое состояние" hide-details />
|
|
84
|
+
</div>
|
|
85
|
+
</template>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Loading and icons
|
|
89
|
+
|
|
90
|
+
`loading` shows an indicator inside the thumb — handy while the setting is being saved on the server; a string value sets the color of the loader. `true-icon` and `false-icon` add an icon to the thumb for each position.
|
|
91
|
+
|
|
92
|
+
**Example (SFC):**
|
|
93
|
+
|
|
94
|
+
```vue
|
|
95
|
+
<script setup lang="ts">
|
|
96
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
97
|
+
import { ref } from 'vue';
|
|
98
|
+
|
|
99
|
+
const loading = ref(true);
|
|
100
|
+
const icon = ref(true);
|
|
101
|
+
</script>
|
|
102
|
+
|
|
103
|
+
<template>
|
|
104
|
+
<div class="flex flex-col gap-3 w-fit m-auto">
|
|
105
|
+
<CdsToggle v-model="loading" loading label="Загрузка" hide-details />
|
|
106
|
+
<CdsToggle v-model="icon" true-icon="check-fill" false-icon="error-fill" label="Иконки в бегунке" hide-details />
|
|
107
|
+
</div>
|
|
108
|
+
</template>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Colors
|
|
112
|
+
|
|
113
|
+
`color` paints the track of a switched-on toggle, `base-color` — of a switched-off one, `thumb-color` — the thumb. The values are the names of the palette colors.
|
|
114
|
+
|
|
115
|
+
**Example (SFC):**
|
|
116
|
+
|
|
117
|
+
```vue
|
|
118
|
+
<script setup lang="ts">
|
|
119
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
120
|
+
import { ref } from 'vue';
|
|
121
|
+
|
|
122
|
+
const on = ref(true);
|
|
123
|
+
const off = ref(false);
|
|
124
|
+
const thumb = ref(false);
|
|
125
|
+
</script>
|
|
126
|
+
|
|
127
|
+
<template>
|
|
128
|
+
<div class="flex flex-col gap-3 w-fit m-auto">
|
|
129
|
+
<CdsToggle
|
|
130
|
+
v-model="on"
|
|
131
|
+
color="brand-primary"
|
|
132
|
+
label="Основной цвет дорожки во включённом положении (color)"
|
|
133
|
+
hide-details
|
|
134
|
+
/>
|
|
135
|
+
<CdsToggle v-model="off" base-color="purple" label="Фиолетовая дорожка в выключенном (base-color)" hide-details />
|
|
136
|
+
<CdsToggle v-model="thumb" thumb-color="red" label="Красный бегунок (thumb-color)" hide-details />
|
|
137
|
+
</div>
|
|
138
|
+
</template>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Your own values
|
|
142
|
+
|
|
143
|
+
By default the model is `true`/`false`. `true-value` and `false-value` bind the toggle to your own values — to an API field with a string status, for example.
|
|
144
|
+
|
|
145
|
+
**Example (SFC):**
|
|
146
|
+
|
|
147
|
+
```vue
|
|
148
|
+
<script setup lang="ts">
|
|
149
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
150
|
+
import { ref } from 'vue';
|
|
151
|
+
|
|
152
|
+
const status = ref('public');
|
|
153
|
+
</script>
|
|
154
|
+
|
|
155
|
+
<template>
|
|
156
|
+
<div class="flex flex-col items-center gap-2">
|
|
157
|
+
<CdsToggle v-model="status" true-value="public" false-value="private" label="Открытый профиль" hide-details />
|
|
158
|
+
<span>Значение модели: «{{ status }}»</span>
|
|
159
|
+
</div>
|
|
160
|
+
</template>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Messages
|
|
164
|
+
|
|
165
|
+
`messages` shows a hint under the toggle, `error-messages` — a ready error message together with the error state. `hide-details` removes the bottom block entirely.
|
|
166
|
+
|
|
167
|
+
**Example (SFC):**
|
|
168
|
+
|
|
169
|
+
```vue
|
|
170
|
+
<script setup lang="ts">
|
|
171
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
172
|
+
import { ref } from 'vue';
|
|
173
|
+
|
|
174
|
+
const backup = ref(true);
|
|
175
|
+
const newsletter = ref(false);
|
|
176
|
+
</script>
|
|
177
|
+
|
|
178
|
+
<template>
|
|
179
|
+
<div class="flex flex-col gap-3 w-[350px] m-auto">
|
|
180
|
+
<CdsToggle v-model="backup" label="Резервное копирование" messages="Копия создаётся каждую ночь в 03:00" />
|
|
181
|
+
<CdsToggle
|
|
182
|
+
v-model="newsletter"
|
|
183
|
+
label="Рассылка по подписчикам"
|
|
184
|
+
:error-messages="['Подтвердите домен, чтобы включить рассылку']"
|
|
185
|
+
/>
|
|
186
|
+
</div>
|
|
187
|
+
</template>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Slots
|
|
191
|
+
|
|
192
|
+
In the demo the `thumb` slot changes the icon of the thumb depending on the value, and `track-true` and `track-false` show icons on the track.
|
|
193
|
+
|
|
194
|
+
**Example (SFC):**
|
|
195
|
+
|
|
196
|
+
```vue
|
|
197
|
+
<script setup lang="ts">
|
|
198
|
+
import { CdsIcon, CdsToggle } from '@central-design-system/components';
|
|
199
|
+
import { ref } from 'vue';
|
|
200
|
+
|
|
201
|
+
const visible = ref(true);
|
|
202
|
+
const annual = ref(true);
|
|
203
|
+
</script>
|
|
204
|
+
|
|
205
|
+
<template>
|
|
206
|
+
<div class="flex flex-col gap-3 w-fit m-auto">
|
|
207
|
+
<CdsToggle v-model="visible" label="Профиль виден в поиске" hide-details>
|
|
208
|
+
<template #thumb>
|
|
209
|
+
<CdsIcon :icon="visible ? 'visibility-on' : 'visibility-off'" />
|
|
210
|
+
</template>
|
|
211
|
+
</CdsToggle>
|
|
212
|
+
|
|
213
|
+
<CdsToggle v-model="annual" size="xl" label="Годовая оплата" hide-details>
|
|
214
|
+
<template #track-true>
|
|
215
|
+
<CdsIcon icon="check-fill" :size="16" />
|
|
216
|
+
</template>
|
|
217
|
+
<template #track-false>
|
|
218
|
+
<CdsIcon icon="error-fill" :size="16" />
|
|
219
|
+
</template>
|
|
220
|
+
</CdsToggle>
|
|
221
|
+
</div>
|
|
222
|
+
</template>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Notification settings
|
|
226
|
+
|
|
227
|
+
The main toggle controls the whole group: while notifications are off, the channels are blocked through `disabled`. The choice of channels is kept though — after switching back on the group returns to its previous values.
|
|
228
|
+
|
|
229
|
+
**Example (SFC):**
|
|
230
|
+
|
|
231
|
+
```vue
|
|
232
|
+
<script setup lang="ts">
|
|
233
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
234
|
+
import { ref } from 'vue';
|
|
235
|
+
|
|
236
|
+
const enabled = ref(true);
|
|
237
|
+
const channels = ref({ email: true, push: false, sms: false });
|
|
238
|
+
</script>
|
|
239
|
+
|
|
240
|
+
<template>
|
|
241
|
+
<div class="flex flex-col gap-3 w-[320px] m-auto">
|
|
242
|
+
<CdsToggle v-model="enabled" label="Уведомления" description="Сообщим о событиях в ваших закупках" hide-details />
|
|
243
|
+
|
|
244
|
+
<div class="flex flex-col gap-3 pl-8">
|
|
245
|
+
<CdsToggle v-model="channels.email" :disabled="!enabled" size="sm" label="Электронная почта" hide-details />
|
|
246
|
+
<CdsToggle v-model="channels.push" :disabled="!enabled" size="sm" label="Push в браузере" hide-details />
|
|
247
|
+
<CdsToggle v-model="channels.sms" :disabled="!enabled" size="sm" label="СМС" hide-details />
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
</template>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Saving on the server
|
|
254
|
+
|
|
255
|
+
The setting is saved right after the switch: while the request is in flight the toggle shows `loading` and does not accept clicks because of `readonly`. If the server rejected the change, the value comes back and the reason is shown in `error-messages`. Try switching the toggle off.
|
|
256
|
+
|
|
257
|
+
**Example (SFC):**
|
|
258
|
+
|
|
259
|
+
```vue
|
|
260
|
+
<script setup lang="ts">
|
|
261
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
262
|
+
import { ref } from 'vue';
|
|
263
|
+
|
|
264
|
+
const enabled = ref(true);
|
|
265
|
+
const loading = ref(false);
|
|
266
|
+
const errors = ref<string[]>([]);
|
|
267
|
+
|
|
268
|
+
const save = async (value: unknown) => {
|
|
269
|
+
loading.value = true;
|
|
270
|
+
errors.value = [];
|
|
271
|
+
|
|
272
|
+
// Имитация запроса к серверу
|
|
273
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
274
|
+
|
|
275
|
+
loading.value = false;
|
|
276
|
+
|
|
277
|
+
if (!value) {
|
|
278
|
+
enabled.value = true;
|
|
279
|
+
errors.value = ['Отключить двухфакторную аутентификацию может только администратор'];
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
</script>
|
|
283
|
+
|
|
284
|
+
<template>
|
|
285
|
+
<div class="w-[350px] m-auto">
|
|
286
|
+
<CdsToggle
|
|
287
|
+
v-model="enabled"
|
|
288
|
+
label="Двухфакторная аутентификация"
|
|
289
|
+
description="Код из приложения при каждом входе"
|
|
290
|
+
:loading="loading"
|
|
291
|
+
:readonly="loading"
|
|
292
|
+
:error-messages="errors"
|
|
293
|
+
@update:model-value="save"
|
|
294
|
+
/>
|
|
295
|
+
</div>
|
|
296
|
+
</template>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Paid options
|
|
300
|
+
|
|
301
|
+
Every toggle adds an option to the plan, and the total is recalculated at once — the user sees the consequences of the choice before paying.
|
|
302
|
+
|
|
303
|
+
**Example (SFC):**
|
|
304
|
+
|
|
305
|
+
```vue
|
|
306
|
+
<script setup lang="ts">
|
|
307
|
+
import { CdsToggle } from '@central-design-system/components';
|
|
308
|
+
import { computed, ref } from 'vue';
|
|
309
|
+
|
|
310
|
+
const options = [
|
|
311
|
+
{ key: 'analytics', label: 'Расширенная аналитика', description: 'Отчёты по закупкам и конкурентам', price: 900 },
|
|
312
|
+
{ key: 'support', label: 'Приоритетная поддержка', description: 'Ответ в течение часа', price: 500 },
|
|
313
|
+
{ key: 'api', label: 'Доступ к API', description: 'Интеграция с вашей ERP', price: 1500 }
|
|
314
|
+
] as const;
|
|
315
|
+
|
|
316
|
+
const selected = ref<Record<string, boolean>>({ analytics: true, support: false, api: false });
|
|
317
|
+
|
|
318
|
+
const total = computed(() => options.reduce((sum, option) => sum + (selected.value[option.key] ? option.price : 0), 0));
|
|
319
|
+
</script>
|
|
320
|
+
|
|
321
|
+
<template>
|
|
322
|
+
<div class="flex flex-col gap-3 w-[350px] m-auto">
|
|
323
|
+
<CdsToggle
|
|
324
|
+
v-for="option in options"
|
|
325
|
+
:key="option.key"
|
|
326
|
+
v-model="selected[option.key]"
|
|
327
|
+
:label="`${option.label} — ${option.price} ₽/мес`"
|
|
328
|
+
:description="option.description"
|
|
329
|
+
hide-details
|
|
330
|
+
/>
|
|
331
|
+
|
|
332
|
+
<span class="font-semibold">Итого: {{ total }} ₽/мес</span>
|
|
333
|
+
</div>
|
|
334
|
+
</template>
|
|
335
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsToggle — guidelines
|
|
2
|
+
|
|
3
|
+
> Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> The full component contract is in [api.md](api.md).
|
|
5
|
+
|
|
6
|
+
| ✅ Do | ❌ Don't |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| A toggle is for a setting that applies right after it is switched. | Consents and choices that go to the server together with the form are a checkbox, not a toggle. |
|
|
9
|
+
| Phrase the label positively: the on position turns the capability on. | A negation in the label forces the user to decode a double “no” when the toggle is off. |
|
|
10
|
+
| The label names the setting — the state is visible from the position and the color of the thumb. | A label repeating the state changes on every click: it is unclear what exactly is turned on. |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# CdsToggle — 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
|
+
## _CdsToggle.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/tools';
|
|
11
|
+
|
|
12
|
+
// ======================= Transitions =======================
|
|
13
|
+
$toggle-track-transition: background-color (tools.$cds-duration-fast + ms) tools.get-motion('ease-in-out', 'basic') !default;
|
|
14
|
+
$toggle-thumb-transition: transform (tools.$cds-duration-fast + ms) tools.get-motion('ease-in-out', 'accent'),
|
|
15
|
+
background-color (tools.$cds-duration-fast + ms) tools.get-motion('ease-in-out', 'basic') !default;
|
|
16
|
+
|
|
17
|
+
// ======================= Radius =======================
|
|
18
|
+
$toggle-track-radius: tools.to-rem(9999px) !default;
|
|
19
|
+
$toggle-thumb-radius: 50% !default;
|
|
20
|
+
|
|
21
|
+
// ======================= Sizes =======================
|
|
22
|
+
// Каждый размер: высота дорожки, ширина дорожки, размер «бегунка» (вкл.), размер «бегунка» (выкл.).
|
|
23
|
+
$toggle-sizes: (
|
|
24
|
+
xs: (
|
|
25
|
+
track-height: 18px,
|
|
26
|
+
track-width: 34px,
|
|
27
|
+
thumb-on: 12px,
|
|
28
|
+
thumb-off: 8px,
|
|
29
|
+
label-gap: 0,
|
|
30
|
+
label-offset: var(--cds-spacing-50)
|
|
31
|
+
),
|
|
32
|
+
sm: (
|
|
33
|
+
track-height: 20px,
|
|
34
|
+
track-width: 36px,
|
|
35
|
+
thumb-on: 14px,
|
|
36
|
+
thumb-off: 10px,
|
|
37
|
+
label-gap: 0,
|
|
38
|
+
label-offset: var(--cds-spacing-100)
|
|
39
|
+
),
|
|
40
|
+
md: (
|
|
41
|
+
track-height: 24px,
|
|
42
|
+
track-width: 44px,
|
|
43
|
+
thumb-on: 18px,
|
|
44
|
+
thumb-off: 14px,
|
|
45
|
+
label-gap: var(--cds-spacing-50),
|
|
46
|
+
label-offset: var(--cds-spacing-200)
|
|
47
|
+
),
|
|
48
|
+
lg: (
|
|
49
|
+
track-height: 28px,
|
|
50
|
+
track-width: 52px,
|
|
51
|
+
thumb-on: 20px,
|
|
52
|
+
thumb-off: 16px,
|
|
53
|
+
label-gap: var(--cds-spacing-50),
|
|
54
|
+
label-offset: var(--cds-spacing-200)
|
|
55
|
+
),
|
|
56
|
+
xl: (
|
|
57
|
+
track-height: 40px,
|
|
58
|
+
track-width: 78px,
|
|
59
|
+
thumb-on: 30px,
|
|
60
|
+
thumb-off: 26px,
|
|
61
|
+
label-gap: var(--cds-spacing-100),
|
|
62
|
+
label-offset: var(--cds-spacing-300)
|
|
63
|
+
)
|
|
64
|
+
) !default;
|
|
65
|
+
|
|
66
|
+
// ======================= Colors =======================
|
|
67
|
+
$toggle-colors: (
|
|
68
|
+
track: (
|
|
69
|
+
unselected: rgb(var(--cds-color-fill-secondary)),
|
|
70
|
+
selected: rgb(var(--cds-color-status-success-surface)),
|
|
71
|
+
disabled-unselected: rgb(var(--cds-color-fill-disable)),
|
|
72
|
+
disabled-selected: rgb(var(--cds-color-fill-disable)),
|
|
73
|
+
error: rgb(var(--cds-color-status-danger-surface))
|
|
74
|
+
),
|
|
75
|
+
thumb: (
|
|
76
|
+
unselected: rgb(var(--cds-color-content-on-dark)),
|
|
77
|
+
selected: rgb(var(--cds-color-content-on-dark)),
|
|
78
|
+
disabled: rgb(var(--cds-color-content-disable)),
|
|
79
|
+
error: rgb(var(--cds-color-content-on-dark))
|
|
80
|
+
),
|
|
81
|
+
icon: (
|
|
82
|
+
selected: rgb(var(--cds-color-fill-selected)),
|
|
83
|
+
error: rgb(var(--cds-color-status-danger-content))
|
|
84
|
+
)
|
|
85
|
+
) !default;
|
|
86
|
+
|
|
87
|
+
// ======================= Focus =======================
|
|
88
|
+
$toggle-focus-outline-color: rgb(var(--cds-color-line-focus-outline)) !default;
|
|
89
|
+
$toggle-focus-outline-width: var(--cds-border-200) !default;
|
|
90
|
+
$toggle-focus-outline-offset: var(--cds-spacing-50) !default;
|
|
91
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# CdsToolbar — 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 horizontal bar with a title and actions: it fills the header and the footer of the application, and on a page it assembles the title of a section together with its buttons. `CdsToolbarTitle` stretches and pushes the left and the right groups to the edges on its own.
|
|
7
|
+
|
|
8
|
+
Family: [CdsToolbar](#cdstoolbar) + subcomponents: [CdsToolbarTitle](#cdstoolbartitle).
|
|
9
|
+
|
|
10
|
+
## CdsToolbar
|
|
11
|
+
|
|
12
|
+
**Props**
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Default | Required | Description |
|
|
15
|
+
| --- | --- | --- | --- | --- |
|
|
16
|
+
| `bgColor` | `string \| undefined` | — | no | Background color of the component |
|
|
17
|
+
| `bordered` | `boolean \| undefined` | `false` | no | Shows the bottom border. |
|
|
18
|
+
| `color` | `string \| undefined` | — | no | Component color |
|
|
19
|
+
| `inset` | `boolean \| undefined` | `false` | no | Nested toolbar (indented from the left). |
|
|
20
|
+
| `noGutter` | `"start" \| "end" \| undefined` | — | no | Removes the padding on one side: `start` or `end`. |
|
|
21
|
+
| `noGutters` | `boolean \| undefined` | `false` | no | Removes all inner paddings. |
|
|
22
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
23
|
+
|
|
24
|
+
**Slots**
|
|
25
|
+
|
|
26
|
+
| Name | Type | Description |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| `default` | `any` | Content of the toolbar. |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## CdsToolbarTitle
|
|
33
|
+
|
|
34
|
+
**Props**
|
|
35
|
+
|
|
36
|
+
| Prop | Type | Default | Required | Description |
|
|
37
|
+
| --- | --- | --- | --- | --- |
|
|
38
|
+
| `shrink` | `boolean \| undefined` | `false` | no | Shrinks the title to its content instead of stretching it. |
|
|
39
|
+
|
|
40
|
+
**Slots**
|
|
41
|
+
|
|
42
|
+
| Name | Type | Description |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `default` | `any` | Text of the title. |
|