@prozorro/prozorro-ui 0.0.2 → 0.0.5

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.
Files changed (76) hide show
  1. package/README.md +66 -28
  2. package/dist/app/assets/Color-FRDS63T2-Bo-vvTV8.js +1 -0
  3. package/dist/app/assets/DocsRenderer-LL677BLK-DxB60yOs.js +811 -0
  4. package/dist/app/assets/PzText-H75Z6Lud.css +1 -0
  5. package/dist/app/assets/PzText.stories-pNLs8FlM.js +239 -0
  6. package/dist/app/assets/WithTooltip-65CFNBJE-Ty2foy7t.js +9 -0
  7. package/dist/app/assets/formatter-EIJCOSYU-oeR5mOii.js +1 -0
  8. package/dist/app/assets/iframe-B_iz38fI.js +1107 -0
  9. package/dist/app/assets/{preview-DAxGvctC.css → iframe-CNIwQJJc.css} +1 -1
  10. package/dist/app/assets/preload-helper-C1FmrZbK.js +1 -0
  11. package/dist/app/assets/syntaxhighlighter-OH4MV7E3-Can2sBRZ.js +6 -0
  12. package/dist/app/favicon-wrapper.svg +46 -0
  13. package/dist/app/favicon.svg +1 -1
  14. package/dist/app/iframe.html +87 -48
  15. package/dist/app/index.html +27 -59
  16. package/dist/app/index.json +1 -1
  17. package/dist/app/project.json +1 -1
  18. package/dist/app/sb-addons/docs-1/manager-bundle.js +3 -0
  19. package/dist/app/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +630 -0
  20. package/dist/app/sb-common-assets/favicon-wrapper.svg +46 -0
  21. package/dist/app/sb-common-assets/favicon.svg +1 -1
  22. package/dist/app/sb-manager/globals-runtime.js +74601 -40067
  23. package/dist/app/sb-manager/globals.js +13 -37
  24. package/dist/app/sb-manager/manager-stores.js +23 -0
  25. package/dist/app/sb-manager/runtime.js +23779 -9749
  26. package/dist/app/vite-inject-mocker-entry.js +2 -0
  27. package/dist/components/PzText/PzText.vue.d.ts +20 -0
  28. package/dist/components/PzText/index.d.ts +2 -0
  29. package/dist/components/PzText/types.d.ts +6 -0
  30. package/dist/index.d.ts +1 -1
  31. package/dist/package.json +9 -7
  32. package/dist/prozorro-ui.cjs +1 -1
  33. package/dist/prozorro-ui.js +44 -27
  34. package/dist/style.css +1 -1
  35. package/package.json +9 -7
  36. package/src/styles/_reset.scss +26 -0
  37. package/src/styles/abstract/_mixins.scss +50 -0
  38. package/src/styles/abstract/_typography.scss +202 -0
  39. package/src/styles/abstract/_variables.scss +59 -0
  40. package/src/styles/main.scss +7 -0
  41. package/src/styles/vendors/_google-material-icons.scss +42 -0
  42. package/src/styles/vendors/_normalize.scss +338 -0
  43. package/dist/app/assets/Button-DK7ZxByB.css +0 -1
  44. package/dist/app/assets/Button.stories-kOkDzZSR.js +0 -16
  45. package/dist/app/assets/Color-YHDXOIA2-CflMuX2a.js +0 -1
  46. package/dist/app/assets/DocsRenderer-CFRXHY34-CT7H_f1J.js +0 -623
  47. package/dist/app/assets/entry-preview-D3bN2KnO.js +0 -1
  48. package/dist/app/assets/entry-preview-docs-uZNR0dmt.js +0 -16
  49. package/dist/app/assets/iframe-Dy8Zk0Zd.js +0 -211
  50. package/dist/app/assets/index-CYkJ7mS4.js +0 -1
  51. package/dist/app/assets/index-Dc4p7Je0.js +0 -11
  52. package/dist/app/assets/index-DrFu-skq.js +0 -6
  53. package/dist/app/assets/preview-B8lJiyuQ.js +0 -34
  54. package/dist/app/assets/preview-BBWR9nbA.js +0 -1
  55. package/dist/app/assets/preview-BWzBA1C2.js +0 -396
  56. package/dist/app/assets/preview-CQ2_cFel.js +0 -2
  57. package/dist/app/assets/preview-CvbIS5ZJ.js +0 -1
  58. package/dist/app/assets/preview-D-Qz4Vhp.js +0 -240
  59. package/dist/app/assets/preview-D7OYendf.js +0 -1
  60. package/dist/app/assets/preview-DD_OYowb.js +0 -1
  61. package/dist/app/assets/preview-DGUiP6tS.js +0 -7
  62. package/dist/app/assets/vue.esm-bundler-DwA03xYR.js +0 -37
  63. package/dist/app/sb-addons/essentials-actions-2/manager-bundle.js +0 -3
  64. package/dist/app/sb-addons/essentials-backgrounds-4/manager-bundle.js +0 -12
  65. package/dist/app/sb-addons/essentials-controls-1/manager-bundle.js +0 -405
  66. package/dist/app/sb-addons/essentials-docs-3/manager-bundle.js +0 -245
  67. package/dist/app/sb-addons/essentials-measure-7/manager-bundle.js +0 -3
  68. package/dist/app/sb-addons/essentials-outline-8/manager-bundle.js +0 -3
  69. package/dist/app/sb-addons/essentials-toolbars-6/manager-bundle.js +0 -3
  70. package/dist/app/sb-addons/essentials-viewport-5/manager-bundle.js +0 -3
  71. package/dist/app/sb-addons/interactions-9/manager-bundle.js +0 -222
  72. package/dist/app/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js +0 -3
  73. package/dist/app/sb-manager/globals-module-info.js +0 -1052
  74. package/dist/components/Button/Button.vue.d.ts +0 -10
  75. package/dist/components/Button/index.d.ts +0 -2
  76. package/dist/components/Button/types.d.ts +0 -6
