@donkit-ai/design-system 0.3.5 → 0.4.3
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/dist/index.cjs.js +22 -0
- package/dist/index.es.js +1105 -0
- package/dist/tokens.css +1 -0
- package/package.json +15 -9
- package/src/components/Accordion.css +0 -70
- package/src/components/Accordion.jsx +0 -42
- package/src/components/Alert.css +0 -93
- package/src/components/Alert.jsx +0 -47
- package/src/components/Badge.css +0 -52
- package/src/components/Badge.jsx +0 -25
- package/src/components/Button.css +0 -103
- package/src/components/Button.jsx +0 -80
- package/src/components/Card.css +0 -46
- package/src/components/Card.jsx +0 -70
- package/src/components/Checkbox.css +0 -88
- package/src/components/Checkbox.jsx +0 -47
- package/src/components/Code.css +0 -30
- package/src/components/Code.jsx +0 -27
- package/src/components/CodeAccordion.css +0 -80
- package/src/components/CodeAccordion.jsx +0 -42
- package/src/components/Input.css +0 -163
- package/src/components/Input.jsx +0 -55
- package/src/components/Link.css +0 -18
- package/src/components/Link.jsx +0 -21
- package/src/components/Modal.css +0 -70
- package/src/components/Modal.jsx +0 -72
- package/src/components/Radio.css +0 -115
- package/src/components/Radio.jsx +0 -42
- package/src/components/Select.css +0 -167
- package/src/components/Select.jsx +0 -118
- package/src/components/Stepper.css +0 -183
- package/src/components/Stepper.jsx +0 -104
- package/src/components/Tabs.css +0 -87
- package/src/components/Tabs.jsx +0 -81
- package/src/components/Textarea.css +0 -116
- package/src/components/Textarea.jsx +0 -41
- package/src/components/Toggle.css +0 -133
- package/src/components/Toggle.jsx +0 -38
- package/src/components/Tooltip.css +0 -134
- package/src/components/Tooltip.jsx +0 -158
- package/src/components/Typography.css +0 -74
- package/src/components/Typography.jsx +0 -42
- package/src/index.js +0 -24
- package/src/styles/iconSizes.js +0 -15
- package/src/styles/tokens.css +0 -298
package/dist/tokens.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer base{:root{--color-white: #FFFAFA;--color-white-95: rgba(255, 250, 250, .95);--color-white-92: rgba(255, 250, 250, .92);--color-white-65: rgba(255, 250, 250, .65);--color-white-50: rgba(255, 250, 250, .5);--color-white-40: rgba(255, 250, 250, .4);--color-white-20: rgba(255, 250, 250, .2);--color-white-15: rgba(255, 250, 250, .15);--color-white-13: rgba(255, 250, 250, .13);--color-white-06: rgba(255, 250, 250, .06);--color-black: #0E0F11;--color-black-95: rgba(14, 15, 17, .95);--color-black-65: rgba(14, 15, 17, .65);--color-black-60: rgba(14, 15, 17, .6);--color-black-50: rgba(14, 15, 17, .5);--color-black-40: rgba(14, 15, 17, .4);--color-black-20: rgba(14, 15, 17, .2);--color-black-10: rgba(14, 15, 17, .1);--color-black-08: rgba(14, 15, 17, .08);--color-black-04: rgba(14, 15, 17, .04);--color-red: #EA6464;--color-red-90: rgba(234, 100, 100, .9);--color-red-10: rgba(234, 100, 100, .1);--color-info: #60A5FA;--color-info-15: rgba(96, 165, 250, .15);--color-success: #00C86E;--color-success-15: rgba(0, 200, 110, .15);--color-warning: #FFBB00;--color-warning-15: rgba(255, 187, 0, .15);--color-error: #FF1200;--color-error-15: rgba(255, 18, 0, .15);--color-info-dark: #2563EB;--color-info-dark-15: rgba(37, 99, 235, .15);--color-success-dark: #00A055;--color-success-dark-15: rgba(0, 160, 85, .15);--color-warning-dark: #D97706;--color-warning-dark-15: rgba(217, 119, 6, .15);--color-error-dark: #DC2626;--color-error-dark-15: rgba(220, 38, 38, .15);--color-neutral: var(--color-warning);--color-neutral-10: var(--color-warning-15);--color-error-10: var(--color-error-15);--color-success-10: var(--color-success-15);--color-bg: var(--color-black);--color-border: var(--color-white-20);--color-border-hover: var(--color-white-40);--color-border-selected: var(--color-white-50);--color-txt-icon-1: var(--color-white-92);--color-txt-icon-2: var(--color-white-65);--color-accent: var(--color-red);--color-accent-hover: var(--color-red-90);--color-item-bg: var(--color-white-06);--color-item-bg-selected: var(--color-white-06);--color-item-bg-hover: var(--color-white-13);--color-code-bg: var(--color-white-15);--color-overlay: var(--color-black-65);--color-status-info: var(--color-info);--color-status-info-bg: var(--color-info-dark-15);--color-status-success: var(--color-success);--color-status-success-bg: var(--color-success-dark-15);--color-status-warning: var(--color-warning);--color-status-warning-bg: var(--color-warning-dark-15);--color-status-error: var(--color-error);--color-status-error-bg: var(--color-error-dark-15)}[data-theme=light]{--color-bg: var(--color-white);--color-border: var(--color-black-20);--color-border-hover: var(--color-black-40);--color-border-selected: var(--color-black-50);--color-txt-icon-1: var(--color-black-95);--color-txt-icon-2: var(--color-black-65);--color-accent: var(--color-red);--color-accent-hover: var(--color-red-90);--color-item-bg: var(--color-black-04);--color-item-bg-selected: var(--color-black-04);--color-item-bg-hover: var(--color-black-08);--color-code-bg: var(--color-black-10);--color-overlay: var(--color-black-60);--color-status-info: var(--color-info-dark);--color-status-info-bg: var(--color-info-15);--color-status-success: var(--color-success-dark);--color-status-success-bg: var(--color-success-15);--color-status-warning: var(--color-warning-dark);--color-status-warning-bg: var(--color-warning-15);--color-status-error: var(--color-error-dark);--color-status-error-bg: var(--color-error-15)}:root{--breakpoint-mobile: 375px;--breakpoint-tablet: 768px;--breakpoint-desktop: 1280px}:root{--space-xs: 8px;--space-s: 12px;--space-m: 16px;--space-l: 24px;--space-xl: 32px}@media (min-width: 768px){:root{--space-xs: 8px;--space-s: 16px;--space-m: 20px;--space-l: 28px;--space-xl: 40px}}@media (min-width: 1280px){:root{--space-xs: 8px;--space-s: 16px;--space-m: 24px;--space-l: 32px;--space-xl: 48px}}:root{--radius-xs: 4px;--radius-s: 6px}:root{--height-xs: 24px;--height-s: 32px;--height-m: 44px;--height-l: 56px;--icon-xs: 16px;--icon-s: 20px;--icon-m: 24px;--icon-l: 28px;--icon-xl: 48px}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;--font-size-h1: 32px;--font-size-h2: 28px;--font-size-h3: 24px;--font-size-h4: 20px;--font-size-p1: 16px;--font-size-p2: 14px;--font-size-p3: 12px;--letter-spacing-h1: 0;--letter-spacing-h2: 0;--letter-spacing-h3: 0;--letter-spacing-h4: 0;--letter-spacing-p1: .02em;--letter-spacing-p2: .04em;--letter-spacing-p3: .06em}@media (min-width: 768px){:root{--font-size-h1: 40px;--font-size-h2: 36px;--font-size-h3: 28px;--font-size-h4: 24px;--font-size-p1: 18px;--font-size-p2: 16px;--font-size-p3: 14px;--letter-spacing-h4: 0;--letter-spacing-p1: .02em;--letter-spacing-p2: .02em;--letter-spacing-p3: .04em}}@media (min-width: 1280px){:root{--font-size-h1: 40px;--font-size-h2: 36px;--font-size-h3: 28px;--font-size-h4: 24px;--font-size-p1: 18px;--font-size-p2: 16px;--font-size-p3: 14px;--letter-spacing-h4: 0;--letter-spacing-p1: .02em;--letter-spacing-p2: .02em;--letter-spacing-p3: .04em}}:root{--page-padding-hor: 16px;--page-padding-vert: 32px;--page-header-height: 64px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}@media (min-width: 768px){:root{--page-padding-hor: 20px;--page-padding-vert: 48px;--page-header-height: 72px}}@media (min-width: 1280px){:root{--page-padding-hor: 24px;--page-padding-vert: 64px;--page-header-height: 72px}}body{margin:0;min-width:320px;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg);color:var(--color-txt-icon-1);transition:background-color var(--transition-slow),color var(--transition-slow)}*{box-sizing:border-box}}.ds-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);font-size:var(--font-size-p1);font-weight:400;font-family:inherit;line-height:1;border:none;cursor:pointer;transition:background-color var(--transition-normal),border-color var(--transition-normal),opacity var(--transition-normal);white-space:nowrap;text-decoration:none}.ds-button:disabled,.ds-button[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}.ds-button__icon{display:flex;align-items:center;justify-content:center}.ds-button--primary{color:var(--color-white);background-color:var(--color-accent)}.ds-button--primary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--color-accent-hover)}.ds-button--secondary{color:var(--color-txt-icon-1);background-color:transparent;border:1px solid var(--color-border)}.ds-button--secondary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--color-item-bg-hover);border-color:var(--color-border-hover)}.ds-button--ghost{color:var(--color-txt-icon-2);background-color:transparent}.ds-button--ghost:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--color-item-bg-hover);color:var(--color-txt-icon-1)}.ds-button--xs{height:var(--height-xs);padding:0 calc(var(--height-xs) / 2);font-size:var(--font-size-p3);border-radius:var(--radius-xs)}.ds-button--s{height:var(--height-s);padding:0 calc(var(--height-s) / 2);font-size:var(--font-size-p2);border-radius:var(--radius-xs)}.ds-button--m{height:var(--height-m);padding:0 calc(var(--height-m) / 2);font-size:var(--font-size-p1);border-radius:var(--radius-s)}.ds-button--l{height:var(--height-l);padding:0 calc(var(--height-l) / 2);font-size:var(--font-size-h4);border-radius:var(--radius-s);gap:var(--space-s)}.ds-button--full{width:100%}.ds-button--icon-only{aspect-ratio:1;padding-left:0;padding-right:0}.ds-input-wrapper{display:flex;flex-direction:column;gap:var(--space-xs)}.ds-input-wrapper--full{width:100%}.ds-input-wrapper--disabled{opacity:.5;cursor:not-allowed}.ds-input-label{font-size:var(--font-size-p2);font-weight:400;color:var(--color-txt-icon-1)}.ds-input-container{position:relative;display:flex;align-items:center}.ds-input{width:100%;font-family:inherit;color:var(--color-txt-icon-1);background-color:transparent;border:1px solid var(--color-border);transition:border-color var(--transition-normal);line-height:1.5}.ds-input::placeholder{color:var(--color-txt-icon-2)}.ds-input:hover:not(:disabled){border-color:var(--color-border-hover)}.ds-input:focus,.ds-input:active{outline:none;border-color:var(--color-border-hover)}.ds-input:disabled{cursor:not-allowed}.ds-input--error{border-color:var(--color-error)}.ds-input--xs{height:var(--height-xs);padding:0 calc(var(--height-xs) / 4);font-size:var(--font-size-p3);border-radius:var(--radius-xs)}.ds-input--s{height:var(--height-s);padding:0 calc(var(--height-s) / 4);font-size:var(--font-size-p2);border-radius:var(--radius-xs)}.ds-input--m{height:var(--height-m);padding:0 calc(var(--height-m) / 4);font-size:var(--font-size-p1);border-radius:var(--radius-s)}.ds-input--with-icon.ds-input--xs{padding-left:calc(var(--height-xs) / 4 + 16px + var(--height-xs) / 4)}.ds-input--with-icon.ds-input--s{padding-left:calc(var(--height-s) / 4 + 20px + var(--height-s) / 4)}.ds-input--with-icon.ds-input--m{padding-left:calc(var(--height-m) / 4 + 24px + var(--height-m) / 4)}.ds-input--with-icon-right.ds-input--xs{padding-right:calc(var(--height-xs) / 4 + 16px + var(--height-xs) / 4)}.ds-input--with-icon-right.ds-input--s{padding-right:calc(var(--height-s) / 4 + 20px + var(--height-s) / 4)}.ds-input--with-icon-right.ds-input--m{padding-right:calc(var(--height-m) / 4 + 24px + var(--height-m) / 4)}.ds-input-icon{position:absolute;display:flex;align-items:center;color:var(--color-txt-icon-2);pointer-events:none}.ds-input-icon--xs{left:6px}.ds-input-icon--s{left:8px}.ds-input-icon--m{left:11px}.ds-input-icon-right{position:absolute;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-txt-icon-2);cursor:pointer;transition:color var(--transition-normal);padding:0}.ds-input-icon-right:hover{color:var(--color-txt-icon-1)}.ds-input-icon-right--xs{right:6px}.ds-input-icon-right--s{right:8px}.ds-input-icon-right--m{right:11px}.ds-input-hint{font-size:var(--font-size-p2);color:var(--color-txt-icon-2)}.ds-input-error{font-size:var(--font-size-p2);color:var(--color-error)}.ds-textarea-wrapper{display:flex;flex-direction:column;gap:var(--space-xs)}.ds-textarea-wrapper--full{width:100%}.ds-textarea-wrapper--disabled{opacity:.5;cursor:not-allowed}.ds-textarea-label{font-size:var(--font-size-p2);font-weight:400;color:var(--color-txt-icon-1)}.ds-textarea{width:100%;font-family:inherit;color:var(--color-txt-icon-1);background-color:transparent;border:1px solid var(--color-border);transition:border-color var(--transition-normal);line-height:1.5;resize:vertical;background:linear-gradient(315deg,transparent 5px,var(--color-border) 5px,var(--color-border) 6px,transparent 6px),linear-gradient(315deg,transparent 10px,var(--color-border) 10px,var(--color-border) 11px,transparent 11px);background-repeat:no-repeat;background-position:bottom right;background-size:16px 16px}.ds-textarea::placeholder{color:var(--color-txt-icon-2)}.ds-textarea::-webkit-resizer{display:none}.ds-textarea:hover:not(:disabled){border-color:var(--color-border-hover);background:linear-gradient(315deg,transparent 5px,var(--color-border-hover) 5px,var(--color-border-hover) 6px,transparent 6px),linear-gradient(315deg,transparent 10px,var(--color-border-hover) 10px,var(--color-border-hover) 11px,transparent 11px);background-repeat:no-repeat;background-position:bottom right;background-size:16px 16px}.ds-textarea:focus,.ds-textarea:active{outline:none;border-color:var(--color-border-hover);background:linear-gradient(315deg,transparent 5px,var(--color-border-hover) 5px,var(--color-border-hover) 6px,transparent 6px),linear-gradient(315deg,transparent 10px,var(--color-border-hover) 10px,var(--color-border-hover) 11px,transparent 11px);background-repeat:no-repeat;background-position:bottom right;background-size:16px 16px}.ds-textarea:disabled{cursor:not-allowed}.ds-textarea--error{border-color:var(--color-error);background:linear-gradient(315deg,transparent 5px,var(--color-error) 5px,var(--color-error) 6px,transparent 6px),linear-gradient(315deg,transparent 10px,var(--color-error) 10px,var(--color-error) 11px,transparent 11px);background-repeat:no-repeat;background-position:bottom right;background-size:16px 16px}.ds-textarea--no-resize{resize:none;background:none}.ds-textarea--xs{padding:var(--space-xs);font-size:var(--font-size-p3);border-radius:var(--radius-xs)}.ds-textarea--s{padding:var(--space-xs) var(--space-s);font-size:var(--font-size-p2);border-radius:var(--radius-xs)}.ds-textarea--m{padding:var(--space-s);font-size:var(--font-size-p1);border-radius:var(--radius-s)}.ds-textarea-hint{font-size:var(--font-size-p2);color:var(--color-txt-icon-2)}.ds-textarea-error{font-size:var(--font-size-p2);color:var(--color-error)}.ds-select-wrapper{display:flex;flex-direction:column;gap:var(--space-xs)}.ds-select-wrapper--full{width:100%}.ds-select-wrapper--disabled{opacity:.5;cursor:not-allowed}.ds-select-label{font-size:var(--font-size-p2);font-weight:400;color:var(--color-txt-icon-1)}.ds-select-container{position:relative}.ds-select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-s);font-family:inherit;color:var(--color-txt-icon-1);background-color:transparent;border:1px solid var(--color-border);cursor:pointer;transition:border-color var(--transition-normal);text-align:left;line-height:1.5}.ds-select-trigger>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ds-select-trigger:hover:not(:disabled){border-color:var(--color-border-hover)}.ds-select-trigger:disabled{cursor:not-allowed}.ds-select-trigger--error{border-color:var(--color-error)}.ds-select-trigger--xs{height:var(--height-xs);padding:0 calc(var(--height-xs) / 4);font-size:var(--font-size-p3);border-radius:var(--radius-xs)}.ds-select-trigger--s{height:var(--height-s);padding:0 calc(var(--height-s) / 4);font-size:var(--font-size-p2);border-radius:var(--radius-xs)}.ds-select-trigger--m{height:var(--height-m);padding:0 calc(var(--height-m) / 4);font-size:var(--font-size-p1);border-radius:var(--radius-s)}.ds-select-placeholder{color:var(--color-txt-icon-2)}.ds-select-icon{flex-shrink:0;color:var(--color-txt-icon-2);transition:transform var(--transition-normal)}.ds-select-icon--open{transform:rotate(180deg)}.ds-select-icon--up{transform:rotate(0)}.ds-select-dropdown{position:absolute;left:0;right:0;background-color:var(--color-bg);border:1px solid var(--color-border);z-index:100;max-height:300px;overflow-y:auto}.ds-select-dropdown--down{top:calc(100% + 4px)}.ds-select-dropdown--up{bottom:calc(100% + 4px)}.ds-select-dropdown--s{border-radius:var(--radius-xs)}.ds-select-dropdown--m{border-radius:var(--radius-s)}.ds-select-option{width:100%;font-family:inherit;color:var(--color-txt-icon-1);background-color:transparent;border:none;cursor:pointer;text-align:left;transition:background-color var(--transition-normal);line-height:1.5;white-space:normal;word-wrap:break-word}.ds-select-option--s{min-height:var(--height-s);padding:var(--space-xs) calc(var(--height-s) / 4);font-size:var(--font-size-p2)}.ds-select-option--m{min-height:var(--height-m);padding:var(--space-xs) calc(var(--height-m) / 4);font-size:var(--font-size-p1)}.ds-select-option:hover{background-color:var(--color-item-bg-hover)}.ds-select-option--selected{background-color:var(--color-item-bg-selected)}.ds-select-error{font-size:var(--font-size-p2);color:var(--color-error)}.ds-stepper-wrapper{display:flex;flex-direction:column;gap:var(--space-xs)}.ds-stepper-label{font-size:var(--font-size-p2);letter-spacing:var(--letter-spacing-p2);color:var(--color-txt-icon-1)}.ds-stepper{display:flex;align-items:stretch;width:fit-content;border:1px solid var(--color-border);border-radius:var(--radius-xs);transition:border-color var(--transition-normal)}.ds-stepper:hover:not(.ds-stepper--disabled){border-color:var(--color-border-hover)}.ds-stepper:focus-within{border-color:var(--color-border-hover)}.ds-stepper--disabled{cursor:not-allowed}.ds-stepper-button{display:flex;align-items:center;justify-content:center;background-color:transparent;border:none;color:var(--color-txt-icon-2);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast);flex-shrink:0}.ds-stepper-button:hover:not(:disabled){background-color:var(--color-item-bg-hover);color:var(--color-txt-icon-1)}.ds-stepper-button:active:not(:disabled){background-color:var(--color-item-bg-selected)}.ds-stepper-button:disabled{opacity:.5;cursor:not-allowed}.ds-stepper-button--minus{border-radius:var(--radius-xs) 0 0 var(--radius-xs);border-right:1px solid var(--color-border)}.ds-stepper-button--plus{border-radius:0 var(--radius-xs) var(--radius-xs) 0;border-left:1px solid var(--color-border)}.ds-stepper-input{width:80px;text-align:center;border:none;background-color:transparent;color:var(--color-txt-icon-1);font-size:var(--font-size-p1);letter-spacing:var(--letter-spacing-p1);outline:none;cursor:text}.ds-stepper-input:disabled{cursor:not-allowed}.ds-stepper-input::-webkit-inner-spin-button,.ds-stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ds-stepper-input[type=number]{-moz-appearance:textfield}.ds-stepper--xs{height:var(--height-xs)}.ds-stepper--xs .ds-stepper-button{width:var(--height-xs);padding:0}.ds-stepper--xs .ds-stepper-input{font-size:var(--font-size-p3);letter-spacing:var(--letter-spacing-p3);padding:0 var(--space-xs)}.ds-stepper--s{height:var(--height-s)}.ds-stepper--s .ds-stepper-button{width:var(--height-s);padding:0}.ds-stepper--s .ds-stepper-input{font-size:var(--font-size-p2);letter-spacing:var(--letter-spacing-p2);padding:0 var(--space-xs)}.ds-stepper--m{height:var(--height-m)}.ds-stepper--m .ds-stepper-button{width:var(--height-m);padding:0}.ds-stepper--m .ds-stepper-input{font-size:var(--font-size-p1);letter-spacing:var(--letter-spacing-p1);padding:0 var(--space-s)}.ds-stepper-hint{font-size:var(--font-size-p2);letter-spacing:var(--letter-spacing-p2);color:var(--color-txt-icon-2)}.ds-stepper-error{font-size:var(--font-size-p2);letter-spacing:var(--letter-spacing-p2);color:var(--color-status-error)}.ds-stepper-wrapper--error .ds-stepper{border-color:var(--color-status-error)}.ds-stepper-wrapper--error .ds-stepper:hover:not(.ds-stepper--disabled){border-color:var(--color-status-error)}.ds-stepper-wrapper--error .ds-stepper:focus-within{border-color:var(--color-status-error)}.ds-stepper-wrapper--disabled{opacity:.5;cursor:not-allowed}.ds-stepper-wrapper--disabled *{cursor:not-allowed}.ds-card{display:flex;flex-direction:column;background-color:transparent;border-radius:var(--radius-s);border:1px solid var(--color-border);transition:border-color var(--transition-normal),background-color var(--transition-normal);text-decoration:none;color:inherit}.ds-card--interactive{cursor:pointer;background-color:var(--color-item-bg);border:none}.ds-card--interactive:hover:not([aria-disabled=true]){background-color:var(--color-item-bg-hover)}.ds-card[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}.ds-card--none{padding:0;gap:0}.ds-card--s{padding:var(--space-s);gap:var(--space-xs)}.ds-card--m{padding:var(--space-m);gap:var(--space-s)}.ds-card--l{padding:var(--space-l);gap:var(--space-m)}.ds-h1{font-size:var(--font-size-h1);font-weight:400;line-height:1.2;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-h1);margin:0}.ds-h2{font-size:var(--font-size-h2);font-weight:400;line-height:1.3;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-h2);margin:0}.ds-h3{font-size:var(--font-size-h3);font-weight:400;line-height:1.3;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-h3);margin:0}.ds-h4{font-size:var(--font-size-h4);font-weight:400;line-height:1.4;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-h4);margin:0}.ds-p1{font-size:var(--font-size-p1);font-weight:400;line-height:1.5;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-p1);margin:0}.ds-p1--secondary{color:var(--color-txt-icon-2)}.ds-p2{font-size:var(--font-size-p2);font-weight:400;line-height:1.5;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-p2);margin:0}.ds-p2--secondary{color:var(--color-txt-icon-2)}.ds-p3{font-size:var(--font-size-p3);font-weight:400;line-height:1.5;color:var(--color-txt-icon-1);letter-spacing:var(--letter-spacing-p3);margin:0}.ds-p3--secondary{color:var(--color-txt-icon-2)}.ds-badge{display:inline-flex;align-items:center;justify-content:center;font-weight:400;white-space:nowrap}.ds-badge--s{padding:0 4px;font-size:var(--font-size-p3);letter-spacing:var(--letter-spacing-p3);border-radius:var(--radius-xs)}.ds-badge--m{padding:2px var(--space-xs);font-size:var(--font-size-p2);letter-spacing:var(--letter-spacing-p2);border-radius:var(--radius-s)}.ds-badge--default{background-color:var(--color-item-bg);color:var(--color-txt-icon-2)}.ds-badge--info{background-color:var(--color-status-info-bg);color:var(--color-status-info)}.ds-badge--success{background-color:var(--color-status-success-bg);color:var(--color-status-success)}.ds-badge--warning{background-color:var(--color-status-warning-bg);color:var(--color-status-warning)}.ds-badge--error{background-color:var(--color-status-error-bg);color:var(--color-status-error)}.ds-badge--accent{background-color:var(--color-red-10);color:var(--color-accent)}.ds-alert{display:flex;align-items:flex-start;gap:var(--space-s);padding:var(--space-s);border-radius:var(--radius-s)}.ds-alert--no-title{align-items:center}.ds-alert__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.ds-alert:not(.ds-alert--no-title) .ds-alert__icon{margin-top:2px}.ds-alert__content{flex:1;min-width:0}.ds-alert__title{font-size:var(--font-size-p1);font-weight:400;margin-bottom:var(--space-xs)}.ds-alert__message{font-size:var(--font-size-p2);line-height:1.5}.ds-alert__close{flex-shrink:0;background:none;border:none;color:inherit;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity var(--transition-normal)}.ds-alert__close:hover{opacity:1}.ds-alert--info{background:linear-gradient(var(--color-status-info-bg),var(--color-status-info-bg)),var(--color-bg);color:var(--color-status-info)}.ds-alert--info .ds-alert__message{color:var(--color-txt-icon-1)}.ds-alert--success{background:linear-gradient(var(--color-status-success-bg),var(--color-status-success-bg)),var(--color-bg);color:var(--color-status-success)}.ds-alert--success .ds-alert__message{color:var(--color-txt-icon-1)}.ds-alert--warning{background:linear-gradient(var(--color-status-warning-bg),var(--color-status-warning-bg)),var(--color-bg);color:var(--color-status-warning)}.ds-alert--warning .ds-alert__message{color:var(--color-txt-icon-1)}.ds-alert--error{background:linear-gradient(var(--color-status-error-bg),var(--color-status-error-bg)),var(--color-bg);color:var(--color-status-error)}.ds-alert--error .ds-alert__message{color:var(--color-txt-icon-1)}.ds-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--color-overlay);display:flex;align-items:flex-start;justify-content:center;z-index:1000;padding:var(--space-m);overflow-y:auto}.ds-modal{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-s);display:flex;flex-direction:column;margin:auto 0}.ds-modal--s{width:100%;max-width:400px}.ds-modal--m{width:100%;max-width:600px}.ds-modal--l{width:100%;max-width:900px}.ds-modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-l)}.ds-modal__title{font-size:var(--font-size-h3);font-weight:400;color:var(--color-txt-icon-1);margin:0}.ds-modal__body{padding:0 var(--space-l) var(--space-l);flex:1}.ds-modal__footer{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-s);padding:var(--space-s) var(--space-l) var(--space-l);background-color:var(--color-bg);position:relative;z-index:10;border-bottom-left-radius:var(--space-s);border-bottom-right-radius:var(--space-s)}.ds-code-accordion__header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:var(--color-item-bg);border:none;border-radius:var(--radius-s);color:var(--color-txt-icon-1);font-size:var(--font-size-p1);font-family:inherit;cursor:pointer;transition:background-color var(--transition-normal)}.ds-code-accordion__header[aria-expanded=true]{border-radius:var(--radius-s) var(--radius-s) 0 0}.ds-code-accordion__header:hover{background-color:var(--color-item-bg-hover)}.ds-code-accordion__title{font-weight:400}.ds-code-accordion__icon{flex-shrink:0;color:var(--color-txt-icon-2);transition:transform var(--transition-normal)}.ds-code-accordion__icon--expanded{transform:rotate(180deg)}.ds-code-accordion__content{font-family:Fira Mono,SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:var(--font-size-p2);background-color:var(--color-code-bg);color:var(--color-txt-icon-1);overflow-x:auto;border-radius:0 0 var(--radius-s) var(--radius-s);line-height:1.6;margin:0}.ds-code-accordion--s .ds-code-accordion__header,.ds-code-accordion--s .ds-code-accordion__content{padding:var(--space-xs)}.ds-code-accordion--m .ds-code-accordion__header,.ds-code-accordion--m .ds-code-accordion__content{padding:var(--space-s)}.ds-code-accordion--l .ds-code-accordion__header,.ds-code-accordion--l .ds-code-accordion__content{padding:var(--space-m)}.ds-code-accordion__content code{background:none;border:none;padding:0;font-family:inherit;font-size:inherit;color:inherit}.ds-code-inline{font-family:Fira Mono,SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:.9em;background-color:var(--color-code-bg);color:var(--color-txt-icon-1);padding:2px 6px;border-radius:var(--radius-s);white-space:nowrap}.ds-code-block{font-family:Fira Mono,SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:var(--font-size-p2);background-color:var(--color-code-bg);color:var(--color-txt-icon-1);padding:var(--space-s);border-radius:var(--radius-s);overflow-x:auto;line-height:1.6;margin:0}.ds-code-block code{background:none;border:none;padding:0;font-family:inherit;font-size:inherit;color:inherit}.ds-link{color:var(--color-accent);text-decoration:none;cursor:pointer;transition:color var(--transition-fast),text-decoration var(--transition-fast);font-size:inherit;font-weight:inherit;line-height:inherit}.ds-link:hover{color:var(--color-accent-hover);text-decoration:underline}.ds-link:active{color:var(--color-accent-hover)}.ds-tabs{display:flex;gap:var(--space-xs);flex-wrap:wrap}.ds-tab{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);font-family:inherit;font-weight:400;line-height:1;cursor:pointer;background-color:transparent;color:var(--color-txt-icon-1);transition:border-color var(--transition-normal),background-color var(--transition-normal);white-space:nowrap;text-decoration:none}.ds-tab--ghost{border:none;color:var(--color-txt-icon-2)}.ds-tab--ghost:hover:not(.ds-tab--selected):not(:disabled):not([aria-disabled=true]){background-color:var(--color-item-bg-hover);color:var(--color-txt-icon-1)}.ds-tab--ghost.ds-tab--selected{background-color:var(--color-item-bg-selected);color:var(--color-txt-icon-1)}.ds-tab--xs{height:var(--height-xs);padding:0 calc(var(--height-xs) / 2);font-size:var(--font-size-p3);border-radius:var(--radius-xs)}.ds-tab--s{height:var(--height-s);padding:0 calc(var(--height-s) / 2);font-size:var(--font-size-p2);border-radius:var(--radius-xs)}.ds-tab--m{height:var(--height-m);padding:0 calc(var(--height-m) / 2);font-size:var(--font-size-p1);border-radius:var(--radius-s)}.ds-tab--l{height:var(--height-l);padding:0 calc(var(--height-l) / 2);font-size:var(--font-size-p1);border-radius:var(--radius-s);gap:var(--space-s)}.ds-tab:disabled,.ds-tab[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}.ds-tab-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.ds-tab--icon-only{aspect-ratio:1;padding-left:0;padding-right:0}.ds-accordion__header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:var(--color-item-bg);border:none;border-radius:var(--radius-s);color:var(--color-txt-icon-1);font-size:var(--font-size-h4);font-family:inherit;cursor:pointer;transition:background-color var(--transition-normal)}.ds-accordion__header[aria-expanded=true]{border-radius:var(--radius-s) var(--radius-s) 0 0}.ds-accordion__header:hover{background-color:var(--color-item-bg-hover)}.ds-accordion__title{font-weight:400}.ds-accordion__icon{flex-shrink:0;color:var(--color-txt-icon-2);transition:transform var(--transition-normal)}.ds-accordion__icon--expanded{transform:rotate(180deg)}.ds-accordion__content{display:flex;flex-direction:column;background-color:var(--color-item-bg);border-radius:0 0 var(--radius-s) var(--radius-s)}.ds-accordion--s .ds-accordion__header{padding:var(--space-s)}.ds-accordion--s .ds-accordion__content{padding:var(--space-s);gap:var(--space-xs)}.ds-accordion--m .ds-accordion__header{padding:var(--space-m)}.ds-accordion--m .ds-accordion__content{padding:var(--space-m);gap:var(--space-s)}.ds-accordion--l .ds-accordion__header{padding:var(--space-l)}.ds-accordion--l .ds-accordion__content{padding:var(--space-l);gap:var(--space-m)}.ds-tooltip-wrapper{position:relative;display:inline-flex}.ds-tooltip{position:absolute;background-color:var(--color-bg);color:var(--color-txt-icon-2);font-size:var(--font-size-p3);letter-spacing:var(--letter-spacing-p3);width:max-content;max-width:200px;padding:var(--space-xs);border:1px solid var(--color-border);border-radius:var(--radius-xs);z-index:2000;white-space:normal;word-wrap:break-word;pointer-events:none;line-height:1.4}.ds-tooltip--top{bottom:calc(100% + 8px);left:50%;transform:translate(calc(-50% + var(--tooltip-offset-x, 0px)))}.ds-tooltip--top:after{content:"";position:absolute;top:100%;left:calc(50% + var(--arrow-offset, 0px));transform:translate(-50%);border:4px solid transparent;border-top-color:var(--color-border)}.ds-tooltip--top:before{content:"";position:absolute;top:100%;left:calc(50% + var(--arrow-offset, 0px));transform:translate(-50%);border:3px solid transparent;border-top-color:var(--color-bg);z-index:1}.ds-tooltip--bottom{top:calc(100% + 8px);left:50%;transform:translate(calc(-50% + var(--tooltip-offset-x, 0px)))}.ds-tooltip--bottom:after{content:"";position:absolute;bottom:100%;left:calc(50% + var(--arrow-offset, 0px));transform:translate(-50%);border:4px solid transparent;border-bottom-color:var(--color-border)}.ds-tooltip--bottom:before{content:"";position:absolute;bottom:100%;left:calc(50% + var(--arrow-offset, 0px));transform:translate(-50%);border:3px solid transparent;border-bottom-color:var(--color-bg);z-index:1}.ds-tooltip--left{right:calc(100% + 8px);top:50%;transform:translateY(-50%)}.ds-tooltip--left:after{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);border:4px solid transparent;border-left-color:var(--color-border)}.ds-tooltip--left:before{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);border:3px solid transparent;border-left-color:var(--color-bg);z-index:1}.ds-tooltip--right{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}.ds-tooltip--right:after{content:"";position:absolute;right:100%;top:50%;transform:translateY(-50%);border:4px solid transparent;border-right-color:var(--color-border)}.ds-tooltip--right:before{content:"";position:absolute;right:100%;top:50%;transform:translateY(-50%);border:3px solid transparent;border-right-color:var(--color-bg);z-index:1}.ds-toggle{display:inline-flex;align-items:center;gap:var(--space-s);cursor:pointer}.ds-toggle--disabled{opacity:.5;cursor:not-allowed}.ds-toggle__input{position:absolute;opacity:0;pointer-events:none}.ds-toggle__track{position:relative;display:flex;align-items:center;background-color:var(--color-item-bg);border:1px solid var(--color-border);transition:background-color var(--transition-normal),border-color var(--transition-normal);flex-shrink:0}.ds-toggle__input:checked+.ds-toggle__track{background-color:var(--color-status-success);border-color:var(--color-status-success)}.ds-toggle__input:not(:checked)+.ds-toggle__track:hover{border-color:var(--color-border-hover)}.ds-toggle__thumb{background-color:var(--color-white);border-radius:50%;transition:transform var(--transition-normal);box-shadow:0 1px 3px #0003}.ds-toggle__label{font-size:var(--font-size-p1);color:var(--color-txt-icon-1);-webkit-user-select:none;user-select:none}.ds-toggle--xs .ds-toggle__track{width:calc(var(--icon-xs) * 1.75);height:var(--icon-xs);border-radius:calc(var(--icon-xs) / 2);padding:2px}.ds-toggle--xs .ds-toggle__thumb{width:calc(var(--icon-xs) - 4px);height:calc(var(--icon-xs) - 4px)}.ds-toggle--xs .ds-toggle__input:checked+.ds-toggle__track .ds-toggle__thumb{transform:translate(calc(var(--icon-xs) * .75))}.ds-toggle--xs .ds-toggle__label{font-size:var(--font-size-p3)}.ds-toggle--s .ds-toggle__track{width:calc(var(--icon-s) * 1.75);height:var(--icon-s);border-radius:calc(var(--icon-s) / 2);padding:2px}.ds-toggle--s .ds-toggle__thumb{width:calc(var(--icon-s) - 4px);height:calc(var(--icon-s) - 4px)}.ds-toggle--s .ds-toggle__input:checked+.ds-toggle__track .ds-toggle__thumb{transform:translate(calc(var(--icon-s) * .75))}.ds-toggle--s .ds-toggle__label{font-size:var(--font-size-p2)}.ds-toggle--m .ds-toggle__track{width:calc(var(--icon-m) * 1.75);height:var(--icon-m);border-radius:calc(var(--icon-m) / 2);padding:2px}.ds-toggle--m .ds-toggle__thumb{width:calc(var(--icon-m) - 4px);height:calc(var(--icon-m) - 4px)}.ds-toggle--m .ds-toggle__input:checked+.ds-toggle__track .ds-toggle__thumb{transform:translate(calc(var(--icon-m) * .75))}.ds-toggle--m .ds-toggle__label{font-size:var(--font-size-p1)}.ds-toggle--l .ds-toggle__track{width:calc(var(--icon-l) * 1.75);height:var(--icon-l);border-radius:calc(var(--icon-l) / 2);padding:3px}.ds-toggle--l .ds-toggle__thumb{width:calc(var(--icon-l) - 6px);height:calc(var(--icon-l) - 6px)}.ds-toggle--l .ds-toggle__input:checked+.ds-toggle__track .ds-toggle__thumb{transform:translate(calc(var(--icon-l) * .75))}.ds-toggle--l .ds-toggle__label{font-size:var(--font-size-p1)}.ds-checkbox{display:inline-flex;align-items:center;gap:var(--space-s);cursor:pointer}.ds-checkbox--disabled{opacity:.5;cursor:not-allowed}.ds-checkbox__input{position:absolute;opacity:0;pointer-events:none}.ds-checkbox__box{position:relative;display:flex;align-items:center;justify-content:center;background-color:var(--color-item-bg);border:1px solid var(--color-border);transition:background-color var(--transition-normal),border-color var(--transition-normal);flex-shrink:0;border-radius:4px}.ds-checkbox__input:checked+.ds-checkbox__box{background-color:var(--color-status-success);border-color:var(--color-status-success)}.ds-checkbox__input:not(:checked)+.ds-checkbox__box:hover{border-color:var(--color-border-hover)}.ds-checkbox__icon{color:var(--color-white)}.ds-checkbox__label{font-size:var(--font-size-p1);color:var(--color-txt-icon-1);-webkit-user-select:none;user-select:none}.ds-checkbox--xs .ds-checkbox__box{width:var(--icon-xs);height:var(--icon-xs)}.ds-checkbox--xs .ds-checkbox__label{font-size:var(--font-size-p3)}.ds-checkbox--s .ds-checkbox__box{width:var(--icon-s);height:var(--icon-s)}.ds-checkbox--s .ds-checkbox__label{font-size:var(--font-size-p2)}.ds-checkbox--m .ds-checkbox__box{width:var(--icon-m);height:var(--icon-m)}.ds-checkbox--m .ds-checkbox__label{font-size:var(--font-size-p1)}.ds-checkbox--l .ds-checkbox__box{width:var(--icon-l);height:var(--icon-l)}.ds-checkbox--l .ds-checkbox__label{font-size:var(--font-size-p1)}.ds-radio{display:inline-flex;align-items:center;gap:var(--space-s);cursor:pointer}.ds-radio--disabled{opacity:.5;cursor:not-allowed}.ds-radio__input{position:absolute;opacity:0;pointer-events:none}.ds-radio__circle{position:relative;display:flex;align-items:center;justify-content:center;background-color:var(--color-item-bg);border:1px solid var(--color-border);transition:background-color var(--transition-normal),border-color var(--transition-normal);flex-shrink:0;border-radius:50%}.ds-radio__input:checked+.ds-radio__circle{background-color:var(--color-status-success);border-color:var(--color-status-success)}.ds-radio__input:not(:checked)+.ds-radio__circle:hover{border-color:var(--color-border-hover)}.ds-radio__dot{background-color:var(--color-white);border-radius:50%;opacity:0;transition:opacity var(--transition-normal)}.ds-radio__input:checked+.ds-radio__circle .ds-radio__dot{opacity:1}.ds-radio__label{font-size:var(--font-size-p1);color:var(--color-txt-icon-1);-webkit-user-select:none;user-select:none}.ds-radio--xs .ds-radio__circle{width:var(--icon-xs);height:var(--icon-xs)}.ds-radio--xs .ds-radio__dot{width:6px;height:6px}.ds-radio--xs .ds-radio__label{font-size:var(--font-size-p3)}.ds-radio--s .ds-radio__circle{width:var(--icon-s);height:var(--icon-s)}.ds-radio--s .ds-radio__dot{width:8px;height:8px}.ds-radio--s .ds-radio__label{font-size:var(--font-size-p2)}.ds-radio--m .ds-radio__circle{width:var(--icon-m);height:var(--icon-m)}.ds-radio--m .ds-radio__dot{width:10px;height:10px}.ds-radio--m .ds-radio__label{font-size:var(--font-size-p1)}.ds-radio--l .ds-radio__circle{width:var(--icon-l);height:var(--icon-l)}.ds-radio--l .ds-radio__dot{width:12px;height:12px}.ds-radio--l .ds-radio__label{font-size:var(--font-size-p1)}
|
package/package.json
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@donkit-ai/design-system",
|
|
3
|
-
"version": "0.3
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "Donkit Design System - minimal design tokens and React components",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "
|
|
6
|
+
"main": "./dist/index.cjs.js",
|
|
7
|
+
"module": "./dist/index.es.js",
|
|
8
|
+
"sideEffects": [
|
|
9
|
+
"*.css",
|
|
10
|
+
"dist/tokens.css"
|
|
11
|
+
],
|
|
7
12
|
"exports": {
|
|
8
|
-
".":
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.es.js",
|
|
15
|
+
"require": "./dist/index.cjs.js"
|
|
16
|
+
},
|
|
17
|
+
"./tokens.css": "./dist/tokens.css"
|
|
11
18
|
},
|
|
12
19
|
"files": [
|
|
13
|
-
"
|
|
14
|
-
"src/styles",
|
|
15
|
-
"src/index.js",
|
|
20
|
+
"dist",
|
|
16
21
|
"README.md"
|
|
17
22
|
],
|
|
18
23
|
"scripts": {
|
|
19
24
|
"dev": "vite",
|
|
20
25
|
"build": "vite build",
|
|
21
|
-
"preview": "vite preview"
|
|
26
|
+
"preview": "vite preview",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
22
28
|
},
|
|
23
29
|
"peerDependencies": {
|
|
24
30
|
"react": ">=18.0.0 <21.0.0",
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
.ds-accordion {
|
|
2
|
-
border-radius: var(--radius-s);
|
|
3
|
-
overflow: hidden;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.ds-accordion__header {
|
|
7
|
-
display: flex;
|
|
8
|
-
align-items: center;
|
|
9
|
-
justify-content: space-between;
|
|
10
|
-
width: 100%;
|
|
11
|
-
background-color: var(--color-item-bg);
|
|
12
|
-
border: none;
|
|
13
|
-
color: var(--color-txt-icon-1);
|
|
14
|
-
font-size: var(--font-size-h4);
|
|
15
|
-
font-family: inherit;
|
|
16
|
-
cursor: pointer;
|
|
17
|
-
transition: background-color var(--transition-normal);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.ds-accordion__header:hover {
|
|
21
|
-
background-color: var(--color-item-bg-hover);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.ds-accordion__title {
|
|
25
|
-
font-weight: 400;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.ds-accordion__icon {
|
|
29
|
-
flex-shrink: 0;
|
|
30
|
-
color: var(--color-txt-icon-2);
|
|
31
|
-
transition: transform var(--transition-normal);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.ds-accordion__icon--expanded {
|
|
35
|
-
transform: rotate(180deg);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.ds-accordion__content {
|
|
39
|
-
display: flex;
|
|
40
|
-
flex-direction: column;
|
|
41
|
-
background-color: var(--color-item-bg);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Sizes */
|
|
45
|
-
.ds-accordion--s .ds-accordion__header {
|
|
46
|
-
padding: var(--space-s);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.ds-accordion--s .ds-accordion__content {
|
|
50
|
-
padding: var(--space-s);
|
|
51
|
-
gap: var(--space-xs);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.ds-accordion--m .ds-accordion__header {
|
|
55
|
-
padding: var(--space-m);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.ds-accordion--m .ds-accordion__content {
|
|
59
|
-
padding: var(--space-m);
|
|
60
|
-
gap: var(--space-s);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.ds-accordion--l .ds-accordion__header {
|
|
64
|
-
padding: var(--space-l);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.ds-accordion--l .ds-accordion__content {
|
|
68
|
-
padding: var(--space-l);
|
|
69
|
-
gap: var(--space-m);
|
|
70
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { ChevronDown } from 'lucide-react';
|
|
3
|
-
import { iconSizes } from '../styles/iconSizes';
|
|
4
|
-
import './Accordion.css';
|
|
5
|
-
|
|
6
|
-
export function Accordion({
|
|
7
|
-
children,
|
|
8
|
-
title,
|
|
9
|
-
defaultExpanded = false,
|
|
10
|
-
padding = 'm',
|
|
11
|
-
...props
|
|
12
|
-
}) {
|
|
13
|
-
const [isExpanded, setIsExpanded] = useState(defaultExpanded);
|
|
14
|
-
|
|
15
|
-
const className = [
|
|
16
|
-
'ds-accordion',
|
|
17
|
-
`ds-accordion--${padding}`,
|
|
18
|
-
].filter(Boolean).join(' ');
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<div className={className} {...props}>
|
|
22
|
-
<button
|
|
23
|
-
type="button"
|
|
24
|
-
className="ds-accordion__header"
|
|
25
|
-
onClick={() => setIsExpanded(!isExpanded)}
|
|
26
|
-
aria-expanded={isExpanded}
|
|
27
|
-
>
|
|
28
|
-
<span className="ds-accordion__title">{title}</span>
|
|
29
|
-
<ChevronDown
|
|
30
|
-
size={iconSizes.s}
|
|
31
|
-
strokeWidth={1.5}
|
|
32
|
-
className={`ds-accordion__icon ${isExpanded ? 'ds-accordion__icon--expanded' : ''}`}
|
|
33
|
-
/>
|
|
34
|
-
</button>
|
|
35
|
-
{isExpanded && (
|
|
36
|
-
<div className="ds-accordion__content">
|
|
37
|
-
{children}
|
|
38
|
-
</div>
|
|
39
|
-
)}
|
|
40
|
-
</div>
|
|
41
|
-
);
|
|
42
|
-
}
|
package/src/components/Alert.css
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
.ds-alert {
|
|
2
|
-
display: flex;
|
|
3
|
-
align-items: flex-start;
|
|
4
|
-
gap: var(--space-s);
|
|
5
|
-
padding: var(--space-s);
|
|
6
|
-
border-radius: var(--radius-s);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.ds-alert--no-title {
|
|
10
|
-
align-items: center;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.ds-alert__icon {
|
|
14
|
-
flex-shrink: 0;
|
|
15
|
-
display: flex;
|
|
16
|
-
align-items: center;
|
|
17
|
-
justify-content: center;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.ds-alert:not(.ds-alert--no-title) .ds-alert__icon {
|
|
21
|
-
margin-top: 2px;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.ds-alert__content {
|
|
25
|
-
flex: 1;
|
|
26
|
-
min-width: 0;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.ds-alert__title {
|
|
30
|
-
font-size: var(--font-size-p1);
|
|
31
|
-
font-weight: 400;
|
|
32
|
-
margin-bottom: var(--space-xs);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.ds-alert__message {
|
|
36
|
-
font-size: var(--font-size-p2);
|
|
37
|
-
line-height: 1.5;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.ds-alert__close {
|
|
41
|
-
flex-shrink: 0;
|
|
42
|
-
background: none;
|
|
43
|
-
border: none;
|
|
44
|
-
color: inherit;
|
|
45
|
-
cursor: pointer;
|
|
46
|
-
padding: 0;
|
|
47
|
-
display: flex;
|
|
48
|
-
align-items: center;
|
|
49
|
-
justify-content: center;
|
|
50
|
-
opacity: 0.7;
|
|
51
|
-
transition: opacity var(--transition-normal);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.ds-alert__close:hover {
|
|
55
|
-
opacity: 1;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* Variants */
|
|
59
|
-
.ds-alert--info {
|
|
60
|
-
background: linear-gradient(var(--color-status-info-bg), var(--color-status-info-bg)), var(--color-bg);
|
|
61
|
-
color: var(--color-status-info);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.ds-alert--info .ds-alert__message {
|
|
65
|
-
color: var(--color-txt-icon-1);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.ds-alert--success {
|
|
69
|
-
background: linear-gradient(var(--color-status-success-bg), var(--color-status-success-bg)), var(--color-bg);
|
|
70
|
-
color: var(--color-status-success);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.ds-alert--success .ds-alert__message {
|
|
74
|
-
color: var(--color-txt-icon-1);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.ds-alert--warning {
|
|
78
|
-
background: linear-gradient(var(--color-status-warning-bg), var(--color-status-warning-bg)), var(--color-bg);
|
|
79
|
-
color: var(--color-status-warning);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.ds-alert--warning .ds-alert__message {
|
|
83
|
-
color: var(--color-txt-icon-1);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.ds-alert--error {
|
|
87
|
-
background: linear-gradient(var(--color-status-error-bg), var(--color-status-error-bg)), var(--color-bg);
|
|
88
|
-
color: var(--color-status-error);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.ds-alert--error .ds-alert__message {
|
|
92
|
-
color: var(--color-txt-icon-1);
|
|
93
|
-
}
|
package/src/components/Alert.jsx
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Info, CheckCircle, AlertTriangle, XCircle, X } from 'lucide-react';
|
|
3
|
-
import { iconSizes } from '../styles/iconSizes';
|
|
4
|
-
import './Alert.css';
|
|
5
|
-
|
|
6
|
-
const ICON_MAP = {
|
|
7
|
-
info: Info,
|
|
8
|
-
success: CheckCircle,
|
|
9
|
-
warning: AlertTriangle,
|
|
10
|
-
error: XCircle,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export function Alert({
|
|
14
|
-
children,
|
|
15
|
-
variant = 'info',
|
|
16
|
-
title,
|
|
17
|
-
onClose,
|
|
18
|
-
role,
|
|
19
|
-
...props
|
|
20
|
-
}) {
|
|
21
|
-
const Icon = ICON_MAP[variant];
|
|
22
|
-
const alertRole = role || (variant === 'error' ? 'alert' : 'status');
|
|
23
|
-
|
|
24
|
-
return (
|
|
25
|
-
<div className={`ds-alert ds-alert--${variant} ${!title ? 'ds-alert--no-title' : ''}`} role={alertRole} {...props}>
|
|
26
|
-
{Icon && (
|
|
27
|
-
<div className="ds-alert__icon">
|
|
28
|
-
<Icon size={iconSizes.m} strokeWidth={1.5} />
|
|
29
|
-
</div>
|
|
30
|
-
)}
|
|
31
|
-
<div className="ds-alert__content">
|
|
32
|
-
{title && <div className="ds-alert__title">{title}</div>}
|
|
33
|
-
{children && <div className="ds-alert__message">{children}</div>}
|
|
34
|
-
</div>
|
|
35
|
-
{onClose && (
|
|
36
|
-
<button
|
|
37
|
-
type="button"
|
|
38
|
-
className="ds-alert__close"
|
|
39
|
-
onClick={onClose}
|
|
40
|
-
aria-label="Close alert"
|
|
41
|
-
>
|
|
42
|
-
<X size={iconSizes.m} strokeWidth={1.5} />
|
|
43
|
-
</button>
|
|
44
|
-
)}
|
|
45
|
-
</div>
|
|
46
|
-
);
|
|
47
|
-
}
|
package/src/components/Badge.css
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
.ds-badge {
|
|
2
|
-
display: inline-flex;
|
|
3
|
-
align-items: center;
|
|
4
|
-
justify-content: center;
|
|
5
|
-
font-weight: 400;
|
|
6
|
-
white-space: nowrap;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/* Sizes */
|
|
10
|
-
.ds-badge--s {
|
|
11
|
-
padding: 0 4px;
|
|
12
|
-
font-size: var(--font-size-p3);
|
|
13
|
-
letter-spacing: var(--letter-spacing-p3);
|
|
14
|
-
border-radius: var(--radius-xs);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.ds-badge--m {
|
|
18
|
-
padding: 2px var(--space-xs);
|
|
19
|
-
font-size: var(--font-size-p2);
|
|
20
|
-
letter-spacing: var(--letter-spacing-p2);
|
|
21
|
-
border-radius: var(--radius-s);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.ds-badge--default {
|
|
25
|
-
background-color: var(--color-item-bg);
|
|
26
|
-
color: var(--color-txt-icon-2);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.ds-badge--info {
|
|
30
|
-
background-color: var(--color-status-info-bg);
|
|
31
|
-
color: var(--color-status-info);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.ds-badge--success {
|
|
35
|
-
background-color: var(--color-status-success-bg);
|
|
36
|
-
color: var(--color-status-success);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.ds-badge--warning {
|
|
40
|
-
background-color: var(--color-status-warning-bg);
|
|
41
|
-
color: var(--color-status-warning);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.ds-badge--error {
|
|
45
|
-
background-color: var(--color-status-error-bg);
|
|
46
|
-
color: var(--color-status-error);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.ds-badge--accent {
|
|
50
|
-
background-color: var(--color-red-10);
|
|
51
|
-
color: var(--color-accent);
|
|
52
|
-
}
|
package/src/components/Badge.jsx
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import './Badge.css';
|
|
3
|
-
|
|
4
|
-
export function Badge({
|
|
5
|
-
children,
|
|
6
|
-
variant = 'default',
|
|
7
|
-
size = 'm',
|
|
8
|
-
role,
|
|
9
|
-
...props
|
|
10
|
-
}) {
|
|
11
|
-
const className = [
|
|
12
|
-
'ds-badge',
|
|
13
|
-
`ds-badge--${variant}`,
|
|
14
|
-
`ds-badge--${size}`,
|
|
15
|
-
].filter(Boolean).join(' ');
|
|
16
|
-
|
|
17
|
-
// Use role="status" for informational badges (info, success, warning, error)
|
|
18
|
-
const badgeRole = role || (['info', 'success', 'warning', 'error'].includes(variant) ? 'status' : undefined);
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<span className={className} role={badgeRole} {...props}>
|
|
22
|
-
{children}
|
|
23
|
-
</span>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
.ds-button {
|
|
2
|
-
display: inline-flex;
|
|
3
|
-
align-items: center;
|
|
4
|
-
justify-content: center;
|
|
5
|
-
gap: var(--space-xs);
|
|
6
|
-
font-size: var(--font-size-p1);
|
|
7
|
-
font-weight: 400;
|
|
8
|
-
font-family: inherit;
|
|
9
|
-
line-height: 1;
|
|
10
|
-
border: none;
|
|
11
|
-
cursor: pointer;
|
|
12
|
-
transition: background-color var(--transition-normal),
|
|
13
|
-
border-color var(--transition-normal),
|
|
14
|
-
opacity var(--transition-normal);
|
|
15
|
-
white-space: nowrap;
|
|
16
|
-
text-decoration: none;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.ds-button:disabled,
|
|
20
|
-
.ds-button[aria-disabled="true"] {
|
|
21
|
-
opacity: 0.5;
|
|
22
|
-
cursor: not-allowed;
|
|
23
|
-
pointer-events: none;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.ds-button__icon {
|
|
27
|
-
display: flex;
|
|
28
|
-
align-items: center;
|
|
29
|
-
justify-content: center;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/* Variants */
|
|
33
|
-
.ds-button--primary {
|
|
34
|
-
color: var(--color-white);
|
|
35
|
-
background-color: var(--color-accent);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.ds-button--primary:hover:not(:disabled):not([aria-disabled="true"]) {
|
|
39
|
-
background-color: var(--color-accent-hover);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.ds-button--secondary {
|
|
43
|
-
color: var(--color-txt-icon-1);
|
|
44
|
-
background-color: transparent;
|
|
45
|
-
border: 1px solid var(--color-border);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.ds-button--secondary:hover:not(:disabled):not([aria-disabled="true"]) {
|
|
49
|
-
background-color: var(--color-item-bg-hover);
|
|
50
|
-
border-color: var(--color-border-hover);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.ds-button--ghost {
|
|
54
|
-
color: var(--color-txt-icon-2);
|
|
55
|
-
background-color: transparent;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.ds-button--ghost:hover:not(:disabled):not([aria-disabled="true"]) {
|
|
59
|
-
background-color: var(--color-item-bg-hover);
|
|
60
|
-
color: var(--color-txt-icon-1);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/* Sizes */
|
|
64
|
-
.ds-button--xs {
|
|
65
|
-
height: var(--height-xs);
|
|
66
|
-
padding: 0 calc(var(--height-xs) / 2);
|
|
67
|
-
font-size: var(--font-size-p3);
|
|
68
|
-
border-radius: var(--radius-xs);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.ds-button--s {
|
|
72
|
-
height: var(--height-s);
|
|
73
|
-
padding: 0 calc(var(--height-s) / 2);
|
|
74
|
-
font-size: var(--font-size-p2);
|
|
75
|
-
border-radius: var(--radius-xs);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.ds-button--m {
|
|
79
|
-
height: var(--height-m);
|
|
80
|
-
padding: 0 calc(var(--height-m) / 2);
|
|
81
|
-
font-size: var(--font-size-p1);
|
|
82
|
-
border-radius: var(--radius-s);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.ds-button--l {
|
|
86
|
-
height: var(--height-l);
|
|
87
|
-
padding: 0 calc(var(--height-l) / 2);
|
|
88
|
-
font-size: var(--font-size-h4);
|
|
89
|
-
border-radius: var(--radius-s);
|
|
90
|
-
gap: var(--space-s);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/* Full width */
|
|
94
|
-
.ds-button--full {
|
|
95
|
-
width: 100%;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/* Icon only */
|
|
99
|
-
.ds-button--icon-only {
|
|
100
|
-
aspect-ratio: 1;
|
|
101
|
-
padding-left: 0;
|
|
102
|
-
padding-right: 0;
|
|
103
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import './Button.css';
|
|
3
|
-
|
|
4
|
-
export function Button({
|
|
5
|
-
children,
|
|
6
|
-
variant = 'primary',
|
|
7
|
-
size = 'm',
|
|
8
|
-
fullWidth = false,
|
|
9
|
-
icon,
|
|
10
|
-
disabled = false,
|
|
11
|
-
onClick,
|
|
12
|
-
type = 'button',
|
|
13
|
-
href,
|
|
14
|
-
'aria-label': ariaLabel,
|
|
15
|
-
...props
|
|
16
|
-
}) {
|
|
17
|
-
const isIconOnly = icon && !children;
|
|
18
|
-
|
|
19
|
-
const className = [
|
|
20
|
-
'ds-button',
|
|
21
|
-
`ds-button--${variant}`,
|
|
22
|
-
`ds-button--${size}`,
|
|
23
|
-
fullWidth && 'ds-button--full',
|
|
24
|
-
isIconOnly && 'ds-button--icon-only',
|
|
25
|
-
].filter(Boolean).join(' ');
|
|
26
|
-
|
|
27
|
-
const content = (
|
|
28
|
-
<>
|
|
29
|
-
{icon && !isIconOnly && <span className="ds-button__icon" aria-hidden="true">{icon}</span>}
|
|
30
|
-
{children}
|
|
31
|
-
{isIconOnly && <span className="ds-button__icon" aria-hidden="true">{icon}</span>}
|
|
32
|
-
</>
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
// Render as link if href is provided
|
|
36
|
-
if (href) {
|
|
37
|
-
const handleClick = (e) => {
|
|
38
|
-
if (disabled) {
|
|
39
|
-
e.preventDefault();
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// При Cmd/Ctrl+Click или Middle Click — пусть браузер откроет новую вкладку
|
|
44
|
-
if (e.metaKey || e.ctrlKey || e.button === 1) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Обычный клик — preventDefault и вызов onClick
|
|
49
|
-
e.preventDefault();
|
|
50
|
-
onClick?.(e);
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
return (
|
|
54
|
-
<a
|
|
55
|
-
className={className}
|
|
56
|
-
href={disabled ? undefined : href}
|
|
57
|
-
onClick={handleClick}
|
|
58
|
-
aria-label={ariaLabel}
|
|
59
|
-
aria-disabled={disabled ? 'true' : undefined}
|
|
60
|
-
{...props}
|
|
61
|
-
>
|
|
62
|
-
{content}
|
|
63
|
-
</a>
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Render as button (default)
|
|
68
|
-
return (
|
|
69
|
-
<button
|
|
70
|
-
type={type}
|
|
71
|
-
className={className}
|
|
72
|
-
disabled={disabled}
|
|
73
|
-
onClick={onClick}
|
|
74
|
-
aria-label={ariaLabel}
|
|
75
|
-
{...props}
|
|
76
|
-
>
|
|
77
|
-
{content}
|
|
78
|
-
</button>
|
|
79
|
-
);
|
|
80
|
-
}
|
package/src/components/Card.css
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
.ds-card {
|
|
2
|
-
display: flex;
|
|
3
|
-
flex-direction: column;
|
|
4
|
-
background-color: transparent;
|
|
5
|
-
border-radius: var(--radius-s);
|
|
6
|
-
border: 1px solid var(--color-border);
|
|
7
|
-
transition: border-color var(--transition-normal), background-color var(--transition-normal);
|
|
8
|
-
text-decoration: none;
|
|
9
|
-
color: inherit;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.ds-card--interactive {
|
|
13
|
-
cursor: pointer;
|
|
14
|
-
background-color: var(--color-item-bg);
|
|
15
|
-
border: none;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.ds-card--interactive:hover:not([aria-disabled="true"]) {
|
|
19
|
-
background-color: var(--color-item-bg-hover);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.ds-card[aria-disabled="true"] {
|
|
23
|
-
opacity: 0.5;
|
|
24
|
-
cursor: not-allowed;
|
|
25
|
-
pointer-events: none;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.ds-card--none {
|
|
29
|
-
padding: 0;
|
|
30
|
-
gap: 0;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.ds-card--s {
|
|
34
|
-
padding: var(--space-s);
|
|
35
|
-
gap: var(--space-xs);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.ds-card--m {
|
|
39
|
-
padding: var(--space-m);
|
|
40
|
-
gap: var(--space-s);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.ds-card--l {
|
|
44
|
-
padding: var(--space-l);
|
|
45
|
-
gap: var(--space-m);
|
|
46
|
-
}
|