@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,101 @@
|
|
|
1
|
+
# Pattern: a form with validation and server errors
|
|
2
|
+
|
|
3
|
+
The basic form assembly is covered in the [Forms](../guides/forms.md) guide.
|
|
4
|
+
This page covers what it does not: waiting for the server response, backend
|
|
5
|
+
errors, and blocking a repeated submit.
|
|
6
|
+
|
|
7
|
+
## Submitting with an awaited response
|
|
8
|
+
|
|
9
|
+
`@submit` on `CdsForm` yields a **Promise with the validation result**, not a
|
|
10
|
+
ready result — await it before sending the request. `.prevent` is mandatory,
|
|
11
|
+
otherwise the browser reloads the page.
|
|
12
|
+
|
|
13
|
+
```vue
|
|
14
|
+
<script setup lang="ts">
|
|
15
|
+
import { CdsButton, CdsForm, CdsNotification, CdsTextInput } from '@central-design-system/components';
|
|
16
|
+
import { ref } from 'vue';
|
|
17
|
+
|
|
18
|
+
const email = ref('');
|
|
19
|
+
const password = ref('');
|
|
20
|
+
const loading = ref(false);
|
|
21
|
+
const formError = ref('');
|
|
22
|
+
|
|
23
|
+
const rules = {
|
|
24
|
+
email: [
|
|
25
|
+
(value: string) => !!value || 'Cannot be empty',
|
|
26
|
+
(value: string) => /.+@.+\..+/.test(value) || 'Invalid format'
|
|
27
|
+
],
|
|
28
|
+
password: [(value: string) => !!value || 'Cannot be empty']
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const submit = async (event: Promise<{ valid: boolean }>): Promise<void> => {
|
|
32
|
+
const { valid } = await event;
|
|
33
|
+
if (!valid) return;
|
|
34
|
+
|
|
35
|
+
loading.value = true;
|
|
36
|
+
formError.value = '';
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
await api.login({ email: email.value, password: password.value });
|
|
40
|
+
} catch (error) {
|
|
41
|
+
formError.value = 'Could not sign in. Check your credentials and try again.';
|
|
42
|
+
} finally {
|
|
43
|
+
loading.value = false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<template>
|
|
49
|
+
<CdsForm class="flex flex-col gap-2" @submit.prevent="submit">
|
|
50
|
+
<CdsTextInput v-model="email" :rules="rules.email" label="Email" />
|
|
51
|
+
<CdsTextInput v-model="password" :rules="rules.password" label="Password" type="password" />
|
|
52
|
+
|
|
53
|
+
<CdsNotification v-if="formError" status="danger" :text="formError" />
|
|
54
|
+
|
|
55
|
+
<CdsButton type="submit" :loading="loading" text="Sign in" />
|
|
56
|
+
</CdsForm>
|
|
57
|
+
</template>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Key points:
|
|
61
|
+
|
|
62
|
+
- `:loading` on the submit button solves two problems at once — it shows
|
|
63
|
+
request progress and guards against a repeated click. No separate spinner
|
|
64
|
+
is needed.
|
|
65
|
+
- A form-level error (network, server rejection) goes into a separate
|
|
66
|
+
`CdsNotification` in the form flow, not into a toast: it belongs to the
|
|
67
|
+
content, not to an event.
|
|
68
|
+
- Spacing: `gap-2` between fields and between buttons; the actions row of a
|
|
69
|
+
multi-button form is right-aligned with the primary action last (see
|
|
70
|
+
SKILL.md, steps 5–6).
|
|
71
|
+
|
|
72
|
+
## Server-side field errors
|
|
73
|
+
|
|
74
|
+
The `rules` are synchronous, so they are not suited for server errors. Keep
|
|
75
|
+
the error for a specific field in a separate ref and add a rule that reads it:
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
const serverErrors = ref<Record<string, string>>({});
|
|
79
|
+
|
|
80
|
+
const rules = {
|
|
81
|
+
email: [
|
|
82
|
+
(value: string) => !!value || 'Cannot be empty',
|
|
83
|
+
() => serverErrors.value.email ?? true
|
|
84
|
+
]
|
|
85
|
+
};
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
After the server responds, fill `serverErrors` and call the form's
|
|
89
|
+
`validate()` via the slot prop or a `ref`. The rule resets once the server
|
|
90
|
+
stops returning an error for that field.
|
|
91
|
+
|
|
92
|
+
## What not to do
|
|
93
|
+
|
|
94
|
+
- Do not disable the submit button with `:disabled="!valid"`. The user does
|
|
95
|
+
not understand why the button will not press; let them press it and show
|
|
96
|
+
the errors.
|
|
97
|
+
- Do not assemble a field from `CdsField` + `CdsInput` when a ready-made
|
|
98
|
+
control exists — you would rebuild `CdsTextInput` by hand and lose its
|
|
99
|
+
error wiring.
|
|
100
|
+
- Do not duplicate the error message next to the field: `CdsMessages` inside
|
|
101
|
+
the control already shows it.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Pattern: page skeleton
|
|
2
|
+
|
|
3
|
+
The application skeleton is assembled from Layouts-category components, not
|
|
4
|
+
from `div`s with manual `position: fixed`. They are already coordinated with
|
|
5
|
+
each other: the header and footer know their height, the side panel knows its
|
|
6
|
+
width, and the main content gets the right offsets on its own.
|
|
7
|
+
|
|
8
|
+
## Building blocks
|
|
9
|
+
|
|
10
|
+
| Component | Role |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| `CdsApp` | Application root. |
|
|
13
|
+
| `CdsLayout` | Skeleton: lays out the header, side panels, content, and footer. |
|
|
14
|
+
| `CdsHeader` | Application header. |
|
|
15
|
+
| `CdsDrawer` | Side navigation panel. |
|
|
16
|
+
| `CdsMain` | Main content wrapper. |
|
|
17
|
+
| `CdsFooter` | Footer. |
|
|
18
|
+
| `CdsPage` | Wrapper for a specific page's content inside `CdsMain`. |
|
|
19
|
+
|
|
20
|
+
## Assembly
|
|
21
|
+
|
|
22
|
+
```vue
|
|
23
|
+
<script setup lang="ts">
|
|
24
|
+
import {
|
|
25
|
+
CdsApp,
|
|
26
|
+
CdsDrawer,
|
|
27
|
+
CdsFooter,
|
|
28
|
+
CdsHeader,
|
|
29
|
+
CdsLayout,
|
|
30
|
+
CdsMain,
|
|
31
|
+
CdsPage
|
|
32
|
+
} from '@central-design-system/components';
|
|
33
|
+
import { ref } from 'vue';
|
|
34
|
+
|
|
35
|
+
const drawerOpen = ref(true);
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<template>
|
|
39
|
+
<CdsApp>
|
|
40
|
+
<CdsLayout>
|
|
41
|
+
<CdsHeader>Header</CdsHeader>
|
|
42
|
+
|
|
43
|
+
<CdsDrawer v-model="drawerOpen">Navigation</CdsDrawer>
|
|
44
|
+
|
|
45
|
+
<CdsMain>
|
|
46
|
+
<CdsPage>
|
|
47
|
+
<router-view />
|
|
48
|
+
</CdsPage>
|
|
49
|
+
</CdsMain>
|
|
50
|
+
|
|
51
|
+
<CdsFooter>Footer</CdsFooter>
|
|
52
|
+
</CdsLayout>
|
|
53
|
+
</CdsApp>
|
|
54
|
+
</template>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Layout scheme
|
|
58
|
+
|
|
59
|
+
The `view` prop on `CdsLayout` defines a three-row scheme — top, middle,
|
|
60
|
+
bottom. The default value `'hhh lpr fff'` means: full-width header, left
|
|
61
|
+
panel / content / right panel in the middle, full-width footer.
|
|
62
|
+
|
|
63
|
+
If the header should start after the side panel, the scheme changes to
|
|
64
|
+
`'lhh lpr lff'` — the panel occupies its column in all three rows.
|
|
65
|
+
|
|
66
|
+
The `container` prop switches the layout into a mode where it scrolls itself
|
|
67
|
+
rather than the page. Needed when the skeleton is embedded into another
|
|
68
|
+
interface.
|
|
69
|
+
|
|
70
|
+
## What not to do
|
|
71
|
+
|
|
72
|
+
- Do not offset the content under a fixed header manually (`padding-top: 64px`).
|
|
73
|
+
`CdsMain` inside `CdsLayout` computes this itself, and the hardcoded value
|
|
74
|
+
breaks when the header size changes.
|
|
75
|
+
- Do not replace `CdsDrawer` with your own panel built on `CdsSurface` — you
|
|
76
|
+
lose consistency with the layout and the mobile behavior.
|
|
77
|
+
- `CdsDrawer` is app-level navigation. A panel with a form that slides in from
|
|
78
|
+
the side on a user action is `CdsModal`.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Pattern: a data list with filters and an empty state
|
|
2
|
+
|
|
3
|
+
A list screen almost never consists of a single table: it has filters,
|
|
4
|
+
loading, pagination, and at least two empty states. A common mistake is
|
|
5
|
+
building the table by hand out of `CdsList` and markup: sorting, sticky
|
|
6
|
+
header, and expandable rows already exist in `CdsTable`.
|
|
7
|
+
|
|
8
|
+
## Data contract
|
|
9
|
+
|
|
10
|
+
`CdsTable` accepts `columns` (column definitions) and `data` (an array of
|
|
11
|
+
rows) — not `headers` / `items`. The full list of props, including expandable
|
|
12
|
+
rows, fixed columns, and drag-and-drop, is in
|
|
13
|
+
[api.md](../components/cds-table/api.md).
|
|
14
|
+
|
|
15
|
+
```vue
|
|
16
|
+
<script setup lang="ts">
|
|
17
|
+
import { CdsEmptyState, CdsTable, CdsTextInput } from '@central-design-system/components';
|
|
18
|
+
import { computed, ref } from 'vue';
|
|
19
|
+
|
|
20
|
+
const search = ref('');
|
|
21
|
+
const loading = ref(false);
|
|
22
|
+
const rows = ref<Order[]>([]);
|
|
23
|
+
|
|
24
|
+
const columns = [
|
|
25
|
+
{ title: 'Number', dataIndex: 'number', key: 'number' },
|
|
26
|
+
{ title: 'Customer', dataIndex: 'customer', key: 'customer' },
|
|
27
|
+
{ title: 'Status', dataIndex: 'status', key: 'status' }
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
const filtered = computed(() =>
|
|
31
|
+
rows.value.filter((row) => row.customer.toLowerCase().includes(search.value.toLowerCase()))
|
|
32
|
+
);
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<div class="flex flex-col gap-4">
|
|
37
|
+
<CdsTextInput v-model="search" label="Search by customer" prepend-inner-icon="search" />
|
|
38
|
+
|
|
39
|
+
<CdsTable :columns="columns" :data="filtered" :loading="loading" />
|
|
40
|
+
|
|
41
|
+
<CdsEmptyState
|
|
42
|
+
v-if="!loading && filtered.length === 0 && search"
|
|
43
|
+
title="Nothing found"
|
|
44
|
+
text="Try changing the search criteria."
|
|
45
|
+
/>
|
|
46
|
+
<CdsEmptyState
|
|
47
|
+
v-else-if="!loading && rows.length === 0"
|
|
48
|
+
title="No orders yet"
|
|
49
|
+
text="Orders will appear here as soon as you create them."
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
</template>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Two distinct empty states
|
|
56
|
+
|
|
57
|
+
There are always two, and they must not be confused:
|
|
58
|
+
|
|
59
|
+
- **No data at all** — explain what will appear here and offer an action
|
|
60
|
+
("Create order").
|
|
61
|
+
- **The filter found nothing** — say that the filter is the reason and offer
|
|
62
|
+
to reset it. Do not show "create your first order" here: orders exist.
|
|
63
|
+
|
|
64
|
+
## Loading
|
|
65
|
+
|
|
66
|
+
The `loading` prop on `CdsTable` shows the loading state of the table itself.
|
|
67
|
+
For the screen's first load, when even the shape of the data is unknown,
|
|
68
|
+
`CdsSkeletonLoader` fits — it keeps the layout from jumping when the content
|
|
69
|
+
appears.
|
|
70
|
+
|
|
71
|
+
The empty state must not show while loading is in progress — hence the
|
|
72
|
+
`!loading` in the conditions above. Otherwise the user sees "nothing here"
|
|
73
|
+
for a second.
|
|
74
|
+
|
|
75
|
+
## Server-side data
|
|
76
|
+
|
|
77
|
+
With server-side pagination and filtering, do not filter `data` on the
|
|
78
|
+
client: send the query parameters and put whatever the server returned into
|
|
79
|
+
`data`. Pagination is configured via the `pagination` prop.
|
|
80
|
+
|
|
81
|
+
## What not to do
|
|
82
|
+
|
|
83
|
+
- Do not build a table out of `CdsList` or `div`s when you need columns.
|
|
84
|
+
- Do not hide pagination when there is a single page but a lot of data — it
|
|
85
|
+
breaks the user's expectation when they return to the screen.
|
|
86
|
+
- Do not write "No data" without an explanation: an empty screen must suggest
|
|
87
|
+
the next step.
|