@tetjana/flowmakers-ds 0.1.0

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.
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import './Button.css';
3
+ export type ButtonVariant = 'primary' | 'hero' | 'secondary' | 'secondary-large' | 'ghost' | 'ghost-icon';
4
+ export type ButtonSize = 'sm' | 'md' | 'lg';
5
+ export type ButtonState = 'default' | 'hover' | 'pressed' | 'focused' | 'disabled';
6
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
7
+ variant?: ButtonVariant;
8
+ size?: ButtonSize;
9
+ leftIcon?: React.ReactNode;
10
+ rightIcon?: React.ReactNode;
11
+ children?: React.ReactNode;
12
+ fullWidth?: boolean;
13
+ }
14
+ export declare const Button: React.FC<ButtonProps>;
15
+ export default Button;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import './Checkbox.css';
3
+ export type CheckboxState = 'idle' | 'clicked' | 'disabled';
4
+ export type CheckboxSelection = 'on' | 'off' | 'mixed';
5
+ export type CheckboxSize = 'small' | 'large';
6
+ export interface CheckboxProps {
7
+ checked?: boolean;
8
+ indeterminate?: boolean;
9
+ onChange?: (checked: boolean) => void;
10
+ disabled?: boolean;
11
+ size?: CheckboxSize;
12
+ label?: string;
13
+ className?: string;
14
+ }
15
+ export declare const Checkbox: React.FC<CheckboxProps>;
16
+ export default Checkbox;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import './Footer.css';
3
+ export type FooterVariant = 'light' | 'dark';
4
+ export interface FooterLink {
5
+ label: string;
6
+ href: string;
7
+ }
8
+ export interface FooterSection {
9
+ title: string;
10
+ links: FooterLink[];
11
+ }
12
+ export interface FooterProps {
13
+ variant?: FooterVariant;
14
+ headline?: string;
15
+ ctaLabel?: string;
16
+ onCtaClick?: () => void;
17
+ sections?: FooterSection[];
18
+ copyright?: string;
19
+ socials?: {
20
+ twitter?: string;
21
+ instagram?: string;
22
+ facebook?: string;
23
+ };
24
+ className?: string;
25
+ }
26
+ export declare const Footer: React.FC<FooterProps>;
27
+ export default Footer;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import './Header.css';
3
+ export type HeaderColor = 'purple' | 'grey';
4
+ export interface HeaderProps {
5
+ title: string;
6
+ subtitle?: string;
7
+ color?: HeaderColor;
8
+ leftSlot?: React.ReactNode;
9
+ rightSlot?: React.ReactNode;
10
+ className?: string;
11
+ }
12
+ export declare const Header: React.FC<HeaderProps>;
13
+ export default Header;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import './Input.css';
3
+ export type InputState = 'default' | 'hover' | 'focused' | 'filled' | 'error' | 'success';
4
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
5
+ label?: string;
6
+ placeholder?: string;
7
+ state?: InputState;
8
+ errorMessage?: string;
9
+ successMessage?: string;
10
+ leftIcon?: React.ReactNode;
11
+ rightIcon?: React.ReactNode;
12
+ }
13
+ export declare const Input: React.FC<InputProps>;
14
+ export default Input;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import './Tag.css';
3
+ export type TagColor = 'grey' | 'green' | 'yellow' | 'purple' | 'pink';
4
+ export interface TagProps {
5
+ children: React.ReactNode;
6
+ color?: TagColor;
7
+ className?: string;
8
+ }
9
+ export declare const Tag: React.FC<TagProps>;
10
+ export default Tag;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import './Toggle.css';
3
+ export interface ToggleProps {
4
+ checked: boolean;
5
+ onChange: (checked: boolean) => void;
6
+ disabled?: boolean;
7
+ label?: string;
8
+ className?: string;
9
+ }
10
+ export declare const Toggle: React.FC<ToggleProps>;
11
+ export default Toggle;
@@ -0,0 +1,22 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("react");var A={exports:{}},x={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var I;function ee(){if(I)return x;I=1;var l=Symbol.for("react.transitional.element"),c=Symbol.for("react.fragment");function s(n,a,o){var m=null;if(o!==void 0&&(m=""+o),a.key!==void 0&&(m=""+a.key),"key"in a){o={};for(var _ in a)_!=="key"&&(o[_]=a[_])}else o=a;return a=o.ref,{$$typeof:l,type:n,key:m,ref:a!==void 0?a:null,props:o}}return x.Fragment=c,x.jsx=s,x.jsxs=s,x}var j={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var M;function re(){return M||(M=1,process.env.NODE_ENV!=="production"&&function(){function l(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Z?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case k:return"Fragment";case U:return"Profiler";case W:return"StrictMode";case G:return"Suspense";case J:return"SuspenseList";case H:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case B:return"Portal";case z:return e.displayName||"Context";case V:return(e._context.displayName||"Context")+".Consumer";case q:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case X:return t=e.displayName||null,t!==null?t:l(e.type)||"Memo";case R:t=e._payload,e=e._init;try{return l(e(t))}catch{}}return null}function c(e){return""+e}function s(e){try{c(e);var t=!1}catch{t=!0}if(t){t=console;var i=t.error,f=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return i.call(t,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",f),c(e)}}function n(e){if(e===k)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===R)return"<...>";try{var t=l(e);return t?"<"+t+">":"<...>"}catch{return"<...>"}}function a(){var e=g.A;return e===null?null:e.getOwner()}function o(){return Error("react-stack-top-frame")}function m(e){if(C.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function _(e,t){function i(){$||($=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}i.isReactWarning=!0,Object.defineProperty(e,"key",{get:i,configurable:!0})}function d(){var e=l(this.type);return Y[e]||(Y[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function p(e,t,i,f,N,w){var u=i.ref;return e={$$typeof:S,type:e,key:t,props:i,_owner:f},(u!==void 0?u:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:d}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:N}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:w}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function b(e,t,i,f,N,w){var u=t.children;if(u!==void 0)if(f)if(Q(u)){for(f=0;f<u.length;f++)v(u[f]);Object.freeze&&Object.freeze(u)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else v(u);if(C.call(t,"key")){u=l(e);var h=Object.keys(t).filter(function(K){return K!=="key"});f=0<h.length?"{key: someKey, "+h.join(": ..., ")+": ...}":"{key: someKey}",D[u+f]||(h=0<h.length?"{"+h.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,f,u,h,u),D[u+f]=!0)}if(u=null,i!==void 0&&(s(i),u=""+i),m(t)&&(s(t.key),u=""+t.key),"key"in t){i={};for(var y in t)y!=="key"&&(i[y]=t[y])}else i=t;return u&&_(i,typeof e=="function"?e.displayName||e.name||"Unknown":e),p(e,u,i,a(),N,w)}function v(e){P(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===R&&(e._payload.status==="fulfilled"?P(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function P(e){return typeof e=="object"&&e!==null&&e.$$typeof===S}var E=O,S=Symbol.for("react.transitional.element"),B=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),W=Symbol.for("react.strict_mode"),U=Symbol.for("react.profiler"),V=Symbol.for("react.consumer"),z=Symbol.for("react.context"),q=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),J=Symbol.for("react.suspense_list"),X=Symbol.for("react.memo"),R=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),Z=Symbol.for("react.client.reference"),g=E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,C=Object.prototype.hasOwnProperty,Q=Array.isArray,T=console.createTask?console.createTask:function(){return null};E={react_stack_bottom_frame:function(e){return e()}};var $,Y={},F=E.react_stack_bottom_frame.bind(E,o)(),L=T(n(o)),D={};j.Fragment=k,j.jsx=function(e,t,i){var f=1e4>g.recentlyCreatedOwnerStacks++;return b(e,t,i,!1,f?Error("react-stack-top-frame"):F,f?T(n(e)):L)},j.jsxs=function(e,t,i){var f=1e4>g.recentlyCreatedOwnerStacks++;return b(e,t,i,!0,f?Error("react-stack-top-frame"):F,f?T(n(e)):L)}}()),j}process.env.NODE_ENV==="production"?A.exports=ee():A.exports=re();var r=A.exports;const te=({variant:l="primary",size:c="md",leftIcon:s,rightIcon:n,children:a,fullWidth:o=!1,disabled:m,className:_="",...d})=>{const p=["fm-btn",`fm-btn--${l}`,`fm-btn--${c}`,o?"fm-btn--full":"",m?"fm-btn--disabled":"",_].filter(Boolean).join(" ");return r.jsxs("button",{className:p,disabled:m,...d,children:[s&&r.jsx("span",{className:"fm-btn__icon fm-btn__icon--left",children:s}),a&&r.jsx("span",{className:"fm-btn__label",children:a}),n&&r.jsx("span",{className:"fm-btn__icon fm-btn__icon--right",children:n})]})},ae=({label:l,placeholder:c,state:s="default",errorMessage:n,successMessage:a,leftIcon:o,rightIcon:m,className:_="",disabled:d,...p})=>{const b=["fm-input-wrapper",`fm-input-wrapper--${s}`,d?"fm-input-wrapper--disabled":"",_].filter(Boolean).join(" ");return r.jsxs("div",{className:b,children:[l&&r.jsx("label",{className:"fm-input__label",children:l}),r.jsxs("div",{className:"fm-input__field",children:[o&&r.jsx("span",{className:"fm-input__icon fm-input__icon--left",children:o}),r.jsx("input",{className:"fm-input__el",placeholder:c,disabled:d,...p}),m&&r.jsx("span",{className:"fm-input__icon fm-input__icon--right",children:m})]}),s==="error"&&n&&r.jsx("p",{className:"fm-input__message fm-input__message--error",children:n}),s==="success"&&a&&r.jsx("p",{className:"fm-input__message fm-input__message--success",children:a})]})},se=({children:l,color:c="grey",className:s=""})=>{const n=["fm-tag",`fm-tag--${c}`,s].filter(Boolean).join(" ");return r.jsx("span",{className:n,children:l})},ne=({checked:l,onChange:c,disabled:s,label:n,className:a=""})=>r.jsxs("label",{className:["fm-toggle",s?"fm-toggle--disabled":"",a].filter(Boolean).join(" "),children:[r.jsx("input",{type:"checkbox",className:"fm-toggle__input",checked:l,onChange:o=>c(o.target.checked),disabled:s}),r.jsx("span",{className:"fm-toggle__track",children:r.jsx("span",{className:"fm-toggle__thumb"})}),n&&r.jsx("span",{className:"fm-toggle__label",children:n})]}),oe=({checked:l=!1,indeterminate:c=!1,onChange:s,disabled:n,size:a="small",label:o,className:m=""})=>{const _=O.useRef(null);return O.useEffect(()=>{_.current&&(_.current.indeterminate=c)},[c]),r.jsxs("label",{className:["fm-checkbox",`fm-checkbox--${a}`,n?"fm-checkbox--disabled":"",m].filter(Boolean).join(" "),children:[r.jsx("input",{ref:_,type:"checkbox",className:"fm-checkbox__input",checked:l,onChange:d=>s==null?void 0:s(d.target.checked),disabled:n}),r.jsxs("span",{className:"fm-checkbox__box",children:[l&&!c&&r.jsx("svg",{width:"10",height:"8",viewBox:"0 0 10 8",fill:"none",children:r.jsx("path",{d:"M1 4L3.5 6.5L9 1",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),c&&r.jsx("span",{className:"fm-checkbox__minus"})]}),o&&r.jsx("span",{className:"fm-checkbox__label",children:o})]})},le=({title:l,subtitle:c,color:s="purple",leftSlot:n,rightSlot:a,className:o=""})=>{const m=["fm-header",`fm-header--${s}`,o].filter(Boolean).join(" ");return r.jsxs("div",{className:m,children:[n&&r.jsx("div",{className:"fm-header__slot fm-header__slot--left",children:n}),r.jsxs("div",{className:"fm-header__title-block",children:[r.jsx("h4",{className:"fm-header__title",children:l}),c&&r.jsx("p",{className:"fm-header__subtitle",children:c})]}),a&&r.jsx("div",{className:"fm-header__slot fm-header__slot--right",children:a})]})},ce=({variant:l="light",headline:c="Є ідеї чи пропозиції?",ctaLabel:s="Написати нам",onCtaClick:n,sections:a=[],copyright:o="© 2024 Made by FlowMakers. All rights reserved",className:m=""})=>{const _=["fm-footer",`fm-footer--${l}`,m].filter(Boolean).join(" ");return r.jsxs("footer",{className:_,children:[r.jsxs("div",{className:"fm-footer__top",children:[r.jsxs("div",{className:"fm-footer__cta-block",children:[r.jsx("h3",{className:"fm-footer__headline",children:c}),r.jsx("button",{className:"fm-footer__cta-btn",onClick:n,children:s})]}),r.jsx("div",{className:"fm-footer__sections",children:a.map((d,p)=>r.jsxs("div",{className:"fm-footer__section",children:[r.jsx("p",{className:"fm-footer__section-title",children:d.title}),r.jsx("ul",{className:"fm-footer__section-links",children:d.links.map((b,v)=>r.jsx("li",{children:r.jsx("a",{href:b.href,className:"fm-footer__link",children:b.label})},v))})]},p))})]}),r.jsx("div",{className:"fm-footer__bottom",children:r.jsx("p",{className:"fm-footer__copyright",children:o})})]})};exports.Button=te;exports.Checkbox=oe;exports.Footer=ce;exports.Header=le;exports.Input=ae;exports.Tag=se;exports.Toggle=ne;
@@ -0,0 +1,14 @@
1
+ export { Button } from './components/Button';
2
+ export { Input } from './components/Input';
3
+ export { Tag } from './components/Tag';
4
+ export { Toggle } from './components/Toggle';
5
+ export { Checkbox } from './components/Checkbox';
6
+ export { Header } from './components/Header';
7
+ export { Footer } from './components/Footer';
8
+ export type { ButtonProps, ButtonVariant, ButtonSize } from './components/Button';
9
+ export type { InputProps, InputState } from './components/Input';
10
+ export type { TagProps, TagColor } from './components/Tag';
11
+ export type { ToggleProps } from './components/Toggle';
12
+ export type { CheckboxProps } from './components/Checkbox';
13
+ export type { HeaderProps, HeaderColor } from './components/Header';
14
+ export type { FooterProps, FooterVariant, FooterSection, FooterLink } from './components/Footer';
@@ -0,0 +1,432 @@
1
+ import O from "react";
2
+ var A = { exports: {} }, x = {};
3
+ /**
4
+ * @license React
5
+ * react-jsx-runtime.production.js
6
+ *
7
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ var I;
13
+ function ee() {
14
+ if (I) return x;
15
+ I = 1;
16
+ var l = Symbol.for("react.transitional.element"), c = Symbol.for("react.fragment");
17
+ function a(n, s, o) {
18
+ var m = null;
19
+ if (o !== void 0 && (m = "" + o), s.key !== void 0 && (m = "" + s.key), "key" in s) {
20
+ o = {};
21
+ for (var _ in s)
22
+ _ !== "key" && (o[_] = s[_]);
23
+ } else o = s;
24
+ return s = o.ref, {
25
+ $$typeof: l,
26
+ type: n,
27
+ key: m,
28
+ ref: s !== void 0 ? s : null,
29
+ props: o
30
+ };
31
+ }
32
+ return x.Fragment = c, x.jsx = a, x.jsxs = a, x;
33
+ }
34
+ var j = {};
35
+ /**
36
+ * @license React
37
+ * react-jsx-runtime.development.js
38
+ *
39
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
40
+ *
41
+ * This source code is licensed under the MIT license found in the
42
+ * LICENSE file in the root directory of this source tree.
43
+ */
44
+ var M;
45
+ function re() {
46
+ return M || (M = 1, process.env.NODE_ENV !== "production" && function() {
47
+ function l(e) {
48
+ if (e == null) return null;
49
+ if (typeof e == "function")
50
+ return e.$$typeof === Z ? null : e.displayName || e.name || null;
51
+ if (typeof e == "string") return e;
52
+ switch (e) {
53
+ case k:
54
+ return "Fragment";
55
+ case U:
56
+ return "Profiler";
57
+ case B:
58
+ return "StrictMode";
59
+ case J:
60
+ return "Suspense";
61
+ case q:
62
+ return "SuspenseList";
63
+ case H:
64
+ return "Activity";
65
+ }
66
+ if (typeof e == "object")
67
+ switch (typeof e.tag == "number" && console.error(
68
+ "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
69
+ ), e.$$typeof) {
70
+ case W:
71
+ return "Portal";
72
+ case z:
73
+ return e.displayName || "Context";
74
+ case V:
75
+ return (e._context.displayName || "Context") + ".Consumer";
76
+ case G:
77
+ var t = e.render;
78
+ return e = e.displayName, e || (e = t.displayName || t.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
79
+ case X:
80
+ return t = e.displayName || null, t !== null ? t : l(e.type) || "Memo";
81
+ case R:
82
+ t = e._payload, e = e._init;
83
+ try {
84
+ return l(e(t));
85
+ } catch {
86
+ }
87
+ }
88
+ return null;
89
+ }
90
+ function c(e) {
91
+ return "" + e;
92
+ }
93
+ function a(e) {
94
+ try {
95
+ c(e);
96
+ var t = !1;
97
+ } catch {
98
+ t = !0;
99
+ }
100
+ if (t) {
101
+ t = console;
102
+ var i = t.error, f = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
103
+ return i.call(
104
+ t,
105
+ "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
106
+ f
107
+ ), c(e);
108
+ }
109
+ }
110
+ function n(e) {
111
+ if (e === k) return "<>";
112
+ if (typeof e == "object" && e !== null && e.$$typeof === R)
113
+ return "<...>";
114
+ try {
115
+ var t = l(e);
116
+ return t ? "<" + t + ">" : "<...>";
117
+ } catch {
118
+ return "<...>";
119
+ }
120
+ }
121
+ function s() {
122
+ var e = T.A;
123
+ return e === null ? null : e.getOwner();
124
+ }
125
+ function o() {
126
+ return Error("react-stack-top-frame");
127
+ }
128
+ function m(e) {
129
+ if (C.call(e, "key")) {
130
+ var t = Object.getOwnPropertyDescriptor(e, "key").get;
131
+ if (t && t.isReactWarning) return !1;
132
+ }
133
+ return e.key !== void 0;
134
+ }
135
+ function _(e, t) {
136
+ function i() {
137
+ $ || ($ = !0, console.error(
138
+ "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
139
+ t
140
+ ));
141
+ }
142
+ i.isReactWarning = !0, Object.defineProperty(e, "key", {
143
+ get: i,
144
+ configurable: !0
145
+ });
146
+ }
147
+ function d() {
148
+ var e = l(this.type);
149
+ return Y[e] || (Y[e] = !0, console.error(
150
+ "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
151
+ )), e = this.props.ref, e !== void 0 ? e : null;
152
+ }
153
+ function p(e, t, i, f, N, w) {
154
+ var u = i.ref;
155
+ return e = {
156
+ $$typeof: S,
157
+ type: e,
158
+ key: t,
159
+ props: i,
160
+ _owner: f
161
+ }, (u !== void 0 ? u : null) !== null ? Object.defineProperty(e, "ref", {
162
+ enumerable: !1,
163
+ get: d
164
+ }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
165
+ configurable: !1,
166
+ enumerable: !1,
167
+ writable: !0,
168
+ value: 0
169
+ }), Object.defineProperty(e, "_debugInfo", {
170
+ configurable: !1,
171
+ enumerable: !1,
172
+ writable: !0,
173
+ value: null
174
+ }), Object.defineProperty(e, "_debugStack", {
175
+ configurable: !1,
176
+ enumerable: !1,
177
+ writable: !0,
178
+ value: N
179
+ }), Object.defineProperty(e, "_debugTask", {
180
+ configurable: !1,
181
+ enumerable: !1,
182
+ writable: !0,
183
+ value: w
184
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
185
+ }
186
+ function h(e, t, i, f, N, w) {
187
+ var u = t.children;
188
+ if (u !== void 0)
189
+ if (f)
190
+ if (Q(u)) {
191
+ for (f = 0; f < u.length; f++)
192
+ v(u[f]);
193
+ Object.freeze && Object.freeze(u);
194
+ } else
195
+ console.error(
196
+ "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
197
+ );
198
+ else v(u);
199
+ if (C.call(t, "key")) {
200
+ u = l(e);
201
+ var b = Object.keys(t).filter(function(K) {
202
+ return K !== "key";
203
+ });
204
+ f = 0 < b.length ? "{key: someKey, " + b.join(": ..., ") + ": ...}" : "{key: someKey}", D[u + f] || (b = 0 < b.length ? "{" + b.join(": ..., ") + ": ...}" : "{}", console.error(
205
+ `A props object containing a "key" prop is being spread into JSX:
206
+ let props = %s;
207
+ <%s {...props} />
208
+ React keys must be passed directly to JSX without using spread:
209
+ let props = %s;
210
+ <%s key={someKey} {...props} />`,
211
+ f,
212
+ u,
213
+ b,
214
+ u
215
+ ), D[u + f] = !0);
216
+ }
217
+ if (u = null, i !== void 0 && (a(i), u = "" + i), m(t) && (a(t.key), u = "" + t.key), "key" in t) {
218
+ i = {};
219
+ for (var y in t)
220
+ y !== "key" && (i[y] = t[y]);
221
+ } else i = t;
222
+ return u && _(
223
+ i,
224
+ typeof e == "function" ? e.displayName || e.name || "Unknown" : e
225
+ ), p(
226
+ e,
227
+ u,
228
+ i,
229
+ s(),
230
+ N,
231
+ w
232
+ );
233
+ }
234
+ function v(e) {
235
+ P(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === R && (e._payload.status === "fulfilled" ? P(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
236
+ }
237
+ function P(e) {
238
+ return typeof e == "object" && e !== null && e.$$typeof === S;
239
+ }
240
+ var E = O, S = Symbol.for("react.transitional.element"), W = Symbol.for("react.portal"), k = Symbol.for("react.fragment"), B = Symbol.for("react.strict_mode"), U = Symbol.for("react.profiler"), V = Symbol.for("react.consumer"), z = Symbol.for("react.context"), G = Symbol.for("react.forward_ref"), J = Symbol.for("react.suspense"), q = Symbol.for("react.suspense_list"), X = Symbol.for("react.memo"), R = Symbol.for("react.lazy"), H = Symbol.for("react.activity"), Z = Symbol.for("react.client.reference"), T = E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, C = Object.prototype.hasOwnProperty, Q = Array.isArray, g = console.createTask ? console.createTask : function() {
241
+ return null;
242
+ };
243
+ E = {
244
+ react_stack_bottom_frame: function(e) {
245
+ return e();
246
+ }
247
+ };
248
+ var $, Y = {}, F = E.react_stack_bottom_frame.bind(
249
+ E,
250
+ o
251
+ )(), L = g(n(o)), D = {};
252
+ j.Fragment = k, j.jsx = function(e, t, i) {
253
+ var f = 1e4 > T.recentlyCreatedOwnerStacks++;
254
+ return h(
255
+ e,
256
+ t,
257
+ i,
258
+ !1,
259
+ f ? Error("react-stack-top-frame") : F,
260
+ f ? g(n(e)) : L
261
+ );
262
+ }, j.jsxs = function(e, t, i) {
263
+ var f = 1e4 > T.recentlyCreatedOwnerStacks++;
264
+ return h(
265
+ e,
266
+ t,
267
+ i,
268
+ !0,
269
+ f ? Error("react-stack-top-frame") : F,
270
+ f ? g(n(e)) : L
271
+ );
272
+ };
273
+ }()), j;
274
+ }
275
+ process.env.NODE_ENV === "production" ? A.exports = ee() : A.exports = re();
276
+ var r = A.exports;
277
+ const se = ({
278
+ variant: l = "primary",
279
+ size: c = "md",
280
+ leftIcon: a,
281
+ rightIcon: n,
282
+ children: s,
283
+ fullWidth: o = !1,
284
+ disabled: m,
285
+ className: _ = "",
286
+ ...d
287
+ }) => {
288
+ const p = [
289
+ "fm-btn",
290
+ `fm-btn--${l}`,
291
+ `fm-btn--${c}`,
292
+ o ? "fm-btn--full" : "",
293
+ m ? "fm-btn--disabled" : "",
294
+ _
295
+ ].filter(Boolean).join(" ");
296
+ return /* @__PURE__ */ r.jsxs("button", { className: p, disabled: m, ...d, children: [
297
+ a && /* @__PURE__ */ r.jsx("span", { className: "fm-btn__icon fm-btn__icon--left", children: a }),
298
+ s && /* @__PURE__ */ r.jsx("span", { className: "fm-btn__label", children: s }),
299
+ n && /* @__PURE__ */ r.jsx("span", { className: "fm-btn__icon fm-btn__icon--right", children: n })
300
+ ] });
301
+ }, ae = ({
302
+ label: l,
303
+ placeholder: c,
304
+ state: a = "default",
305
+ errorMessage: n,
306
+ successMessage: s,
307
+ leftIcon: o,
308
+ rightIcon: m,
309
+ className: _ = "",
310
+ disabled: d,
311
+ ...p
312
+ }) => {
313
+ const h = [
314
+ "fm-input-wrapper",
315
+ `fm-input-wrapper--${a}`,
316
+ d ? "fm-input-wrapper--disabled" : "",
317
+ _
318
+ ].filter(Boolean).join(" ");
319
+ return /* @__PURE__ */ r.jsxs("div", { className: h, children: [
320
+ l && /* @__PURE__ */ r.jsx("label", { className: "fm-input__label", children: l }),
321
+ /* @__PURE__ */ r.jsxs("div", { className: "fm-input__field", children: [
322
+ o && /* @__PURE__ */ r.jsx("span", { className: "fm-input__icon fm-input__icon--left", children: o }),
323
+ /* @__PURE__ */ r.jsx(
324
+ "input",
325
+ {
326
+ className: "fm-input__el",
327
+ placeholder: c,
328
+ disabled: d,
329
+ ...p
330
+ }
331
+ ),
332
+ m && /* @__PURE__ */ r.jsx("span", { className: "fm-input__icon fm-input__icon--right", children: m })
333
+ ] }),
334
+ a === "error" && n && /* @__PURE__ */ r.jsx("p", { className: "fm-input__message fm-input__message--error", children: n }),
335
+ a === "success" && s && /* @__PURE__ */ r.jsx("p", { className: "fm-input__message fm-input__message--success", children: s })
336
+ ] });
337
+ }, ne = ({ children: l, color: c = "grey", className: a = "" }) => {
338
+ const n = ["fm-tag", `fm-tag--${c}`, a].filter(Boolean).join(" ");
339
+ return /* @__PURE__ */ r.jsx("span", { className: n, children: l });
340
+ }, oe = ({ checked: l, onChange: c, disabled: a, label: n, className: s = "" }) => /* @__PURE__ */ r.jsxs("label", { className: ["fm-toggle", a ? "fm-toggle--disabled" : "", s].filter(Boolean).join(" "), children: [
341
+ /* @__PURE__ */ r.jsx(
342
+ "input",
343
+ {
344
+ type: "checkbox",
345
+ className: "fm-toggle__input",
346
+ checked: l,
347
+ onChange: (o) => c(o.target.checked),
348
+ disabled: a
349
+ }
350
+ ),
351
+ /* @__PURE__ */ r.jsx("span", { className: "fm-toggle__track", children: /* @__PURE__ */ r.jsx("span", { className: "fm-toggle__thumb" }) }),
352
+ n && /* @__PURE__ */ r.jsx("span", { className: "fm-toggle__label", children: n })
353
+ ] }), le = ({
354
+ checked: l = !1,
355
+ indeterminate: c = !1,
356
+ onChange: a,
357
+ disabled: n,
358
+ size: s = "small",
359
+ label: o,
360
+ className: m = ""
361
+ }) => {
362
+ const _ = O.useRef(null);
363
+ return O.useEffect(() => {
364
+ _.current && (_.current.indeterminate = c);
365
+ }, [c]), /* @__PURE__ */ r.jsxs("label", { className: ["fm-checkbox", `fm-checkbox--${s}`, n ? "fm-checkbox--disabled" : "", m].filter(Boolean).join(" "), children: [
366
+ /* @__PURE__ */ r.jsx(
367
+ "input",
368
+ {
369
+ ref: _,
370
+ type: "checkbox",
371
+ className: "fm-checkbox__input",
372
+ checked: l,
373
+ onChange: (d) => a == null ? void 0 : a(d.target.checked),
374
+ disabled: n
375
+ }
376
+ ),
377
+ /* @__PURE__ */ r.jsxs("span", { className: "fm-checkbox__box", children: [
378
+ l && !c && /* @__PURE__ */ r.jsx("svg", { width: "10", height: "8", viewBox: "0 0 10 8", fill: "none", children: /* @__PURE__ */ r.jsx("path", { d: "M1 4L3.5 6.5L9 1", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }),
379
+ c && /* @__PURE__ */ r.jsx("span", { className: "fm-checkbox__minus" })
380
+ ] }),
381
+ o && /* @__PURE__ */ r.jsx("span", { className: "fm-checkbox__label", children: o })
382
+ ] });
383
+ }, ce = ({
384
+ title: l,
385
+ subtitle: c,
386
+ color: a = "purple",
387
+ leftSlot: n,
388
+ rightSlot: s,
389
+ className: o = ""
390
+ }) => {
391
+ const m = ["fm-header", `fm-header--${a}`, o].filter(Boolean).join(" ");
392
+ return /* @__PURE__ */ r.jsxs("div", { className: m, children: [
393
+ n && /* @__PURE__ */ r.jsx("div", { className: "fm-header__slot fm-header__slot--left", children: n }),
394
+ /* @__PURE__ */ r.jsxs("div", { className: "fm-header__title-block", children: [
395
+ /* @__PURE__ */ r.jsx("h4", { className: "fm-header__title", children: l }),
396
+ c && /* @__PURE__ */ r.jsx("p", { className: "fm-header__subtitle", children: c })
397
+ ] }),
398
+ s && /* @__PURE__ */ r.jsx("div", { className: "fm-header__slot fm-header__slot--right", children: s })
399
+ ] });
400
+ }, ie = ({
401
+ variant: l = "light",
402
+ headline: c = "Є ідеї чи пропозиції?",
403
+ ctaLabel: a = "Написати нам",
404
+ onCtaClick: n,
405
+ sections: s = [],
406
+ copyright: o = "© 2024 Made by FlowMakers. All rights reserved",
407
+ className: m = ""
408
+ }) => {
409
+ const _ = ["fm-footer", `fm-footer--${l}`, m].filter(Boolean).join(" ");
410
+ return /* @__PURE__ */ r.jsxs("footer", { className: _, children: [
411
+ /* @__PURE__ */ r.jsxs("div", { className: "fm-footer__top", children: [
412
+ /* @__PURE__ */ r.jsxs("div", { className: "fm-footer__cta-block", children: [
413
+ /* @__PURE__ */ r.jsx("h3", { className: "fm-footer__headline", children: c }),
414
+ /* @__PURE__ */ r.jsx("button", { className: "fm-footer__cta-btn", onClick: n, children: a })
415
+ ] }),
416
+ /* @__PURE__ */ r.jsx("div", { className: "fm-footer__sections", children: s.map((d, p) => /* @__PURE__ */ r.jsxs("div", { className: "fm-footer__section", children: [
417
+ /* @__PURE__ */ r.jsx("p", { className: "fm-footer__section-title", children: d.title }),
418
+ /* @__PURE__ */ r.jsx("ul", { className: "fm-footer__section-links", children: d.links.map((h, v) => /* @__PURE__ */ r.jsx("li", { children: /* @__PURE__ */ r.jsx("a", { href: h.href, className: "fm-footer__link", children: h.label }) }, v)) })
419
+ ] }, p)) })
420
+ ] }),
421
+ /* @__PURE__ */ r.jsx("div", { className: "fm-footer__bottom", children: /* @__PURE__ */ r.jsx("p", { className: "fm-footer__copyright", children: o }) })
422
+ ] });
423
+ };
424
+ export {
425
+ se as Button,
426
+ le as Checkbox,
427
+ ie as Footer,
428
+ ce as Header,
429
+ ae as Input,
430
+ ne as Tag,
431
+ oe as Toggle
432
+ };
@@ -0,0 +1 @@
1
+ .fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-s, 10px);border:none;cursor:pointer;font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-weight:var(--weight-bold, 700);font-size:var(--font-size-14, 14px);line-height:1;white-space:nowrap;transition:background .15s,border-color .15s,opacity .15s;text-decoration:none}.fm-btn--sm{height:32px;padding:0 var(--space-sm, 12px);border-radius:var(--radius-s, 10px);font-size:var(--font-size-12, 12px)}.fm-btn--md{height:42px;padding:var(--space-s, 10px) var(--space-m, 16px);border-radius:var(--radius-m, 12px)}.fm-btn--lg{height:52px;padding:var(--space-sm, 12px) var(--space-xl, 24px);border-radius:var(--radius-m, 12px);font-size:var(--font-size-16, 16px)}.fm-btn--full{width:100%}.fm-btn--primary{background:var(--bw-fill-black, #121212);color:var(--bw-fill-white, #ffffff)}.fm-btn--primary:hover:not(:disabled){background-image:linear-gradient(90deg,#ffffff0d,#ffffff0d),linear-gradient(90deg,#121212,#121212)}.fm-btn--primary:active:not(:disabled){background:#2a2a2a}.fm-btn--hero{background:var(--bw-fill-black, #121212);color:var(--bw-fill-white, #ffffff)}.fm-btn--hero:hover:not(:disabled){background:var(--bw-fill-black, #121212);border:1.5px solid var(--pink-fill-300, #ffa8f1);padding:var(--space-m, 16px)}.fm-btn--secondary{background:transparent;color:var(--bw-fill-black, #121212);border:1.5px solid var(--bw-fill-black, #121212)}.fm-btn--secondary:hover:not(:disabled){background:var(--bw-fill-100, #eeeef0)}.fm-btn--secondary:active:not(:disabled){background:var(--bw-fill-200, #dcdcdc)}.fm-btn--secondary-large{background:transparent;color:var(--bw-fill-black, #121212);border:1.5px solid var(--bw-fill-black, #121212);height:52px;padding:var(--space-sm, 12px) var(--space-xl, 24px)}.fm-btn--ghost{background:transparent;color:var(--bw-fill-black, #121212);border:none}.fm-btn--ghost:hover:not(:disabled){background:var(--bw-fill-100, #eeeef0)}.fm-btn--ghost-icon{background:transparent;color:var(--bw-fill-black, #121212);border:none;padding:var(--space-xs, 8px);border-radius:var(--radius-s, 10px)}.fm-btn--ghost-icon:hover:not(:disabled){background:var(--bw-fill-100, #eeeef0)}.fm-btn--disabled,.fm-btn:disabled{background:var(--bw-fill-200, #dcdcdc);color:var(--bw-fill-500, #7c7c7c);cursor:not-allowed;border:none}.fm-btn__icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px}.fm-btn__icon--left{margin-right:-2px}.fm-btn__icon--right{margin-left:-2px}.fm-input-wrapper{display:flex;flex-direction:column;gap:var(--space-sm, 12px);width:100%}.fm-input__label{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-16, 16px);font-weight:var(--weight-medium, 400);color:var(--nature-fill-600, #5d5e6c);line-height:1.4}.fm-input__field{display:flex;align-items:center;gap:var(--space-xs, 8px);height:42px;padding:var(--space-s, 10px) var(--space-m, 16px);border-radius:var(--radius-m, 12px);border:1px solid var(--nature-fill-300, #b8b9c1);background:var(--bw-fill-white, #ffffff);transition:border-color .15s,box-shadow .15s}.fm-input__el{flex:1;border:none;outline:none;background:transparent;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-black, #121212);line-height:1.4}.fm-input__el::placeholder{color:var(--nature-fill-300, #b8b9c1)}.fm-input-wrapper--hover .fm-input__field{border-color:var(--nature-fill-500, #7c7c7c)}.fm-input-wrapper--focused .fm-input__field{border-color:var(--primary-fill-500, #7d65e1);box-shadow:0 0 0 3px #7d65e126}.fm-input-wrapper--filled .fm-input__field{border-color:var(--nature-fill-400, #989898)}.fm-input-wrapper--error .fm-input__field{border-color:#e53e3e}.fm-input-wrapper--success .fm-input__field{border-color:var(--green-fill-500, #27a872)}.fm-input-wrapper--disabled .fm-input__field{background:var(--bw-fill-100, #eeeef0);cursor:not-allowed}.fm-input-wrapper--disabled .fm-input__el{cursor:not-allowed;color:var(--bw-fill-400, #989898)}.fm-input__icon{display:inline-flex;align-items:center;color:var(--nature-fill-400, #989898)}.fm-input__message{font-family:var(--font-family-body);font-size:var(--font-size-12, 12px);margin-top:4px}.fm-input__message--error{color:#e53e3e}.fm-input__message--success{color:var(--green-fill-600, #1e8a5d)}.fm-tag{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-xs, 8px) var(--space-sm, 12px);border-radius:var(--radius-full, 9999px);font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-12, 12px);font-weight:var(--weight-bold, 700);line-height:1.2;white-space:nowrap}.fm-tag--grey{background:var(--nature-fill-100, #eeeef0);color:var(--nature-fill-700, #4c4d58)}.fm-tag--green{background:var(--green-fill-100, #d9f2e7);color:var(--green-fill-700, #1b6153)}.fm-tag--yellow{background:var(--yellow-fill-100, #fff0d4);color:var(--yellow-fill-700, #c54e09)}.fm-tag--purple{background:var(--primary-fill-100,#eeecfb);color:var(--primary-fill-700,#6d45bc)}.fm-tag--pink{background:var(--pink-fill-100, #ffe7fc);color:var(--pink-fill-700, #b51692)}.fm-toggle{display:inline-flex;align-items:center;gap:var(--space-xs, 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:44px;height:24px;border-radius:var(--radius-full, 9999px);background:var(--nature-fill-300, #b8b9c1);transition:background .2s;flex-shrink:0}.fm-toggle__input:checked~.fm-toggle__track{background:var(--primary-fill-500, #7d65e1)}.fm-toggle__thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--bw-fill-white, #ffffff);box-shadow:0 1px 3px #0003;transition:transform .2s}.fm-toggle__input:checked~.fm-toggle__track .fm-toggle__thumb{transform:translate(20px)}.fm-toggle--disabled{opacity:.5;cursor:not-allowed}.fm-toggle__label{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);color:var(--bw-fill-black, #121212)}.fm-checkbox{display:inline-flex;align-items:center;gap:var(--space-xs, 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:18px;height:18px;border-radius:4px;border:1.5px solid var(--nature-fill-300, #b8b9c1);background:var(--bw-fill-white, #ffffff);flex-shrink:0;transition:background .15s,border-color .15s}.fm-checkbox--large .fm-checkbox__box{width:22px;height:22px;border-radius:6px}.fm-checkbox__input:checked+.fm-checkbox__box{background:var(--primary-fill-500, #7d65e1);border-color:var(--primary-fill-500, #7d65e1)}.fm-checkbox__input:indeterminate+.fm-checkbox__box{background:var(--primary-fill-500, #7d65e1);border-color:var(--primary-fill-500, #7d65e1)}.fm-checkbox__minus{width:10px;height:2px;background:var(--bw-fill-white, #ffffff);border-radius:1px}.fm-checkbox--disabled{opacity:.5;cursor:not-allowed}.fm-checkbox__label{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);color:var(--bw-fill-black, #121212)}.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}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@tetjana/flowmakers-ds",
3
+ "version": "0.1.0",
4
+ "description": "FlowMakers UI Design System — React components",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.esm.js",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./styles": "./dist/styles.css"
15
+ },
16
+ "files": ["dist"],
17
+ "scripts": {
18
+ "build": "vite build && tsc --emitDeclarationOnly --declaration --outDir dist",
19
+ "dev": "vite",
20
+ "lint": "eslint src"
21
+ },
22
+ "peerDependencies": {
23
+ "react": ">=18",
24
+ "react-dom": ">=18"
25
+ },
26
+ "devDependencies": {
27
+ "@types/react": "^18.0.0",
28
+ "@types/react-dom": "^18.0.0",
29
+ "@vitejs/plugin-react":"^4.0.0",
30
+ "typescript": "^5.0.0",
31
+ "vite": "^5.0.0",
32
+ "vite-plugin-dts": "^3.0.0"
33
+ },
34
+ "keywords": ["flowmakers", "design-system", "react", "ui"],
35
+ "license": "MIT"
36
+ }