@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,63 @@
|
|
|
1
|
+
# CdsDatePicker — 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 calendar for picking a date — a single one, several or a range. It lives right on the page or in a dropdown menu next to a field; the value is a string in the given format (`DD.MM.YYYY` by default), which is convenient to store and to send to the server.
|
|
7
|
+
|
|
8
|
+
## CdsDatePicker
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `allowedDates` | `TCalendarAllowedDates \| undefined` | — | no | Array of dates available in the calendar. When a function is used, it receives the date in the YYYY/MM/DD format and must return true or false. |
|
|
15
|
+
| `defaultYearMonth` | `string \| undefined` | — | no | Displayed year/month in the YYYY/MM format. The current year/month by default when v-model is not set. |
|
|
16
|
+
| `description` | `string \| undefined` | — | no | Description of the calendar. Shown in the calendar header. |
|
|
17
|
+
| `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
|
|
18
|
+
| `emitImmediately` | `boolean \| undefined` | — | no | Emit the update:modelValue event right when the month or the year changes. Not available with multiple and range. |
|
|
19
|
+
| `events` | `TCalendarEvents \| undefined` | — | no | List of events shown in the calendar. Format: YYYY/MM/DD. |
|
|
20
|
+
| `eventsColor` | `TCalendarEventsColor \| undefined` | `'default'` | no | Color of the events in the calendar. |
|
|
21
|
+
| `firstDayOfWeek` | `string \| number \| undefined` | `1` | no | First day of the week (Monday by default). |
|
|
22
|
+
| `header` | `boolean \| undefined` | — | no | Show the calendar header |
|
|
23
|
+
| `hideSiblingMonth` | `boolean \| undefined` | — | no | Hide the days of the neighboring months in the calendar. |
|
|
24
|
+
| `locale` | `string \| TDateLocale \| undefined` | — | no | Locale for the dates. A locale name ('ru' \| 'en') or a `TDateLocale` object. The current locale from `useLocale` is taken by default, otherwise `ru`. |
|
|
25
|
+
| `mask` | `string \| undefined` | `'DD.MM.YYYY'` | no | Date/time format |
|
|
26
|
+
| `maxYearMonth` | `string \| undefined` | — | no | Forbid navigating the calendar past the given maximum date in the YYYY/MM format. |
|
|
27
|
+
| `minYearMonth` | `string \| undefined` | — | no | Forbid navigating the calendar before the given minimum date in the YYYY/MM format. |
|
|
28
|
+
| `modelValue` | `string \| TDatetimeValueRange \| (string \| TDatetimeValueRange)[] \| null \| undefined` | `null` | no | Value of the model |
|
|
29
|
+
| `multiple` | `boolean \| undefined` | — | no | Allows selecting several dates. The v-model must be an array. |
|
|
30
|
+
| `noUnset` | `boolean \| undefined` | — | no | Forbid resetting the date in the calendar. |
|
|
31
|
+
| `range` | `boolean \| undefined` | — | no | Allows selecting a range of dates. The v-model must be an array. |
|
|
32
|
+
| `readonly` | `boolean \| null \| undefined` | `null` | no | Read-only state |
|
|
33
|
+
| `theme` | `string \| undefined` | — | no | Component theme |
|
|
34
|
+
| `title` | `string \| undefined` | — | no | Title of the calendar. Shown in the calendar header. |
|
|
35
|
+
| `todayBtn` | `boolean \| undefined` | — | no | Show the "Today" button in the calendar header |
|
|
36
|
+
| `view` | `"Calendar" \| "Years" \| "Months" \| undefined` | `'Calendar'` | no | Default calendar view. Possible values: 'Calendar', 'Years', 'Months'. |
|
|
37
|
+
|
|
38
|
+
**Events**
|
|
39
|
+
|
|
40
|
+
| Name | Type | Description |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
| `navigation` | `[payload: { year: number \| undefined; month: number \| undefined; }]` | Navigation to another month or year (also fires when the model is changed from outside). |
|
|
43
|
+
| `rangeEnd` | `[payload: { from: Partial<IRawDate>; to: Partial<IRawDate>; }]` | End of a date range selection. |
|
|
44
|
+
| `rangeStart` | `[value: Partial<IRawDate>]` | Start of a date range selection. |
|
|
45
|
+
| `update:modelValue` | `[value: string \| TDatetimeValueRange \| (string \| TDatetimeValueRange)[] \| null, reason: string, details: Partial<IRawDate>]` | The value changed (v-model). Passes the value, the reason of the change and the details of the date. |
|
|
46
|
+
|
|
47
|
+
**Slots**
|
|
48
|
+
|
|
49
|
+
| Name | Type | Description |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| `default` | `any` | Additional buttons under the calendar. |
|
|
52
|
+
| `description` | `{ year: string \| number \| undefined; }` | Description of the title. |
|
|
53
|
+
| `title` | `{ date: string; }` | Title of the calendar. |
|
|
54
|
+
|
|
55
|
+
**Exposed**
|
|
56
|
+
|
|
57
|
+
| Name | Type | Description |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| `offsetCalendar` | `(type: "year" \| "month", descending: number) => void` | Moves the calendar one step forward or backward by months or by years. |
|
|
60
|
+
| `setCalendarTo` | `(year: number, month: number) => void` | Scrolls the calendar to the given year and month without changing the selected value. |
|
|
61
|
+
| `setEditingRange` | `(from: IRawDate, to: IRawDate) => void` | Sets the highlighted date range in `range` mode without confirming the selection. |
|
|
62
|
+
| `setToday` | `() => void` | Selects today's date and scrolls the calendar to the current month. |
|
|
63
|
+
| `setView` | `(viewMode: "Calendar" \| "Years" \| "Months") => void` | Switches the calendar view: days, months or years. |
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
# CdsDatePicker — 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 calendar for picking a date — a single one, several or a range. It lives right on the page or in a dropdown menu next to a field; the value is a string in the given format (`DD.MM.YYYY` by default), which is convenient to store and to send to the server.
|
|
7
|
+
|
|
8
|
+
## Value and format
|
|
9
|
+
|
|
10
|
+
The chosen date arrives in `v-model` as a string in the `mask` format — `DD.MM.YYYY` by default. A repeated click on the selected day clears the selection; `no-unset` forbids such a reset, and `hide-sibling-month` hides the days of the neighboring months.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
17
|
+
import { ref } from 'vue';
|
|
18
|
+
|
|
19
|
+
const value = ref<string | null>(null);
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<div class="flex flex-col items-center gap-2">
|
|
24
|
+
<CdsDatePicker v-model="value" />
|
|
25
|
+
|
|
26
|
+
<span class="text-200 text-content-secondary">Значение: {{ value ?? '—' }}</span>
|
|
27
|
+
</div>
|
|
28
|
+
</template>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Header
|
|
32
|
+
|
|
33
|
+
`header` turns on the header with the summary of the choice: the title shows the date or the number of the chosen days, the description — the year. The texts are replaced by the `title` and `description` props or by the slots of the same name. `today-btn` adds a button that brings you back to the current day.
|
|
34
|
+
|
|
35
|
+
**Example (SFC):**
|
|
36
|
+
|
|
37
|
+
```vue
|
|
38
|
+
<script setup lang="ts">
|
|
39
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
40
|
+
import { ref } from 'vue';
|
|
41
|
+
|
|
42
|
+
const value = ref<string | null>(null);
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<div class="w-fit m-auto">
|
|
47
|
+
<CdsDatePicker v-model="value" header today-btn />
|
|
48
|
+
</div>
|
|
49
|
+
</template>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## A date range
|
|
53
|
+
|
|
54
|
+
`range` switches the calendar to picking a period: the first click fixes the start (the `range-start` event), the second one — the end (`range-end`), and the value arrives as a `{ from, to }` object. Together with `multiple` several periods can be picked.
|
|
55
|
+
|
|
56
|
+
**Example (SFC):**
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
<script setup lang="ts">
|
|
60
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
61
|
+
import { ref } from 'vue';
|
|
62
|
+
|
|
63
|
+
const value = ref<{ from: string; to: string } | string | null>(null);
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<template>
|
|
67
|
+
<div class="flex flex-col items-center gap-2">
|
|
68
|
+
<CdsDatePicker v-model="value" range header />
|
|
69
|
+
|
|
70
|
+
<span class="text-200 text-content-secondary">Значение: {{ value ? JSON.stringify(value) : '—' }}</span>
|
|
71
|
+
</div>
|
|
72
|
+
</template>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Several dates
|
|
76
|
+
|
|
77
|
+
`multiple` allows marking individual dates — the model becomes an array of strings.
|
|
78
|
+
|
|
79
|
+
**Example (SFC):**
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<script setup lang="ts">
|
|
83
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
84
|
+
import { ref } from 'vue';
|
|
85
|
+
|
|
86
|
+
const value = ref<string[]>([]);
|
|
87
|
+
</script>
|
|
88
|
+
|
|
89
|
+
<template>
|
|
90
|
+
<div class="flex flex-col items-center gap-2">
|
|
91
|
+
<CdsDatePicker v-model="value" multiple header />
|
|
92
|
+
|
|
93
|
+
<span class="text-200 text-content-secondary">Значение: {{ JSON.stringify(value) }}</span>
|
|
94
|
+
</div>
|
|
95
|
+
</template>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Events
|
|
99
|
+
|
|
100
|
+
`events` marks dates with dots: it accepts an array of dates in the `YYYY/MM/DD` format or a predicate function. The color of a dot is set by `events-color` — as a string or as a function of the date, when there are several types of events.
|
|
101
|
+
|
|
102
|
+
**Example (SFC):**
|
|
103
|
+
|
|
104
|
+
```vue
|
|
105
|
+
<script setup lang="ts">
|
|
106
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
107
|
+
import { ref } from 'vue';
|
|
108
|
+
|
|
109
|
+
const value = ref<string | null>(null);
|
|
110
|
+
const now = new Date();
|
|
111
|
+
const ym = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}`;
|
|
112
|
+
const events = [`${ym}/05`, `${ym}/12`, `${ym}/20`];
|
|
113
|
+
</script>
|
|
114
|
+
|
|
115
|
+
<template>
|
|
116
|
+
<div class="w-fit m-auto">
|
|
117
|
+
<CdsDatePicker v-model="value" :events="events" events-color="success" />
|
|
118
|
+
</div>
|
|
119
|
+
</template>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Available dates
|
|
123
|
+
|
|
124
|
+
`allowed-dates` limits the choice: an array of dates or a function that receives a `YYYY/MM/DD` date and returns whether it can be picked. The rest of the days are turned off.
|
|
125
|
+
|
|
126
|
+
**Example (SFC):**
|
|
127
|
+
|
|
128
|
+
```vue
|
|
129
|
+
<script setup lang="ts">
|
|
130
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
131
|
+
import { ref } from 'vue';
|
|
132
|
+
|
|
133
|
+
const value = ref<string | null>(null);
|
|
134
|
+
// Разрешаем выбирать только будни.
|
|
135
|
+
const allowedDates = (date: string) => {
|
|
136
|
+
const [y, m, d] = date.split('/').map(Number);
|
|
137
|
+
const day = new Date(y, m - 1, d).getDay();
|
|
138
|
+
return day !== 0 && day !== 6;
|
|
139
|
+
};
|
|
140
|
+
</script>
|
|
141
|
+
|
|
142
|
+
<template>
|
|
143
|
+
<div class="w-fit m-auto">
|
|
144
|
+
<CdsDatePicker v-model="value" :allowed-dates="allowedDates" />
|
|
145
|
+
</div>
|
|
146
|
+
</template>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Navigation bounds
|
|
150
|
+
|
|
151
|
+
`min-year-month` and `max-year-month` (the `YYYY/MM` format) do not let you go beyond the range — the arrows at the bound are turned off. Watch the moves between months through the `navigation` event.
|
|
152
|
+
|
|
153
|
+
**Example (SFC):**
|
|
154
|
+
|
|
155
|
+
```vue
|
|
156
|
+
<script setup lang="ts">
|
|
157
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
158
|
+
import { ref } from 'vue';
|
|
159
|
+
|
|
160
|
+
const value = ref<string | null>(null);
|
|
161
|
+
const year = new Date().getFullYear();
|
|
162
|
+
const min = `${year}/01`;
|
|
163
|
+
const max = `${year}/12`;
|
|
164
|
+
</script>
|
|
165
|
+
|
|
166
|
+
<template>
|
|
167
|
+
<div class="w-fit m-auto">
|
|
168
|
+
<CdsDatePicker v-model="value" :min-year-month="min" :max-year-month="max" />
|
|
169
|
+
</div>
|
|
170
|
+
</template>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Starting view
|
|
174
|
+
|
|
175
|
+
`view` opens the calendar right at the list of months (`Months`) or years (`Years`) — handy for dates far from the current one. `default-year-month` sets the starting month when the model is empty.
|
|
176
|
+
|
|
177
|
+
**Example (SFC):**
|
|
178
|
+
|
|
179
|
+
```vue
|
|
180
|
+
<script setup lang="ts">
|
|
181
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
182
|
+
import { ref } from 'vue';
|
|
183
|
+
|
|
184
|
+
const value = ref<string | null>(null);
|
|
185
|
+
</script>
|
|
186
|
+
|
|
187
|
+
<template>
|
|
188
|
+
<div class="w-fit m-auto">
|
|
189
|
+
<CdsDatePicker v-model="value" view="Months" />
|
|
190
|
+
</div>
|
|
191
|
+
</template>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Localization
|
|
195
|
+
|
|
196
|
+
`locale` accepts a locale name (`ru` | `en`) or your own object of translations; without the prop the locale of the application is used. `first-day-of-week` sets the first day of the week — for `en` it is usually Sunday.
|
|
197
|
+
|
|
198
|
+
**Example (SFC):**
|
|
199
|
+
|
|
200
|
+
```vue
|
|
201
|
+
<script setup lang="ts">
|
|
202
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
203
|
+
import { ref } from 'vue';
|
|
204
|
+
|
|
205
|
+
const value = ref<string | null>(null);
|
|
206
|
+
</script>
|
|
207
|
+
|
|
208
|
+
<template>
|
|
209
|
+
<div class="w-fit m-auto">
|
|
210
|
+
<CdsDatePicker v-model="value" locale="en" :first-day-of-week="0" header />
|
|
211
|
+
</div>
|
|
212
|
+
</template>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## States
|
|
216
|
+
|
|
217
|
+
`disabled` turns the calendar off and dims it, `readonly` keeps the usual look but blocks both the selection and the navigation.
|
|
218
|
+
|
|
219
|
+
**Example (SFC):**
|
|
220
|
+
|
|
221
|
+
```vue
|
|
222
|
+
<script setup lang="ts">
|
|
223
|
+
import { CdsDatePicker } from '@central-design-system/components';
|
|
224
|
+
import { ref } from 'vue';
|
|
225
|
+
|
|
226
|
+
const now = new Date();
|
|
227
|
+
const value = ref(`15.${String(now.getMonth() + 1).padStart(2, '0')}.${now.getFullYear()}`);
|
|
228
|
+
</script>
|
|
229
|
+
|
|
230
|
+
<template>
|
|
231
|
+
<div class="flex flex-wrap justify-center gap-2">
|
|
232
|
+
<div class="w-fit">
|
|
233
|
+
<CdsDatePicker v-model="value" disabled header />
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
<div class="w-fit">
|
|
237
|
+
<CdsDatePicker v-model="value" readonly header />
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
</template>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## A field with a date
|
|
244
|
+
|
|
245
|
+
Most often the calendar lives not on the page but in a menu next to a text field. [CdsDateInput](../cds-date-input/api.md) exists for that — it is already assembled out of a field, a menu and the calendar, it parses the manual input and accepts all the calendar props directly. Build the control yourself only if you need a non-standard scheme: out of [CdsTextInput](../cds-text-input/api.md), a [CdsMenu](../cds-menu/api.md) with `activator="parent"` and the calendar — that way all the props and slots of the field and the menu stay available to you. In that case add the input mask yourself: we recommend the lightweight (2.5 KB) [Maska](https://github.com/beholdr/maska) library.
|
|
246
|
+
|
|
247
|
+
**Example (SFC):**
|
|
248
|
+
|
|
249
|
+
```vue
|
|
250
|
+
<script setup lang="ts">
|
|
251
|
+
import { CdsDatePicker, CdsMenu, CdsTextInput } from '@central-design-system/components';
|
|
252
|
+
import { vMaska } from 'maska/vue';
|
|
253
|
+
import { ref } from 'vue';
|
|
254
|
+
|
|
255
|
+
const date = ref('22.02.2022');
|
|
256
|
+
</script>
|
|
257
|
+
|
|
258
|
+
<template>
|
|
259
|
+
<div class="w-[250px] m-auto">
|
|
260
|
+
<CdsTextInput
|
|
261
|
+
v-model="date"
|
|
262
|
+
v-maska="'##.##.####'"
|
|
263
|
+
label="Дата"
|
|
264
|
+
placeholder="Выберите дату"
|
|
265
|
+
append-inner-icon="calendar"
|
|
266
|
+
>
|
|
267
|
+
<CdsMenu activator="parent" :close-on-content-click="false">
|
|
268
|
+
<CdsDatePicker v-model="date" />
|
|
269
|
+
</CdsMenu>
|
|
270
|
+
</CdsTextInput>
|
|
271
|
+
</div>
|
|
272
|
+
</template>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## A reporting period
|
|
276
|
+
|
|
277
|
+
The default slot adds actions under the calendar. Here the chosen range is a draft: it gets into the report only after the "Apply" button, while "Reset" returns the calendar to its initial state.
|
|
278
|
+
|
|
279
|
+
**Example (SFC):**
|
|
280
|
+
|
|
281
|
+
```vue
|
|
282
|
+
<script setup lang="ts">
|
|
283
|
+
import { CdsButton, CdsCard, CdsDatePicker } from '@central-design-system/components';
|
|
284
|
+
import { ref } from 'vue';
|
|
285
|
+
|
|
286
|
+
type TRange = { from: string; to: string };
|
|
287
|
+
|
|
288
|
+
const draft = ref<TRange | string | null>(null);
|
|
289
|
+
const period = ref<string | null>(null);
|
|
290
|
+
|
|
291
|
+
function apply() {
|
|
292
|
+
if (!draft.value) {
|
|
293
|
+
period.value = null;
|
|
294
|
+
} else if (typeof draft.value === 'string') {
|
|
295
|
+
period.value = draft.value;
|
|
296
|
+
} else {
|
|
297
|
+
period.value = `${draft.value.from} — ${draft.value.to}`;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
function reset() {
|
|
302
|
+
draft.value = null;
|
|
303
|
+
period.value = null;
|
|
304
|
+
}
|
|
305
|
+
</script>
|
|
306
|
+
|
|
307
|
+
<template>
|
|
308
|
+
<div class="flex flex-col items-center gap-2">
|
|
309
|
+
<CdsCard class="w-fit">
|
|
310
|
+
<CdsDatePicker v-model="draft" range header>
|
|
311
|
+
<div class="flex justify-end gap-2">
|
|
312
|
+
<CdsButton appearance="tertiary" size="sm" text="Сбросить" @click="reset" />
|
|
313
|
+
<CdsButton size="sm" text="Принять" @click="apply" />
|
|
314
|
+
</div>
|
|
315
|
+
</CdsDatePicker>
|
|
316
|
+
</CdsCard>
|
|
317
|
+
|
|
318
|
+
<span class="text-200 text-content-secondary">Период отчёта: {{ period ?? 'не выбран' }}</span>
|
|
319
|
+
</div>
|
|
320
|
+
</template>
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## A delivery date
|
|
324
|
+
|
|
325
|
+
The restrictions work together: `allowed-dates` leaves only the weekdays, and `min-year-month` and `max-year-month` do not let you go beyond the nearest two months — the unavailable options do not even have to be explained.
|
|
326
|
+
|
|
327
|
+
**Example (SFC):**
|
|
328
|
+
|
|
329
|
+
```vue
|
|
330
|
+
<script setup lang="ts">
|
|
331
|
+
import { CdsCard, CdsDatePicker } from '@central-design-system/components';
|
|
332
|
+
import { ref } from 'vue';
|
|
333
|
+
|
|
334
|
+
const date = ref<string | null>(null);
|
|
335
|
+
|
|
336
|
+
const pad = (value: number) => String(value).padStart(2, '0');
|
|
337
|
+
|
|
338
|
+
// Доставка доступна по будням в ближайшие два месяца.
|
|
339
|
+
const now = new Date();
|
|
340
|
+
const firstDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
341
|
+
const lastDay = new Date(now.getFullYear(), now.getMonth() + 2, 0);
|
|
342
|
+
|
|
343
|
+
const min = `${firstDay.getFullYear()}/${pad(firstDay.getMonth() + 1)}`;
|
|
344
|
+
const max = `${lastDay.getFullYear()}/${pad(lastDay.getMonth() + 1)}`;
|
|
345
|
+
|
|
346
|
+
const allowedDates = (hash: string) => {
|
|
347
|
+
const [year, month, day] = hash.split('/').map(Number);
|
|
348
|
+
const candidate = new Date(year, month - 1, day);
|
|
349
|
+
const weekday = candidate.getDay();
|
|
350
|
+
|
|
351
|
+
return weekday !== 0 && weekday !== 6 && candidate >= firstDay && candidate <= lastDay;
|
|
352
|
+
};
|
|
353
|
+
</script>
|
|
354
|
+
|
|
355
|
+
<template>
|
|
356
|
+
<div class="flex flex-col items-center gap-2">
|
|
357
|
+
<CdsCard class="w-fit">
|
|
358
|
+
<CdsDatePicker v-model="date" :allowed-dates="allowedDates" :min-year-month="min" :max-year-month="max" />
|
|
359
|
+
</CdsCard>
|
|
360
|
+
|
|
361
|
+
<span class="text-200 text-content-secondary">
|
|
362
|
+
{{ date ? `Привезём ${date} с 10:00 до 18:00` : 'Выберите дату доставки' }}
|
|
363
|
+
</span>
|
|
364
|
+
</div>
|
|
365
|
+
</template>
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Date and time
|
|
369
|
+
|
|
370
|
+
The calendar does not pick the time — put a [CdsTimePicker](../cds-time-picker/api.md) next to it with a shared model and the same `DD.MM.YYYY HH:mm` mask: every component changes its own part of the string. In a field the very same thing is turned on by a single prop — `with-time` on [CdsDateInput](../cds-date-input/api.md).
|
|
371
|
+
|
|
372
|
+
**Example (SFC):**
|
|
373
|
+
|
|
374
|
+
```vue
|
|
375
|
+
<script setup lang="ts">
|
|
376
|
+
import { CdsCard, CdsDatePicker, CdsDivider, CdsTimePicker } from '@central-design-system/components';
|
|
377
|
+
import { ref } from 'vue';
|
|
378
|
+
|
|
379
|
+
const now = new Date();
|
|
380
|
+
const dateTime = ref(`15.${String(now.getMonth() + 1).padStart(2, '0')}.${now.getFullYear()} 12:35`);
|
|
381
|
+
</script>
|
|
382
|
+
|
|
383
|
+
<template>
|
|
384
|
+
<div class="flex flex-col items-center gap-2">
|
|
385
|
+
<CdsCard class="flex w-fit flex-col">
|
|
386
|
+
<CdsDatePicker v-model="dateTime" mask="DD.MM.YYYY HH:mm" header today-btn />
|
|
387
|
+
<CdsDivider />
|
|
388
|
+
<CdsTimePicker v-model="dateTime" mask="DD.MM.YYYY HH:mm" />
|
|
389
|
+
</CdsCard>
|
|
390
|
+
|
|
391
|
+
<span class="text-200 text-content-secondary">Значение: {{ dateTime }}</span>
|
|
392
|
+
</div>
|
|
393
|
+
</template>
|
|
394
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CdsDatePicker — 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
|
+
| Unavailable days are turned off through allowed-dates — a wrong choice is impossible. | Every day looks available, and the user learns that weekends do not fit from an error only after the choice. |
|
|
9
|
+
| Turn the header on when picking a range — it shows the whole chosen period. | Without the header the result of the choice is captioned nowhere: the user counts the days by the highlight. |
|
|
10
|
+
| Only meaningful dates are marked with events — the dots are noticeable and guide the eye. | An event on every day turns the marks into noise: the calendar stops telling anything. |
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# CdsDatePicker — 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
|
+
## _CdsDatePicker.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
@use '../../../styles/tools';
|
|
11
|
+
|
|
12
|
+
$date-picker-color: (
|
|
13
|
+
'background': transparent,
|
|
14
|
+
'color': rgb(var(--cds-color-content-primary)),
|
|
15
|
+
'weekdays': rgb(var(--cds-color-content-placeholder)),
|
|
16
|
+
'holiday': rgb(var(--cds-color-status-danger-content)),
|
|
17
|
+
'hover': rgb(var(--cds-color-fill-primary-hover)),
|
|
18
|
+
'fill-day': rgb(var(--cds-color-fill-disable)),
|
|
19
|
+
'today': rgb(var(--cds-color-brand-primary)),
|
|
20
|
+
'border': rgb(var(--cds-color-line-tertiary)),
|
|
21
|
+
'label': rgb(var(--cds-color-content-primary)),
|
|
22
|
+
'description': rgb(var(--cds-color-content-secondary)),
|
|
23
|
+
'dot-default': rgb(var(--cds-color-brand-primary)),
|
|
24
|
+
'dot-success': rgb(var(--cds-color-status-success-surface)),
|
|
25
|
+
'dot-danger': rgb(var(--cds-color-status-danger-surface)),
|
|
26
|
+
'dot-warning': rgb(var(--cds-color-status-warning-surface)),
|
|
27
|
+
'dot-active': rgb(var(--cds-color-content-on-dark)),
|
|
28
|
+
'range': rgb(var(--cds-color-brand-secondary)),
|
|
29
|
+
'range-hover': rgb(var(--cds-color-brand-secondary-hover)),
|
|
30
|
+
'range-edit': rgb(var(--cds-color-brand-secondary)),
|
|
31
|
+
'range-edit-day': rgb(var(--cds-color-brand-primary)),
|
|
32
|
+
'range-edit-text': rgb(var(--cds-color-content-on-dark)),
|
|
33
|
+
'range-edit-hover': rgb(var(--cds-color-brand-primary-hover)),
|
|
34
|
+
'range-edit-active': rgb(var(--cds-color-brand-primary-active)),
|
|
35
|
+
'disabled': rgb(var(--cds-color-content-disable)),
|
|
36
|
+
'out': rgb(var(--cds-color-content-disable)),
|
|
37
|
+
) !default;
|
|
38
|
+
$date-picker-calendar-width: tools.to-rem(248px) !default;
|
|
39
|
+
$date-picker-calendar-height: tools.to-rem(316px) !default;
|
|
40
|
+
$date-picker-calendar-padding: var(--cds-spacing-300) !default;
|
|
41
|
+
$date-picker-calendar-navigation-month-width: tools.to-rem(79px) !default;
|
|
42
|
+
$date-picker-calendar-navigation-years-width: tools.to-rem(48px) !default;
|
|
43
|
+
$date-picker-calendar-navigation-padding: var(--cds-spacing-200) 0 !default;
|
|
44
|
+
$date-picker-calendar-navigation-gap: var(--cds-spacing-100) 0 !default;
|
|
45
|
+
$date-picker-header-padding: var(--cds-spacing-200) var(--cds-spacing-400) !default;
|
|
46
|
+
$date-picker-header-border: var(--cds-border-100) solid !default;
|
|
47
|
+
$date-picker-days-gap: var(--cds-spacing-100) !default;
|
|
48
|
+
$date-picker-days-width: tools.to-rem(192px) !default;
|
|
49
|
+
$date-picker-day-width: tools.to-rem(32px) !default;
|
|
50
|
+
$date-picker-day-height: tools.to-rem(32px) !default;
|
|
51
|
+
$date-picker-day-border: var(--cds-border-100) solid !default;
|
|
52
|
+
$date-picker-day-border-radius: var(--cds-border-radius-100) !default;
|
|
53
|
+
$date-picker-day-dot: tools.to-rem(4px) !default;
|
|
54
|
+
$date-picker-day-dot-gap: var(--cds-spacing-100) !default;
|
|
55
|
+
$date-picker-weekdays-width: tools.to-rem(32px) !default;
|
|
56
|
+
$date-picker-weekdays-padding: var(--cds-spacing-100) 0 !default;
|
|
57
|
+
$date-picker-month-gap: var(--cds-spacing-100) var(--cds-spacing-100) !default;
|
|
58
|
+
$date-picker-month-width: tools.to-rem(72px) !default;
|
|
59
|
+
$date-picker-month-dot: tools.to-rem(4px) !default;
|
|
60
|
+
$date-picker-month-dot-gap: var(--cds-spacing-50) !default;
|
|
61
|
+
$date-picker-month-padding: var(--cds-spacing-300) !default;
|
|
62
|
+
$date-picker-month-btn-padding: 0 var(--cds-spacing-100) !default;
|
|
63
|
+
$date-picker-years-gap: var(--cds-spacing-500) var(--cds-spacing-300) !default;
|
|
64
|
+
$date-picker-year-dot: tools.to-rem(4px) !default;
|
|
65
|
+
$date-picker-year-dot-gap: var(--cds-spacing-50) !default;
|
|
66
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# CdsDefaultsProvider — API
|
|
2
|
+
|
|
3
|
+
> Generated from meta.json by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
|
|
5
|
+
## CdsDefaultsProvider
|
|
6
|
+
|
|
7
|
+
**Props**
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Required | Description |
|
|
10
|
+
| --- | --- | --- | --- | --- |
|
|
11
|
+
| `defaults` | `DefaultsOptions` | — | no | Значения пропсов по умолчанию для компонентов внутри — объект вида `{ CdsButton: { size: 'small' } }` |
|
|
12
|
+
| `disabled` | `boolean \| undefined` | — | no | Отключает провайдер: вложенные компоненты используют значения из внешнего контекста |
|
|
13
|
+
| `reset` | `string \| number \| undefined` | — | no | Сколько уровней вложенных провайдеров сбросить перед применением своих значений |
|
|
14
|
+
| `root` | `string \| boolean \| undefined` | — | no | Применяет значения к корневому уровню приложения. Строка — имя корневого набора значений |
|
|
15
|
+
| `scoped` | `boolean \| undefined` | — | no | Не наследовать значения внешних провайдеров — использовать только собственный `defaults` |
|
|
16
|
+
|
|
17
|
+
**Slots**
|
|
18
|
+
|
|
19
|
+
| Name | Type | Description |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `default` | `any` | Default slot |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# CdsDescription — API
|
|
2
|
+
|
|
3
|
+
> Generated from meta.json by `bun run generate:skill`. Do not edit manually.
|
|
4
|
+
> Examples: [examples.md](examples.md) · Tokens: [tokens.md](tokens.md)
|
|
5
|
+
|
|
6
|
+
A description is muted text under the label of a field. It clarifies what to enter and in what format, so the label can stay short.
|
|
7
|
+
|
|
8
|
+
## CdsDescription
|
|
9
|
+
|
|
10
|
+
**Props**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Required | Description |
|
|
13
|
+
| --- | --- | --- | --- | --- |
|
|
14
|
+
| `content` | `string \| number \| undefined` | — | no | Content displayed in the component. |
|
|
15
|
+
| `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
|
|
16
|
+
| `text` | `string \| number \| undefined` | — | no | Text displayed in the component. |
|
|
17
|
+
|
|
18
|
+
**Slots**
|
|
19
|
+
|
|
20
|
+
| Name | Type | Description |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| `default` | `any` | Text of the description |
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# CdsDescription — 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 description is muted text under the label of a field. It clarifies what to enter and in what format, so the label can stay short.
|
|
7
|
+
|
|
8
|
+
## Text
|
|
9
|
+
|
|
10
|
+
The `text` prop sets the content. The `default` slot adds arbitrary markup to it — a highlighted input format, for example.
|
|
11
|
+
|
|
12
|
+
**Example (SFC):**
|
|
13
|
+
|
|
14
|
+
```vue
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { CdsDescription } from '@central-design-system/components';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div class="flex flex-col items-center gap-2">
|
|
21
|
+
<CdsDescription text="Укажите ИНН из 10 или 12 цифр" />
|
|
22
|
+
|
|
23
|
+
<CdsDescription> Формат — <b>ДД.ММ.ГГГГ</b> </CdsDescription>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Tag
|
|
29
|
+
|
|
30
|
+
By default the description renders as a `div` tag. The `tag` prop changes the tag — to `p`, for example, when the description lives inside the text of the page.
|
|
31
|
+
|
|
32
|
+
**Example (SFC):**
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<script setup lang="ts">
|
|
36
|
+
import { CdsDescription } from '@central-design-system/components';
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<template>
|
|
40
|
+
<div class="flex justify-center">
|
|
41
|
+
<CdsDescription tag="p" text="Описание отрендерено тегом p" />
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## An explanation for a group of fields
|
|
47
|
+
|
|
48
|
+
A group of checkboxes has no `description` of its own, so the label and the explanation are assembled by hand: `CdsLabel` names the group, `CdsDescription` explains what to pick.
|
|
49
|
+
|
|
50
|
+
**Example (SFC):**
|
|
51
|
+
|
|
52
|
+
```vue
|
|
53
|
+
<script setup lang="ts">
|
|
54
|
+
import { CdsCheckbox, CdsDescription, CdsLabel } from '@central-design-system/components';
|
|
55
|
+
import { ref } from 'vue';
|
|
56
|
+
|
|
57
|
+
const channels = ref(['email']);
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<template>
|
|
61
|
+
<div class="flex flex-col gap-1 w-[350px] m-auto">
|
|
62
|
+
<CdsLabel text="Уведомления" />
|
|
63
|
+
<CdsDescription text="Выберите, куда присылать сообщения о новых заявках" />
|
|
64
|
+
|
|
65
|
+
<CdsCheckbox v-model="channels" value="email" label="Электронная почта" multiple hide-details />
|
|
66
|
+
<CdsCheckbox v-model="channels" value="sms" label="SMS" multiple hide-details />
|
|
67
|
+
</div>
|
|
68
|
+
</template>
|
|
69
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# CdsDescription — 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
|
+
## _CdsDescription.variables.scss
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
$description-color: inherit !default;
|
|
11
|
+
```
|