@tetjana/flowmakers-ds 0.1.7 → 0.1.9
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/components/CardCareer.d.ts +18 -0
- package/dist/components/CardCareer.figma.d.ts +1 -0
- package/dist/components/CardTest.d.ts +19 -0
- package/dist/components/CardTest.figma.d.ts +1 -0
- package/dist/components/DashboardTitle.d.ts +12 -0
- package/dist/components/DatePicker.d.ts +10 -0
- package/dist/components/Dropdown.d.ts +14 -0
- package/dist/components/Footer.figma.d.ts +1 -0
- package/dist/components/Header.figma.d.ts +1 -0
- package/dist/components/IconButton.d.ts +12 -0
- package/dist/components/IconButton.figma.d.ts +1 -0
- package/dist/components/ListItem.d.ts +8 -0
- package/dist/components/NavMenu.d.ts +18 -0
- package/dist/components/NavMenu.figma.d.ts +1 -0
- package/dist/components/Pagination.d.ts +15 -0
- package/dist/components/Pagination.figma.d.ts +1 -0
- package/dist/components/Price.d.ts +13 -0
- package/dist/components/PriceCard.d.ts +15 -0
- package/dist/components/ProcessStep.d.ts +12 -0
- package/dist/components/Question.d.ts +13 -0
- package/dist/components/RadioButton.d.ts +8 -0
- package/dist/components/Search.d.ts +7 -0
- package/dist/components/SectionTitle.d.ts +14 -0
- package/dist/components/SegmentedControl.d.ts +14 -0
- package/dist/components/SegmentedControl.figma.d.ts +1 -0
- package/dist/components/SignupForm.d.ts +10 -0
- package/dist/components/Stepper.d.ts +18 -0
- package/dist/components/StepperProgress.d.ts +13 -0
- package/dist/components/TagBig.d.ts +9 -0
- package/dist/components/Tariffs.d.ts +12 -0
- package/dist/components/TasksWidget.d.ts +13 -0
- package/dist/components/TestimonialCard.d.ts +11 -0
- package/dist/components/TimePicker.d.ts +10 -0
- package/dist/components/WidgetCard.d.ts +65 -0
- package/dist/components/WidgetCard.figma.d.ts +1 -0
- package/dist/demo.d.ts +3 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +52 -0
- package/dist/index.esm.js +830 -110
- package/dist/styles.css +1 -1
- package/guidelines/Guidelines.md +17 -0
- package/guidelines/components/cardcareer.md +70 -0
- package/guidelines/components/cardtest.md +82 -0
- package/guidelines/components/iconbutton.md +42 -0
- package/guidelines/components/navmenu.md +48 -0
- package/guidelines/components/pagination.md +61 -0
- package/guidelines/components/segmentedcontrol.md +37 -0
- package/guidelines/components/widgetcard.md +187 -0
- package/guidelines/design-tokens/colors.md +3 -3
- package/guidelines/overview-components.md +49 -10
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bw-fill-white: #ffffff;--bw-fill-black: #121212;--bw-fill-50: #f7f7f8;--bw-fill-100: #eeeef0;--bw-fill-200: #dcdcdc;--bw-fill-300: #b8b9c1;--bw-fill-400: #989898;--bw-fill-500: #7c7c7c;--bw-fill-600: #5d5e6c;--bw-fill-700: #4c4d58;--bw-fill-950: #18181b;--bw-transparent-white-5: rgba(255,255,255,.05);--bw-transparent-white-75: rgba(255,255,255,.75);--primary-fill-100: #eeecfb;--primary-fill-200: #d8d3f6;--primary-fill-300: #b9aff0;--primary-fill-400: #9b8ae9;--primary-fill-500: #7d65e1;--primary-fill-600: #6d45bc;--primary-fill-700: #6d45bc;--primary-fill-800: #4e2f8e;--primary-fill-900: #2f1a60;--pink-fill-100: #ffe7fc;--pink-fill-200: #ffcef9;--pink-fill-300: #ffa8f1;--pink-fill-400: #ff7de7;--pink-fill-500: #e040d0;--pink-fill-600: #c620b8;--pink-fill-700: #b51692;--green-fill-100: #d9f2e7;--green-fill-200: #b3e5cf;--green-fill-300: #7dd1ae;--green-fill-400: #47bc8d;--green-fill-500: #27a872;--green-fill-600: #1e8a5d;--green-fill-700: #1b6153;--yellow-fill-100: #fff0d4;--yellow-fill-200: #ffe0a8;--yellow-fill-300: #ffc96b;--yellow-fill-400: #ffb02e;--yellow-fill-500: #f59100;--yellow-fill-600: #d97400;--yellow-fill-700: #c54e09;--nature-fill-50: #f7f7f8;--nature-fill-100: #eeeef0;--nature-fill-200: #dcdcde;--nature-fill-300: #b8b9c1;--nature-fill-400: #989898;--nature-fill-500: #7c7c7c;--nature-fill-600: #5d5e6c;--nature-fill-700: #4c4d58;--nature-fill-800: #2e2f3a;--nature-fill-900: #1e1f28;--nature-fill-950: #18181b}:root{--font-family-headings: "Manrope", sans-serif;--font-family-body: "Nunito Sans", sans-serif;--font-size-10: 10px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-20: 20px;--font-size-24: 24px;--font-size-30: 30px;--font-size-36: 36px;--font-size-48: 48px;--weight-light: 300;--weight-regular: 400;--weight-medium: 400;--weight-semibold: 600;--weight-bold: 700;--line-height-tight: .9;--line-height-snug: 1;--line-height-normal: 1.2;--line-height-relaxed:1.4}.text-display{font-family:var(--font-family-headings);font-size:var(--font-size-48);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h1{font-family:var(--font-family-headings);font-size:var(--font-size-36);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h2{font-family:var(--font-family-headings);font-size:var(--font-size-30);font-weight:var(--weight-bold);line-height:.94}.text-h3{font-family:var(--font-family-headings);font-size:var(--font-size-24);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h4{font-family:var(--font-family-headings);font-size:var(--font-size-18);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-body-lg{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-md{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-sm{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-medium);line-height:var(--line-height-normal)}.text-subtitle{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-semibold);line-height:1}.text-button{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-bold);line-height:1}.text-tiny{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-bold);line-height:var(--line-height-normal)}:root{--space-xxs: 4px;--space-xs: 8px;--space-s: 10px;--space-sm: 12px;--space-m: 16px;--space-l: 20px;--space-xl: 24px;--space-2xl: 32px;--space-3xl: 48px;--radius-xs: 8px;--radius-s: 10px;--radius-m: 12px;--radius-l: 16px;--radius-xl: 20px;--radius-full: 9999px}.fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:none;cursor:pointer;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1;white-space:nowrap;transition:background .15s,border-color .15s,border-width .15s,opacity .15s,box-shadow .15s;text-decoration:none;box-sizing:border-box;position:relative}.fm-btn--sm{height:32px;padding:0 12px;border-radius:10px;font-size:12px}.fm-btn--md{height:42px;padding:10px 16px;border-radius:12px}.fm-btn--lg{height:52px;padding:12px 24px;border-radius:12px;font-size:16px}.fm-btn--full{width:100%}.fm-btn--primary{background:#121212;color:#fff;border:none}.fm-btn--primary:hover:not(:disabled){background:#121212;box-shadow:inset 0 0 0 100px #ffffff0d}.fm-btn--primary:active:not(:disabled){background:#2a2a2a}.fm-btn--primary:focus-visible{outline:2px solid #ffa8f1;outline-offset:2px}.fm-btn--hero{background:#121212;color:#fff;border:1.5px solid transparent;padding:10px 16px;border-radius:12px;height:42px}.fm-btn--hero:hover:not(:disabled){border-color:#ffa8f1;background:#121212}.fm-btn--hero:active:not(:disabled){border-color:#ffa8f1;background:#121212}.fm-btn--hero:focus-visible{border-color:#ffa8f1;outline:none}.fm-btn--hero:disabled{background:#dcdcdc;color:#91939f;border-color:transparent}.fm-btn--secondary{background:#fff;color:#18181b;border:1px solid #d9d9de;border-radius:12px;height:42px;padding:10px 16px}.fm-btn--secondary:hover:not(:disabled){border-width:1.5px;border-color:#ffa8f1;background:#fff}.fm-btn--secondary:active:not(:disabled){border-width:1px;border-color:#ffa8f1;background:#f7f7f8}.fm-btn--secondary:focus-visible{border-width:1px;border-color:#ffa8f1;outline:none;background:#fff}.fm-btn--secondary:disabled{color:#91939f;border-color:#d9d9de;border-width:1px;background:#fff;cursor:not-allowed}.fm-btn--secondary-large{background:#fff;color:#18181b;border:1px solid #d9d9de;border-radius:12px;height:52px;padding:12px 24px;font-size:16px}.fm-btn--secondary-large:hover:not(:disabled){border-width:1.5px;border-color:#ffa8f1;background:#fff}.fm-btn--secondary-large:active:not(:disabled){border-width:1px;border-color:#ffa8f1;background:#f7f7f8}.fm-btn--secondary-large:focus-visible{border-width:1px;border-color:#ffa8f1;outline:none;background:#fff}.fm-btn--secondary-large:disabled{color:#91939f;border-color:#d9d9de;border-width:1px;background:#fff;cursor:not-allowed}.fm-btn--ghost{background:transparent;color:#18181b;border:none}.fm-btn--ghost:hover:not(:disabled){background:#f7f7f8}.fm-btn--ghost:active:not(:disabled){background:#eeeef0}.fm-btn--ghost-icon{background:transparent;color:#18181b;border:none;padding:8px;border-radius:10px;height:auto}.fm-btn--ghost-icon:hover:not(:disabled){background:#f7f7f8}.fm-btn--disabled,.fm-btn:disabled{cursor:not-allowed;opacity:1}.fm-btn__icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.fm-input-wrapper{display:flex;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.fm-input__label{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:400;color:#5d5e6c;line-height:1.4;white-space:nowrap}.fm-input__field{display:flex;align-items:center;gap:8px;height:42px;padding:10px 16px;border-radius:12px;border:1px solid #b8b9c1;background:#fff;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;width:100%}.fm-input__el{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-input__el::placeholder{color:#b8b9c1}.fm-input-wrapper--hover .fm-input__field{border-color:#5d5e6c;box-shadow:0 4px 5.3px #d9d9de}.fm-input-wrapper--focused .fm-input__field{border-color:#ffa8f1}.fm-input-wrapper--filled .fm-input__field{border-color:#5d5e6c}.fm-input-wrapper--error .fm-input__field{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field{border-color:#34c759}.fm-input-wrapper--disabled .fm-input__field{background:#f7f7f8;cursor:not-allowed;border-color:#b8b9c1}.fm-input-wrapper--disabled .fm-input__el{cursor:not-allowed;color:#91939f}.fm-input__el:focus{outline:none}.fm-input__field:focus-within{border-color:#ffa8f1}.fm-input-wrapper--error .fm-input__field:focus-within{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field:focus-within{border-color:#34c759}.fm-input__icon{display:inline-flex;align-items:center;color:#b8b9c1;flex-shrink:0}.fm-input__message{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.2;margin:0}.fm-input__message--error{color:#ff383c}.fm-input__message--success{color:#34c759}.fm-tag{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:9999px;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap;box-sizing:border-box}.fm-tag--grey{background:#eeeef0;color:#4c4d58}.fm-tag--green{background:#d9f2e7;color:#1b6153}.fm-tag--yellow{background:#fff0d4;color:#c54e09}.fm-tag--purple{background:#eeecfb;color:#6d45bc}.fm-tag--pink{background:#ffe7fc;color:#b51692}.fm-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-toggle__input{position:absolute;opacity:0;width:0;height:0}.fm-toggle__track{position:relative;width:64px;height:28px;border-radius:100px;background:#d9d9de;transition:background .25s;flex-shrink:0;overflow:hidden}.fm-toggle__input:checked~.fm-toggle__track{background:linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc)}.fm-toggle__thumb{position:absolute;top:50%;transform:translateY(-50%);left:2px;width:24px;height:24px;border-radius:100px;background:#fff;transition:left .25s;box-shadow:0 1px 3px #00000026}.fm-toggle__input:checked~.fm-toggle__track .fm-toggle__thumb{left:calc(100% - 26px)}.fm-toggle--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-toggle__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-checkbox__input{position:absolute;opacity:0;width:0;height:0}.fm-checkbox__box{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:1.5px solid #b8b9c1;background:#fff;flex-shrink:0;overflow:hidden;transition:background .15s,border-color .15s;box-sizing:border-box}.fm-checkbox--large .fm-checkbox__box{width:22px;height:22px;border-radius:6px}.fm-checkbox__input:checked+.fm-checkbox__box{background:#0d6fff;border-color:#0d6fff}.fm-checkbox__input:indeterminate+.fm-checkbox__box{background:#0d6fff;border-color:#0d6fff}.fm-checkbox__minus{width:10px;height:2px;background:#fff;border-radius:1px}.fm-checkbox:not(.fm-checkbox--disabled):hover .fm-checkbox__box{border-color:#5d5e6c}.fm-checkbox--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-checkbox__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-m, 16px);border-radius:var(--radius-xl, 20px) var(--radius-xl, 20px) 0 0;width:100%}.fm-header--purple{background:var(--primary-fill-100, #eeecfb)}.fm-header--grey{background:var(--nature-fill-50, #f7f7f8)}.fm-header__slot{display:flex;align-items:center}.fm-header__title-block{display:flex;flex-direction:column;gap:var(--space-xs, 8px);flex:1;padding:0 var(--space-xs, 8px)}.fm-header__title{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-18, 18px);font-weight:var(--weight-bold, 700);color:var(--bw-fill-black, #121212);line-height:.9;margin:0}.fm-header__subtitle{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);color:var(--bw-fill-400, #989898);line-height:1.4;margin:0}.fm-footer{display:flex;flex-direction:column;width:100%}.fm-footer--light{background:var(--nature-fill-50, #f7f7f8);color:var(--bw-fill-black, #121212)}.fm-footer--dark{background:var(--nature-fill-950, #18181b);color:#ffffffbf}.fm-footer__top{display:flex;gap:var(--space-3xl, 48px);padding:var(--space-xl, 24px);align-items:flex-start}.fm-footer__cta-block{display:flex;flex-direction:column;gap:var(--space-xl, 24px);flex-shrink:0}.fm-footer__headline{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-30, 30px);font-weight:var(--weight-bold, 700);line-height:.94;margin:0}.fm-footer__cta-btn{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:0 var(--space-m, 16px);border-radius:var(--radius-m, 12px);font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-bold, 700);cursor:pointer;transition:background .15s}.fm-footer--light .fm-footer__cta-btn{background:var(--bw-fill-black, #121212);color:var(--bw-fill-white, #ffffff);border:none}.fm-footer--dark .fm-footer__cta-btn{background:transparent;color:#ffffffbf;border:1.5px solid var(--pink-fill-300, #ffa8f1)}.fm-footer__sections{display:flex;gap:var(--space-3xl, 48px);flex:1;justify-content:space-between;flex-wrap:wrap}.fm-footer__section{display:flex;flex-direction:column;gap:var(--space-xl, 24px)}.fm-footer__section-title{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-16, 16px);font-weight:var(--weight-semibold, 600);margin:0}.fm-footer__section-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-m, 16px)}.fm-footer__link{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-light, 300);text-decoration:none;line-height:1.4;color:inherit}.fm-footer__link:hover{text-decoration:underline}.fm-footer__bottom{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xl, 24px);border-top:1px solid rgba(255,255,255,.05)}.fm-footer__copyright{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);line-height:1.4;margin:0}
|
|
1
|
+
:root{--bw-fill-white: #ffffff;--bw-fill-black: #121212;--bw-fill-50: #f7f7f8;--bw-fill-100: #eeeef0;--bw-fill-200: #dcdcdc;--bw-fill-300: #b8b9c1;--bw-fill-400: #989898;--bw-fill-500: #7c7c7c;--bw-fill-600: #656565;--bw-fill-700: #525252;--bw-fill-800: #464646;--bw-fill-900: #3d3d3d;--bw-fill-950: #18181b;--bw-transparent-white-5: rgba(255,255,255,.05);--bw-transparent-white-75: rgba(255,255,255,.75);--primary-fill-50: #f6f5fd;--primary-fill-100: #eeecfb;--primary-fill-200: #e0ddf7;--primary-fill-300: #c9c1f1;--primary-fill-400: #ac9de8;--primary-fill-500: #9076dc;--primary-fill-600: #754ccc;--primary-fill-700: #6d45bc;--primary-fill-800: #5b3a9d;--primary-fill-900: #4c3181;--primary-fill-950: #2f1e57;--pink-fill-50: #fff4fe;--pink-fill-100: #ffe7fc;--pink-fill-200: #ffcef9;--pink-fill-300: #ffa8f1;--pink-fill-400: #fe66e3;--pink-fill-500: #f63fd5;--pink-fill-600: #da1fb5;--pink-fill-700: #b51692;--green-fill-50: #effaf6;--green-fill-100: #d9f2e7;--green-fill-200: #b6e4d3;--green-fill-300: #91d4bf;--green-fill-400: #53b499;--green-fill-500: #31987f;--green-fill-600: #217a65;--green-fill-700: #1b6153;--yellow-fill-50: #fff8ed;--yellow-fill-100: #fff0d4;--yellow-fill-200: #ffdda9;--yellow-fill-300: #ffbe62;--yellow-fill-400: #fea139;--yellow-fill-500: #fc8313;--yellow-fill-600: #ed6809;--yellow-fill-700: #c54e09;--nature-fill-50: #f7f7f8;--nature-fill-100: #eeeef0;--nature-fill-200: #d9d9de;--nature-fill-300: #b8b9c1;--nature-fill-400: #91939f;--nature-fill-500: #737584;--nature-fill-600: #5d5e6c;--nature-fill-700: #4c4d58;--nature-fill-800: #41414b;--nature-fill-900: #1e1f28;--nature-fill-950: #18181b;--functional-success-500: #34c759;--functional-error-500: #ff383c}:root{--font-family-headings: "Manrope", sans-serif;--font-family-body: "Nunito Sans", sans-serif;--font-size-10: 10px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-20: 20px;--font-size-24: 24px;--font-size-30: 30px;--font-size-36: 36px;--font-size-48: 48px;--weight-light: 300;--weight-regular: 400;--weight-medium: 400;--weight-semibold: 600;--weight-bold: 700;--line-height-tight: .9;--line-height-snug: 1;--line-height-normal: 1.2;--line-height-relaxed:1.4}.text-display{font-family:var(--font-family-headings);font-size:var(--font-size-48);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h1{font-family:var(--font-family-headings);font-size:var(--font-size-36);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h2{font-family:var(--font-family-headings);font-size:var(--font-size-30);font-weight:var(--weight-bold);line-height:.94}.text-h3{font-family:var(--font-family-headings);font-size:var(--font-size-24);font-weight:var(--weight-bold);line-height:var(--line-height-normal)}.text-h4{font-family:var(--font-family-headings);font-size:var(--font-size-18);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-body-lg{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-md{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-sm{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-medium);line-height:var(--line-height-normal)}.text-subtitle{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-semibold);line-height:1}.text-button{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-bold);line-height:1}.text-tiny{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-bold);line-height:var(--line-height-normal)}:root{--space-xxs: 4px;--space-xs: 8px;--space-s: 10px;--space-sm: 12px;--space-m: 16px;--space-l: 20px;--space-xl: 24px;--space-2xl: 32px;--space-3xl: 48px;--radius-xs: 8px;--radius-s: 10px;--radius-m: 12px;--radius-l: 16px;--radius-xl: 20px;--radius-full: 9999px}.fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:none;cursor:pointer;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1;white-space:nowrap;transition:background .15s,border-color .15s,border-width .15s,opacity .15s,box-shadow .15s;text-decoration:none;box-sizing:border-box;position:relative}.fm-btn--sm{height:31.5px;padding:0 11.5px;border-radius:10px;font-size:11.5px}.fm-btn--md{height:41.5px;padding:10px 16px;border-radius:11.5px}.fm-btn--lg{height:51.5px;padding:11.5px 24px;border-radius:11.5px;font-size:16px}.fm-btn--full{width:100%}.fm-btn--primary{background:#121212;color:#fff;border:none}.fm-btn--primary:hover:not(:disabled){background:#121212;box-shadow:inset 0 0 0 100px #ffffff0d}.fm-btn--primary:active:not(:disabled){background:#2a2a2a}.fm-btn--primary:focus-visible{outline:1.5px solid #ffa8f1;outline-offset:1.5px}.fm-btn--hero{background:#121212;color:#fff;border:1.5px solid transparent;padding:10px 16px;border-radius:11.5px;height:41.5px}.fm-btn--hero:hover:not(:disabled),.fm-btn--hero:active:not(:disabled),.fm-btn--hero:focus-visible{outline:none;border:2px solid transparent;background:linear-gradient(#121212,#121212) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--hero:disabled{background:#bdbdbd;color:#91939f;border-color:transparent}.fm-btn--secondary{background:#fff;color:#18181b;border:1.5px solid #d9d9de;border-radius:11.5px;height:41.5px;padding:10px 16px}.fm-btn--secondary:hover:not(:disabled),.fm-btn--secondary:focus-visible{outline:none;border:2px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary:active:not(:disabled){border:2px solid transparent;background:linear-gradient(#f7f7f8,#f7f7f8) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary:disabled{color:#91939f;border:1.5px solid #d9d9de;background:#fff;cursor:not-allowed}.fm-btn--secondary-large{background:#fff;color:#18181b;border:1.5px solid #d9d9de;border-radius:11.5px;height:51.5px;padding:11.5px 24px;font-size:16px}.fm-btn--secondary-large:hover:not(:disabled),.fm-btn--secondary-large:focus-visible{outline:none;border:2px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary-large:active:not(:disabled){border:2px solid transparent;background:linear-gradient(#f7f7f8,#f7f7f8) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary-large:disabled{color:#91939f;border:1.5px solid #d9d9de;background:#fff;cursor:not-allowed}.fm-btn--ghost{background:transparent;color:#18181b;border:none}.fm-btn--ghost:hover:not(:disabled){background:#f7f7f8}.fm-btn--ghost:active:not(:disabled){background:#eeeef0}.fm-btn--ghost-icon{background:transparent;color:#18181b;border:none;padding:8px;border-radius:10px;height:auto}.fm-btn--ghost-icon:hover:not(:disabled){background:#f7f7f8}.fm-btn--disabled,.fm-btn:disabled{cursor:not-allowed;opacity:1}.fm-btn__icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.fm-input-wrapper{display:flex;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.fm-input__label{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:400;color:#5d5e6c;line-height:1.4;white-space:nowrap}.fm-input__field{display:flex;align-items:center;gap:8px;height:42px;padding:10px 16px;border-radius:12px;border:1px solid #b8b9c1;background:#fff;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;width:100%}.fm-input__el{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-input__el::placeholder{color:#b8b9c1}.fm-input-wrapper--hover .fm-input__field{border-color:#5d5e6c;box-shadow:0 4px 5.3px #d9d9de}.fm-input-wrapper--focused .fm-input__field{border-color:#ffa8f1}.fm-input-wrapper--filled .fm-input__field{border-color:#5d5e6c}.fm-input-wrapper--error .fm-input__field{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field{border-color:#34c759}.fm-input-wrapper--disabled .fm-input__field{background:#f7f7f8;cursor:not-allowed;border-color:#b8b9c1}.fm-input-wrapper--disabled .fm-input__el{cursor:not-allowed;color:#91939f}.fm-input__el:focus{outline:none}.fm-input__field:focus-within{border-color:#ffa8f1}.fm-input-wrapper--error .fm-input__field:focus-within{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field:focus-within{border-color:#34c759}.fm-input__icon{display:inline-flex;align-items:center;color:#b8b9c1;flex-shrink:0}.fm-input__message{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.2;margin:0}.fm-input__message--error{color:#ff383c}.fm-input__message--success{color:#34c759}.fm-tag{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:9999px;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap;box-sizing:border-box}.fm-tag--grey{background:#eeeef0;color:#4c4d58}.fm-tag--green{background:#d9f2e7;color:#1b6153}.fm-tag--yellow{background:#fff0d4;color:#c54e09}.fm-tag--purple{background:#eeecfb;color:#6d45bc}.fm-tag--pink{background:#ffe7fc;color:#b51692}.fm-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-toggle__input{position:absolute;opacity:0;width:0;height:0}.fm-toggle__track{position:relative;width:64px;height:28px;border-radius:100px;background:#d9d9de;transition:background .25s;flex-shrink:0;overflow:hidden}.fm-toggle__input:checked~.fm-toggle__track{background:linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc)}.fm-toggle__thumb{position:absolute;top:50%;transform:translateY(-50%);left:2px;width:24px;height:24px;border-radius:100px;background:#fff;transition:left .25s;box-shadow:0 1px 3px #00000026}.fm-toggle__input:checked~.fm-toggle__track .fm-toggle__thumb{left:calc(100% - 26px)}.fm-toggle--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-toggle__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-checkbox__input{position:absolute;opacity:0;width:0;height:0}.fm-checkbox__box{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:1.5px solid #b8b9c1;background:#fff;flex-shrink:0;overflow:hidden;transition:background .15s,border-color .15s;box-sizing:border-box}.fm-checkbox--large .fm-checkbox__box{width:22px;height:22px;border-radius:6px}.fm-checkbox__input:checked+.fm-checkbox__box{background:#9076dc;border-color:#9076dc}.fm-checkbox__input:indeterminate+.fm-checkbox__box{background:#9076dc;border-color:#9076dc}.fm-checkbox__minus{width:10px;height:2px;background:#fff;border-radius:1px}.fm-checkbox:not(.fm-checkbox--disabled):hover .fm-checkbox__box{border-color:#5d5e6c}.fm-checkbox--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-checkbox__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-m, 16px);border-radius:var(--radius-xl, 20px) var(--radius-xl, 20px) 0 0;width:100%}.fm-header--purple{background:var(--primary-fill-100, #eeecfb)}.fm-header--grey{background:var(--nature-fill-50, #f7f7f8)}.fm-header__slot{display:flex;align-items:center}.fm-header__title-block{display:flex;flex-direction:column;gap:var(--space-xs, 8px);flex:1;padding:0 var(--space-xs, 8px)}.fm-header__title{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-18, 18px);font-weight:var(--weight-bold, 700);color:var(--bw-fill-black, #121212);line-height:.9;margin:0}.fm-header__subtitle{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);color:var(--bw-fill-400, #989898);line-height:1.4;margin:0}.fm-footer{display:flex;flex-direction:column;width:100%}.fm-footer--light{background:var(--nature-fill-50, #f7f7f8);color:var(--bw-fill-black, #121212)}.fm-footer--dark{background:var(--nature-fill-950, #18181b);color:#ffffffbf}.fm-footer__top{display:flex;gap:var(--space-3xl, 48px);padding:var(--space-xl, 24px);align-items:flex-start}.fm-footer__cta-block{display:flex;flex-direction:column;gap:var(--space-xl, 24px);flex-shrink:0}.fm-footer__headline{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-30, 30px);font-weight:var(--weight-bold, 700);line-height:.94;margin:0}.fm-footer__cta-btn{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:0 var(--space-m, 16px);border-radius:var(--radius-m, 12px);font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-bold, 700);cursor:pointer;transition:background .15s}.fm-footer--light .fm-footer__cta-btn{background:var(--bw-fill-black, #121212);color:var(--bw-fill-white, #ffffff);border:none}.fm-footer--dark .fm-footer__cta-btn{background:transparent;color:#ffffffbf;border:1.5px solid var(--pink-fill-300, #ffa8f1)}.fm-footer__sections{display:flex;gap:var(--space-3xl, 48px);flex:1;justify-content:space-between;flex-wrap:wrap}.fm-footer__section{display:flex;flex-direction:column;gap:var(--space-xl, 24px)}.fm-footer__section-title{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-16, 16px);font-weight:var(--weight-semibold, 600);margin:0}.fm-footer__section-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-m, 16px)}.fm-footer__link{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-light, 300);text-decoration:none;line-height:1.4;color:inherit}.fm-footer__link:hover{text-decoration:underline}.fm-footer__bottom{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xl, 24px);border-top:1px solid rgba(255,255,255,.05)}.fm-footer__copyright{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);line-height:1.4;margin:0}.fm-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:80px;min-height:60px;padding:10px 12px;border-radius:12px;border:1.5px solid transparent;background:transparent;cursor:pointer;text-decoration:none;box-sizing:border-box;transition:background .15s,border-color .15s}.fm-nav-item__icon{width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#91939f}.fm-nav-item__label{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;line-height:1.2;color:#91939f;text-align:center;white-space:nowrap}.fm-nav-item:hover:not(.fm-nav-item--active):not(.fm-nav-item--pressed){border-color:#ffa8f1;background:transparent}.fm-nav-item:hover:not(.fm-nav-item--active):not(.fm-nav-item--pressed) .fm-nav-item__icon{color:#91939f}.fm-nav-item:hover:not(.fm-nav-item--active):not(.fm-nav-item--pressed) .fm-nav-item__label{color:#91939f}.fm-nav-item--pressed,.fm-nav-item:active:not(.fm-nav-item--active){background:#6d45bc;border-color:transparent}.fm-nav-item--pressed .fm-nav-item__icon,.fm-nav-item:active:not(.fm-nav-item--active) .fm-nav-item__icon{color:#fff}.fm-nav-item--pressed .fm-nav-item__label,.fm-nav-item:active:not(.fm-nav-item--active) .fm-nav-item__label{color:#fff}.fm-nav-item--active{background:#9076dc;border-color:transparent}.fm-nav-item--active .fm-nav-item__icon,.fm-nav-item--active .fm-nav-item__label{color:#fff}.fm-nav-bar{display:flex;flex-direction:column;gap:4px;padding:8px;background:#fff;border-right:1px solid #eeeef0}.fm-nav-bar--horizontal{flex-direction:row;border-right:none;border-bottom:1px solid #eeeef0;padding:8px 16px}.fm-card-test{display:flex;flex-direction:column;justify-content:space-between;width:420px;min-height:448px;padding:16px;background:#fff;border:1px solid #eeeef0;border-radius:20px;box-sizing:border-box;gap:12px}.fm-card-test__image{position:relative;height:160px;border-radius:12px;overflow:hidden;flex-shrink:0;display:flex;align-items:flex-start;justify-content:flex-end}.fm-card-test__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:12px}.fm-card-test__image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#18181b40;border-radius:12px}.fm-card-test__status-tag{position:absolute;top:12px;right:12px;display:flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:9999px;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;line-height:1.2;z-index:1}.fm-card-test__status-tag--available{background:#d9f2e7;color:#1b6153}.fm-card-test__status-tag--in-progress{background:#fff0d4;color:#c54e09}.fm-card-test__status-tag--completed{background:#eeecfb;color:#6d45bc}.fm-card-test__status-tag--unavailable{background:#eeeef0;color:#91939f}.fm-card-test__content{display:flex;flex-direction:column;gap:12px}.fm-card-test__title{font-family:Manrope,sans-serif;font-weight:700;font-size:24px;line-height:1.2;color:#18181b;margin:0}.fm-card-test__description{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1.4;color:#91939f;margin:0}.fm-card-test__tags{display:flex;flex-wrap:wrap;gap:8px}.fm-card-test__meta{display:flex;gap:12px;align-items:center}.fm-card-test__meta-item{display:flex;gap:4px;align-items:center;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;line-height:1.2;color:#91939f}.fm-card-test__meta-icon{width:20px;height:20px;flex-shrink:0}.fm-card-test--unavailable{opacity:.5}.fm-card-career{width:100%;background:#fff;border:1px solid #eeeef0;border-radius:20px;overflow:hidden;box-sizing:border-box}.fm-card-career__header{display:flex;align-items:center;gap:16px;padding:24px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-card-career__header-content{flex:1;display:flex;flex-direction:column;gap:10px}.fm-card-career__title-row{display:flex;gap:10px;align-items:center}.fm-card-career__title{font-family:Manrope,sans-serif;font-weight:700;font-size:18px;line-height:.9;color:#18181b;margin:0}.fm-card-career__subtitle{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#989898;margin:0}.fm-card-career__chevron{width:20px;height:20px;flex-shrink:0;color:#91939f;transition:transform .2s}.fm-card-career--open .fm-card-career__chevron{transform:rotate(180deg)}.fm-card-career__tasks{display:none}.fm-card-career--open .fm-card-career__tasks{display:block}.fm-card-career__task{display:flex;gap:10px;align-items:center;justify-content:center;padding:24px;border-top:1px solid #eeeef0}.fm-card-career__task-info{flex:1;display:flex;gap:16px;align-items:center}.fm-card-career__task-text{flex:1;display:flex;flex-direction:column;gap:12px}.fm-card-career__task-title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:1;color:#18181b;margin:0}.fm-card-career__task-subtitle{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#989898;margin:0}.fm-card-career__progress{position:relative;width:50px;height:50px;flex-shrink:0}.fm-card-career__progress svg{width:50px;height:50px;transform:rotate(-90deg)}.fm-card-career__progress-track{fill:none;stroke:#eeeef0;stroke-width:4}.fm-card-career__progress-fill{fill:none;stroke:#9076dc;stroke-width:4;stroke-linecap:round;transition:stroke-dashoffset .4s}.fm-card-career__progress-fill--complete{stroke:#31987f}.fm-card-career__progress-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;color:#18181b}.fm-icon-btn{display:inline-flex;align-items:center;justify-content:center;border:1.5px solid transparent;cursor:pointer;border-radius:9999px;flex-shrink:0;transition:background .15s,border-color .15s;box-sizing:border-box;padding:0}.fm-icon-btn--regular{width:33px;height:33px}.fm-icon-btn--small{width:27px;height:27px}.fm-icon-btn svg{width:15px;height:15px;flex-shrink:0}.fm-icon-btn--filled{background:#18181b;color:#fff}.fm-icon-btn--filled:hover:not(:disabled){background:linear-gradient(#18181b,#18181b) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-icon-btn--filled:active:not(:disabled){background:#2a2a2a}.fm-icon-btn--outlined{background:#fff;color:#18181b;border:1.5px solid #d9d9de}.fm-icon-btn--outlined:hover:not(:disabled){border:1.5px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-icon-btn:focus-visible{outline:2px solid #ffa8f1;outline-offset:2px}.fm-icon-btn:disabled{background:#d9d9de;color:#91939f;cursor:not-allowed;border-color:transparent}.fm-segmented-control{display:inline-flex;gap:4px;padding:4px;background:#f7f7f8;border-radius:14px;box-sizing:border-box}.fm-segmented-control__item{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:10px 20px;border:none;border-radius:12px;background:transparent;color:#18181b;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;box-sizing:border-box}.fm-segmented-control__item--active{background:#9076dc;color:#f6f5fd}.fm-segmented-control__item:not(.fm-segmented-control__item--active):hover{background:#eeeef0}.fm-pagination{display:flex;align-items:center;gap:8px;box-sizing:border-box}.fm-pagination--dots{width:336px;justify-content:space-between}.fm-pagination__dots{display:flex;align-items:center;gap:0;padding:4px 8px;border-radius:12px}.fm-pagination__dot{display:inline-block;width:16px;height:16px;border-radius:9999px;display:flex;align-items:center;justify-content:center}.fm-pagination__dot:after{content:"";display:block;width:4px;height:4px;border-radius:9999px;background:#d9d9de;transition:width .15s,height .15s,background .15s}.fm-pagination__dot--active:after{width:8px;height:8px;background:#9076dc}.fm-pagination--numbers{justify-content:center;gap:8px}.fm-pagination__numbers{background:#fff;border-radius:12px;padding:4px 8px;min-width:48px;display:flex;align-items:center;justify-content:center}.fm-pagination__numbers-text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#18181b;white-space:nowrap}.fm-pagination--hidden{gap:16px}.fm-widget-card{display:flex;flex-direction:column;background:#fff;border:1px solid #eeeef0;border-radius:20px;overflow:hidden;box-sizing:border-box;width:408px}.fm-widget-card__body{display:flex;flex-direction:column}.fm-widget-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-radius:20px 20px 0 0;gap:8px;box-sizing:border-box}.fm-widget-header--purple{background:#eeecfb}.fm-widget-header--grey{background:#f7f7f8}.fm-widget-header__title-group{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.fm-widget-header__title{font-family:Manrope,sans-serif;font-weight:700;font-size:18px;line-height:.9;color:#121212;margin:0}.fm-widget-header__subtitle{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#989898;margin:0}.fm-widget-header__action{flex-shrink:0;display:flex;align-items:center}.fm-widget-news{display:flex;flex-direction:column;gap:12px;align-items:flex-start;justify-content:center;padding:16px;box-sizing:border-box}.fm-widget-news__tag{flex-shrink:0}.fm-widget-news__content{display:flex;flex-direction:column;gap:8px;width:100%}.fm-widget-news__title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:normal;color:#121212;margin:0}.fm-widget-news__text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#525252;margin:0}.fm-widget-general-news{display:flex;flex-direction:column;gap:12px;align-items:flex-start;box-sizing:border-box;overflow:hidden}.fm-widget-general-news__image{width:100%;height:100px;background:#d9d9de;overflow:hidden;flex-shrink:0}.fm-widget-general-news__image img{width:100%;height:100%;object-fit:cover}.fm-widget-general-news__content{display:flex;flex-direction:column;gap:8px;padding:0 16px 16px}.fm-widget-general-news__tag{flex-shrink:0}.fm-widget-general-news__title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:normal;color:#121212;margin:0}.fm-widget-notes{display:flex;flex-direction:column;gap:12px;align-items:flex-start;padding:16px;box-sizing:border-box}.fm-widget-notes__title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:normal;color:#121212;margin:0;width:100%}.fm-widget-notes__text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#121212;margin:0;width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}.fm-widget-notes__footer{display:flex;align-items:center;justify-content:space-between;width:100%}.fm-widget-notes__date{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:12px;line-height:1.2;color:#4c4d58}.fm-widget-advice{display:flex;flex-direction:column;gap:12px;align-items:flex-start;padding:16px;box-sizing:border-box}.fm-widget-advice__tag{flex-shrink:0}.fm-widget-advice__text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#121212;margin:0;width:100%}.fm-widget-advice__action{width:100%}.fm-widget-calendar{display:flex;flex-direction:column;box-sizing:border-box}.fm-widget-calendar__days{display:flex;gap:4px;padding:16px;flex-wrap:nowrap}.fm-widget-calendar__day{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:9999px;background:#f7f7f8;gap:4px;padding-top:4px;padding-bottom:4px;position:relative}.fm-widget-calendar__day--active{background:#9076dc}.fm-widget-calendar__day-label{font-family:Nunito Sans,sans-serif;font-weight:300;font-size:14px;line-height:1.4;color:#4c4d58;width:36px;height:36px;display:flex;align-items:center;justify-content:center}.fm-widget-calendar__day--active .fm-widget-calendar__day-label{color:#ffffffbf}.fm-widget-calendar__day-num{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1.4;color:#121212;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:9999px}.fm-widget-calendar__day--active .fm-widget-calendar__day-num{color:#fff}.fm-widget-calendar__day-dot{display:block;width:4px;height:4px;border-radius:9999px;background:#9076dc;position:absolute;bottom:4px}.fm-widget-calendar__day--active .fm-widget-calendar__day-dot{background:#ffffffbf}.fm-widget-calendar__events{display:flex;flex-direction:column;gap:8px;padding:0 16px 16px}.fm-widget-calendar__event{display:flex;gap:8px;align-items:stretch;opacity:.8}.fm-widget-calendar__event-bar{width:2px;border-radius:9999px;flex-shrink:0;background:#9076dc}.fm-widget-calendar__event-body{flex:1;background:#f7f7f8;border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.fm-widget-calendar__event-title{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1.4;color:#121212}.fm-widget-calendar__event-time{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:12px;line-height:1.2;color:#656565}.fm-search{display:flex;align-items:center;gap:8px;height:42px;padding:12px 16px;background:#f7f7f8;border-radius:12px;box-sizing:border-box;width:100%}.fm-search__icon{flex-shrink:0}.fm-search__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-search__input::placeholder{color:#91939f}.fm-dropdown{display:flex;flex-direction:column;background:#ffffff80;border:1px solid #eeeef0;border-radius:12px;box-shadow:4px 8px 15.1px #c9c1f1;padding:8px 0;width:280px;box-sizing:border-box;overflow:hidden}.fm-dropdown__item{display:flex;align-items:center;height:32px;padding:8px 16px;border:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;color:#18181b;text-align:left;cursor:pointer;width:100%;transition:background .1s;border-radius:8px}.fm-dropdown__item:hover{background:#f7f7f8}.fm-datepicker{display:flex;flex-direction:column;gap:8px;width:192px;box-sizing:border-box}.fm-datepicker__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;color:#5d5e6c;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fm-datepicker__field{display:flex;align-items:center;gap:6px;height:36px;padding:0 10px;background:#f7f7f8;border-radius:8px;border:0px solid transparent;box-sizing:border-box;transition:border .15s;position:relative}.fm-datepicker__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-datepicker__icon{display:inline-flex;align-items:center;color:#18181b;flex-shrink:0}.fm-datepicker__helper{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;color:#91939f;line-height:1.2;margin:0}.fm-datepicker--hover .fm-datepicker__field{border:1.5px solid #ffa8f1}.fm-datepicker--hover .fm-datepicker__label{color:#754ccc}.fm-datepicker--focused .fm-datepicker__field{border:1px solid #ffa8f1}.fm-datepicker--disabled .fm-datepicker__label{color:#d9d9de}.fm-datepicker--disabled .fm-datepicker__field{opacity:.5;cursor:not-allowed}.fm-datepicker--disabled .fm-datepicker__input{cursor:not-allowed;color:#d9d9de}.fm-datepicker--disabled .fm-datepicker__helper,.fm-datepicker--disabled .fm-datepicker__icon{color:#d9d9de}.fm-timepicker{display:flex;flex-direction:column;gap:8px;width:192px;box-sizing:border-box}.fm-timepicker__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;color:#41414b;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fm-timepicker__field{display:flex;align-items:center;gap:6px;height:36px;padding:0 10px;background:#f7f7f8;border-radius:8px;border:0px solid transparent;box-sizing:border-box;transition:border .15s}.fm-timepicker__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-timepicker__icon{display:inline-flex;align-items:center;color:#18181b;flex-shrink:0}.fm-timepicker__helper{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;color:#91939f;line-height:1.2;margin:0}.fm-timepicker--hover .fm-timepicker__field{border:1.5px solid #ffa8f1}.fm-timepicker--hover .fm-timepicker__label{color:#754ccc}.fm-timepicker--focused .fm-timepicker__field{border:1px solid #ffa8f1}.fm-timepicker--disabled .fm-timepicker__label{color:#d9d9de}.fm-timepicker--disabled .fm-timepicker__field{opacity:.5;cursor:not-allowed}.fm-timepicker--disabled .fm-timepicker__input{cursor:not-allowed;color:#d9d9de}.fm-timepicker--disabled .fm-timepicker__helper,.fm-timepicker--disabled .fm-timepicker__icon{color:#d9d9de}.fm-radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.fm-radio__input{display:none}.fm-radio__circle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid #b8b9c1;background:#ffffff0d;box-sizing:border-box;flex-shrink:0;transition:border-color .15s}.fm-radio__circle--checked{border-color:#9076dc;border-width:1px;padding:5px}.fm-radio__dot{display:block;width:10px;height:10px;border-radius:50%;background:#9076dc;flex-shrink:0}.fm-radio:hover .fm-radio__circle:not(.fm-radio__circle--checked){border-color:#737584}.fm-radio__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-radio--disabled{cursor:not-allowed;opacity:.5}.fm-stepper{display:flex;align-items:flex-start;gap:0}.fm-stepper__step{display:flex;flex-direction:column;align-items:center;gap:10px;position:relative;width:85px}.fm-stepper__circle{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;box-sizing:border-box;flex-shrink:0}.fm-stepper__circle--done{background:#9076dc;padding:9px 7px}.fm-stepper__circle--in-process{background:#fff;border:1px solid rgba(144,118,220,.3)}.fm-stepper__circle--inactive{background:#fff;border:1px solid #eeeef0}.fm-stepper__num{font-family:Manrope,sans-serif;font-size:14px;font-weight:700;color:#18181b;line-height:.9}.fm-stepper__num--inactive{color:#b8b9c1}.fm-stepper__line{position:absolute;top:15px;left:calc(50% + 15px);width:60px;height:1px}.fm-stepper__line--done,.fm-stepper__line--in-process{background:#9076dc}.fm-stepper__line--inactive{background:#eeeef0}.fm-stepper__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;text-align:center;margin:0}.fm-stepper__label--done,.fm-stepper__label--in-process{color:#5d5e6c}.fm-stepper__label--inactive{color:#b8b9c1}.fm-stepper-progress{display:flex;align-items:flex-start}.fm-stepper-progress__step{display:flex;flex-direction:column;align-items:center;gap:10px;width:85px;position:relative}.fm-stepper-progress__circle{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9999px;background:#9076dc;flex-shrink:0}.fm-stepper-progress__line{position:absolute;top:14px;left:calc(50% + 16px);width:60px;height:1px;background:#eeeef0}.fm-stepper-progress__step--in-process .fm-stepper-progress__line,.fm-stepper-progress__step--done .fm-stepper-progress__line{background:#9076dc}.fm-stepper-progress__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;text-align:center;margin:0}.fm-stepper-progress__step--in-process .fm-stepper-progress__label{color:#5d5e6c}.fm-stepper-progress__step--inactive .fm-stepper-progress__label{color:#b8b9c1}.fm-stepper-progress__step--done .fm-stepper-progress__label{color:#5d5e6c}.fm-testimonial{display:flex;flex-direction:column;gap:24px;padding:32px 24px;border:1px solid #eeeef0;border-radius:20px;width:351px;box-sizing:border-box}.fm-testimonial__author{display:flex;align-items:center;gap:17px}.fm-testimonial__avatar{width:30px;height:30px;border-radius:50%;object-fit:cover;flex-shrink:0}.fm-testimonial__avatar--placeholder{display:flex;align-items:center;justify-content:center;background:#e0ddf7;color:#9076dc;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700}.fm-testimonial__meta{display:flex;flex-direction:column;gap:10px}.fm-testimonial__name{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;color:#18181b;line-height:1.2;margin:0}.fm-testimonial__role{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:300;color:#18181b;line-height:1.2;margin:0}.fm-testimonial__quote{font-family:Nunito Sans,sans-serif;font-size:18px;font-weight:300;color:#18181b;line-height:1.12;margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.fm-pricecard{display:flex;flex-direction:column;gap:32px;padding:24px;border-radius:20px;width:285px;box-sizing:border-box;position:relative;background:#fff;border:1px solid #eeeef0}.fm-pricecard--highlighted{background:#f7f7f8;border:none}.fm-pricecard__badge{position:absolute;top:21px;right:24px;background:#fff0d4;color:#c54e09;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;padding:8px 12px;border-radius:9999px}.fm-pricecard__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#e0ddf7;border-radius:4px;flex-shrink:0;color:#9076dc;font-size:20px}.fm-pricecard__info{display:flex;flex-direction:column;gap:16px}.fm-pricecard__title{font-family:Manrope,sans-serif;font-size:20px;font-weight:600;color:#18181b;line-height:.9;margin:0}.fm-pricecard__desc{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:400;color:#4c4d58;line-height:1.4;margin:0;height:77px;overflow:hidden}.fm-pricecard__footer{display:flex;flex-direction:column;gap:16px}.fm-pricecard__price{display:flex;align-items:baseline;gap:4px}.fm-pricecard__amount{font-family:Manrope,sans-serif;font-size:40px;font-weight:700;color:#18181b;line-height:1.1}.fm-pricecard__period{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;color:#5d5e6c;line-height:normal}.fm-pricecard__action{width:100%}.fm-pricecard__action>*{width:100%}.fm-price{display:flex;flex-direction:column;gap:32px;padding:40px 32px;background:#f7f7f8;border:1px solid #eeeef0;border-radius:24px;width:351px;box-sizing:border-box}.fm-price__title{font-family:Manrope,sans-serif;font-size:18px;font-weight:700;color:#5d5e6c;line-height:.9;margin:0}.fm-price__amount-row{display:flex;align-items:baseline;gap:4px}.fm-price__amount{font-family:Manrope,sans-serif;font-size:40px;font-weight:700;color:#18181b;line-height:1.1}.fm-price__period{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;color:#5d5e6c;line-height:normal}.fm-price__cta{width:100%;height:42px;background:#121212;color:#fff;border:none;border-radius:12px;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s}.fm-price__cta:hover{background:#2c2c2c}.fm-price__features{display:flex;flex-direction:column;gap:10px;list-style:none;padding:0;margin:0}.fm-price__feature{display:flex;align-items:center;gap:16px}.fm-price__check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#9076dc;border-radius:4px;flex-shrink:0;padding:3px;box-sizing:border-box}.fm-price__feature span{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-list-item{display:flex;align-items:center;gap:16px}.fm-list-item__check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#9076dc;border-radius:4px;flex-shrink:0;padding:3px;box-sizing:border-box}.fm-list-item__text{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-tag-big{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid rgba(144,118,220,.3);border-radius:48px;background:#ffffff0d;white-space:nowrap}.fm-tag-big__icon{display:flex;align-items:center;flex-shrink:0}.fm-tag-big__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;line-height:1.4;background:linear-gradient(90deg,#9076dc,#c87bf5,#ffa8f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.fm-section-title{display:flex}.fm-section-title--centered{flex-direction:column;align-items:center;gap:30px;text-align:center}.fm-section-title--left{flex-direction:column;align-items:flex-start;gap:24px}.fm-section-title--split{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:24px}.fm-section-title--split .fm-section-title__left{display:flex;flex-direction:column;gap:20px;align-items:flex-start}.fm-section-title__heading{font-family:Manrope,sans-serif;font-size:45px;font-weight:700;color:#18181b;line-height:1.1;margin:0}.fm-section-title__subtitle{font-family:Nunito Sans,sans-serif;font-size:18px;font-weight:400;color:#4c4d58;line-height:1.4;margin:0}.fm-section-title--split .fm-section-title__subtitle{max-width:285px}.fm-dashboard-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;width:100%}.fm-dashboard-title__text{display:flex;flex-direction:column;gap:12px}.fm-dashboard-title__heading{font-family:Manrope,sans-serif;font-size:30px;font-weight:800;color:#121212;line-height:1.3;margin:0}.fm-dashboard-title__subtitle{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;color:#989898;line-height:normal;margin:0}.fm-dashboard-title__action{display:flex;align-items:center;gap:10px;height:42px;padding:10px 16px;background:#121212;color:#fff;border:none;border-radius:12px;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;cursor:pointer;flex-shrink:0;white-space:nowrap}.fm-dashboard-title__action:hover{background:#2c2c2c}.fm-process-step{display:flex;gap:24px;align-items:flex-start;max-width:100%;box-sizing:border-box}.fm-process-step__number{display:flex;align-items:center;justify-content:center;width:35px;height:35px;border-radius:100px;flex-shrink:0;font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;line-height:normal}.fm-process-step--select .fm-process-step__number{background:#9076dc;color:#fff}.fm-process-step--normal .fm-process-step__number{background:#f7f7f8;color:#91939f}.fm-process-step__body{display:flex;flex-direction:column;gap:12px;flex:1}.fm-process-step__title{font-family:Manrope,sans-serif;font-size:24px;font-weight:700;color:#18181b;line-height:.9;margin:0}.fm-process-step__content{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;margin:0}.fm-tasks-widget{display:flex;flex-direction:column;gap:8px;padding:16px;box-sizing:border-box}.fm-tasks-widget__row{display:flex;align-items:center;gap:10px;width:100%}.fm-tasks-widget__checkbox{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;background:#eeeef0;flex-shrink:0}.fm-tasks-widget__checkbox--done{background:#9076dc}.fm-tasks-widget__label{flex:1;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-tasks-widget__label--done{text-decoration:line-through;color:#bdbdbd}.fm-tasks-widget__tag{flex-shrink:0;background:#eeeef0;color:#4c4d58;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;padding:8px 12px;border-radius:9999px;white-space:nowrap}.fm-signup-form{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:20px;padding:10px 20px;max-width:100%;box-sizing:border-box;gap:12px}.fm-signup-form__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:300;color:#18181b;line-height:1.4;min-width:0}.fm-signup-form__input::placeholder{color:#5d5e6c;font-weight:300}.fm-signup-form__btn{flex-shrink:0;height:42px;padding:10px 16px;background:#121212;color:#fff;border:none;border-radius:12px;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}.fm-signup-form__btn:hover{background:#2c2c2c}.fm-tariffs{display:flex;align-items:center;gap:20px;padding:20px;background:#fff;border:1px solid #eeeef0;border-radius:12px;max-width:100%;box-sizing:border-box;transition:border-color .15s}.fm-tariffs--hover{border-color:#ffa8f1}.fm-tariffs__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#e0ddf7;border-radius:4px;flex-shrink:0}.fm-tariffs__body{display:flex;flex-direction:column;gap:16px;flex:1}.fm-tariffs__title{font-family:Manrope,sans-serif;font-size:20px;font-weight:600;color:#18181b;line-height:.9;margin:0}.fm-tariffs__desc{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:300;color:#4c4d58;line-height:1.2;margin:0}.fm-question{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 16px;background:#fff;border:1px solid #eeeef0;border-radius:20px;max-width:100%;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .15s}.fm-question--hover{border-color:#ffa8f1}.fm-question--open{border-color:#ffa8f1;align-items:flex-start}.fm-question__content{display:flex;flex-direction:column;gap:20px;flex:1;min-width:0}.fm-question__title{font-family:Manrope,sans-serif;font-size:20px;font-weight:600;color:#121212;line-height:.9;margin:0}.fm-question__text{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:300;color:#121212;line-height:1.4;margin:0}.fm-question__icon{display:flex;align-items:center;justify-content:center;width:33px;height:33px;border-radius:9999px;background:#9076dc;flex-shrink:0;margin-top:2px}.fm-question__icon--open{background:#18181b}
|
package/guidelines/Guidelines.md
CHANGED
|
@@ -13,14 +13,31 @@ This project uses the **FlowMakers Design System** installed via `@tetjana/flowm
|
|
|
13
13
|
Open `guidelines/components/{ComponentName}.md` BEFORE writing any code with that component.
|
|
14
14
|
|
|
15
15
|
## Available components
|
|
16
|
+
|
|
17
|
+
### Primitives
|
|
16
18
|
- `Button` → `guidelines/components/button.md`
|
|
17
19
|
- `Input` → `guidelines/components/input.md`
|
|
18
20
|
- `Tag` → `guidelines/components/tag.md`
|
|
19
21
|
- `Toggle` → `guidelines/components/toggle.md`
|
|
20
22
|
- `Checkbox` → `guidelines/components/checkbox.md`
|
|
23
|
+
- `IconButton` → `guidelines/components/iconbutton.md`
|
|
24
|
+
|
|
25
|
+
### Navigation
|
|
26
|
+
- `NavItem`, `NavBar` → `guidelines/components/navmenu.md`
|
|
27
|
+
- `SegmentedControl` → `guidelines/components/segmentedcontrol.md`
|
|
28
|
+
- `Pagination` → `guidelines/components/pagination.md`
|
|
29
|
+
|
|
30
|
+
### Layout
|
|
21
31
|
- `Header` → `guidelines/components/header.md`
|
|
22
32
|
- `Footer` → `guidelines/components/footer.md`
|
|
23
33
|
|
|
34
|
+
### Cards
|
|
35
|
+
- `CardTest` → `guidelines/components/cardtest.md`
|
|
36
|
+
- `CardCareer` → `guidelines/components/cardcareer.md`
|
|
37
|
+
|
|
38
|
+
### Dashboard widgets
|
|
39
|
+
- `WidgetCard`, `WidgetHeader`, `PlatformNewsWidget`, `GeneralNewsWidget`, `NotesWidget`, `PersonalAdviceWidget`, `CalendarWidget` → `guidelines/components/widgetcard.md`
|
|
40
|
+
|
|
24
41
|
## Rules
|
|
25
42
|
1. **Always prefer FlowMakers components** over native HTML elements (e.g. use `<Button>` not `<button>`)
|
|
26
43
|
2. **Never override component styles** with inline styles or className unless strictly necessary
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# CardCareer — Career progression accordion card
|
|
2
|
+
|
|
3
|
+
## Import
|
|
4
|
+
```tsx
|
|
5
|
+
import { CardCareer } from '@tetjana/flowmakers-ds';
|
|
6
|
+
import { Tag } from '@tetjana/flowmakers-ds';
|
|
7
|
+
import { Button } from '@tetjana/flowmakers-ds';
|
|
8
|
+
import '@tetjana/flowmakers-ds/styles';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Collapsed (default)
|
|
14
|
+
```tsx
|
|
15
|
+
<CardCareer
|
|
16
|
+
title="Junior Frontend Developer"
|
|
17
|
+
subtitle="Рівень 1 — Початківець"
|
|
18
|
+
statusTag={<Tag color="green">Поточний</Tag>}
|
|
19
|
+
tasks={[
|
|
20
|
+
{ title: 'Основи HTML/CSS', progress: 100 },
|
|
21
|
+
{ title: 'JavaScript основи', progress: 72 },
|
|
22
|
+
{ title: 'React основи', progress: 24 },
|
|
23
|
+
]}
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Expanded (open by default)
|
|
28
|
+
```tsx
|
|
29
|
+
<CardCareer
|
|
30
|
+
title="Middle Frontend Developer"
|
|
31
|
+
subtitle="Рівень 2"
|
|
32
|
+
defaultOpen={true}
|
|
33
|
+
tasks={[
|
|
34
|
+
{
|
|
35
|
+
title: 'TypeScript поглиблено',
|
|
36
|
+
subtitle: 'Типи, generics, utility types',
|
|
37
|
+
progress: 44,
|
|
38
|
+
action: <Button variant="ghost">Розпочати</Button>,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
title: 'State management',
|
|
42
|
+
progress: 0,
|
|
43
|
+
},
|
|
44
|
+
]}
|
|
45
|
+
/>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## CardCareer props
|
|
49
|
+
| Prop | Type | Default | Description |
|
|
50
|
+
|------|------|---------|-------------|
|
|
51
|
+
| `title` | `string` | required | Career level name |
|
|
52
|
+
| `subtitle` | `string` | — | Additional description |
|
|
53
|
+
| `statusTag` | `ReactNode` | — | `<Tag>` showing current level status |
|
|
54
|
+
| `tasks` | `CardCareerTask[]` | `[]` | List of tasks with progress |
|
|
55
|
+
| `defaultOpen` | `boolean` | `false` | Expanded by default |
|
|
56
|
+
|
|
57
|
+
## CardCareerTask shape
|
|
58
|
+
| Field | Type | Description |
|
|
59
|
+
|-------|------|-------------|
|
|
60
|
+
| `title` | `string` | Task name |
|
|
61
|
+
| `subtitle` | `string` | Optional sub-description |
|
|
62
|
+
| `progress` | `number` | 0–100, shown as a circular progress indicator |
|
|
63
|
+
| `action` | `ReactNode` | Optional `<Button>` for task action |
|
|
64
|
+
|
|
65
|
+
## When to use
|
|
66
|
+
- Career roadmap page showing all levels
|
|
67
|
+
- Current level should have `statusTag` with `<Tag color="green">Поточний</Tag>`
|
|
68
|
+
- Completed tasks have `progress={100}`
|
|
69
|
+
- Use `defaultOpen={true}` only for the user's active level
|
|
70
|
+
- Tasks at `progress={0}` show as locked/not started
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# CardTest — Test/quiz card
|
|
2
|
+
|
|
3
|
+
## Import
|
|
4
|
+
```tsx
|
|
5
|
+
import { CardTest } from '@tetjana/flowmakers-ds';
|
|
6
|
+
import { Tag } from '@tetjana/flowmakers-ds';
|
|
7
|
+
import { Button } from '@tetjana/flowmakers-ds';
|
|
8
|
+
import '@tetjana/flowmakers-ds/styles';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Available test
|
|
14
|
+
```tsx
|
|
15
|
+
<CardTest
|
|
16
|
+
title="Типи особистості"
|
|
17
|
+
description="Визначте свій тип особистості за методологією MBTI"
|
|
18
|
+
image="/images/mbti-cover.jpg"
|
|
19
|
+
state="available"
|
|
20
|
+
tags={
|
|
21
|
+
<>
|
|
22
|
+
<Tag color="purple">Когнітивний</Tag>
|
|
23
|
+
<Tag color="grey">Складний</Tag>
|
|
24
|
+
</>
|
|
25
|
+
}
|
|
26
|
+
meta={[
|
|
27
|
+
{ icon: <QuestionIcon />, label: '28 Запитань' },
|
|
28
|
+
{ icon: <ClockIcon />, label: '20 хвилин' },
|
|
29
|
+
]}
|
|
30
|
+
action={<Button variant="hero">Почати тест</Button>}
|
|
31
|
+
/>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### In-progress test
|
|
35
|
+
```tsx
|
|
36
|
+
<CardTest
|
|
37
|
+
title="ATS-оптимізація резюме"
|
|
38
|
+
state="in-progress"
|
|
39
|
+
action={<Button variant="secondary">Продовжити</Button>}
|
|
40
|
+
/>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Completed test
|
|
44
|
+
```tsx
|
|
45
|
+
<CardTest
|
|
46
|
+
title="Основи JavaScript"
|
|
47
|
+
state="completed"
|
|
48
|
+
action={<Button variant="ghost">Переглянути результати</Button>}
|
|
49
|
+
/>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Unavailable (locked)
|
|
53
|
+
```tsx
|
|
54
|
+
<CardTest
|
|
55
|
+
title="Advanced React Patterns"
|
|
56
|
+
state="unavailable"
|
|
57
|
+
/>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Props
|
|
61
|
+
| Prop | Type | Default | Description |
|
|
62
|
+
|------|------|---------|-------------|
|
|
63
|
+
| `title` | `string` | required | Test name |
|
|
64
|
+
| `description` | `string` | — | Short description |
|
|
65
|
+
| `image` | `string` | — | Cover image URL |
|
|
66
|
+
| `state` | `CardTestState` | `'available'` | One of the 4 states |
|
|
67
|
+
| `tags` | `ReactNode` | — | `<Tag>` components |
|
|
68
|
+
| `meta` | `CardTestMetaItem[]` | — | Icon + label metadata rows |
|
|
69
|
+
| `action` | `ReactNode` | — | CTA button |
|
|
70
|
+
|
|
71
|
+
## States
|
|
72
|
+
| Value | Label shown | Behaviour |
|
|
73
|
+
|-------|-------------|-----------|
|
|
74
|
+
| `'available'` | Доступно | Normal, full opacity |
|
|
75
|
+
| `'in-progress'` | В процесі | Normal, shows progress |
|
|
76
|
+
| `'completed'` | Завершено | Normal, success color |
|
|
77
|
+
| `'unavailable'` | Недоступно | Dimmed, no interaction |
|
|
78
|
+
|
|
79
|
+
## When to use
|
|
80
|
+
- Grid of available tests in the Tests section
|
|
81
|
+
- Always provide `state` to reflect the user's progress
|
|
82
|
+
- Use `action` with a `<Button>` — do not add raw `<button>` elements inside
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# IconButton — Icon-only action button
|
|
2
|
+
|
|
3
|
+
## Import
|
|
4
|
+
```tsx
|
|
5
|
+
import { IconButton } from '@tetjana/flowmakers-ds';
|
|
6
|
+
import '@tetjana/flowmakers-ds/styles';
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
```tsx
|
|
11
|
+
// Arrow navigation (default)
|
|
12
|
+
<IconButton icon="arrow-right" onClick={handleNext} />
|
|
13
|
+
<IconButton icon="arrow-left" onClick={handlePrev} />
|
|
14
|
+
|
|
15
|
+
// Small size
|
|
16
|
+
<IconButton icon="plus" size="small" />
|
|
17
|
+
|
|
18
|
+
// Outlined variant
|
|
19
|
+
<IconButton icon="pen" variant="outlined" />
|
|
20
|
+
|
|
21
|
+
// Disabled
|
|
22
|
+
<IconButton icon="dots" disabled />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Props
|
|
26
|
+
| Prop | Type | Default | Description |
|
|
27
|
+
|------|------|---------|-------------|
|
|
28
|
+
| `icon` | `IconButtonIcon` | `'arrow-right'` | Which icon to show |
|
|
29
|
+
| `size` | `'regular' \| 'small'` | `'regular'` | Button size (33px or 24px) |
|
|
30
|
+
| `variant` | `'filled' \| 'outlined'` | `'filled'` | Visual style |
|
|
31
|
+
| `disabled` | `boolean` | `false` | Disables the button |
|
|
32
|
+
|
|
33
|
+
## Available icons
|
|
34
|
+
`'minus'` `'plus'` `'dots'` `'pen'` `'link'` `'arrow-left'` `'arrow-right'`
|
|
35
|
+
|
|
36
|
+
## When to use
|
|
37
|
+
- **Pagination arrows** — use `arrow-left` / `arrow-right` with `Pagination` component
|
|
38
|
+
- **Add/remove actions** — use `plus` / `minus`
|
|
39
|
+
- **Edit action** — use `pen`
|
|
40
|
+
- **Context menu trigger** — use `dots`
|
|
41
|
+
- Use `size="small"` in compact spaces (cards, table rows)
|
|
42
|
+
- Use `variant="outlined"` on dark or colored backgrounds
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# NavMenu — Navigation components
|
|
2
|
+
|
|
3
|
+
## Import
|
|
4
|
+
```tsx
|
|
5
|
+
import { NavItem, NavBar } from '@tetjana/flowmakers-ds';
|
|
6
|
+
import '@tetjana/flowmakers-ds/styles';
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Components
|
|
10
|
+
|
|
11
|
+
### NavBar
|
|
12
|
+
Vertical navigation container. Wrap `NavItem` elements inside it.
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
<NavBar>
|
|
16
|
+
<NavItem label="Дашборд" active icon={<DashboardIcon />} />
|
|
17
|
+
<NavItem label="Тести" href="/tests" icon={<TestsIcon />} />
|
|
18
|
+
<NavItem label="Аналітика" href="/analytics" icon={<AnalyticsIcon />} />
|
|
19
|
+
<NavItem label="Резюме" href="/resume" icon={<ResumeIcon />} />
|
|
20
|
+
<NavItem label="Ризики" href="/risks" icon={<RisksIcon />} />
|
|
21
|
+
<NavItem label="AI асистент" href="/ai" icon={<AIIcon />} />
|
|
22
|
+
</NavBar>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### NavItem props
|
|
26
|
+
| Prop | Type | Default | Description |
|
|
27
|
+
|------|------|---------|-------------|
|
|
28
|
+
| `label` | `string` | required | Menu item label |
|
|
29
|
+
| `active` | `boolean` | `false` | Highlights the currently active route |
|
|
30
|
+
| `href` | `string` | — | Renders as `<a>` link when provided |
|
|
31
|
+
| `onClick` | `() => void` | — | Renders as `<button>` when no href |
|
|
32
|
+
| `icon` | `ReactNode` | — | Icon element shown before the label |
|
|
33
|
+
|
|
34
|
+
### NavBar props
|
|
35
|
+
| Prop | Type | Default | Description |
|
|
36
|
+
|------|------|---------|-------------|
|
|
37
|
+
| `horizontal` | `boolean` | `false` | Lays items out horizontally |
|
|
38
|
+
|
|
39
|
+
## When to use
|
|
40
|
+
- **NavBar** — always as the sidebar/top navigation wrapper
|
|
41
|
+
- **NavItem** — one per destination in the app
|
|
42
|
+
- Mark `active` on the item matching the current route
|
|
43
|
+
- Always pass an `icon` — navigation icons are required by design
|
|
44
|
+
- Use `href` for real links; use `onClick` for SPA navigation handlers
|
|
45
|
+
|
|
46
|
+
## Do NOT
|
|
47
|
+
- Nest `NavBar` inside another `NavBar`
|
|
48
|
+
- Manually add active styles via className
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Pagination — Previous/Next navigation with indicator
|
|
2
|
+
|
|
3
|
+
## Import
|
|
4
|
+
```tsx
|
|
5
|
+
import { Pagination } from '@tetjana/flowmakers-ds';
|
|
6
|
+
import '@tetjana/flowmakers-ds/styles';
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
### Dots variant (carousel, image gallery)
|
|
12
|
+
```tsx
|
|
13
|
+
const [page, setPage] = useState(1);
|
|
14
|
+
const total = 9;
|
|
15
|
+
|
|
16
|
+
<Pagination
|
|
17
|
+
variant="dots"
|
|
18
|
+
page={page}
|
|
19
|
+
total={total}
|
|
20
|
+
onPrev={() => setPage(p => Math.max(1, p - 1))}
|
|
21
|
+
onNext={() => setPage(p => Math.min(total, p + 1))}
|
|
22
|
+
prevDisabled={page === 1}
|
|
23
|
+
nextDisabled={page === total}
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Numbers variant (test cards, long lists)
|
|
28
|
+
```tsx
|
|
29
|
+
<Pagination
|
|
30
|
+
variant="numbers"
|
|
31
|
+
page={page}
|
|
32
|
+
total={total}
|
|
33
|
+
onPrev={() => setPage(p => p - 1)}
|
|
34
|
+
onNext={() => setPage(p => p + 1)}
|
|
35
|
+
/>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Hidden variant (just prev/next arrows)
|
|
39
|
+
```tsx
|
|
40
|
+
<Pagination
|
|
41
|
+
variant="hidden"
|
|
42
|
+
onPrev={handlePrev}
|
|
43
|
+
onNext={handleNext}
|
|
44
|
+
/>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Props
|
|
48
|
+
| Prop | Type | Default | Description |
|
|
49
|
+
|------|------|---------|-------------|
|
|
50
|
+
| `variant` | `'dots' \| 'numbers' \| 'hidden'` | `'dots'` | Indicator style |
|
|
51
|
+
| `page` | `number` | `1` | Current page (1-based) |
|
|
52
|
+
| `total` | `number` | `9` | Total number of pages |
|
|
53
|
+
| `onPrev` | `() => void` | — | Called on previous arrow click |
|
|
54
|
+
| `onNext` | `() => void` | — | Called on next arrow click |
|
|
55
|
+
| `prevDisabled` | `boolean` | `false` | Disables the previous arrow |
|
|
56
|
+
| `nextDisabled` | `boolean` | `false` | Disables the next arrow |
|
|
57
|
+
|
|
58
|
+
## When to use
|
|
59
|
+
- `dots` — carousels, image sliders, up to ~10 pages
|
|
60
|
+
- `numbers` — shows "2 з 9", for medium-length lists
|
|
61
|
+
- `hidden` — when page count is unknown or unlimited
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# SegmentedControl — Tab/filter switcher
|
|
2
|
+
|
|
3
|
+
## Import
|
|
4
|
+
```tsx
|
|
5
|
+
import { SegmentedControl } from '@tetjana/flowmakers-ds';
|
|
6
|
+
import '@tetjana/flowmakers-ds/styles';
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
```tsx
|
|
11
|
+
const [tab, setTab] = useState('all');
|
|
12
|
+
|
|
13
|
+
<SegmentedControl
|
|
14
|
+
options={[
|
|
15
|
+
{ value: 'all', label: 'Всі' },
|
|
16
|
+
{ value: 'active', label: 'Активні' },
|
|
17
|
+
{ value: 'completed', label: 'Завершені' },
|
|
18
|
+
]}
|
|
19
|
+
value={tab}
|
|
20
|
+
onChange={setTab}
|
|
21
|
+
/>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Props
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
|------|------|---------|-------------|
|
|
27
|
+
| `options` | `{ value: string; label: string }[]` | required | List of segments |
|
|
28
|
+
| `value` | `string` | — | Currently selected segment value |
|
|
29
|
+
| `onChange` | `(value: string) => void` | — | Called when user selects a segment |
|
|
30
|
+
|
|
31
|
+
## When to use
|
|
32
|
+
- Switching between content views (All / Active / Completed)
|
|
33
|
+
- Filtering a list by category
|
|
34
|
+
- Toggling between 2–5 mutually exclusive options
|
|
35
|
+
- Do NOT use for navigation — use `NavBar` instead
|
|
36
|
+
- Do NOT use for binary on/off — use `Toggle` instead
|
|
37
|
+
- Maximum 5 options; prefer 2–3 for clarity
|