@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,320 @@
|
|
|
1
|
+
# CdsSteps — 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 stepper walks the user through a multi-step process: it shows which steps are done, which one is active and how many are left. It can switch the content of the steps and renders the "Back" / "Next" buttons out of the box, while a header without content works as a status tracker.
|
|
7
|
+
|
|
8
|
+
## Steps from an array
|
|
9
|
+
|
|
10
|
+
Pass an array of objects into `items` — the title, the description and the value of a step are read by the `item-title`, `item-text` and `item-value` keys (by default `title`, `text`, and the value is the ordinal number of the step starting from one). The content of a step comes from the `item.{value}` slots or from the shared `item` slot, and the "Back" / "Next" buttons are rendered automatically: their texts are changed by the `prev-text` / `next-text` props, and `hide-actions` hides the buttons.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsCard, CdsSteps } from '@central-design-system/components';
|
|
17
|
+
import { ref } from 'vue';
|
|
18
|
+
|
|
19
|
+
const step = ref(1);
|
|
20
|
+
const items = [
|
|
21
|
+
{ title: 'ФИО', text: 'Имя и фамилия' },
|
|
22
|
+
{ title: 'Паспортные данные', text: 'Номер паспорта и дата рождения' },
|
|
23
|
+
{ title: 'Способ оплаты', text: 'Данные банковской карты' },
|
|
24
|
+
{ title: 'Подтверждение', text: 'Код из смс' }
|
|
25
|
+
];
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<div class="m-auto max-w-[750px]">
|
|
30
|
+
<CdsSteps v-model="step" :items="items">
|
|
31
|
+
<template v-for="(item, index) in items" :key="item.title" #[`item.${index+1}`]>
|
|
32
|
+
<CdsCard :title="item.title" :text="`Контент шага «${item.title}»: ${item.text.toLowerCase()}.`" borderless />
|
|
33
|
+
</template>
|
|
34
|
+
</CdsSteps>
|
|
35
|
+
</div>
|
|
36
|
+
</template>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## States
|
|
40
|
+
|
|
41
|
+
Steps can also be declared by hand — with `CdsStepsItem` components in the default slot: only the header is rendered, the content and the navigation stay up to you. A step has three states: `error` — finished with an error, `warning` — needs attention, `disabled` — unavailable.
|
|
42
|
+
|
|
43
|
+
**Example (SFC):**
|
|
44
|
+
|
|
45
|
+
```vue
|
|
46
|
+
<script setup lang="ts">
|
|
47
|
+
import { CdsSteps, CdsStepsItem } from '@central-design-system/components';
|
|
48
|
+
import { ref } from 'vue';
|
|
49
|
+
|
|
50
|
+
const step = ref(1);
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<CdsSteps v-model="step">
|
|
55
|
+
<CdsStepsItem title="ФИО" text="Имя и фамилия" />
|
|
56
|
+
<CdsStepsItem title="Паспортные данные" error text="Номер паспорта и дата рождения" />
|
|
57
|
+
<CdsStepsItem title="Способ оплаты" disabled text="Данные банковской карты" />
|
|
58
|
+
<CdsStepsItem title="Подтверждение" warning text="Код из смс" />
|
|
59
|
+
</CdsSteps>
|
|
60
|
+
</template>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Interactive steps
|
|
64
|
+
|
|
65
|
+
The `interactive` prop allows jumping to any step by click or from the keyboard — the progress animates in a cascade and `disabled` steps are skipped. The `readonly` prop turns the transitions off while keeping the appearance.
|
|
66
|
+
|
|
67
|
+
**Example (SFC):**
|
|
68
|
+
|
|
69
|
+
```vue
|
|
70
|
+
<script setup lang="ts">
|
|
71
|
+
import { CdsSteps, CdsStepsItem } from '@central-design-system/components';
|
|
72
|
+
import { ref } from 'vue';
|
|
73
|
+
|
|
74
|
+
const step = ref(2);
|
|
75
|
+
</script>
|
|
76
|
+
|
|
77
|
+
<template>
|
|
78
|
+
<CdsSteps v-model="step" interactive>
|
|
79
|
+
<CdsStepsItem title="ФИО" text="Имя и фамилия" />
|
|
80
|
+
<CdsStepsItem title="Паспортные данные" text="Номер паспорта и дата рождения" />
|
|
81
|
+
<CdsStepsItem title="Способ оплаты" text="Данные банковской карты" />
|
|
82
|
+
<CdsStepsItem title="Подтверждение" text="Код из смс" />
|
|
83
|
+
</CdsSteps>
|
|
84
|
+
</template>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Vertical layout
|
|
88
|
+
|
|
89
|
+
The `vertical` prop turns the header into a column — a good fit for status trackers and narrow panels.
|
|
90
|
+
|
|
91
|
+
**Example (SFC):**
|
|
92
|
+
|
|
93
|
+
```vue
|
|
94
|
+
<script setup lang="ts">
|
|
95
|
+
import { CdsSteps, CdsStepsItem } from '@central-design-system/components';
|
|
96
|
+
import { ref } from 'vue';
|
|
97
|
+
|
|
98
|
+
const step = ref(0);
|
|
99
|
+
</script>
|
|
100
|
+
|
|
101
|
+
<template>
|
|
102
|
+
<div class="flex h-[350px] w-full items-center justify-center">
|
|
103
|
+
<CdsSteps v-model="step" vertical interactive>
|
|
104
|
+
<CdsStepsItem title="ФИО" text="Имя и фамилия" />
|
|
105
|
+
<CdsStepsItem title="Паспортные данные" text="Номер паспорта и дата рождения" />
|
|
106
|
+
<CdsStepsItem title="Способ оплаты" text="Данные банковской карты" />
|
|
107
|
+
<CdsStepsItem title="Подтверждение" text="Код из смс" />
|
|
108
|
+
</CdsSteps>
|
|
109
|
+
</div>
|
|
110
|
+
</template>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Slots
|
|
114
|
+
|
|
115
|
+
The `title` and `text` slots receive the state of the step (`selected`, `complete`, `error`, `first`, `last`…) — handy for adding tags and hints.
|
|
116
|
+
|
|
117
|
+
**Example (SFC):**
|
|
118
|
+
|
|
119
|
+
```vue
|
|
120
|
+
<script setup lang="ts">
|
|
121
|
+
import { CdsIcon, CdsSteps, CdsStepsItem, CdsTag, CdsTooltip } from '@central-design-system/components';
|
|
122
|
+
import { ref } from 'vue';
|
|
123
|
+
|
|
124
|
+
const step = ref(3);
|
|
125
|
+
const items = [
|
|
126
|
+
{ title: 'ФИО', text: 'Имя и фамилия' },
|
|
127
|
+
{ title: 'Паспортные данные', text: 'Номер паспорта и дата рождения', error: true },
|
|
128
|
+
{ title: 'Способ оплаты', text: 'Данные банковской карты', disabled: true },
|
|
129
|
+
{ title: 'Подтверждение', text: 'Код из смс' }
|
|
130
|
+
];
|
|
131
|
+
</script>
|
|
132
|
+
|
|
133
|
+
<template>
|
|
134
|
+
<CdsSteps v-model="step">
|
|
135
|
+
<CdsStepsItem v-for="item in items" :key="item.title" :disabled="item.disabled" :error="item.error">
|
|
136
|
+
<template #title>
|
|
137
|
+
<span class="inline-flex items-center gap-1">
|
|
138
|
+
{{ item.title }}
|
|
139
|
+
<CdsTag v-if="!item.disabled" text="Доступ" />
|
|
140
|
+
</span>
|
|
141
|
+
</template>
|
|
142
|
+
<template #text="{ last }">
|
|
143
|
+
<span class="inline-flex items-center gap-1">
|
|
144
|
+
<CdsTooltip v-if="last">
|
|
145
|
+
<template #activator="{ props }">
|
|
146
|
+
<CdsIcon icon="info" v-bind="props" />
|
|
147
|
+
</template>
|
|
148
|
+
Push уведомления
|
|
149
|
+
</CdsTooltip>
|
|
150
|
+
{{ item.text }}
|
|
151
|
+
</span>
|
|
152
|
+
</template>
|
|
153
|
+
</CdsStepsItem>
|
|
154
|
+
</CdsSteps>
|
|
155
|
+
</template>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Model
|
|
159
|
+
|
|
160
|
+
The active step is controlled through `v-model`. For steps from `items` the default value is the ordinal number starting from one; for steps declared by hand it is the index starting from zero. Your own value is set by the `item-value` key or by the `value` prop of `CdsStepsItem`. The `prev` / `next` methods are available through the component ref.
|
|
161
|
+
|
|
162
|
+
**Example (SFC):**
|
|
163
|
+
|
|
164
|
+
```vue
|
|
165
|
+
<script setup lang="ts">
|
|
166
|
+
import { CdsFunctionalButton, CdsSteps, CdsStepsItem } from '@central-design-system/components';
|
|
167
|
+
import { ref } from 'vue';
|
|
168
|
+
|
|
169
|
+
const step = ref(2);
|
|
170
|
+
const items = [
|
|
171
|
+
{ title: 'ФИО', text: 'Имя и фамилия' },
|
|
172
|
+
{ title: 'Паспортные данные', text: 'Номер паспорта и дата рождения' },
|
|
173
|
+
{ title: 'Способ оплаты', text: 'Данные банковской карты' },
|
|
174
|
+
{ title: 'Подтверждение', text: 'Код из смс' }
|
|
175
|
+
];
|
|
176
|
+
const next = () => {
|
|
177
|
+
if (step.value < items.length - 1) step.value++;
|
|
178
|
+
};
|
|
179
|
+
const prev = () => {
|
|
180
|
+
if (step.value > 0) step.value--;
|
|
181
|
+
};
|
|
182
|
+
</script>
|
|
183
|
+
|
|
184
|
+
<template>
|
|
185
|
+
<div>
|
|
186
|
+
<div class="mb-4 flex w-full items-center justify-center gap-2">
|
|
187
|
+
<CdsFunctionalButton icon="chevron-left" @click="prev" />
|
|
188
|
+
v-model: {{ step }}
|
|
189
|
+
<CdsFunctionalButton icon="chevron-right" @click="next" />
|
|
190
|
+
</div>
|
|
191
|
+
<CdsSteps v-model="step">
|
|
192
|
+
<CdsStepsItem v-for="item in items" :key="item.title" :title="item.title" :text="item.text" />
|
|
193
|
+
</CdsSteps>
|
|
194
|
+
</div>
|
|
195
|
+
</template>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Checkout wizard
|
|
199
|
+
|
|
200
|
+
A classic wizard: every step gets its own `item.{value}` slot with a form. The built-in buttons page through the steps, and the fields are bound to shared state through `v-model`, so the data survives the transitions.
|
|
201
|
+
|
|
202
|
+
**Example (SFC):**
|
|
203
|
+
|
|
204
|
+
```vue
|
|
205
|
+
<script setup lang="ts">
|
|
206
|
+
import { CdsForm, CdsRadio, CdsRadioGroup, CdsSteps, CdsTextInput } from '@central-design-system/components';
|
|
207
|
+
import { ref } from 'vue';
|
|
208
|
+
|
|
209
|
+
const step = ref(1);
|
|
210
|
+
const city = ref('');
|
|
211
|
+
const address = ref('');
|
|
212
|
+
const payment = ref('card');
|
|
213
|
+
|
|
214
|
+
const items = [
|
|
215
|
+
{ title: 'Доставка', text: 'Город и адрес' },
|
|
216
|
+
{ title: 'Оплата', text: 'Способ оплаты' },
|
|
217
|
+
{ title: 'Проверка', text: 'Данные заказа' }
|
|
218
|
+
];
|
|
219
|
+
</script>
|
|
220
|
+
|
|
221
|
+
<template>
|
|
222
|
+
<div class="m-auto max-w-[750px]">
|
|
223
|
+
<CdsSteps v-model="step" :items="items">
|
|
224
|
+
<template #[`item.1`]>
|
|
225
|
+
<CdsForm class="m-auto flex w-[350px] flex-col gap-2 py-2">
|
|
226
|
+
<CdsTextInput v-model="city" label="Город" placeholder="Москва" />
|
|
227
|
+
<CdsTextInput v-model="address" label="Адрес" placeholder="Улица, дом, офис" />
|
|
228
|
+
</CdsForm>
|
|
229
|
+
</template>
|
|
230
|
+
|
|
231
|
+
<template #[`item.2`]>
|
|
232
|
+
<CdsRadioGroup v-model="payment" label="Как оплатите заказ?" class="m-auto w-[350px] py-2" hide-details>
|
|
233
|
+
<CdsRadio value="card" label="Банковской картой" />
|
|
234
|
+
<CdsRadio value="invoice" label="Счётом на компанию" />
|
|
235
|
+
</CdsRadioGroup>
|
|
236
|
+
</template>
|
|
237
|
+
|
|
238
|
+
<template #[`item.3`]>
|
|
239
|
+
<div class="m-auto flex w-[350px] flex-col gap-1 py-2">
|
|
240
|
+
<p>Доставка: {{ [city, address].filter(Boolean).join(', ') || 'не указана' }}</p>
|
|
241
|
+
<p>Оплата: {{ payment === 'card' ? 'банковской картой' : 'счётом на компанию' }}</p>
|
|
242
|
+
</div>
|
|
243
|
+
</template>
|
|
244
|
+
</CdsSteps>
|
|
245
|
+
</div>
|
|
246
|
+
</template>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Confirmation before moving on
|
|
250
|
+
|
|
251
|
+
The `actions` slot replaces the built-in buttons and receives the `prev` and `next` methods — you define the conditions of the transition yourself. Here the "Next" button stays disabled until the user accepts the terms of service.
|
|
252
|
+
|
|
253
|
+
**Example (SFC):**
|
|
254
|
+
|
|
255
|
+
```vue
|
|
256
|
+
<script setup lang="ts">
|
|
257
|
+
import { CdsButton, CdsCheckbox, CdsSteps } from '@central-design-system/components';
|
|
258
|
+
import { ref } from 'vue';
|
|
259
|
+
|
|
260
|
+
const step = ref(1);
|
|
261
|
+
const agreed = ref(false);
|
|
262
|
+
|
|
263
|
+
const items = [
|
|
264
|
+
{ title: 'Условия', text: 'Договор оферты' },
|
|
265
|
+
{ title: 'Данные', text: 'Реквизиты компании' },
|
|
266
|
+
{ title: 'Готово', text: 'Заявка отправлена' }
|
|
267
|
+
];
|
|
268
|
+
</script>
|
|
269
|
+
|
|
270
|
+
<template>
|
|
271
|
+
<div class="m-auto max-w-[750px]">
|
|
272
|
+
<CdsSteps v-model="step" :items="items">
|
|
273
|
+
<template #[`item.1`]>
|
|
274
|
+
<div class="m-auto flex w-[350px] flex-col gap-2 py-2">
|
|
275
|
+
<p>Перед заполнением заявки ознакомьтесь с условиями обслуживания.</p>
|
|
276
|
+
<CdsCheckbox v-model="agreed" label="Принимаю условия обслуживания" hide-details />
|
|
277
|
+
</div>
|
|
278
|
+
</template>
|
|
279
|
+
|
|
280
|
+
<template #[`item.2`]>
|
|
281
|
+
<p class="py-2 text-center">Здесь будет форма с реквизитами компании.</p>
|
|
282
|
+
</template>
|
|
283
|
+
|
|
284
|
+
<template #[`item.3`]>
|
|
285
|
+
<p class="py-2 text-center">Заявка отправлена — подтверждение придёт на почту.</p>
|
|
286
|
+
</template>
|
|
287
|
+
|
|
288
|
+
<template #actions="{ prev, next }">
|
|
289
|
+
<div class="flex items-center justify-between">
|
|
290
|
+
<CdsButton appearance="secondary" text="Назад" :disabled="step === 1" @click="prev" />
|
|
291
|
+
<CdsButton text="Далее" :disabled="step === 3 || (step === 1 && !agreed)" @click="next" />
|
|
292
|
+
</div>
|
|
293
|
+
</template>
|
|
294
|
+
</CdsSteps>
|
|
295
|
+
</div>
|
|
296
|
+
</template>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Request status
|
|
300
|
+
|
|
301
|
+
A header without `items` works as a process tracker: only the steps, no content and no buttons. The completed stages are marked with indicators, and the descriptions carry the dates and the deadlines. The `vertical` prop lays the history out in a column.
|
|
302
|
+
|
|
303
|
+
**Example (SFC):**
|
|
304
|
+
|
|
305
|
+
```vue
|
|
306
|
+
<script setup lang="ts">
|
|
307
|
+
import { CdsSteps, CdsStepsItem } from '@central-design-system/components';
|
|
308
|
+
</script>
|
|
309
|
+
|
|
310
|
+
<template>
|
|
311
|
+
<div class="flex justify-center">
|
|
312
|
+
<CdsSteps :model-value="2" vertical>
|
|
313
|
+
<CdsStepsItem title="Заявка отправлена" text="12 марта, 10:24" />
|
|
314
|
+
<CdsStepsItem title="Документы проверены" text="13 марта, 16:02" />
|
|
315
|
+
<CdsStepsItem title="Согласование" text="Обычно занимает до двух дней" />
|
|
316
|
+
<CdsStepsItem title="Заключение договора" />
|
|
317
|
+
</CdsSteps>
|
|
318
|
+
</div>
|
|
319
|
+
</template>
|
|
320
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsSteps — guidelines
|
|
2
|
+
|
|
3
|
+
> Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> The full component contract is in [api.md](api.md).
|
|
5
|
+
|
|
6
|
+
| ✅ Do | ❌ Don't |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| The step title is a short name of the stage; the details go into the text description. | Sentence-long titles inflate the header and are hard to scan. |
|
|
9
|
+
| Three to five steps: the process stays graspable and every step is a meaningful stage. | Seven steps or more scare the user with their volume — merge the adjacent stages. |
|
|
10
|
+
| The description adds to the title: what the step needs or what will happen. | A description that repeats the title adds nothing — drop it. |
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# CdsSteps — 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
|
+
## _CdsSteps.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use 'sass:map';
|
|
11
|
+
@use '../../../styles/settings';
|
|
12
|
+
|
|
13
|
+
// CdsSteps
|
|
14
|
+
$steps-section-gap: var(--cds-spacing-400) !default;
|
|
15
|
+
$steps-header-gap: var(--cds-spacing-100) !default;
|
|
16
|
+
|
|
17
|
+
// CdsStepsItem
|
|
18
|
+
$steps-item-gap: var(--cds-spacing-100) !default;
|
|
19
|
+
$steps-item-min-width: 96px !default;
|
|
20
|
+
$steps-item-status-gap: var(--cds-spacing-100) !default;
|
|
21
|
+
$steps-item-content-padding: var(--cds-spacing-400) !default;
|
|
22
|
+
$steps-item-icon-size: 12px !default;
|
|
23
|
+
$steps-item-icon-border: var(--cds-border-200) !default;
|
|
24
|
+
$steps-item-indicator-size: 4px !default;
|
|
25
|
+
$steps-item-indicator-radius: map.get(settings.$rounded, 'pill') !default;
|
|
26
|
+
|
|
27
|
+
// CdsStepsItem (vertical)
|
|
28
|
+
$steps-item-vertical-gap: var(--cds-spacing-200) !default;
|
|
29
|
+
$steps-item-vertical-height: 56px !default;
|
|
30
|
+
$steps-item-vertical-content-width: 168px !default;
|
|
31
|
+
$steps-item-vertical-content-padding: var(--cds-spacing-400) !default;
|
|
32
|
+
$steps-item-status-vertical-padding: var(--cds-spacing-100) !default;
|
|
33
|
+
$steps-item-color: (
|
|
34
|
+
'icon-unpassed': rgb(var(--cds-color-line-primary)),
|
|
35
|
+
'icon-hover': rgb(var(--cds-color-status-progress-surface)),
|
|
36
|
+
'icon-disabled': rgb(var(--cds-color-line-disable)),
|
|
37
|
+
'current': rgb(var(--cds-color-status-progress-surface)),
|
|
38
|
+
'warning': rgb(var(--cds-color-status-warning-surface)),
|
|
39
|
+
'warning-text': rgb(var(--cds-color-status-warning-content)),
|
|
40
|
+
'error': rgb(var(--cds-color-status-danger-surface)),
|
|
41
|
+
'error-text': rgb(var(--cds-color-status-danger-content)),
|
|
42
|
+
'disabled': rgb(var(--cds-color-content-disable)),
|
|
43
|
+
'title': rgb(var(--cds-color-content-primary)),
|
|
44
|
+
'description': rgb(var(--cds-color-content-secondary)),
|
|
45
|
+
'focus': rgb(var(--cds-color-line-focus-outline)),
|
|
46
|
+
'indicator': rgb(var(--cds-color-fill-secondary)),
|
|
47
|
+
'stream': rgb(var(--cds-color-status-progress-surface))
|
|
48
|
+
) !default;
|
|
49
|
+
|
|
50
|
+
// CdsStepsActions
|
|
51
|
+
$steps-actions-gap: var(--cds-spacing-200) !default;
|
|
52
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# CdsSurface — 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 surface is a container with a background from the tokens, sizes, positioning and a theme of its own. Take it when a block needs a design system background rather than a ready-made component: the backdrop of a panel, a plate, the base of your own component.
|
|
7
|
+
|
|
8
|
+
## CdsSurface
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `color` | `string \| undefined` | — | no | Background color of the surface |
|
|
15
|
+
| `height` | `string \| number \| undefined` | — | no | Component height |
|
|
16
|
+
| `location` | `Anchor \| null \| undefined` | — | no | Position of the element relative to its container, for example "top left", "center", "bottom right". |
|
|
17
|
+
| `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
|
|
18
|
+
| `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
|
|
19
|
+
| `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
|
|
20
|
+
| `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
|
|
21
|
+
| `position` | `"absolute" \| "static" \| "fixed" \| "relative" \| "sticky" \| undefined` | — | no | CSS positioning of the component — the value of the `position` property |
|
|
22
|
+
| `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
|
|
23
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
24
|
+
| `width` | `string \| number \| undefined` | — | no | Component width |
|
|
25
|
+
|
|
26
|
+
**Slots**
|
|
27
|
+
|
|
28
|
+
| Name | Type | Description |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `default` | `any` | The main content of the surface. |
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# CdsSurface — 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 surface is a container with a background from the tokens, sizes, positioning and a theme of its own. Take it when a block needs a design system background rather than a ready-made component: the backdrop of a panel, a plate, the base of your own component.
|
|
7
|
+
|
|
8
|
+
## Color
|
|
9
|
+
|
|
10
|
+
The `color` prop sets the background from the theme tokens and picks a contrasting text color. Besides `surface-*`, any color of the palette and any CSS color will do. Which colors exactly hide behind the tokens is decided by the theme: the `theme` prop switches it for the surface and for everything inside it.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsSurface } from '@central-design-system/components';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div class="flex flex-wrap justify-center gap-2">
|
|
21
|
+
<CdsSurface color="surface-primary" class="p-3 rounded-200">surface-primary</CdsSurface>
|
|
22
|
+
<CdsSurface color="surface-secondary" class="p-3 rounded-200">surface-secondary</CdsSurface>
|
|
23
|
+
<CdsSurface color="surface-elevated" class="p-3 rounded-200">surface-elevated</CdsSurface>
|
|
24
|
+
<CdsSurface color="surface-inverse" class="p-3 rounded-200">surface-inverse</CdsSurface>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Sizes
|
|
30
|
+
|
|
31
|
+
The `width`, `height`, `min-width`, `max-width`, `min-height` and `max-height` props accept a number (pixels) or a string with any CSS unit.
|
|
32
|
+
|
|
33
|
+
**Example (SFC):**
|
|
34
|
+
|
|
35
|
+
```vue
|
|
36
|
+
<script setup lang="ts">
|
|
37
|
+
import { CdsSurface } from '@central-design-system/components';
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<template>
|
|
41
|
+
<div class="flex flex-wrap items-start justify-center gap-2">
|
|
42
|
+
<CdsSurface color="surface-secondary" width="120" height="80" class="p-2 rounded-200"> 120 × 80 </CdsSurface>
|
|
43
|
+
|
|
44
|
+
<CdsSurface color="surface-secondary" min-height="80" max-width="200" class="p-2 rounded-200">
|
|
45
|
+
Ширина не больше 200, высота не меньше 80
|
|
46
|
+
</CdsSurface>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Positioning
|
|
52
|
+
|
|
53
|
+
The `position` prop sets the CSS position, `location` pins the surface to an edge of the container — `top end`, `bottom start`, `center`. Together they build a plate on top of another block.
|
|
54
|
+
|
|
55
|
+
**Example (SFC):**
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<script setup lang="ts">
|
|
59
|
+
import { CdsSurface } from '@central-design-system/components';
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<template>
|
|
63
|
+
<CdsSurface color="surface-secondary" position="relative" height="140" class="w-[280px] m-auto rounded-200">
|
|
64
|
+
<CdsSurface color="surface-inverse" position="absolute" location="top end" class="p-1 rounded-100">
|
|
65
|
+
top end
|
|
66
|
+
</CdsSurface>
|
|
67
|
+
|
|
68
|
+
<CdsSurface color="surface-inverse" position="absolute" location="bottom start" class="p-1 rounded-100">
|
|
69
|
+
bottom start
|
|
70
|
+
</CdsSurface>
|
|
71
|
+
</CdsSurface>
|
|
72
|
+
</template>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## A summary panel
|
|
76
|
+
|
|
77
|
+
The surface gives the background and the sizes, while the paddings and the layout inside are up to you. The `tag` prop changes the tag of the wrapper — here it is `section`, so the block stays meaningful in the structure of the page.
|
|
78
|
+
|
|
79
|
+
**Example (SFC):**
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<script setup lang="ts">
|
|
83
|
+
import { CdsButton, CdsDivider, CdsSurface } from '@central-design-system/components';
|
|
84
|
+
|
|
85
|
+
const rows = [
|
|
86
|
+
{ label: 'Позиций', value: '12' },
|
|
87
|
+
{ label: 'Доставка', value: '1 500 ₽' },
|
|
88
|
+
{ label: 'Итого', value: '48 900 ₽' }
|
|
89
|
+
];
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<template>
|
|
93
|
+
<CdsSurface tag="section" color="surface-secondary" class="w-[320px] m-auto p-4 rounded-200">
|
|
94
|
+
<div class="flex flex-col gap-1">
|
|
95
|
+
<div v-for="row of rows" :key="row.label" class="flex justify-between">
|
|
96
|
+
<span>{{ row.label }}</span>
|
|
97
|
+
<b>{{ row.value }}</b>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<CdsDivider class="my-3" />
|
|
102
|
+
|
|
103
|
+
<CdsButton block text="Оформить заказ" />
|
|
104
|
+
</CdsSurface>
|
|
105
|
+
</template>
|
|
106
|
+
```
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# CdsTable — 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 table shows large sets of records in columns and takes the data work off your hands: sorting, filters, pagination, row selection and expansion, a pinned header and pinned columns. Columns are described by the `columns` prop, the records by the `data` prop.
|
|
7
|
+
|
|
8
|
+
Family: [CdsTable](#cdstable) + subcomponents: [CdsTableColumn](#cdstablecolumn), [CdsTableColumnGroup](#cdstablecolumngroup).
|
|
9
|
+
|
|
10
|
+
## CdsTable
|
|
11
|
+
|
|
12
|
+
**Props**
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Default | Required | Description |
|
|
15
|
+
| --- | --- | --- | --- | --- |
|
|
16
|
+
| `bordered` | `boolean \| undefined` | `false` | no | Show every table border |
|
|
17
|
+
| `borderless` | `boolean \| undefined` | `false` | no | Remove every table border |
|
|
18
|
+
| `canExpandable` | `boolean \| undefined` | `false` | no | Rows can be expanded |
|
|
19
|
+
| `childrenColumnName` | `string \| undefined` | `'children'` | no | Name of the property holding the child records |
|
|
20
|
+
| `columnDraggable` | `NTable.NDraggable.TColumnDraggable<any> \| undefined` | — | no | Column drag and drop. `true` or a configuration object `{ icon, disabled, allowDrop }`. Reordering only happens among siblings inside the same group; the consumer changes the order in the `@column-reorder` handler. |
|
|
21
|
+
| `columns` | `NTable.NColumn.TColumns<any> \| undefined` | — | no | Table columns |
|
|
22
|
+
| `components` | `NTable.NCustomize.TableComponents<any> \| undefined` | — | no | Override the default table components |
|
|
23
|
+
| `customHeaderRow` | `NTable.NCustomize.TGetComponentProps<NTable.NColumn.IColumn<any>[]> \| undefined` | — | no | Sets the properties for every header row |
|
|
24
|
+
| `customRow` | `NTable.NCustomize.TGetComponentProps<any> \| undefined` | — | no | Sets the properties for every row |
|
|
25
|
+
| `data` | `any[] \| undefined` | — | no | Array of records to show in the table |
|
|
26
|
+
| `defaultExpandAllRows` | `boolean \| undefined` | `false` | no | All rows are expanded by default |
|
|
27
|
+
| `defaultExpandedRowKeys` | `NTable.TKey[] \| undefined` | `undefined as ITableProps['defaultExpandedRowKeys']` | no | Keys of the rows expanded by default |
|
|
28
|
+
| `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
|
|
29
|
+
| `expandColumnWidth` | `number \| undefined` | — | no | Width of the expand column |
|
|
30
|
+
| `expandedRowClassName` | `NTable.NRow.TClassName<any> \| undefined` | — | no | Classes for rows in the expanded state |
|
|
31
|
+
| `expandedRowKeys` | `NTable.TKey[] \| undefined` | `undefined as ITableProps['expandedRowKeys']` | no | Keys of the currently expanded rows (supports v-model) |
|
|
32
|
+
| `expandedRowRender` | `NTable.NExpand.TExpandedRowRender<any> \| undefined` | — | no | Render function for every expanded row |
|
|
33
|
+
| `expandFixed` | `NTable.TFixed \| undefined` | — | no | Pin the expand column (left \| right \| boolean) |
|
|
34
|
+
| `expandIcon` | `NTable.NExpand.TRenderExpandIcon<any> \| undefined` | — | no | Custom expand icon |
|
|
35
|
+
| `expandIconColumnIndex` | `number \| undefined` | — | no | Index of the column that holds the expand icon |
|
|
36
|
+
| `expandRowByClick` | `boolean \| undefined` | `false` | no | Expand the row by clicking anywhere in it |
|
|
37
|
+
| `footer` | `NTable.NRender.TPanelRender<any> \| undefined` | — | no | Render function for the table footer |
|
|
38
|
+
| `getPopupContainer` | `NTable.NCustomize.TGetPopupContainer \| undefined` | — | no | Container that dropdowns are rendered into |
|
|
39
|
+
| `header` | `NTable.NRender.TPanelRender<any> \| undefined` | — | no | Render function for the table title |
|
|
40
|
+
| `hovered` | `boolean \| undefined` | `false` | no | Highlight the row on hover |
|
|
41
|
+
| `id` | `string \| undefined` | — | no | Table identifier |
|
|
42
|
+
| `indentSize` | `number \| undefined` | `20` | no | Indent size in pixels for each nesting level |
|
|
43
|
+
| `loading` | `boolean \| undefined` | `false` | no | Table loading state |
|
|
44
|
+
| `locale` | `NTable.ILocale \| undefined` | — | no | Table localization (overrides the strings of the global locale) |
|
|
45
|
+
| `pagination` | `false \| NTable.NPagination.IProps \| undefined` | — | no | Table pagination configuration |
|
|
46
|
+
| `readonly` | `boolean \| null \| undefined` | `null` | no | Read-only state |
|
|
47
|
+
| `rowClassName` | `string \| NTable.NRow.TClassName<any> \| undefined` | — | no | Row classes |
|
|
48
|
+
| `rowDraggable` | `NTable.NDraggable.TRowDraggable<any> \| undefined` | — | no | Row drag and drop. `true` or a configuration object `{ icon, disabled, allowDrop }`. Reordering only happens between siblings of the same parent; the consumer changes the order in the `@row-reorder` handler. |
|
|
49
|
+
| `rowExpandable` | `((record: any) => boolean) \| undefined` | — | no | Whether the row can be expanded |
|
|
50
|
+
| `rowKey` | `string \| NTable.NRow.TGetRowKey<any> \| undefined` | `'key'` | no | Unique row key — a string or a function returning a string |
|
|
51
|
+
| `rowSelection` | `NTable.NRow.IRowSelection<any> \| undefined` | — | no | Row selection configuration |
|
|
52
|
+
| `scroll` | `(NTable.TScroll & { scrollToFirstRowOnChange?: boolean \| undefined; }) \| undefined` | — | no | Whether the table can be scrolled |
|
|
53
|
+
| `showExpandColumn` | `boolean \| undefined` | — | no | Show the expand column |
|
|
54
|
+
| `showHeader` | `boolean \| undefined` | — | no | Whether to show the table header |
|
|
55
|
+
| `showSorterTooltip` | `NTable.NSorter.TTooltip \| undefined` | `true` | no | Whether to show sorting tooltips in the header. You can pass an object with CdsTooltip properties. |
|
|
56
|
+
| `size` | `number \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| undefined` | `'md'` | no | Size of the component |
|
|
57
|
+
| `sortDirection` | `string[] \| undefined` | — | no | Sorting of the table data. 'ascend' \| 'descend' |
|
|
58
|
+
| `sticky` | `boolean \| NTable.NSticky.ISticky \| undefined` | — | no | Sticky behavior for the header and the scrollbar |
|
|
59
|
+
| `tableLayout` | `NTable.TLayout \| undefined` | — | no | Fixed or auto layout |
|
|
60
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
61
|
+
| `toolbar` | `NTable.NRender.TPanelRender<any> \| undefined` | — | no | Render function for the table toolbar |
|
|
62
|
+
| `transformCellText` | `NTable.NCell.TTransformCellText<any> \| undefined` | — | no | Transform the text inside a cell |
|
|
63
|
+
|
|
64
|
+
**Events**
|
|
65
|
+
|
|
66
|
+
| Name | Type | Description |
|
|
67
|
+
| --- | --- | --- |
|
|
68
|
+
| `change` | `[pagination: NTable.NPagination.IProps, filters: Record<string, NTable.TFilterValue \| null>, sorter: NTable.ISorterResult<any> \| NTable.ISorterResult<any>[], extra: NTable.ICurrentData<any>]` | Fired when the pagination, the filters or the sorting change. |
|
|
69
|
+
| `columnReorder` | `[info: NTable.NDraggable.IColumnReorderInfo<any>]` | Fired when a column is dragged. The consumer changes the order of the columns. |
|
|
70
|
+
| `expand` | `[expanded: boolean, record: any]` | Fired when a row is expanded or collapsed. |
|
|
71
|
+
| `expandedRowsChange` | `[expandedKeys: NTable.TKey[]]` | Fired when the set of expanded rows changes. |
|
|
72
|
+
| `resizeColumn` | `[width: number, column: NTable.NColumn.IColumn<any>]` | Fired when a column is resized. |
|
|
73
|
+
| `rowReorder` | `[info: NTable.NDraggable.IRowReorderInfo<any>]` | Fired when a row is dragged. The consumer changes the order of the data. |
|
|
74
|
+
| `update:expandedRowKeys` | `[expandedKeys: NTable.TKey[]]` | Fired when the expanded rows are updated (v-model). |
|
|
75
|
+
|
|
76
|
+
**Slots**
|
|
77
|
+
|
|
78
|
+
| Name | Type | Description |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| `bodyCell` | `{ text: any; value: any; record: any; index: number; column: NTable.NColumn.IColumn<any>; }` | Custom render of a table body cell. |
|
|
81
|
+
| `customFilterDropdown` | `NTable.NColumn.IFilterDropdownProps<any>` | Custom filter dropdown of a column (used together with the column `customFilterDropdown`). |
|
|
82
|
+
| `customFilterIcon` | `{ filtered: boolean; column: NTable.NColumn.IColumn<any>; }` | Custom column filter icon. |
|
|
83
|
+
| `default` | `any` | Declarative column description with CdsTableColumn / CdsTableColumnGroup. |
|
|
84
|
+
| `emptyText` | `any` | Content shown when there is no data. |
|
|
85
|
+
| `expandedRowRender` | `{ record: any; index: number; indent: number; expanded: boolean; }` | Render of the expanded row content. |
|
|
86
|
+
| `expandIcon` | `NTable.NExpand.IRenderExpandIconProps<any>` | Custom row expand icon. |
|
|
87
|
+
| `footer` | `readonly any[]` | Table footer (the panel below the table). |
|
|
88
|
+
| `header` | `readonly any[]` | Table title (the panel above the table). |
|
|
89
|
+
| `headerCell` | `{ title: NTable.NColumn.TTitle<any>; column: NTable.NColumn.IColumn<any>; }` | Custom render of a table header cell. |
|
|
90
|
+
| `summary` | `{ pageData: readonly any[]; }` | Summary row of the table. |
|
|
91
|
+
| `toolbar` | `readonly any[]` | Table toolbar (the panel above the table). |
|
|
92
|
+
|
|
93
|
+
**Exposed**
|
|
94
|
+
|
|
95
|
+
| Name | Type | Description |
|
|
96
|
+
| --- | --- | --- |
|
|
97
|
+
| `table` | `any` | Reference to the internal table instance — gives access to its methods and state. |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## CdsTableColumn
|
|
102
|
+
|
|
103
|
+
**Slots**
|
|
104
|
+
|
|
105
|
+
| Name | Type | Description |
|
|
106
|
+
| --- | --- | --- |
|
|
107
|
+
| `default` | `{ value: any; text: any; record: any; index?: number \| undefined; renderIndex?: number \| undefined; column: NTable.NColumn.IColumn<any>; }` | Custom render of a column cell. |
|
|
108
|
+
| `filterIcon` | `{ filtered: boolean; column: NTable.NColumn.IColumn<any>; }` | Custom column filter icon. |
|
|
109
|
+
| `title` | `NTable.NColumn.ITitleProps<any>` | Column title. |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## CdsTableColumnGroup
|
|
114
|
+
|
|
115
|
+
**Slots**
|
|
116
|
+
|
|
117
|
+
| Name | Type | Description |
|
|
118
|
+
| --- | --- | --- |
|
|
119
|
+
| `default` | `any` | Columns of the group (CdsTableColumn). |
|
|
120
|
+
| `title` | `NTable.NColumn.ITitleProps<any>` | Title of the column group. |
|