@@ -0,0 +1,2 @@
1
+ var we=Object.defineProperty;var ke=(e,r,t)=>r in e?we(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var x=(e,r,t)=>ke(e,typeof r!="symbol"?r+"":r,t);import{_ as Se}from"./assets/preload-helper-C1FmrZbK.js";var ae=class{constructor(){x(this,"registryByUrl",new Map);x(this,"registryById",new Map)}clear(){this.registryByUrl.clear(),this.registryById.clear()}keys(){return this.registryByUrl.keys()}add(e){this.registryByUrl.set(e.url,e),this.registryById.set(e.id,e)}register(e,r,t,n,i){let a=typeof e=="object"?e.type:e;if(typeof e=="object"){let o=e;if(o instanceof X||o instanceof q||o instanceof W||o instanceof F)throw new TypeError(`[vitest] Cannot register a mock that is already defined. Expected a JSON representation from \`MockedModule.toJSON\`, instead got "${o.type}". Use "registry.add()" to update a mock instead.`);if(o.type==="automock"){let s=X.fromJSON(o);return this.add(s),s}else if(o.type==="autospy"){let s=q.fromJSON(o);return this.add(s),s}else if(o.type==="redirect"){let s=F.fromJSON(o);return this.add(s),s}else throw o.type==="manual"?new Error("Cannot set serialized manual mock. Define a factory function manually with `ManualMockedModule.fromJSON()`."):new Error(`Unknown mock type: ${o.type}`)}if(typeof r!="string")throw new TypeError("[vitest] Mocks require a raw string.");if(typeof n!="string")throw new TypeError("[vitest] Mocks require a url string.");if(typeof t!="string")throw new TypeError("[vitest] Mocks require an id string.");if(a==="manual"){if(typeof i!="function")throw new TypeError("[vitest] Manual mocks require a factory function.");let o=new W(r,t,n,i);return this.add(o),o}else if(a==="automock"||a==="autospy"){let o=a==="automock"?new X(r,t,n):new q(r,t,n);return this.add(o),o}else if(a==="redirect"){if(typeof i!="string")throw new TypeError("[vitest] Redirect mocks require a redirect string.");let o=new F(r,t,n,i);return this.add(o),o}else throw new Error(`[vitest] Unknown mock type: ${a}`)}delete(e){this.registryByUrl.delete(e)}get(e){return this.registryByUrl.get(e)}getById(e){return this.registryById.get(e)}has(e){return this.registryByUrl.has(e)}},X=class{constructor(e,r,t){x(this,"type","automock");this.raw=e,this.id=r,this.url=t}static fromJSON(e){return new q(e.raw,e.id,e.url)}toJSON(){return{type:this.type,url:this.url,raw:this.raw,id:this.id}}},q=class le{constructor(r,t,n){x(this,"type","autospy");this.raw=r,this.id=t,this.url=n}static fromJSON(r){return new le(r.raw,r.id,r.url)}toJSON(){return{type:this.type,url:this.url,id:this.id,raw:this.raw}}},F=class ce{constructor(r,t,n,i){x(this,"type","redirect");this.raw=r,this.id=t,this.url=n,this.redirect=i}static fromJSON(r){return new ce(r.raw,r.id,r.url,r.redirect)}toJSON(){return{type:this.type,url:this.url,raw:this.raw,id:this.id,redirect:this.redirect}}},W=class ue{constructor(r,t,n,i){x(this,"cache");x(this,"type","manual");this.raw=r,this.id=t,this.url=n,this.factory=i}async resolve(){if(this.cache)return this.cache;let r;try{r=await this.factory()}catch(t){let n=new Error('[vitest] There was an error when mocking a module. If you are using "vi.mock" factory, make sure there are no top level variables inside, since this call is hoisted to top of the file. Read more: https://vitest.dev/api/vi.html#vi-mock');throw n.cause=t,n}if(r===null||typeof r!="object"||Array.isArray(r))throw new TypeError(`[vitest] vi.mock("${this.raw}", factory?: () => unknown) is not returning an object. Did you mean to return an object with a "default" key?`);return this.cache=r}static fromJSON(r,t){return new ue(r.raw,r.id,r.url,t)}toJSON(){return{type:this.type,url:this.url,id:this.id,raw:this.raw}}};function Ee(e,r,t={}){let n=new Array,i=new _e,a=(u,f,y)=>{try{return u[f]=y,!0}catch{return!1}},o=(u,f)=>{let y=D(u),g=y==="Module"||!!u.__esModule;for(let{key:m,descriptor:I}of Y(u,g,e.globalConstructors)){if(!g&&I.get){try{Object.defineProperty(f,m,I)}catch{}continue}if(Ie(m,y))continue;let v=u[m],l=i.getId(v);if(l!==void 0){n.push(()=>a(f,m,i.getMockedValue(l)));continue}let c=D(v);if(Array.isArray(v)){a(f,m,[]);continue}let T=c.includes("Function")&&typeof v=="function";if((!T||v._isMockFunction)&&c!=="Object"&&c!=="Module"){a(f,m,v);continue}if(a(f,m,T?v:{})){if(T){let $=function(){if(this instanceof f[m])for(let{key:b,descriptor:A}of Y(this,!1,e.globalConstructors)){if(A.get)continue;let C=this[b];if(D(C).includes("Function")&&typeof C=="function"){let p=this[b],h=E(this,b).mockImplementation(p),B=h.mockReset;h.mockRestore=h.mockReset=()=>(B.call(h),h.mockImplementation(p),h)}}};if(!e.spyOn)throw new Error("[@vitest/mocker] `spyOn` is not defined. This is a Vitest error. Please open a new issue with reproduction.");let E=e.spyOn,P=E(f,m);if(e.type==="automock"){P.mockImplementation($);let b=P.mockReset;P.mockRestore=P.mockReset=()=>(b.call(P),P.mockImplementation($),P)}Object.defineProperty(f[m],"length",{value:0})}i.track(v,f[m]),o(v,f[m])}}},s=t;o(r,s);for(let u of n)u();return s}var _e=class{constructor(){x(this,"idMap",new Map);x(this,"mockedValueMap",new Map)}getId(e){return this.idMap.get(e)}getMockedValue(e){return this.mockedValueMap.get(e)}track(e,r){let t=this.idMap.size;return this.idMap.set(e,t),this.mockedValueMap.set(t,r),t}};function D(e){return Object.prototype.toString.apply(e).slice(8,-1)}function Ie(e,r){return r.includes("Function")&&typeof e=="string"&&["arguments","callee","caller","length","name"].includes(e)}function Y(e,r,t){let{Map:n,Object:i,Function:a,RegExp:o,Array:s}=t,u=new n,f=e;do{if(f===i.prototype||f===a.prototype||f===o.prototype)break;be(f,y=>{let g=i.getOwnPropertyDescriptor(f,y);g&&u.set(y,{key:y,descriptor:g})})}while(f=i.getPrototypeOf(f));if(r&&!u.has("default")&&"default"in e){let y=i.getOwnPropertyDescriptor(e,"default");y&&u.set("default",{key:"default",descriptor:y})}return s.from(u.values())}function be(e,r){let t=typeof r=="function"?r:n=>r.add(n);Object.getOwnPropertyNames(e).forEach(t),Object.getOwnPropertySymbols(e).forEach(t)}var xe=/^[A-Za-z]:\//;function de(e=""){return e&&e.replace(/\\/g,"/").replace(xe,r=>r.toUpperCase())}var Te=/^[/\\]{2}/,Me=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,Pe=/^[A-Za-z]:$/,Re=/.(\.[^./]+|\.)$/,$e=function(e){if(e.length===0)return".";e=de(e);let r=e.match(Te),t=K(e),n=e[e.length-1]==="/";return e=Oe(e,!t),e.length===0?t?"/":n?"./":".":(n&&(e+="/"),Pe.test(e)&&(e+="/"),r?t?`//${e}`:`//./${e}`:t&&!K(e)?`/${e}`:e)},Ae=function(...e){let r="";for(let t of e)if(t)if(r.length>0){let n=r[r.length-1]==="/",i=t[0]==="/";n&&i?r+=t.slice(1):r+=n||i?t:`/${t}`}else r+=t;return $e(r)};function Oe(e,r){let t="",n=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o==="/")break;o="/"}if(o==="/"){if(!(i===s-1||a===1))if(a===2){if(t.length<2||n!==2||t[t.length-1]!=="."||t[t.length-2]!=="."){if(t.length>2){let u=t.lastIndexOf("/");u===-1?(t="",n=0):(t=t.slice(0,u),n=t.length-1-t.lastIndexOf("/")),i=s,a=0;continue}else if(t.length>0){t="",n=0,i=s,a=0;continue}}r&&(t+=t.length>0?"/..":"..",n=2)}else t.length>0?t+=`/${e.slice(i+1,s)}`:t=e.slice(i+1,s),n=s-i-1;i=s,a=0}else o==="."&&a!==-1?++a:a=-1}return t}var K=function(e){return Me.test(e)},Ce=function(e){if(e==="..")return"";let r=Re.exec(de(e));return r&&r[1]||""},Ne={reset:[0,0],bold:[1,22,"\x1B[22m\x1B[1m"],dim:[2,22,"\x1B[22m\x1B[2m"],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]},Le=Object.entries(Ne);function j(e){return String(e)}j.open="";j.close="";function Je(e=!1){let r=typeof process<"u"?process:void 0,t=(r==null?void 0:r.env)||{},n=(r==null?void 0:r.argv)||[];return!("NO_COLOR"in t||n.includes("--no-color"))&&("FORCE_COLOR"in t||n.includes("--color")||(r==null?void 0:r.platform)==="win32"||e&&t.TERM!=="dumb"||"CI"in t)||typeof window<"u"&&!!window.chrome}function Be(e=!1){let r=Je(e),t=(o,s,u,f)=>{let y="",g=0;do y+=o.substring(g,f)+u,g=f+s.length,f=o.indexOf(s,g);while(~f);return y+o.substring(g)},n=(o,s,u=o)=>{let f=y=>{let g=String(y),m=g.indexOf(s,o.length);return~m?o+t(g,s,u,m)+s:o+g+s};return f.open=o,f.close=s,f},i={isColorSupported:r},a=o=>`\x1B[${o}m`;for(let[o,s]of Le)i[o]=r?n(a(s[0]),a(s[1]),s[2]):j;return i}Be();function fe(e,r){return r.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(n){if(n!=="default"&&!(n in e)){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}})}),Object.freeze(e)}function pe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H={exports:{}},k={},Z;function Xe(){if(Z)return k;Z=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),y=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),m=Symbol.for("react.view_transition"),I=Symbol.for("react.client.reference");function v(l){if(typeof l=="object"&&l!==null){var c=l.$$typeof;switch(c){case e:switch(l=l.type,l){case t:case i:case n:case u:case f:case m:return l;default:switch(l=l&&l.$$typeof,l){case o:case s:case g:case y:return l;case a:return l;default:return c}}case r:return c}}}return k.ContextConsumer=a,k.ContextProvider=o,k.Element=e,k.ForwardRef=s,k.Fragment=t,k.Lazy=g,k.Memo=y,k.Portal=r,k.Profiler=i,k.StrictMode=n,k.Suspense=u,k.SuspenseList=f,k.isContextConsumer=function(l){return v(l)===a},k.isContextProvider=function(l){return v(l)===o},k.isElement=function(l){return typeof l=="object"&&l!==null&&l.$$typeof===e},k.isForwardRef=function(l){return v(l)===s},k.isFragment=function(l){return v(l)===t},k.isLazy=function(l){return v(l)===g},k.isMemo=function(l){return v(l)===y},k.isPortal=function(l){return v(l)===r},k.isProfiler=function(l){return v(l)===i},k.isStrictMode=function(l){return v(l)===n},k.isSuspense=function(l){return v(l)===u},k.isSuspenseList=function(l){return v(l)===f},k.isValidElementType=function(l){return typeof l=="string"||typeof l=="function"||l===t||l===i||l===n||l===u||l===f||typeof l=="object"&&l!==null&&(l.$$typeof===g||l.$$typeof===y||l.$$typeof===o||l.$$typeof===a||l.$$typeof===s||l.$$typeof===I||l.getModuleId!==void 0)},k.typeOf=v,k}var G;function qe(){return G||(G=1,H.exports=Xe()),H.exports}var he=qe(),Fe=pe(he),De=fe({__proto__:null,default:Fe},[he]),Q={exports:{}},w={},ee;function Ue(){if(ee)return w;ee=1;var e=Symbol.for("react.element"),r=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),o=Symbol.for("react.context"),s=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),y=Symbol.for("react.suspense_list"),g=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),I=Symbol.for("react.offscreen"),v;v=Symbol.for("react.module.reference");function l(c){if(typeof c=="object"&&c!==null){var T=c.$$typeof;switch(T){case e:switch(c=c.type,c){case t:case i:case n:case f:case y:return c;default:switch(c=c&&c.$$typeof,c){case s:case o:case u:case m:case g:case a:return c;default:return T}}case r:return T}}}return w.ContextConsumer=o,w.ContextProvider=a,w.Element=e,w.ForwardRef=u,w.Fragment=t,w.Lazy=m,w.Memo=g,w.Portal=r,w.Profiler=i,w.StrictMode=n,w.Suspense=f,w.SuspenseList=y,w.isAsyncMode=function(){return!1},w.isConcurrentMode=function(){return!1},w.isContextConsumer=function(c){return l(c)===o},w.isContextProvider=function(c){return l(c)===a},w.isElement=function(c){return typeof c=="object"&&c!==null&&c.$$typeof===e},w.isForwardRef=function(c){return l(c)===u},w.isFragment=function(c){return l(c)===t},w.isLazy=function(c){return l(c)===m},w.isMemo=function(c){return l(c)===g},w.isPortal=function(c){return l(c)===r},w.isProfiler=function(c){return l(c)===i},w.isStrictMode=function(c){return l(c)===n},w.isSuspense=function(c){return l(c)===f},w.isSuspenseList=function(c){return l(c)===y},w.isValidElementType=function(c){return typeof c=="string"||typeof c=="function"||c===t||c===i||c===n||c===f||c===y||c===I||typeof c=="object"&&c!==null&&(c.$$typeof===m||c.$$typeof===g||c.$$typeof===a||c.$$typeof===o||c.$$typeof===u||c.$$typeof===v||c.getModuleId!==void 0)},w.typeOf=l,w}var te;function ze(){return te||(te=1,Q.exports=Ue()),Q.exports}var ye=ze(),je=pe(ye),Ve=fe({__proto__:null,default:je},[ye]),We=["isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","isValidElementType"];Object.fromEntries(We.map(e=>[e,r=>Ve[e](r)||De[e](r)]));var Ye=()=>"Promise{…}";try{let{getPromiseDetails:e,kPending:r,kRejected:t}=process.binding("util");Array.isArray(e(Promise.resolve()))&&(Ye=(n,i)=>{let[a,o]=e(n);return a===r?"Promise{<pending>}":`Promise${a===t?"!":""}{${i.inspect(o,i)}}`})}catch{}function Ke(e){let{message:r="$$stack trace error",stackTraceLimit:t=1}=e||{},n=Error.stackTraceLimit,i=Error.prepareStackTrace;Error.stackTraceLimit=t,Error.prepareStackTrace=o=>o.stack;let a=new Error(r).stack||"";return Error.prepareStackTrace=i,Error.stackTraceLimit=n,a}var U,re;function He(){if(re)return U;re=1;var e,r,t,n,i,a,o,s,u,f,y,g,m,I,v,l,c,T,$;return m=/\/(?![*\/])(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\\]).|\\.)*(\/[$_\u200C\u200D\p{ID_Continue}]*|\\)?/uy,g=/--|\+\+|=>|\.{3}|\??\.(?!\d)|(?:&&|\|\||\?\?|[+\-%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\/(?![\/*]))=?|[?~,:;[\](){}]/y,e=/(\x23?)(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+/uy,v=/(['"])(?:(?!\1)[^\\\n\r]|\\(?:\r\n|[^]))*(\1)?/y,y=/(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\d)*n|(?:(?:0(?!\d)|0\d*[89]\d*|[1-9](?:_?\d)*)(?:\.(?:\d(?:_?\d)*)?)?|\.\d(?:_?\d)*)(?:[eE][+-]?\d(?:_?\d)*)?|0[0-7]+/y,l=/[`}](?:[^`\\$]|\\[^]|\$(?!\{))*(`|\$\{)?/y,$=/[\t\v\f\ufeff\p{Zs}]+/uy,s=/\r?\n|[\r\u2028\u2029]/y,u=/\/\*(?:[^*]|\*(?!\/))*(\*\/)?/y,I=/\/\/.*/y,t=/[<>.:={}]|\/(?![\/*])/y,r=/[$_\p{ID_Start}][$_\u200C\u200D\p{ID_Continue}-]*/uy,n=/(['"])(?:(?!\1)[^])*(\1)?/y,i=/[^<>{}]+/y,T=/^(?:[\/+-]|\.{3}|\?(?:InterpolationIn(?:JSX|Template)|NoLineTerminatorHere|NonExpressionParenEnd|UnaryIncDec))?$|[{}([,;<>=*%&|^!~?:]$/,c=/^(?:=>|[;\]){}]|else|\?(?:NoLineTerminatorHere|NonExpressionParenEnd))?$/,a=/^(?:await|case|default|delete|do|else|instanceof|new|return|throw|typeof|void|yield)$/,o=/^(?:return|throw|yield)$/,f=RegExp(s.source),U=function*(E,{jsx:P=!1}={}){var b,A,C,p,h,B,d,R,V,M,N,S,L,_;for({length:B}=E,p=0,h="",_=[{tag:"JS"}],b=[],N=0,S=!1;p<B;){switch(R=_[_.length-1],R.tag){case"JS":case"JSNonExpressionParen":case"InterpolationInTemplate":case"InterpolationInJSX":if(E[p]==="/"&&(T.test(h)||a.test(h))&&(m.lastIndex=p,d=m.exec(E))){p=m.lastIndex,h=d[0],S=!0,yield{type:"RegularExpressionLiteral",value:d[0],closed:d[1]!==void 0&&d[1]!=="\\"};continue}if(g.lastIndex=p,d=g.exec(E)){switch(L=d[0],V=g.lastIndex,M=L,L){case"(":h==="?NonExpressionParenKeyword"&&_.push({tag:"JSNonExpressionParen",nesting:N}),N++,S=!1;break;case")":N--,S=!0,R.tag==="JSNonExpressionParen"&&N===R.nesting&&(_.pop(),M="?NonExpressionParenEnd",S=!1);break;case"{":g.lastIndex=0,C=!c.test(h)&&(T.test(h)||a.test(h)),b.push(C),S=!1;break;case"}":switch(R.tag){case"InterpolationInTemplate":if(b.length===R.nesting){l.lastIndex=p,d=l.exec(E),p=l.lastIndex,h=d[0],d[1]==="${"?(h="?InterpolationInTemplate",S=!1,yield{type:"TemplateMiddle",value:d[0]}):(_.pop(),S=!0,yield{type:"TemplateTail",value:d[0],closed:d[1]==="`"});continue}break;case"InterpolationInJSX":if(b.length===R.nesting){_.pop(),p+=1,h="}",yield{type:"JSXPunctuator",value:"}"};continue}}S=b.pop(),M=S?"?ExpressionBraceEnd":"}";break;case"]":S=!0;break;case"++":case"--":M=S?"?PostfixIncDec":"?UnaryIncDec";break;case"<":if(P&&(T.test(h)||a.test(h))){_.push({tag:"JSXTag"}),p+=1,h="<",yield{type:"JSXPunctuator",value:L};continue}S=!1;break;default:S=!1}p=V,h=M,yield{type:"Punctuator",value:L};continue}if(e.lastIndex=p,d=e.exec(E)){switch(p=e.lastIndex,M=d[0],d[0]){case"for":case"if":case"while":case"with":h!=="."&&h!=="?."&&(M="?NonExpressionParenKeyword")}h=M,S=!a.test(d[0]),yield{type:d[1]==="#"?"PrivateIdentifier":"IdentifierName",value:d[0]};continue}if(v.lastIndex=p,d=v.exec(E)){p=v.lastIndex,h=d[0],S=!0,yield{type:"StringLiteral",value:d[0],closed:d[2]!==void 0};continue}if(y.lastIndex=p,d=y.exec(E)){p=y.lastIndex,h=d[0],S=!0,yield{type:"NumericLiteral",value:d[0]};continue}if(l.lastIndex=p,d=l.exec(E)){p=l.lastIndex,h=d[0],d[1]==="${"?(h="?InterpolationInTemplate",_.push({tag:"InterpolationInTemplate",nesting:b.length}),S=!1,yield{type:"TemplateHead",value:d[0]}):(S=!0,yield{type:"NoSubstitutionTemplate",value:d[0],closed:d[1]==="`"});continue}break;case"JSXTag":case"JSXTagEnd":if(t.lastIndex=p,d=t.exec(E)){switch(p=t.lastIndex,M=d[0],d[0]){case"<":_.push({tag:"JSXTag"});break;case">":_.pop(),h==="/"||R.tag==="JSXTagEnd"?(M="?JSX",S=!0):_.push({tag:"JSXChildren"});break;case"{":_.push({tag:"InterpolationInJSX",nesting:b.length}),M="?InterpolationInJSX",S=!1;break;case"/":h==="<"&&(_.pop(),_[_.length-1].tag==="JSXChildren"&&_.pop(),_.push({tag:"JSXTagEnd"}))}h=M,yield{type:"JSXPunctuator",value:d[0]};continue}if(r.lastIndex=p,d=r.exec(E)){p=r.lastIndex,h=d[0],yield{type:"JSXIdentifier",value:d[0]};continue}if(n.lastIndex=p,d=n.exec(E)){p=n.lastIndex,h=d[0],yield{type:"JSXString",value:d[0],closed:d[2]!==void 0};continue}break;case"JSXChildren":if(i.lastIndex=p,d=i.exec(E)){p=i.lastIndex,h=d[0],yield{type:"JSXText",value:d[0]};continue}switch(E[p]){case"<":_.push({tag:"JSXTag"}),p++,h="<",yield{type:"JSXPunctuator",value:"<"};continue;case"{":_.push({tag:"InterpolationInJSX",nesting:b.length}),p++,h="?InterpolationInJSX",S=!1,yield{type:"JSXPunctuator",value:"{"};continue}}if($.lastIndex=p,d=$.exec(E)){p=$.lastIndex,yield{type:"WhiteSpace",value:d[0]};continue}if(s.lastIndex=p,d=s.exec(E)){p=s.lastIndex,S=!1,o.test(h)&&(h="?NoLineTerminatorHere"),yield{type:"LineTerminatorSequence",value:d[0]};continue}if(u.lastIndex=p,d=u.exec(E)){p=u.lastIndex,f.test(d[0])&&(S=!1,o.test(h)&&(h="?NoLineTerminatorHere")),yield{type:"MultiLineComment",value:d[0],closed:d[1]!==void 0};continue}if(I.lastIndex=p,d=I.exec(E)){p=I.lastIndex,S=!1,yield{type:"SingleLineComment",value:d[0]};continue}A=String.fromCodePoint(E.codePointAt(p)),p+=A.length,h=A,S=!1,yield{type:R.tag.startsWith("JSX")?"JSXInvalid":"Invalid",value:A}}},U}He();var me={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"]};new Set(me.keyword);new Set(me.strict);var ne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ze=new Uint8Array(64),Ge=new Uint8Array(128);for(let e=0;e<ne.length;e++){let r=ne.charCodeAt(e);Ze[e]=r,Ge[r]=e}var ie;(function(e){e[e.Empty=1]="Empty",e[e.Hash=2]="Hash",e[e.Query=3]="Query",e[e.RelativePath=4]="RelativePath",e[e.AbsolutePath=5]="AbsolutePath",e[e.SchemeRelative=6]="SchemeRelative",e[e.Absolute=7]="Absolute"})(ie||(ie={}));var Qe=/^[A-Za-z]:\//;function et(e=""){return e&&e.replace(/\\/g,"/").replace(Qe,r=>r.toUpperCase())}var tt=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;function rt(){return typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replace(/\\/g,"/"):"/"}var nt=function(...e){e=e.map(n=>et(n));let r="",t=!1;for(let n=e.length-1;n>=-1&&!t;n--){let i=n>=0?e[n]:rt();!i||i.length===0||(r=`${i}/${r}`,t=oe(i))}return r=it(r,!t),t&&!oe(r)?`/${r}`:r.length>0?r:"."};function it(e,r){let t="",n=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o==="/")break;o="/"}if(o==="/"){if(!(i===s-1||a===1))if(a===2){if(t.length<2||n!==2||t[t.length-1]!=="."||t[t.length-2]!=="."){if(t.length>2){let u=t.lastIndexOf("/");u===-1?(t="",n=0):(t=t.slice(0,u),n=t.length-1-t.lastIndexOf("/")),i=s,a=0;continue}else if(t.length>0){t="",n=0,i=s,a=0;continue}}r&&(t+=t.length>0?"/..":"..",n=2)}else t.length>0?t+=`/${e.slice(i+1,s)}`:t=e.slice(i+1,s),n=s-i-1;i=s,a=0}else o==="."&&a!==-1?++a:a=-1}return t}var oe=function(e){return tt.test(e)},ge=/^\s*at .*(?:\S:\d+|\(native\))/m,ot=/^(?:eval@)?(?:\[native code\])?$/;function ve(e){if(!e.includes(":"))return[e];let r=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/^\(|\)$/g,""));if(!r)return[e];let t=r[1];if(t.startsWith("async ")&&(t=t.slice(6)),t.startsWith("http:")||t.startsWith("https:")){let n=new URL(t);n.searchParams.delete("import"),n.searchParams.delete("browserv"),t=n.pathname+n.hash+n.search}if(t.startsWith("/@fs/")){let n=/^\/@fs\/[a-zA-Z]:\//.test(t);t=t.slice(n?5:4)}return[t,r[2]||void 0,r[3]||void 0]}function st(e){let r=e.trim();if(ot.test(r)||(r.includes(" > eval")&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),!r.includes("@")&&!r.includes(":")))return null;let t=/((.*".+"[^@]*)?[^@]*)(@)/,n=r.match(t),i=n&&n[1]?n[1]:void 0,[a,o,s]=ve(r.replace(t,""));return!a||!o||!s?null:{file:a,method:i||"",line:Number.parseInt(o),column:Number.parseInt(s)}}function at(e){let r=e.trim();return ge.test(r)?lt(r):st(r)}function lt(e){let r=e.trim();if(!ge.test(r))return null;r.includes("(eval ")&&(r=r.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));let t=r.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),n=t.match(/ (\(.+\)$)/);t=n?t.replace(n[0],""):t;let[i,a,o]=ve(n?n[1]:t),s=n&&t||"",u=i&&["eval","<anonymous>"].includes(i)?void 0:i;return!u||!a||!o?null:(s.startsWith("async ")&&(s=s.slice(6)),u.startsWith("file://")&&(u=u.slice(7)),u=u.startsWith("node:")||u.startsWith("internal:")?u:nt(u),s&&(s=s.replace(/__vite_ssr_import_\d+__\./g,"")),{method:s,file:u,line:Number.parseInt(a),column:Number.parseInt(o)})}function ct(e){let r=e==null?void 0:e.globalThisKey;function t(){return typeof globalThis[r]<"u"?globalThis[r]:new Proxy({},{get(n,i){throw new Error(`Vitest mocker was not initialized in this environment. vi.${String(i)}() is forbidden.`)}})}return{hoisted(n){if(typeof n!="function")throw new TypeError(`vi.hoisted() expects a function, but received a ${typeof n}`);return n()},mock(n,i){if(typeof n!="string")throw new TypeError(`vi.mock() expects a string path, but received a ${typeof n}`);let a=O("mock");t().queueMock(n,a,typeof i=="function"?()=>i(()=>t().importActual(n,a)):i)},unmock(n){if(typeof n!="string")throw new TypeError(`vi.unmock() expects a string path, but received a ${typeof n}`);t().queueUnmock(n,O("unmock"))},doMock(n,i){if(typeof n!="string")throw new TypeError(`vi.doMock() expects a string path, but received a ${typeof n}`);let a=O("doMock");t().queueMock(n,a,typeof i=="function"?()=>i(()=>t().importActual(n,a)):i)},doUnmock(n){if(typeof n!="string")throw new TypeError(`vi.doUnmock() expects a string path, but received a ${typeof n}`);t().queueUnmock(n,O("doUnmock"))},async importActual(n){return t().importActual(n,O("importActual"))},async importMock(n){return t().importMock(n,O("importMock"))}}}function O(e){let r=Ke({stackTraceLimit:5}).split(`
2
+ `),t=r.findIndex(i=>i.includes(` at Object.${e}`)||i.includes(`${e}@`)),n=at(r[t+1]);return(n==null?void 0:n.file)||""}var{now:se}=Date,ut=class{constructor(e,r,t,n){x(this,"registry",new ae);x(this,"queue",new Set);x(this,"mockedIds",new Set);this.interceptor=e,this.rpc=r,this.spyOn=t,this.config=n}async prepare(){this.queue.size&&await Promise.all([...this.queue.values()])}async resolveFactoryModule(e){let r=this.registry.get(e);if(!r||r.type!=="manual")throw new Error(`Mock ${e} wasn't registered. This is probably a Vitest error. Please, open a new issue with reproduction.`);return await r.resolve()}getFactoryModule(e){let r=this.registry.get(e);if(!r||r.type!=="manual")throw new Error(`Mock ${e} wasn't registered. This is probably a Vitest error. Please, open a new issue with reproduction.`);if(!r.cache)throw new Error(`Mock ${e} wasn't resolved. This is probably a Vitest error. Please, open a new issue with reproduction.`);return r.cache}async invalidate(){let e=Array.from(this.mockedIds);e.length&&(await this.rpc.invalidate(e),await this.interceptor.invalidate(),this.registry.clear())}async importActual(e,r){let t=await this.rpc.resolveId(e,r);if(t==null)throw new Error(`[vitest] Cannot resolve "${e}" imported from "${r}"`);let n=Ce(t.id),i=new URL(t.url,location.href),a=`_vitest_original&ext${n}`,o=`${i.pathname}${i.search?`${i.search}&${a}`:`?${a}`}${i.hash}`;return this.wrapDynamicImport(()=>import(o)).then(s=>{if(!t.optimized||typeof s.default>"u")return s;let u=s.default;return u!=null&&u.__esModule?u:{...typeof u=="object"&&!Array.isArray(u)||typeof u=="function"?u:{},default:u}})}async importMock(e,r){await this.prepare();let{resolvedId:t,resolvedUrl:n,redirectUrl:i}=await this.rpc.resolveMock(e,r,{mock:"auto"}),a=this.resolveMockPath(J(n)),o=this.registry.get(a);if(!o)if(i){let s=new URL(this.resolveMockPath(J(i)),location.href).toString();o=new F(e,t,a,s)}else o=new X(e,t,a);if(o.type==="manual")return await o.resolve();if(o.type==="automock"||o.type==="autospy"){let s=new URL(`/@id/${t}`,location.href),u=s.search?`${s.search}&t=${se()}`:`?t=${se()}`,f=await Se(()=>import(`${s.pathname}${u}&mock=${o.type}${s.hash}`),[],import.meta.url);return this.mockObject(f,o.type)}return import(o.redirect)}mockObject(e,r="automock"){return Ee({globalConstructors:{Object,Function,Array,Map,RegExp},spyOn:this.spyOn,type:r},e)}queueMock(e,r,t){let n=this.rpc.resolveMock(e,r,{mock:typeof t=="function"?"factory":t!=null&&t.spy?"spy":"auto"}).then(async({redirectUrl:i,resolvedId:a,resolvedUrl:o,needsInterop:s,mockType:u})=>{let f=this.resolveMockPath(J(o));this.mockedIds.add(a);let y=typeof t=="function"?async()=>{let I=await t();return s?{default:I}:I}:void 0,g=typeof i=="string"?new URL(this.resolveMockPath(J(i)),location.href).toString():null,m;u==="manual"?m=this.registry.register("manual",e,a,f,y):u==="autospy"?m=this.registry.register("autospy",e,a,f):u==="redirect"?m=this.registry.register("redirect",e,a,f,g):m=this.registry.register("automock",e,a,f),await this.interceptor.register(m)}).finally(()=>{this.queue.delete(n)});this.queue.add(n)}queueUnmock(e,r){let t=this.rpc.resolveId(e,r).then(async n=>{if(!n)return;let i=this.resolveMockPath(J(n.url));this.mockedIds.add(n.id),this.registry.delete(i),await this.interceptor.delete(i)}).finally(()=>{this.queue.delete(t)});this.queue.add(t)}wrapDynamicImport(e){return typeof e=="function"?new Promise((r,t)=>{this.prepare().finally(()=>{e().then(r,t)})}):e}resolveMockPath(e){let r=this.config,t=Ae("/@fs/",r.root);return e.startsWith(r.root)?e.slice(r.root.length):e.startsWith(t)?e.slice(t.length):e}},dt=/(\?|&)v=\w{8}/;function J(e){return e.replace(dt,"")}var ft=class{constructor(){x(this,"mocks",new ae)}async register(e){this.mocks.add(e)}async delete(e){this.mocks.delete(e)}async invalidate(){this.mocks.clear()}},z=e=>{switch(e){case"resolveId":return Promise.resolve({id:"",url:"",optimized:!1});case"resolveMock":return Promise.resolve({mockType:"dummy",resolvedId:"",resolvedUrl:"",redirectUrl:"",needsInterop:!1});case"invalidate":return Promise.resolve()}},pt=class extends ut{queueMock(){}};function ht(e){let r=new pt(e("__vitest_mocker__"),{resolveId(t,n){return z("resolveId")},resolveMock(t,n,i){return z("resolveMock")},async invalidate(t){return z("invalidate")}},(...t)=>globalThis.__STORYBOOK_MODULE_TEST__.spyOn(...t),{root:""});return globalThis.__vitest_mocker__=r,ct({globalThisKey:"__vitest_mocker__"})}globalThis.__STORYBOOK_MOCKER__=ht(()=>new ft);
@@ -0,0 +1,20 @@
1
+ import { PzTextProps, PzTextTag } from './types';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ default?(_: {}): any;
6
+ };
7
+ refs: {};
8
+ rootEl: any;
9
+ };
10
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
+ declare const __VLS_component: import('vue').DefineComponent<PzTextProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<PzTextProps> & Readonly<{}>, {
12
+ as: PzTextTag;
13
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
15
+ export default _default;
16
+ type __VLS_WithTemplateSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
@@ -0,0 +1,2 @@
1
+ export { default as PzText } from './PzText.vue';
2
+ export type { PzTextProps, PzTextVariant, PzTextTag } from './types';
@@ -0,0 +1,6 @@
1
+ export type PzTextVariant = "h1-bold" | "h1-regular" | "h2-bold" | "h3-bold" | "h3-regular" | "h4-regular" | "h4-semibold" | "h4-bold" | "subtitle" | "body-regular" | "body-semibold" | "body-bold" | "capitalized" | "hint" | "line-through" | "small-regular" | "small-semibold" | "small-bold" | "link" | "document";
2
+ export type PzTextTag = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div" | "a" | "label";
3
+ export interface PzTextProps {
4
+ variant: PzTextVariant;
5
+ as?: PzTextTag;
6
+ }
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { PzButton, type ButtonProps, type ButtonVariant } from './components/Button';
1
+ export { PzText, type PzTextProps, type PzTextVariant, type PzTextTag } from './components/PzText';
package/dist/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@prozorro/prozorro-ui",
3
3
  "private": false,
4
- "version": "0.0.2",
4
+ "version": "0.0.5",
5
5
  "description": "Official Prozorro UI Library",
6
6
  "author": "Dmytro Rybachek",
7
7
  "license": "MIT",
8
8
  "main": "dist/prozorro-ui.cjs",
9
9
  "module": "dist/prozorro-ui.js",
10
10
  "types": "dist/index.d.ts",
11
+ "style": "dist/style.css",
11
12
  "type": "module",
12
13
  "exports": {
13
14
  ".": {
@@ -15,12 +16,15 @@
15
16
  "import": "./dist/prozorro-ui.js",
16
17
  "require": "./dist/prozorro-ui.cjs"
17
18
  },
19
+ "./style.css": "./dist/style.css",
20
+ "./main.scss": "./src/styles/main.scss",
18
21
  "./dist/": {
19
22
  "import": "./dist"
20
23
  }
21
24
  },
22
25
  "files": [
23
- "dist"
26
+ "dist",
27
+ "src/styles"
24
28
  ],
25
29
  "scripts": {
26
30
  "dev": "vite",
@@ -51,10 +55,8 @@
51
55
  },
52
56
  "devDependencies": {
53
57
  "@eslint/js": "^9.39.4",
54
- "@storybook/addon-essentials": "^8.6.12",
55
- "@storybook/addon-interactions": "^8.6.12",
56
- "@storybook/test": "^8.6.12",
57
- "@storybook/vue3-vite": "^8.6.12",
58
+ "@storybook/addon-docs": "^10.3.4",
59
+ "@storybook/vue3-vite": "^10.3.4",
58
60
  "@types/node": "^24.5.2",
59
61
  "@vitejs/plugin-vue": "^5.2.4",
60
62
  "copyfiles": "^2.4.1",
@@ -71,7 +73,7 @@
71
73
  "prettier": "^3.8.1",
72
74
  "rimraf": "^6.1.3",
73
75
  "sass": "^1.92.1",
74
- "storybook": "^8.6.12",
76
+ "storybook": "^10.3.4",
75
77
  "stylelint": "^17.6.0",
76
78
  "stylelint-config-html": "^1.1.0",
77
79
  "stylelint-config-recommended-scss": "^17.0.0",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),c=["disabled"],s={class:"pz-button__label"},i=e.defineComponent({__name:"Button",props:{label:{},variant:{default:"primary"},disabled:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:o}){const n=o;function l(a){n("click",a)}return(a,u)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["pz-button",[`pz-button--${t.variant}`,{"pz-button--disabled":t.disabled}]]),type:"button",disabled:t.disabled,onClick:l},[e.createElementVNode("span",s,e.toDisplayString(t.label),1)],10,c))}}),d=(t,o)=>{const n=t.__vccOpts||t;for(const[l,a]of o)n[l]=a;return n},r=d(i,[["__scopeId","data-v-eadd2ab6"]]);exports.PzButton=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),n=e.defineComponent({name:"PzText",__name:"PzText",props:{variant:{},as:{default:void 0}},setup(t){const o={"h1-bold":"h1","h1-regular":"h1","h2-bold":"h2","h3-bold":"h3","h3-regular":"h3","h4-regular":"h4","h4-semibold":"h4","h4-bold":"h4",subtitle:"p","body-regular":"p","body-semibold":"p","body-bold":"p",capitalized:"span",hint:"span","line-through":"span","small-regular":"span","small-semibold":"span","small-bold":"span",link:"a",document:"p"},a=t,l=e.computed(()=>a.as??o[a.variant]??"span");return(s,p)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.value),{class:e.normalizeClass(["pz-text",`pz-text--${t.variant}`])},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default",{},void 0,!0)]),_:3},8,["class"]))}}),r=(t,o)=>{const a=t.__vccOpts||t;for(const[l,s]of o)a[l]=s;return a},d=r(n,[["__scopeId","data-v-bd3b2150"]]);exports.PzText=d;
@@ -1,32 +1,49 @@
1
- import { defineComponent as l, openBlock as s, createElementBlock as c, normalizeClass as i, createElementVNode as d, toDisplayString as r } from "vue";
2
- const b = ["disabled"], u = { class: "pz-button__label" }, p = /* @__PURE__ */ l({
3
- __name: "Button",
1
+ import { defineComponent as s, computed as n, openBlock as r, createBlock as p, resolveDynamicComponent as d, normalizeClass as c, withCtx as h, renderSlot as i } from "vue";
2
+ const u = /* @__PURE__ */ s({
3
+ name: "PzText",
4
+ __name: "PzText",
4
5
  props: {
5
- label: {},
6
- variant: { default: "primary" },
7
- disabled: { type: Boolean, default: !1 }
6
+ variant: {},
7
+ as: { default: void 0 }
8
8
  },
9
- emits: ["click"],
10
- setup(t, { emit: a }) {
11
- const e = a;
12
- function o(n) {
13
- e("click", n);
14
- }
15
- return (n, _) => (s(), c("button", {
16
- class: i(["pz-button", [`pz-button--${t.variant}`, { "pz-button--disabled": t.disabled }]]),
17
- type: "button",
18
- disabled: t.disabled,
19
- onClick: o
20
- }, [
21
- d("span", u, r(t.label), 1)
22
- ], 10, b));
9
+ setup(t) {
10
+ const e = {
11
+ "h1-bold": "h1",
12
+ "h1-regular": "h1",
13
+ "h2-bold": "h2",
14
+ "h3-bold": "h3",
15
+ "h3-regular": "h3",
16
+ "h4-regular": "h4",
17
+ "h4-semibold": "h4",
18
+ "h4-bold": "h4",
19
+ subtitle: "p",
20
+ "body-regular": "p",
21
+ "body-semibold": "p",
22
+ "body-bold": "p",
23
+ capitalized: "span",
24
+ hint: "span",
25
+ "line-through": "span",
26
+ "small-regular": "span",
27
+ "small-semibold": "span",
28
+ "small-bold": "span",
29
+ link: "a",
30
+ document: "p"
31
+ }, a = t, o = n(() => a.as ?? e[a.variant] ?? "span");
32
+ return (l, b) => (r(), p(d(o.value), {
33
+ class: c(["pz-text", `pz-text--${t.variant}`])
34
+ }, {
35
+ default: h(() => [
36
+ i(l.$slots, "default", {}, void 0, !0)
37
+ ]),
38
+ _: 3
39
+ }, 8, ["class"]));
23
40
  }
24
- }), m = (t, a) => {
25
- const e = t.__vccOpts || t;
26
- for (const [o, n] of a)
27
- e[o] = n;
28
- return e;
29
- }, k = /* @__PURE__ */ m(p, [["__scopeId", "data-v-eadd2ab6"]]);
41
+ }), m = (t, e) => {
42
+ const a = t.__vccOpts || t;
43
+ for (const [o, l] of e)
44
+ a[o] = l;
45
+ return a;
46
+ }, _ = /* @__PURE__ */ m(u, [["__scopeId", "data-v-bd3b2150"]]);
30
47
  export {
31
- k as PzButton
48
+ _ as PzText
32
49
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- :root{--white: #fff;--black: #242638;--black-tansparent: rgb(36 38 56 / 70%);--gray: #f5f5f5;--gray-100: #d6dade;--gray-200: #939393;--gray-300: #f0f4f5;--gray-400: #f4f8f9;--gray-500: #454545;--gray-600: #f8f8f8;--gray-700: rgb(214 218 222 / 50%);--gray-800: #c2d8de;--gray-900: #6d6d6d;--gray-950: #c0c0c0;--blue: #014da8;--blue-100: #2070d1;--blue-200: #c2d8de;--blue-300: #006887;--blue-400: #6dc8eb;--green: #599a4f;--green-100: #bfffb2;--green-200: #e2f7dc;--green-300: #40e81e;--green-400: #89db33;--red: #d70c17;--red-100: #e55166;--red-200: #e85d57;--red-300: #ff3800;--red-400: #f00;--orange: #ef9400;--orange-100: #e56101;--orange-200: #ff831a;--size-xxl: 44px;--size-xxls: 40px;--size-xxlss: 32px;--size-xl: 24px;--size-xls: 20px;--size-l: 18px;--size-m: 16px;--size-s: 14px;--size-xs: 12px;--line-height-s: 20px;--line-height-m: 24px;--line-height-l: 28px;--tooltip-width: 415px;--tender-list-title-width: 387px;--tender-list-title-box-width: 340px;--row-horzontal-padding: 10px}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */*{box-sizing:border-box}html{line-height:1.15;text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v85/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format("woff2")}@font-face{font-family:Material Icons Outlined;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsoutlined/v56/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUcel5euIg.woff2) format("woff2")}.material-icons{font-family:Material Icons,sans-serif;font-weight:400;font-style:normal;font-size:var(--size-m);line-height:inherit;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;overflow-wrap:normal;direction:ltr;font-feature-settings:"liga";text-decoration:none!important;-webkit-font-smoothing:antialiased}.material-icons.outlined{font-family:Material Icons Outlined,sans-serif}.material-icons:hover{text-decoration:none!important}body{box-sizing:border-box;padding:0;margin:0;color:var(--black);font-size:var(--size-m)}html{scroll-behavior:smooth}*{font-family:Open Sans,Arial,sans-serif;box-sizing:inherit}*:before,*:after{box-sizing:inherit}img{max-width:100%;max-height:100%}.pz-button[data-v-eadd2ab6]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.pz-button[data-v-eadd2ab6]{display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem;padding:.75em 1.25em;border:1px solid transparent;border-radius:3px;font-size:var(--size-m);font-weight:600;line-height:1.2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease,opacity .2s ease,transform .2s ease}.pz-button[data-v-eadd2ab6]:hover:not(:disabled){transform:translateY(-1px)}.pz-button[data-v-eadd2ab6]:disabled{cursor:not-allowed}.pz-button__label[data-v-eadd2ab6]{display:inline-flex;align-items:center}.pz-button--primary[data-v-eadd2ab6]{background-color:var(--blue-100);color:var(--blue)}.pz-button--primary[data-v-eadd2ab6]:hover:not(:disabled){background-color:var(--blue-200)}.pz-button--disabled[data-v-eadd2ab6]{opacity:.65}
1
+ :root{--white: #fff;--black: #242638;--black-tansparent: rgb(36 38 56 / 70%);--gray: #f5f5f5;--gray-100: #d6dade;--gray-200: #939393;--gray-300: #f0f4f5;--gray-400: #f4f8f9;--gray-500: #454545;--gray-600: #f8f8f8;--gray-700: rgb(214 218 222 / 50%);--gray-800: #c2d8de;--gray-900: #6d6d6d;--gray-950: #c0c0c0;--blue: #014da8;--blue-100: #2070d1;--blue-200: #c2d8de;--blue-300: #006887;--blue-400: #6dc8eb;--green: #599a4f;--green-100: #bfffb2;--green-200: #e2f7dc;--green-300: #40e81e;--green-400: #89db33;--red: #d70c17;--red-100: #e55166;--red-200: #e85d57;--red-300: #ff3800;--red-400: #f00;--orange: #ef9400;--orange-100: #e56101;--orange-200: #ff831a;--size-xxl: 44px;--size-xxls: 40px;--size-xxlss: 32px;--size-xl: 24px;--size-xls: 20px;--size-l: 18px;--size-m: 16px;--size-s: 14px;--size-xs: 12px;--line-height-s: 20px;--line-height-m: 24px;--line-height-l: 28px;--tooltip-width: 415px;--tender-list-title-width: 387px;--tender-list-title-box-width: 340px;--row-horzontal-padding: 10px}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */*{box-sizing:border-box}html{line-height:1.15;text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v85/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format("woff2")}@font-face{font-family:Material Icons Outlined;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsoutlined/v56/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUcel5euIg.woff2) format("woff2")}.material-icons{font-family:Material Icons,sans-serif;font-weight:400;font-style:normal;font-size:var(--size-m);line-height:inherit;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;overflow-wrap:normal;direction:ltr;font-feature-settings:"liga";text-decoration:none!important;-webkit-font-smoothing:antialiased}.material-icons.outlined{font-family:Material Icons Outlined,sans-serif}.material-icons:hover{text-decoration:none!important}body{box-sizing:border-box;padding:0;margin:0;color:var(--black);font-size:var(--size-m)}html{scroll-behavior:smooth}*{font-family:Open Sans,Arial,sans-serif;box-sizing:inherit}*:before,*:after{box-sizing:inherit}img{max-width:100%;max-height:100%}.pz-text[data-v-bd3b2150]{margin:0;padding:0}.pz-text--h1-bold[data-v-bd3b2150]{font-size:var(--size-xxl);font-weight:700;line-height:1.5}@media (max-width: 575.98px){.pz-text--h1-bold[data-v-bd3b2150]{font-size:var(--size-xl);font-weight:700;line-height:1.5}}.pz-text--h1-regular[data-v-bd3b2150]{font-size:var(--size-xxl);font-weight:400;line-height:1.5}@media (max-width: 575.98px){.pz-text--h1-regular[data-v-bd3b2150]{font-size:var(--size-xl);font-weight:400;line-height:1.5}}.pz-text--h2-bold[data-v-bd3b2150]{font-size:var(--size-xxlss);font-weight:700;line-height:1.5}@media (max-width: 575.98px){.pz-text--h2-bold[data-v-bd3b2150]{font-size:var(--size-xls);font-weight:700;line-height:1.5}}.pz-text--h3-bold[data-v-bd3b2150]{font-size:var(--size-xl);font-weight:700;line-height:1.5}@media (max-width: 575.98px){.pz-text--h3-bold[data-v-bd3b2150]{font-size:var(--size-l);font-weight:700;line-height:1.5}}.pz-text--h3-regular[data-v-bd3b2150]{font-size:var(--size-xl);font-weight:400;line-height:1.5}@media (max-width: 575.98px){.pz-text--h3-regular[data-v-bd3b2150]{font-size:var(--size-l);font-weight:400;line-height:1.5}}.pz-text--h4-regular[data-v-bd3b2150]{font-size:var(--size-l);font-weight:400;line-height:1.5}@media (max-width: 575.98px){.pz-text--h4-regular[data-v-bd3b2150]{font-size:var(--size-m);font-weight:400;line-height:1.5}}.pz-text--h4-semibold[data-v-bd3b2150]{font-size:var(--size-l);font-weight:600;line-height:1.5}@media (max-width: 575.98px){.pz-text--h4-semibold[data-v-bd3b2150]{font-size:var(--size-m);font-weight:600;line-height:1.5}}.pz-text--h4-bold[data-v-bd3b2150]{font-size:var(--size-l);font-weight:700;line-height:1.5}@media (max-width: 575.98px){.pz-text--h4-bold[data-v-bd3b2150]{font-size:var(--size-m);font-weight:700;line-height:1.5}}.pz-text--subtitle[data-v-bd3b2150]{font-size:var(--size-m);font-weight:600;line-height:1.5}.pz-text--body-regular[data-v-bd3b2150]{font-size:var(--size-s);font-weight:400;line-height:1.5}.pz-text--body-semibold[data-v-bd3b2150]{font-size:var(--size-s);font-weight:600;line-height:1.5}.pz-text--body-bold[data-v-bd3b2150]{font-size:var(--size-s);font-weight:700;line-height:1.5}.pz-text--capitalized[data-v-bd3b2150]{font-size:var(--size-s);font-weight:400;line-height:1.5;text-transform:uppercase;letter-spacing:.05em}.pz-text--hint[data-v-bd3b2150]{font-size:var(--size-s);font-weight:400;line-height:1.5;color:var(--gray-900)}.pz-text--line-through[data-v-bd3b2150]{font-size:var(--size-s);font-weight:400;line-height:1.5;text-decoration:line-through}.pz-text--small-regular[data-v-bd3b2150]{font-size:var(--size-xs);font-weight:400;line-height:1.5}.pz-text--small-semibold[data-v-bd3b2150]{font-size:var(--size-xs);font-weight:600;line-height:1.5}.pz-text--small-bold[data-v-bd3b2150]{font-size:var(--size-xs);font-weight:700;line-height:1.5}.pz-text--link[data-v-bd3b2150]{font-size:var(--size-s);font-weight:400;line-height:1.5;color:var(--blue-100);text-decoration:underline;cursor:pointer}.pz-text--link[data-v-bd3b2150]:hover{color:var(--blue)}.pz-text--document[data-v-bd3b2150]{font-size:var(--size-s);font-weight:400;line-height:1.5}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@prozorro/prozorro-ui",
3
3
  "private": false,
4
- "version": "0.0.2",
4
+ "version": "0.0.5",
5
5
  "description": "Official Prozorro UI Library",
6
6
  "author": "Dmytro Rybachek",
7
7
  "license": "MIT",
8
8
  "main": "dist/prozorro-ui.cjs",
9
9
  "module": "dist/prozorro-ui.js",
10
10
  "types": "dist/index.d.ts",
11
+ "style": "dist/style.css",
11
12
  "type": "module",
12
13
  "exports": {
13
14
  ".": {
@@ -15,12 +16,15 @@
15
16
  "import": "./dist/prozorro-ui.js",
16
17
  "require": "./dist/prozorro-ui.cjs"
17
18
  },
19
+ "./style.css": "./dist/style.css",
20
+ "./main.scss": "./src/styles/main.scss",
18
21
  "./dist/": {
19
22
  "import": "./dist"
20
23
  }
21
24
  },
22
25
  "files": [
23
- "dist"
26
+ "dist",
27
+ "src/styles"
24
28
  ],
25
29
  "scripts": {
26
30
  "dev": "vite",
@@ -51,10 +55,8 @@
51
55
  },
52
56
  "devDependencies": {
53
57
  "@eslint/js": "^9.39.4",
54
- "@storybook/addon-essentials": "^8.6.12",
55
- "@storybook/addon-interactions": "^8.6.12",
56
- "@storybook/test": "^8.6.12",
57
- "@storybook/vue3-vite": "^8.6.12",
58
+ "@storybook/addon-docs": "^10.3.4",
59
+ "@storybook/vue3-vite": "^10.3.4",
58
60
  "@types/node": "^24.5.2",
59
61
  "@vitejs/plugin-vue": "^5.2.4",
60
62
  "copyfiles": "^2.4.1",
@@ -71,7 +73,7 @@
71
73
  "prettier": "^3.8.1",
72
74
  "rimraf": "^6.1.3",
73
75
  "sass": "^1.92.1",
74
- "storybook": "^8.6.12",
76
+ "storybook": "^10.3.4",
75
77
  "stylelint": "^17.6.0",
76
78
  "stylelint-config-html": "^1.1.0",
77
79
  "stylelint-config-recommended-scss": "^17.0.0",
@@ -0,0 +1,26 @@
1
+ body {
2
+ box-sizing: border-box;
3
+ padding: 0;
4
+ margin: 0;
5
+ color: var(--black);
6
+ font-size: var(--size-m);
7
+ }
8
+
9
+ html {
10
+ scroll-behavior: smooth;
11
+ }
12
+
13
+ * {
14
+ font-family: "Open Sans", Arial, sans-serif;
15
+ box-sizing: inherit;
16
+
17
+ &::before,
18
+ &::after {
19
+ box-sizing: inherit;
20
+ }
21
+ }
22
+
23
+ img {
24
+ max-width: 100%;
25
+ max-height: 100%;
26
+ }
@@ -0,0 +1,50 @@
1
+ @use "sass:map";
2
+
3
+ $breakpoints: (
4
+ "xs": 0,
5
+ "sm": 576px,
6
+ "md": 768px,
7
+ "lg": 1024px,
8
+ "xl": 1200px,
9
+ "xxl": 1400px,
10
+ );
11
+
12
+ @mixin min-media-devices($key) {
13
+ $breakpoint: #{map.get($breakpoints, $key)};
14
+
15
+ @media (min-width: $breakpoint) {
16
+ @content;
17
+ }
18
+ }
19
+
20
+ // why 0.02px https://getbootstrap.com/docs/5.0/layout/breakpoints/
21
+ @mixin max-media-devices($key) {
22
+ $breakpoint: calc(#{map.get($breakpoints, $key)} - 0.02px);
23
+
24
+ @media (max-width: $breakpoint) {
25
+ @content;
26
+ }
27
+ }
28
+
29
+ @mixin min-and-max-media-devices($min-key, $max-key) {
30
+ $min-breakpoint: #{map.get($breakpoints, $min-key)};
31
+ $max-breakpoint: #{map.get($breakpoints, $max-key)};
32
+
33
+ @media (min-width: $min-breakpoint) and (max-width: $max-breakpoint) {
34
+ @content;
35
+ }
36
+ }
37
+
38
+ @mixin range-slider-thumb {
39
+ width: 10%;
40
+ height: 10px;
41
+ background: var(--blue-200);
42
+ cursor: pointer;
43
+ }
44
+
45
+ @mixin focus-ring($color) {
46
+ &:focus-visible {
47
+ outline: 2px solid $color;
48
+ outline-offset: 2px;
49
+ }
50
+ }
@@ -0,0 +1,202 @@
1
+ // Typography mixins based on Figma Design System "Prozorro"
2
+ // All styles use line-height: 1.5 (150%) as defined in the design system.
3
+ // Desktop sizes: 44 / 32 / 24 / 18 / 16 / 14 / 12 px
4
+ // Mobile sizes: 24 / 20 / 18 / 16 / 14 / 12 px (headings scale down)
5
+ // Usage: @include typography-h1-bold;
6
+
7
+ // ─── Desktop ──────────────────────────────────────────────────────────────────
8
+
9
+ @mixin typography-h1-bold {
10
+ font-size: var(--size-xxl); // 44px
11
+ font-weight: 700;
12
+ line-height: 1.5;
13
+ }
14
+
15
+ @mixin typography-h1-regular {
16
+ font-size: var(--size-xxl); // 44px
17
+ font-weight: 400;
18
+ line-height: 1.5;
19
+ }
20
+
21
+ @mixin typography-h2-bold {
22
+ font-size: var(--size-xxlss); // 32px
23
+ font-weight: 700;
24
+ line-height: 1.5;
25
+ }
26
+
27
+ @mixin typography-h3-bold {
28
+ font-size: var(--size-xl); // 24px
29
+ font-weight: 700;
30
+ line-height: 1.5;
31
+ }
32
+
33
+ @mixin typography-h3-regular {
34
+ font-size: var(--size-xl); // 24px
35
+ font-weight: 400;
36
+ line-height: 1.5;
37
+ }
38
+
39
+ @mixin typography-h4-regular {
40
+ font-size: var(--size-l); // 18px
41
+ font-weight: 400;
42
+ line-height: 1.5;
43
+ }
44
+
45
+ @mixin typography-h4-semibold {
46
+ font-size: var(--size-l); // 18px
47
+ font-weight: 600;
48
+ line-height: 1.5;
49
+ }
50
+
51
+ @mixin typography-h4-bold {
52
+ font-size: var(--size-l); // 18px
53
+ font-weight: 700;
54
+ line-height: 1.5;
55
+ }
56
+
57
+ @mixin typography-subtitle {
58
+ font-size: var(--size-m); // 16px
59
+ font-weight: 600;
60
+ line-height: 1.5;
61
+ }
62
+
63
+ @mixin typography-body-regular {
64
+ font-size: var(--size-s); // 14px
65
+ font-weight: 400;
66
+ line-height: 1.5;
67
+ }
68
+
69
+ @mixin typography-body-semibold {
70
+ font-size: var(--size-s); // 14px
71
+ font-weight: 600;
72
+ line-height: 1.5;
73
+ }
74
+
75
+ @mixin typography-body-bold {
76
+ font-size: var(--size-s); // 14px
77
+ font-weight: 700;
78
+ line-height: 1.5;
79
+ }
80
+
81
+ @mixin typography-capitalized {
82
+ font-size: var(--size-s); // 14px
83
+ font-weight: 400;
84
+ line-height: 1.5;
85
+ text-transform: uppercase;
86
+ letter-spacing: 0.05em;
87
+ }
88
+
89
+ @mixin typography-hint {
90
+ font-size: var(--size-s); // 14px
91
+ font-weight: 400;
92
+ line-height: 1.5;
93
+ color: var(--gray-900);
94
+ }
95
+
96
+ @mixin typography-line-through {
97
+ font-size: var(--size-s); // 14px
98
+ font-weight: 400;
99
+ line-height: 1.5;
100
+ text-decoration: line-through;
101
+ }
102
+
103
+ @mixin typography-small-regular {
104
+ font-size: var(--size-xs); // 12px
105
+ font-weight: 400;
106
+ line-height: 1.5;
107
+ }
108
+
109
+ @mixin typography-small-semibold {
110
+ font-size: var(--size-xs); // 12px
111
+ font-weight: 600;
112
+ line-height: 1.5;
113
+ }
114
+
115
+ @mixin typography-small-bold {
116
+ font-size: var(--size-xs); // 12px
117
+ font-weight: 700;
118
+ line-height: 1.5;
119
+ }
120
+
121
+ @mixin typography-link {
122
+ font-size: var(--size-s); // 14px
123
+ font-weight: 400;
124
+ line-height: 1.5;
125
+ color: var(--blue-100);
126
+ text-decoration: underline;
127
+ cursor: pointer;
128
+
129
+ &:hover {
130
+ color: var(--blue);
131
+ }
132
+ }
133
+
134
+ @mixin typography-document {
135
+ font-size: var(--size-s); // 14px
136
+ font-weight: 400;
137
+ line-height: 1.5;
138
+ }
139
+
140
+ // ─── Mobile overrides (headings only) ─────────────────────────────────────────
141
+ // Apply these inside a responsive breakpoint mixin, e.g.:
142
+ // @include max-media-devices("sm") { @include typography-h1-bold-mobile; }
143
+
144
+ @mixin typography-h1-bold-mobile {
145
+ font-size: var(--size-xl); // 24px
146
+ font-weight: 700;
147
+ line-height: 1.5;
148
+ }
149
+
150
+ @mixin typography-h1-regular-mobile {
151
+ font-size: var(--size-xl); // 24px
152
+ font-weight: 400;
153
+ line-height: 1.5;
154
+ }
155
+
156
+ @mixin typography-h2-bold-mobile {
157
+ font-size: var(--size-xls); // 20px
158
+ font-weight: 700;
159
+ line-height: 1.5;
160
+ }
161
+
162
+ @mixin typography-h2-regular-mobile {
163
+ font-size: var(--size-xls); // 20px
164
+ font-weight: 400;
165
+ line-height: 1.5;
166
+ }
167
+
168
+ @mixin typography-h3-bold-mobile {
169
+ font-size: var(--size-l); // 18px
170
+ font-weight: 700;
171
+ line-height: 1.5;
172
+ }
173
+
174
+ @mixin typography-h3-semibold-mobile {
175
+ font-size: var(--size-l); // 18px
176
+ font-weight: 600;
177
+ line-height: 1.5;
178
+ }
179
+
180
+ @mixin typography-h3-regular-mobile {
181
+ font-size: var(--size-l); // 18px
182
+ font-weight: 400;
183
+ line-height: 1.5;
184
+ }
185
+
186
+ @mixin typography-h4-bold-mobile {
187
+ font-size: var(--size-m); // 16px
188
+ font-weight: 700;
189
+ line-height: 1.5;
190
+ }
191
+
192
+ @mixin typography-h4-semibold-mobile {
193
+ font-size: var(--size-m); // 16px
194
+ font-weight: 600;
195
+ line-height: 1.5;
196
+ }
197
+
198
+ @mixin typography-h4-regular-mobile {
199
+ font-size: var(--size-m); // 16px
200
+ font-weight: 400;
201
+ line-height: 1.5;
202
+ }