@prozorro/prozorro-ui 0.0.7-beta → 0.0.8

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 (152) hide show
  1. package/dist/app/assets/{Color-FRDS63T2-D7DceWd3.js → Color-FRDS63T2-C5bQ2Iuy.js} +1 -1
  2. package/dist/app/assets/{Colors.stories-oSXYJENR.js → Colors.stories-B6EPF0nC.js} +1 -1
  3. package/dist/app/assets/{DocsRenderer-LL677BLK-CSnojeph.js → DocsRenderer-LL677BLK-6m2x0Slf.js} +200 -200
  4. package/dist/app/assets/{Grid.stories-Bs3kySs1.js → Grid.stories-DCpTvq1h.js} +1 -1
  5. package/dist/app/assets/PzArrayClamp-K4ObvvOV.css +1 -0
  6. package/dist/app/assets/PzArrayClamp.stories-DYjTyM_w.js +148 -0
  7. package/dist/app/assets/PzBreadcrumb-Dcs3weae.css +1 -0
  8. package/dist/app/assets/PzBreadcrumb.stories-b4V3GARM.js +120 -0
  9. package/dist/app/assets/PzBtn-Brjbpw1b.js +1 -0
  10. package/dist/app/assets/PzBtn-CzokGN-c.css +1 -0
  11. package/dist/app/assets/PzBtn-L_RpjK-U.css +1 -0
  12. package/dist/app/assets/PzBtn.stories-Bu5qPhtp.js +84 -0
  13. package/dist/app/assets/PzDomHandler-CRMzxUFs.css +1 -0
  14. package/dist/app/assets/PzDomHandler.stories-DqW3Mfem.js +170 -0
  15. package/dist/app/assets/PzDropdown-BnwR1ooa.css +1 -0
  16. package/dist/app/assets/PzDropdown.stories-CPjzWBvH.js +59 -0
  17. package/dist/app/assets/{PzGrid.stories-DHYDe1eo.js → PzGrid.stories-C1Y3nz5O.js} +2 -2
  18. package/dist/app/assets/PzHint-BSVVXtVq.css +1 -0
  19. package/dist/app/assets/PzHint-BwKGDkUu.js +1 -0
  20. package/dist/app/assets/PzHint-kEBemRXE.css +1 -0
  21. package/dist/app/assets/PzHint.stories-B6l3Ocr8.js +75 -0
  22. package/dist/app/assets/PzIcon-Don8TXO3.js +1 -0
  23. package/dist/app/assets/PzIcon.stories-DE4e2be_.js +63 -0
  24. package/dist/app/assets/{PzImage.stories-3xf5vq8I.js → PzImage.stories-DoGwhzIO.js} +2 -2
  25. package/dist/app/assets/PzInfoHint-CtK7BZOs.css +1 -0
  26. package/dist/app/assets/PzInfoHint.stories-CWDV-k9d.js +38 -0
  27. package/dist/app/assets/PzLink-BkfNrG4H.js +1 -0
  28. package/dist/app/assets/PzLink-CLsit3uW.css +1 -0
  29. package/dist/app/assets/PzLink-pGUmpCAv.css +1 -0
  30. package/dist/app/assets/PzLink.stories-D1DLILnY.js +99 -0
  31. package/dist/app/assets/PzModal-X71wpoOT.css +1 -0
  32. package/dist/app/assets/PzModal.stories-GJIUTcxR.js +168 -0
  33. package/dist/app/assets/PzNav-DRAXqlz0.css +1 -0
  34. package/dist/app/assets/PzNav.stories-vqArvp6y.js +197 -0
  35. package/dist/app/assets/PzPagination-DJVeW9lu.css +1 -0
  36. package/dist/app/assets/PzPagination.stories-D-kZtPzf.js +83 -0
  37. package/dist/app/assets/PzRouterLink.stories-CRcNmODE.js +54 -0
  38. package/dist/app/assets/PzScrollTo-GAEPiQFO.css +1 -0
  39. package/dist/app/assets/PzScrollTo.stories-C0m8oG4O.js +81 -0
  40. package/dist/app/assets/PzStatus-DlvKjmG7.css +1 -0
  41. package/dist/app/assets/PzStatus.stories-u5QAVco_.js +95 -0
  42. package/dist/app/assets/PzTabs-Cko9ewqz.css +1 -0
  43. package/dist/app/assets/PzTabs.stories-CEoVVF4Z.js +594 -0
  44. package/dist/app/assets/PzTag-rwtmuhv6.css +1 -0
  45. package/dist/app/assets/PzTag.stories-B2WKURWu.js +70 -0
  46. package/dist/app/assets/{PzText-B1cefxtz.js → PzText-LfRr6NF7.js} +1 -1
  47. package/dist/app/assets/{PzText.stories-BFfwzgRO.js → PzText.stories-CJhqWJtS.js} +6 -6
  48. package/dist/app/assets/PzTextClamp-BnSHv0R0.css +1 -0
  49. package/dist/app/assets/PzTextClamp.stories-B-2pPs9u.js +149 -0
  50. package/dist/app/assets/PzValidatorXSS-B6WBrYex.css +1 -0
  51. package/dist/app/assets/PzValidatorXSS.stories-DqA_mla7.js +163 -0
  52. package/dist/app/assets/{Spacing.stories-DhCjLNK2.js → Spacing.stories-55zVSJ08.js} +1 -1
  53. package/dist/app/assets/{Typography.stories-CSj6NWZS.js → Typography.stories-DEgPTqUk.js} +1 -1
  54. package/dist/app/assets/{WithTooltip-65CFNBJE-CXtzAlgs.js → WithTooltip-65CFNBJE-D3ytr0gE.js} +1 -1
  55. package/dist/app/assets/floating-vue-ydzBnlRK.js +1 -0
  56. package/dist/app/assets/formatter-EIJCOSYU-Ca5EM9Pa.js +1 -0
  57. package/dist/app/assets/iframe-B97zFSkg.css +1 -0
  58. package/dist/app/assets/iframe-XnrfGA2g.js +1115 -0
  59. package/dist/app/assets/{syntaxhighlighter-OH4MV7E3-C5g7sJvt.js → syntaxhighlighter-OH4MV7E3-meijqKce.js} +1 -1
  60. package/dist/app/iframe.html +2 -2
  61. package/dist/app/index.json +1 -1
  62. package/dist/app/project.json +1 -1
  63. package/dist/components/PzArrayClamp/PzArrayClamp.vue.d.ts +36 -0
  64. package/dist/components/PzArrayClamp/index.d.ts +2 -0
  65. package/dist/components/PzArrayClamp/types.d.ts +8 -0
  66. package/dist/components/PzBreadcrumb/PzBreadcrumb.vue.d.ts +35 -0
  67. package/dist/components/PzBreadcrumb/constants.d.ts +4 -0
  68. package/dist/components/PzBreadcrumb/index.d.ts +2 -0
  69. package/dist/components/PzBreadcrumb/types.d.ts +8 -0
  70. package/dist/components/PzBtn/PzBtn.vue.d.ts +24 -0
  71. package/dist/components/PzBtn/configs.d.ts +3 -0
  72. package/dist/components/PzBtn/index.d.ts +2 -0
  73. package/dist/components/PzBtn/types.d.ts +7 -0
  74. package/dist/components/PzDropdown/PzDropdown.vue.d.ts +18 -0
  75. package/dist/components/PzDropdown/index.d.ts +2 -0
  76. package/dist/components/PzDropdown/types.d.ts +1 -0
  77. package/dist/components/PzGrid/PzGrid.vue.d.ts +1 -1
  78. package/dist/components/PzGrid/PzGridItem.vue.d.ts +1 -1
  79. package/dist/components/PzGrid/configs.d.ts +2 -2
  80. package/dist/components/PzHint/PzHint.vue.d.ts +24 -0
  81. package/dist/components/PzHint/index.d.ts +2 -0
  82. package/dist/components/PzHint/types.d.ts +8 -0
  83. package/dist/components/PzIcon/PzIcon.vue.d.ts +1 -1
  84. package/dist/components/PzImage/configs.d.ts +1 -1
  85. package/dist/components/PzInfoHint/PzInfoHint.vue.d.ts +7 -0
  86. package/dist/components/PzInfoHint/index.d.ts +2 -0
  87. package/dist/components/PzInfoHint/types.d.ts +12 -0
  88. package/dist/components/PzLink/PzLink.vue.d.ts +29 -0
  89. package/dist/components/PzLink/configs.d.ts +2 -0
  90. package/dist/components/PzLink/constants.d.ts +1 -0
  91. package/dist/components/PzLink/index.d.ts +2 -0
  92. package/dist/components/PzLink/types.d.ts +13 -0
  93. package/dist/components/PzModal/PzModal.vue.d.ts +36 -0
  94. package/dist/components/PzModal/configs.d.ts +1 -0
  95. package/dist/components/PzModal/constants.d.ts +10 -0
  96. package/dist/components/PzModal/index.d.ts +2 -0
  97. package/dist/components/PzModal/types.d.ts +11 -0
  98. package/dist/components/PzNav/PzNav.vue.d.ts +23 -0
  99. package/dist/components/PzNav/index.d.ts +2 -0
  100. package/dist/components/PzNav/types.d.ts +9 -0
  101. package/dist/components/PzPagination/PzPagination.vue.d.ts +9 -0
  102. package/dist/components/PzPagination/index.d.ts +2 -0
  103. package/dist/components/PzPagination/types.d.ts +6 -0
  104. package/dist/components/PzRouterLink/PzRouterLink.vue.d.ts +30 -0
  105. package/dist/components/PzRouterLink/index.d.ts +2 -0
  106. package/dist/components/PzRouterLink/types.d.ts +7 -0
  107. package/dist/components/PzStatus/PzStatus.vue.d.ts +21 -0
  108. package/dist/components/PzStatus/configs.d.ts +2 -0
  109. package/dist/components/PzStatus/constants.d.ts +2 -0
  110. package/dist/components/PzStatus/index.d.ts +2 -0
  111. package/dist/components/PzStatus/types.d.ts +6 -0
  112. package/dist/components/PzTabs/PzTab.vue.d.ts +22 -0
  113. package/dist/components/PzTabs/PzTabs.vue.d.ts +21 -0
  114. package/dist/components/PzTabs/configs.d.ts +1 -0
  115. package/dist/components/PzTabs/constants.d.ts +5 -0
  116. package/dist/components/PzTabs/index.d.ts +3 -0
  117. package/dist/components/PzTabs/types.d.ts +14 -0
  118. package/dist/components/PzTag/PzTag.vue.d.ts +23 -0
  119. package/dist/components/PzTag/configs.d.ts +2 -0
  120. package/dist/components/PzTag/index.d.ts +2 -0
  121. package/dist/components/PzTag/types.d.ts +6 -0
  122. package/dist/components/PzText/configs.d.ts +1 -1
  123. package/dist/components/PzTextClamp/PzTextClamp.vue.d.ts +36 -0
  124. package/dist/components/PzTextClamp/constants.d.ts +2 -0
  125. package/dist/components/PzTextClamp/index.d.ts +2 -0
  126. package/dist/components/PzTextClamp/types.d.ts +10 -0
  127. package/dist/floating-vue.d.ts +1 -0
  128. package/dist/index.d.ts +18 -0
  129. package/dist/package.json +8 -2
  130. package/dist/prozorro-ui.cjs +1 -1
  131. package/dist/prozorro-ui.js +3379 -75
  132. package/dist/style.css +1 -1
  133. package/dist/utils/PzDomHandler/PzDomHandler.d.ts +19 -0
  134. package/dist/utils/PzDomHandler/constants.d.ts +1 -0
  135. package/dist/utils/PzDomHandler/index.d.ts +2 -0
  136. package/dist/utils/PzDomHandler/types.d.ts +4 -0
  137. package/dist/utils/PzScrollTo/PzScrollTo.d.ts +9 -0
  138. package/dist/utils/PzScrollTo/configs.d.ts +1 -0
  139. package/dist/utils/PzScrollTo/constants.d.ts +3 -0
  140. package/dist/utils/PzScrollTo/index.d.ts +2 -0
  141. package/dist/utils/PzScrollTo/types.d.ts +8 -0
  142. package/dist/utils/PzValidatorXSS/PzValidatorXSS.d.ts +20 -0
  143. package/dist/utils/PzValidatorXSS/index.d.ts +2 -0
  144. package/dist/utils/PzValidatorXSS/types.d.ts +1 -0
  145. package/package.json +8 -2
  146. package/src/styles/abstract/_variables.scss +8 -2
  147. package/src/styles/main.scss +1 -0
  148. package/src/styles/vendors/_floating-vue.scss +59 -0
  149. package/dist/app/assets/PzIcon.stories-DnSfvny_.js +0 -63
  150. package/dist/app/assets/formatter-EIJCOSYU-BiTxXm4h.js +0 -1
  151. package/dist/app/assets/iframe-AHEBgGuT.js +0 -1107
  152. package/dist/app/assets/iframe-C7ls-B1-.css +0 -1
@@ -0,0 +1,70 @@
1
+ import{_ as u}from"./PzIcon-Don8TXO3.js";import{_ as z,P as v}from"./PzText-LfRr6NF7.js";import{d as y,j as b,w as x,f as h,G as T,o as r,e as l,r as n,h as p,y as P}from"./iframe-XnrfGA2g.js";import"./preload-helper-C1FmrZbK.js";const _=["grey","blue","green","red","grey-light"],w=["span","div","li"],S={key:0,class:"pz-tag-prefix"},$={class:"pz-tag-label"},k={key:1,class:"pz-tag-suffix"},o=y({name:"PzTag",__name:"PzTag",props:{variant:{default:"grey"},as:{default:"span"}},setup(e){const t=e;return(a,i)=>(r(),b(T(t.as),{class:h(["pz-tag",`pz-tag--${t.variant}`])},{default:x(()=>[a.$slots.prefix?(r(),l("span",S,[n(a.$slots,"prefix",{},void 0,!0)])):p("",!0),P("span",$,[n(a.$slots,"default",{},void 0,!0)]),a.$slots.suffix?(r(),l("span",k,[n(a.$slots,"suffix",{},void 0,!0)])):p("",!0)]),_:3},8,["class"]))}}),c=z(o,[["__scopeId","data-v-7a827d32"]]);o.__docgenInfo=Object.assign({displayName:o.name??o.__name},{name:"PzTag",exportName:"default",displayName:"PzTag",description:"",tags:{},props:[{name:"variant",required:!1,type:{name:"PzTagVariant"},defaultValue:{func:!1,value:'"grey"'}},{name:"as",required:!1,type:{name:"PzTagTag"},defaultValue:{func:!1,value:'"span"'}}],slots:[{name:"prefix"},{name:"default"},{name:"suffix"}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzTag/PzTag.vue"]});const I=[{variant:"grey",label:"Neutral"},{variant:"grey-light",label:"Neutral light"},{variant:"blue",label:"Information"},{variant:"green",label:"Verified"},{variant:"red",label:"Important"}],V=e=>{const t=[e.variant!=="grey"?`variant="${e.variant}"`:null,e.as!=="span"?`as="${e.as}"`:null].filter(f=>!!f).join(" "),a=e.showPrefix?`
2
+ <template #prefix>
3
+ <PzIcon name="sell" size="12" />
4
+ </template>`:"",i=e.showSuffix?`
5
+ <template #suffix>
6
+ <PzIcon name="close" size="12" />
7
+ </template>`:"";return`<template>
8
+ <PzTag ${t}>${a}
9
+ ${e.label}${i}
10
+ </PzTag>
11
+ </template>`},C={title:"Components/Display/PzTag",component:c,parameters:{prototype:{caption:"Tag component",note:"Figma node access was blocked in this environment, so the tag styling is inferred from the existing tag token set and implemented as a compact slot-based pill."},docs:{description:{component:"Use `PzTag` for compact semantic labels. Variants map directly to the shared tag tokens, and optional prefix or suffix content should be composed through slots."},source:{transform:(e,t)=>V(t.args??C.args)}}},args:{variant:"blue",as:"span",label:"Open data",showPrefix:!0,showSuffix:!1},argTypes:{variant:{control:"inline-radio",options:_,description:"Semantic tag color variant."},as:{control:"select",options:w,description:"HTML tag used for the wrapper."},label:{control:"text",description:"Slot content preview text.",table:{category:"Slots"}},showPrefix:{control:"boolean",description:"Shows a composed prefix icon slot in the preview.",table:{category:"Slots"}},showSuffix:{control:"boolean",description:"Shows a composed suffix icon slot in the preview.",table:{category:"Slots"}}},render:e=>({components:{pzTag:c,pzText:v,pzIcon:u},setup(){return{args:e,tagReferenceItems:I}},template:`
12
+ <div class="pz-tag-story">
13
+ <section class="pz-tag-story-board">
14
+ <div class="pz-tag-story-header">
15
+ <div>
16
+ <span class="pz-tag-story-eyebrow">Component API</span>
17
+ <pz-text variant="h4-bold">Compact token-backed labels</pz-text>
18
+ </div>
19
+ <span class="pz-tag-story-chip">{{ args.variant }}</span>
20
+ </div>
21
+
22
+ <div class="pz-tag-story-preview">
23
+ <pz-tag
24
+ :variant="args.variant"
25
+ :as="args.as"
26
+ >
27
+ <template v-if="args.showPrefix" #prefix>
28
+ <pz-icon
29
+ name="sell"
30
+ size="12"
31
+ label="Tag prefix icon"
32
+ />
33
+ </template>
34
+
35
+ {{ args.label }}
36
+
37
+ <template v-if="args.showSuffix" #suffix>
38
+ <pz-icon
39
+ name="close"
40
+ size="12"
41
+ label="Tag suffix icon"
42
+ />
43
+ </template>
44
+ </pz-tag>
45
+ </div>
46
+ </section>
47
+
48
+ <section class="pz-tag-story-gallery">
49
+ <div class="pz-tag-story-header">
50
+ <div>
51
+ <span class="pz-tag-story-eyebrow">Variants</span>
52
+ <pz-text variant="h4-bold">Semantic labels stay easy to restyle</pz-text>
53
+ </div>
54
+ </div>
55
+
56
+ <div class="pz-tag-story-grid">
57
+ <article
58
+ v-for="item in tagReferenceItems"
59
+ :key="item.variant"
60
+ class="pz-tag-story-card"
61
+ >
62
+ <div class="pz-tag-story-row">
63
+ <pz-tag :variant="item.variant">{{ item.label }}</pz-tag>
64
+ </div>
65
+ <p class="pz-tag-story-code">.pz-tag { --pz-tag-background; --pz-tag-color; --pz-tag-radius; }</p>
66
+ </article>
67
+ </div>
68
+ </section>
69
+ </div>
70
+ `})},s={};var d,g,m;s.parameters={...s.parameters,docs:{...(d=s.parameters)==null?void 0:d.docs,source:{originalSource:"{}",...(m=(g=s.parameters)==null?void 0:g.docs)==null?void 0:m.source}}};const q=["Playground"];export{s as Playground,q as __namedExportsOrder,C as default};
@@ -1 +1 @@
1
- import{d as l,o as r,e as d,w as p,r as i,n as c,f as u,g as m}from"./iframe-AHEBgGuT.js";const t=l({name:"PzText",__name:"PzText",props:{variant:{},as:{default:void 0}},setup(e){const s={"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=e,n=m(()=>a.as??s[a.variant]??"span");return(o,b)=>(r(),d(u(n.value),{class:c(["pz-text",`pz-text--${e.variant}`])},{default:p(()=>[i(o.$slots,"default",{},void 0,!0)]),_:3},8,["class"]))}}),h=(e,s)=>{const a=e.__vccOpts||e;for(const[n,o]of s)a[n]=o;return a},x=h(t,[["__scopeId","data-v-bd3b2150"]]);t.__docgenInfo=Object.assign({displayName:t.name??t.__name},{name:"PzText",exportName:"default",displayName:"PzText",description:"",tags:{},props:[{name:"variant",required:!0,type:{name:"PzTextVariant"}},{name:"as",required:!1,type:{name:"PzTextTag"},defaultValue:{func:!1,value:"undefined"}}],slots:[{name:"default"}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzText/PzText.vue"]});export{x as P,h as _};
1
+ import{d as l,j as r,f as d,G as p,g as i,w as c,o as u,r as m}from"./iframe-XnrfGA2g.js";const t=l({name:"PzText",__name:"PzText",props:{variant:{},as:{default:void 0}},setup(e){const s={"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=e,o=i(()=>a.as??s[a.variant]??"span");return(n,b)=>(u(),r(p(o.value),{class:d(["pz-text",`pz-text--${e.variant}`])},{default:c(()=>[m(n.$slots,"default",{},void 0,!0)]),_:3},8,["class"]))}}),h=(e,s)=>{const a=e.__vccOpts||e;for(const[o,n]of s)a[o]=n;return a},x=h(t,[["__scopeId","data-v-bd3b2150"]]);t.__docgenInfo=Object.assign({displayName:t.name??t.__name},{name:"PzText",exportName:"default",displayName:"PzText",description:"",tags:{},props:[{name:"variant",required:!0,type:{name:"PzTextVariant"}},{name:"as",required:!1,type:{name:"PzTextTag"},defaultValue:{func:!1,value:"undefined"}}],slots:[{name:"default"}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzText/PzText.vue"]});export{x as P,h as _};
@@ -1,4 +1,4 @@
1
- import{P as R}from"./PzText-B1cefxtz.js";import"./iframe-AHEBgGuT.js";import"./preload-helper-C1FmrZbK.js";const De=["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"],Pe=["h1","h2","h3","h4","h5","h6","p","span","div","a","label"],$e=r=>r.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),we={title:"Components/PzText",component:R,parameters:{prototype:{caption:"Text component",note:"Component-level playground for semantic tag overrides and text variant rendering."},docs:{description:{component:"Vue text primitive for rendering the shared typography variants. Use `Foundation/Typography` for the full type-scale reference and `Components/PzText` for the component API."},source:{transform:(r,e)=>{const a=e.args??{};return`<template>
1
+ import{P as R}from"./PzText-LfRr6NF7.js";import"./iframe-XnrfGA2g.js";import"./preload-helper-C1FmrZbK.js";const De=["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"],Pe=["h1","h2","h3","h4","h5","h6","p","span","div","a","label"],$e=r=>r.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),we={title:"Components/Text/PzText",component:R,parameters:{prototype:{caption:"Text component",note:"Component-level playground for semantic tag overrides and text variant rendering."},docs:{description:{component:"Vue text primitive for rendering the shared typography variants. Use `Foundation/Typography` for the full type-scale reference and `Components/PzText` for the component API."},source:{transform:(r,e)=>{const a=e.args??{};return`<template>
2
2
  <PzText ${[a.variant?`variant="${a.variant}"`:null,a.as?`as="${a.as}"`:null,a.content?`content="${a.content}"`:null].filter(Boolean).join(" ")} />
3
3
  </template>`}}}},args:{variant:"body-regular",content:"Every procurement notice should stay readable across dense interfaces and long-form content."},argTypes:{variant:{control:"select",options:De,description:"Text style variant from the Design System."},as:{control:"select",options:Pe,description:"HTML tag to render. Defaults to a semantic tag based on variant."},content:{control:"text",description:"Text content.",table:{category:"Slots"}}},render:r=>({components:{pzText:R},setup(){const e=$e(r.variant);return{args:r,currentLabel:e}},template:`
4
4
  <section class="pz-text-demo">
@@ -14,7 +14,7 @@ import{P as R}from"./PzText-B1cefxtz.js";import"./iframe-AHEBgGuT.js";import"./p
14
14
  <pz-text :variant="args.variant" :as="args.as">{{ args.content }}</pz-text>
15
15
  </div>
16
16
  </section>
17
- `})},t={name:"H1 Bold",args:{variant:"h1-bold",content:"Headline Bold 1"}},n={name:"H1 Regular",args:{variant:"h1-regular",content:"Headline Regular 1"}},o={name:"H2 Bold",args:{variant:"h2-bold",content:"Headline Bold 2"}},s={name:"H3 Bold",args:{variant:"h3-bold",content:"Headline Bold 3"}},l={name:"H3 Regular",args:{variant:"h3-regular",content:"Headline Regular 3"}},c={name:"H4 Regular",args:{variant:"h4-regular",content:"Headline Regular 4"}},d={name:"H4 Semibold",args:{variant:"h4-semibold",content:"Headline Semibold 4"}},i={name:"H4 Bold",args:{variant:"h4-bold",content:"Headline Bold 4"}},m={args:{variant:"subtitle",content:"Subtitle"}},u={name:"Body Regular",args:{variant:"body-regular",content:"Body text regular"}},p={name:"Body Semibold",args:{variant:"body-semibold",content:"Body text semibold"}},g={name:"Body Bold",args:{variant:"body-bold",content:"Body text bold"}},b={args:{variant:"capitalized",content:"Capitalized text"}},v={args:{variant:"hint",content:"Hint text"}},h={name:"Line Through",args:{variant:"line-through",content:"Line through text"}},S={name:"Small Regular",args:{variant:"small-regular",content:"Small text regular"}},H={name:"Small Semibold",args:{variant:"small-semibold",content:"Small text semibold"}},B={name:"Small Bold",args:{variant:"small-bold",content:"Small text bold"}},y={name:"Link",args:{variant:"link",content:"Link text"}},x={args:{variant:"document",content:"Document text"}};var z,T,L;t.parameters={...t.parameters,docs:{...(z=t.parameters)==null?void 0:z.docs,source:{originalSource:`{
17
+ `})},t={name:"H1 Bold",args:{variant:"h1-bold",content:"Headline Bold 1"}},n={name:"H1 Regular",args:{variant:"h1-regular",content:"Headline Regular 1"}},o={name:"H2 Bold",args:{variant:"h2-bold",content:"Headline Bold 2"}},s={name:"H3 Bold",args:{variant:"h3-bold",content:"Headline Bold 3"}},l={name:"H3 Regular",args:{variant:"h3-regular",content:"Headline Regular 3"}},c={name:"H4 Regular",args:{variant:"h4-regular",content:"Headline Regular 4"}},d={name:"H4 Semibold",args:{variant:"h4-semibold",content:"Headline Semibold 4"}},i={name:"H4 Bold",args:{variant:"h4-bold",content:"Headline Bold 4"}},m={args:{variant:"subtitle",content:"Subtitle"}},u={name:"Body Regular",args:{variant:"body-regular",content:"Body text regular"}},p={name:"Body Semibold",args:{variant:"body-semibold",content:"Body text semibold"}},g={name:"Body Bold",args:{variant:"body-bold",content:"Body text bold"}},b={args:{variant:"capitalized",content:"Capitalized text"}},v={args:{variant:"hint",content:"Hint text"}},h={name:"Line Through",args:{variant:"line-through",content:"Line through text"}},S={name:"Small Regular",args:{variant:"small-regular",content:"Small text regular"}},H={name:"Small Semibold",args:{variant:"small-semibold",content:"Small text semibold"}},B={name:"Small Bold",args:{variant:"small-bold",content:"Small text bold"}},x={name:"Link",args:{variant:"link",content:"Link text"}},y={args:{variant:"document",content:"Document text"}};var z,T,L;t.parameters={...t.parameters,docs:{...(z=t.parameters)==null?void 0:z.docs,source:{originalSource:`{
18
18
  name: "H1 Bold",
19
19
  args: {
20
20
  variant: "h1-bold",
@@ -113,21 +113,21 @@ import{P as R}from"./PzText-B1cefxtz.js";import"./iframe-AHEBgGuT.js";import"./p
113
113
  variant: "small-semibold",
114
114
  content: "Small text semibold"
115
115
  }
116
- }`,...(Be=(He=H.parameters)==null?void 0:He.docs)==null?void 0:Be.source}}};var ye,xe,Re;B.parameters={...B.parameters,docs:{...(ye=B.parameters)==null?void 0:ye.docs,source:{originalSource:`{
116
+ }`,...(Be=(He=H.parameters)==null?void 0:He.docs)==null?void 0:Be.source}}};var xe,ye,Re;B.parameters={...B.parameters,docs:{...(xe=B.parameters)==null?void 0:xe.docs,source:{originalSource:`{
117
117
  name: "Small Bold",
118
118
  args: {
119
119
  variant: "small-bold",
120
120
  content: "Small text bold"
121
121
  }
122
- }`,...(Re=(xe=B.parameters)==null?void 0:xe.docs)==null?void 0:Re.source}}};var ze,Te,Le;y.parameters={...y.parameters,docs:{...(ze=y.parameters)==null?void 0:ze.docs,source:{originalSource:`{
122
+ }`,...(Re=(ye=B.parameters)==null?void 0:ye.docs)==null?void 0:Re.source}}};var ze,Te,Le;x.parameters={...x.parameters,docs:{...(ze=x.parameters)==null?void 0:ze.docs,source:{originalSource:`{
123
123
  name: "Link",
124
124
  args: {
125
125
  variant: "link",
126
126
  content: "Link text"
127
127
  }
128
- }`,...(Le=(Te=y.parameters)==null?void 0:Te.docs)==null?void 0:Le.source}}};var fe,ke,Ce;x.parameters={...x.parameters,docs:{...(fe=x.parameters)==null?void 0:fe.docs,source:{originalSource:`{
128
+ }`,...(Le=(Te=x.parameters)==null?void 0:Te.docs)==null?void 0:Le.source}}};var fe,ke,Ce;y.parameters={...y.parameters,docs:{...(fe=y.parameters)==null?void 0:fe.docs,source:{originalSource:`{
129
129
  args: {
130
130
  variant: "document",
131
131
  content: "Document text"
132
132
  }
133
- }`,...(Ce=(ke=x.parameters)==null?void 0:ke.docs)==null?void 0:Ce.source}}};const Ae=["H1Bold","H1Regular","H2Bold","H3Bold","H3Regular","H4Regular","H4Semibold","H4Bold","Subtitle","BodyRegular","BodySemibold","BodyBold","Capitalized","Hint","LineThroughStory","SmallRegular","SmallSemibold","SmallBold","LinkStory","Document"];export{g as BodyBold,u as BodyRegular,p as BodySemibold,b as Capitalized,x as Document,t as H1Bold,n as H1Regular,o as H2Bold,s as H3Bold,l as H3Regular,i as H4Bold,c as H4Regular,d as H4Semibold,v as Hint,h as LineThroughStory,y as LinkStory,B as SmallBold,S as SmallRegular,H as SmallSemibold,m as Subtitle,Ae as __namedExportsOrder,we as default};
133
+ }`,...(Ce=(ke=y.parameters)==null?void 0:ke.docs)==null?void 0:Ce.source}}};const Ae=["H1Bold","H1Regular","H2Bold","H3Bold","H3Regular","H4Regular","H4Semibold","H4Bold","Subtitle","BodyRegular","BodySemibold","BodyBold","Capitalized","Hint","LineThroughStory","SmallRegular","SmallSemibold","SmallBold","LinkStory","Document"];export{g as BodyBold,u as BodyRegular,p as BodySemibold,b as Capitalized,y as Document,t as H1Bold,n as H1Regular,o as H2Bold,s as H3Bold,l as H3Regular,i as H4Bold,c as H4Regular,d as H4Semibold,v as Hint,h as LineThroughStory,x as LinkStory,B as SmallBold,S as SmallRegular,H as SmallSemibold,m as Subtitle,Ae as __namedExportsOrder,we as default};
@@ -0,0 +1 @@
1
+ .pz-text-clamp-story{display:grid;gap:24px}.pz-text-clamp-story-hero,.pz-text-clamp-story-card{border:1px solid color-mix(in srgb,var(--pz-color-grey-40) 58%,transparent);border-radius:28px;background:linear-gradient(180deg,color-mix(in srgb,var(--pz-color-white) 98%,transparent),color-mix(in srgb,var(--pz-color-grey-40) 10%,var(--pz-color-white))),linear-gradient(135deg,color-mix(in srgb,var(--pz-color-blue-50) 4%,transparent),transparent 42%);box-shadow:0 18px 60px color-mix(in srgb,var(--pz-color-black-90) 8%,transparent),inset 0 1px color-mix(in srgb,var(--pz-color-white) 96%,transparent)}.pz-text-clamp-story-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(320px,1.05fr);gap:20px;padding:clamp(22px,2vw,30px)}.pz-text-clamp-story-copy,.pz-text-clamp-story-preview,.pz-text-clamp-story-card{display:grid;gap:16px}.pz-text-clamp-story-preview,.pz-text-clamp-story-card{padding:clamp(20px,2vw,24px)}.pz-text-clamp-story-preview{align-content:start;border-radius:22px;background:radial-gradient(circle at top right,color-mix(in srgb,var(--pz-color-blue-50) 8%,transparent),transparent 30%),var(--pz-color-white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--pz-color-grey-40) 52%,transparent),0 12px 32px color-mix(in srgb,var(--pz-color-black-90) 7%,transparent)}.pz-text-clamp-story-grid{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}.pz-text-clamp-story-card{min-height:220px}.pz-text-clamp-story-card-header{display:grid;gap:8px}.pz-text-clamp-story-eyebrow,.pz-text-clamp-story-kicker,.pz-text-clamp-story-chip{display:inline-flex;align-items:center;width:fit-content;font-size:11px;font-weight:700;line-height:1;letter-spacing:.14em;text-transform:uppercase}.pz-text-clamp-story-eyebrow,.pz-text-clamp-story-kicker{color:var(--pz-color-text-link-hover)}.pz-text-clamp-story-chip{padding:8px 12px;border-radius:999px;background:color-mix(in srgb,var(--pz-color-blue-50) 10%,transparent);color:var(--pz-color-text-link-hover)}.pz-text-clamp-story-custom-toggle{padding:8px 12px;border:1px solid color-mix(in srgb,var(--pz-color-blue-50) 20%,transparent);border-radius:999px;background:color-mix(in srgb,var(--pz-color-blue-50) 8%,transparent);color:var(--pz-color-text-link-hover);cursor:pointer;transition:border-color .16s ease,background-color .16s ease,color .16s ease;font-size:var(--pz-font-size-12);font-weight:600;line-height:1.5}.pz-text-clamp-story-custom-toggle:hover,.pz-text-clamp-story-custom-toggle:focus-visible{border-color:color-mix(in srgb,var(--pz-color-text-link-hover) 24%,transparent);background:color-mix(in srgb,var(--pz-color-blue-50) 14%,transparent);outline:none}@media (width <= 1024px){.pz-text-clamp-story-hero,.pz-text-clamp-story-grid{grid-template-columns:1fr}}@media (width <= 640px){.pz-text-clamp-story-hero,.pz-text-clamp-story-preview,.pz-text-clamp-story-card{padding:20px;border-radius:22px}}.pz-text-clamp[data-v-17225f94]{color:var(--pz-color-text-primary);overflow-wrap:anywhere;font-size:var(--pz-font-size-14);font-weight:400;line-height:1.5}.pz-text-clamp__toggle[data-v-17225f94]{padding:0;margin-inline-start:var(--pz-space-4);border:0;background:transparent;color:var(--pz-color-text-link);cursor:pointer;outline:none;transition:color .16s ease}.pz-text-clamp__toggle[data-v-17225f94]:hover,.pz-text-clamp__toggle[data-v-17225f94]:focus-visible{color:var(--pz-color-text-link-hover)}
@@ -0,0 +1,149 @@
1
+ import{d as ne,P as xe,L as _,Q as me,E as _e,o as q,e as se,y as U,r as H,k as w,n as fe,i as C,g as h,C as X,j as ge,w as he,N as ve,f as ze,t as be,h as ye}from"./iframe-XnrfGA2g.js";import{_ as we,P as re}from"./PzText-LfRr6NF7.js";import"./preload-helper-C1FmrZbK.js";var R=null;function Ce(e){return R||(R=(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(a){return setTimeout(a,16)}).bind(window)),R(e)}var N=null;function Le(e){N||(N=(window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(a){clearTimeout(a)}).bind(window)),N(e)}function Te(e){var a=document.createElement("style");return a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e)),(document.querySelector("head")||document.body).appendChild(a),a}function v(e,a){a===void 0&&(a={});var t=document.createElement(e);return Object.keys(a).forEach(function(s){t[s]=a[s]}),t}function oe(e,a,t){var s=window.getComputedStyle(e,null)||{display:"none"};return s[a]}function O(e){if(!document.documentElement.contains(e))return{detached:!0,rendered:!1};for(var a=e;a!==document;){if(oe(a,"display")==="none")return{detached:!1,rendered:!1};a=a.parentNode}return{detached:!1,rendered:!0}}var Se='.resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:"";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}',A=0,L=null;function Ee(e,a){e.__resize_mutation_handler__||(e.__resize_mutation_handler__=Re.bind(e));var t=e.__resize_listeners__;if(!t){if(e.__resize_listeners__=[],window.ResizeObserver){var s=e.offsetWidth,o=e.offsetHeight,i=new ResizeObserver(function(){!e.__resize_observer_triggered__&&(e.__resize_observer_triggered__=!0,e.offsetWidth===s&&e.offsetHeight===o)||S(e)}),n=O(e),p=n.detached,d=n.rendered;e.__resize_observer_triggered__=p===!1&&d===!1,e.__resize_observer__=i,i.observe(e)}else if(e.attachEvent&&e.addEventListener)e.__resize_legacy_resize_handler__=function(){S(e)},e.attachEvent("onresize",e.__resize_legacy_resize_handler__),document.addEventListener("DOMSubtreeModified",e.__resize_mutation_handler__);else if(A||(L=Te(Se)),Ne(e),e.__resize_rendered__=O(e).rendered,window.MutationObserver){var l=new MutationObserver(e.__resize_mutation_handler__);l.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.__resize_mutation_observer__=l}}e.__resize_listeners__.push(a),A++}function ke(e,a){var t=e.__resize_listeners__;if(t){if(a&&t.splice(t.indexOf(a),1),!t.length||!a){if(e.detachEvent&&e.removeEventListener){e.detachEvent("onresize",e.__resize_legacy_resize_handler__),document.removeEventListener("DOMSubtreeModified",e.__resize_mutation_handler__);return}e.__resize_observer__?(e.__resize_observer__.unobserve(e),e.__resize_observer__.disconnect(),e.__resize_observer__=null):(e.__resize_mutation_observer__&&(e.__resize_mutation_observer__.disconnect(),e.__resize_mutation_observer__=null),e.removeEventListener("scroll",B),e.removeChild(e.__resize_triggers__.triggers),e.__resize_triggers__=null),e.__resize_listeners__=null}!--A&&L&&L.parentNode.removeChild(L)}}function Pe(e){var a=e.__resize_last__,t=a.width,s=a.height,o=e.offsetWidth,i=e.offsetHeight;return o!==t||i!==s?{width:o,height:i}:null}function Re(){var e=O(this),a=e.rendered,t=e.detached;a!==this.__resize_rendered__&&(!t&&this.__resize_triggers__&&(F(this),this.addEventListener("scroll",B,!0)),this.__resize_rendered__=a,S(this))}function B(){var e=this;F(this),this.__resize_raf__&&Le(this.__resize_raf__),this.__resize_raf__=Ce(function(){var a=Pe(e);a&&(e.__resize_last__=a,S(e))})}function S(e){!e||!e.__resize_listeners__||e.__resize_listeners__.forEach(function(a){a.call(e,e)})}function Ne(e){var a=oe(e,"position");(!a||a==="static")&&(e.style.position="relative"),e.__resize_old_position__=a,e.__resize_last__={};var t=v("div",{className:"resize-triggers"}),s=v("div",{className:"resize-expand-trigger"}),o=v("div"),i=v("div",{className:"resize-contract-trigger"});s.appendChild(o),t.appendChild(s),t.appendChild(i),e.appendChild(t),e.__resize_triggers__={triggers:t,expand:s,expandChild:o,contract:i},F(e),e.addEventListener("scroll",B,!0),e.__resize_last__={width:e.offsetWidth,height:e.offsetHeight}}function F(e){var a=e.__resize_triggers__,t=a.expand,s=a.expandChild,o=a.contract,i=o.scrollWidth,n=o.scrollHeight,p=t.offsetWidth,d=t.offsetHeight,l=t.scrollWidth,c=t.scrollHeight;o.scrollLeft=i,o.scrollTop=n,s.style.width=p+1+"px",s.style.height=d+1+"px",t.scrollLeft=l,t.scrollTop=c}const qe=["aria-label"];var ie=ne({__name:"text-clamp",props:{text:{type:String,required:!0},maxHeight:{type:[String,Number],required:!1},maxLines:{type:Number,required:!1},expanded:{type:Boolean,required:!1,default:!1},location:{type:String,required:!1,default:"end"},ellipsis:{type:String,required:!1,default:"…"},autoResize:{type:Boolean,required:!1,default:!1}},emits:["clamp-change","update:expanded"],setup(e,{emit:a}){const t=e,s=C(null),o=C(null),i=C(null),n=xe({offset:0,localExpanded:!!t.expanded,unregisterResizeCallback:null}),p=h(()=>{if(!n.localExpanded&&t.maxHeight)return typeof(t==null?void 0:t.maxHeight)=="number"?`${t==null?void 0:t.maxHeight}px`:t==null?void 0:t.maxHeight}),d=()=>{i.value&&(i.value.textContent=pe.value)},l=()=>{n.localExpanded||(d(),(g()||u.value)&&k())},c=()=>{t.text&&(n.offset=t.text.length,j(),t.autoResize&&s.value&&(Ee(s.value,l),n.unregisterResizeCallback=()=>{s.value&&ke(s.value,l)}),l())},j=()=>{var r;(r=n.unregisterResizeCallback)==null||r.call(n)},g=()=>!(!t.maxLines&&!t.maxHeight)&&!!s.value&&(!!(t.maxLines&&E()>t.maxLines)||!!(t.maxHeight&&s.value.scrollHeight>s.value.offsetHeight)),E=()=>o.value?Object.keys(Array.prototype.slice.call(o.value.getClientRects()).reduce((r,{top:x,bottom:f})=>{const m=`${x}/${f}`;return r[m]||(r[m]=!0),r},{})).length:0,k=(...r)=>{const[x=0,f=n.offset]=r;if(f-x<=3)return void le();const m=Math.floor((f+x)/2);P(m),g()?k(x,m):k(m,f)},P=r=>{n.offset=r,d()},le=()=>{de(),ce()},de=()=>{for(;(!g()||E()<2)&&n.offset<t.text.length;)D(1)},ce=()=>{for(;g()&&E()>1&&n.offset>0;)D(-1)},D=r=>{P(n.offset+r)},u=h(()=>!!t.text&&n.offset!==t.text.length);_(()=>u.value,r=>{setTimeout(()=>{a("clamp-change",r)},0)},{immediate:!0});const pe=h(()=>u.value?ue.value:t.text),ue=h(()=>{if(t.location==="start")return t.ellipsis+(t.text.slice(-n.offset)||"").trim();if(t.location==="middle"){const r=Math.floor(n.offset/2);return(t.text.slice(0,r)||"").trim()+t.ellipsis+(t.text.slice(-r)||"").trim()}return(t.text.slice(0,n.offset)||"").trim()+t.ellipsis}),V=()=>{n.localExpanded=!0},W=()=>{n.localExpanded=!1},I=()=>{n.localExpanded=!n.localExpanded};return _(()=>t.expanded,r=>{n.localExpanded=r}),_(()=>n.localExpanded,r=>{r?P(t.text.length):l(),t.expanded!==r&&a("update:expanded",r)}),_(()=>[t.maxLines,t.maxHeight,t.ellipsis,t.location,u.value].join(),()=>{X(()=>{l()})}),_(()=>[t.text,t.autoResize].join(),()=>{X(()=>{c()})}),me(()=>{j()}),_e(()=>{c()}),(r,x)=>(q(),se("div",{ref_key:"textClampRef",ref:s,class:"text-clamp",style:fe({overflow:"hidden",maxHeight:w(p)})},[U("span",{ref_key:"contentRef",ref:o},[H(r.$slots,"before",{expand:V,collapse:W,toggle:I,clamped:w(u),expanded:n.localExpanded}),U("span",{ref_key:"textRef",ref:i,"aria-label":e.text},null,8,qe),H(r.$slots,"after",{expand:V,collapse:W,toggle:I,clamped:w(u),expanded:n.localExpanded})],512)],4))}});ie.__file="package/text-clamp.vue";const He=e=>(e.install=function(a){a.component(e.__name,e)},e),Oe=He(ie),Ae=3,Me="... ",$e=["aria-expanded","onClick"],T=ne({name:"PzTextClamp",__name:"PzTextClamp",props:{text:{},maxContentLines:{default:Ae},clampPostfix:{default:Me},btnClass:{default:""},autoResize:{type:Boolean,default:!0},expanded:{type:Boolean,default:!1},expandLabel:{default:"Show more"},collapseLabel:{default:"Collapse"}},emits:["update:expanded","clamp-change"],setup(e,{emit:a}){const t=e,s=a,o=n=>{s("update:expanded",n)},i=n=>{s("clamp-change",n)};return(n,p)=>(q(),ge(w(Oe),{text:t.text,"max-lines":t.maxContentLines,ellipsis:t.clampPostfix,expanded:t.expanded,"auto-resize":t.autoResize,class:"pz-text-clamp","onUpdate:expanded":o,onClampChange:i},{after:he(({toggle:d,expanded:l,clamped:c})=>[H(n.$slots,"toggle",{toggle:d,expanded:l,clamped:c},()=>[c||l?(q(),se("button",{key:0,type:"button",class:ze(["pz-text-clamp__toggle",t.btnClass]),"aria-expanded":l,onClick:ve(d,["stop"])},be(l?t.collapseLabel:t.expandLabel),11,$e)):ye("",!0)],!0)]),_:3},8,["text","max-lines","ellipsis","expanded","auto-resize"]))}}),M=we(T,[["__scopeId","data-v-17225f94"]]);T.__docgenInfo=Object.assign({displayName:T.name??T.__name},{name:"PzTextClamp",exportName:"default",displayName:"PzTextClamp",description:"",tags:{},props:[{name:"text",required:!0,type:{name:"string"}},{name:"maxContentLines",required:!1,type:{name:"number"},defaultValue:{func:!1,value:"MAX_CONTENT_LINES"}},{name:"clampPostfix",required:!1,type:{name:"string"},defaultValue:{func:!1,value:"DEFAULT_CLAMP_POSTFIX"}},{name:"btnClass",required:!1,type:{name:"string"},defaultValue:{func:!1,value:'""'}},{name:"autoResize",required:!1,type:{name:"boolean"},defaultValue:{func:!1,value:"true"}},{name:"expanded",required:!1,type:{name:"boolean"},defaultValue:{func:!1,value:"false"}},{name:"expandLabel",required:!1,type:{name:"string"},defaultValue:{func:!1,value:'"Show more"'}},{name:"collapseLabel",required:!1,type:{name:"string"},defaultValue:{func:!1,value:'"Collapse"'}}],events:[{name:"update:expanded",type:{names:["boolean"]}},{name:"clamp-change",type:{names:["boolean"]}}],slots:[{name:"toggle",scoped:!0,bindings:[{name:"toggle",title:"binding"},{name:"expanded",title:"binding"},{name:"clamped",title:"binding"}]}],sourceFiles:["/builds/Web-Projects/client-services/prozorro-ui/src/components/PzTextClamp/PzTextClamp.vue"]});const $=[{kicker:"News teaser",title:"Two lines with default toggle",text:"The procurement framework for recovery projects should remain readable even when editors add dense context, supporting details, and legal clarifications into a single preview paragraph.",maxContentLines:2},{kicker:"Tender summary",title:"Three lines with longer body copy",text:"Prozorro teams often need the first block of text to stay compact inside cards, while still giving visitors a way to reveal the full explanation, deadlines, and rationale without leaving the page context.",maxContentLines:3},{kicker:"Always expanded",title:"Controlled expanded state",text:"This example starts opened to show that the wrapper supports v-model style control through update:expanded and still keeps the same text treatment as the collapsed variant.",maxContentLines:2,expanded:!0}],Be=e=>`<template>
2
+ <PzTextClamp ${[`text="${e.text}"`,e.maxContentLines!==3?`:max-content-lines="${e.maxContentLines}"`:null,e.clampPostfix!=="... "?`clamp-postfix="${e.clampPostfix}"`:null,e.expandLabel!=="Show more"?`expand-label="${e.expandLabel}"`:null,e.collapseLabel!=="Collapse"?`collapse-label="${e.collapseLabel}"`:null,e.expanded?':expanded="true"':null].filter(t=>!!t).join(" ")} />
3
+ </template>`,Fe=()=>`<template>
4
+ <PzTextClamp
5
+ text="Long procurement summary that needs a custom action."
6
+ :max-content-lines="2"
7
+ >
8
+ <template #toggle="{ toggle, expanded, clamped }">
9
+ <button
10
+ v-if="clamped || expanded"
11
+ type="button"
12
+ class="custom-toggle"
13
+ @click="toggle"
14
+ >
15
+ {{ expanded ? "Hide details" : "Open full text" }}
16
+ </button>
17
+ </template>
18
+ </PzTextClamp>
19
+ </template>`,je={title:"Components/Text/PzTextClamp",component:M,parameters:{prototype:{caption:"Text clamp component",note:"Built as a thin wrapper over vue3-text-clamp, reusing the old text/max-lines/postfix/button-class contract and replacing app-specific translations with explicit labels and a toggle slot."},docs:{description:{component:"Use `PzTextClamp` for compact previews of long copy. It defaults to the `body-regular` text style, exposes the old clamp props, and supports toggle customization through `v-model:expanded` and the `toggle` slot."},source:{transform:(e,a)=>Be(a.args??je.args)}}},args:{text:$[1].text,maxContentLines:3,clampPostfix:"... ",btnClass:"",autoResize:!0,expanded:!1,expandLabel:"Show more",collapseLabel:"Collapse",title:"Long-form card description"},argTypes:{text:{control:"text",description:"Source text rendered by the clamp component."},maxContentLines:{control:{type:"number",min:1,max:8,step:1},description:"Maximum number of visible lines before the text is clamped."},clampPostfix:{control:"text",description:"String appended to the truncated text."},btnClass:{control:"text",description:"Additional class names applied to the default toggle button."},autoResize:{control:"boolean",description:"Recalculates clamping on layout changes."},expanded:{control:"boolean",description:"Controlled expanded state."},expandLabel:{control:"text",description:"Default label shown while the text is collapsed."},collapseLabel:{control:"text",description:"Default label shown while the text is expanded."},title:{control:"text",description:"Preview heading used in the story only.",table:{category:"Story"}}},render:e=>({components:{pzText:re,pzTextClamp:M},setup(){const a=C(!!e.expanded);return _(()=>e.expanded,t=>{a.value=!!t}),{args:e,expanded:a,clampStories:$}},template:`
20
+ <div class="pz-text-clamp-story">
21
+ <section class="pz-text-clamp-story-hero">
22
+ <div class="pz-text-clamp-story-copy">
23
+ <span class="pz-text-clamp-story-eyebrow">Body Regular by default</span>
24
+ <pz-text variant="h4-bold">{{ args.title }}</pz-text>
25
+ <pz-text variant="body-regular">
26
+ Clamp long editorial or procurement copy without creating new typography rules for each surface.
27
+ </pz-text>
28
+ </div>
29
+
30
+ <div class="pz-text-clamp-story-preview">
31
+ <pz-text variant="small-semibold" as="span" class="pz-text-clamp-story-chip">
32
+ {{ expanded ? "expanded" : "collapsed" }}
33
+ </pz-text>
34
+
35
+ <pz-text-clamp
36
+ :text="args.text"
37
+ :max-content-lines="args.maxContentLines"
38
+ :clamp-postfix="args.clampPostfix"
39
+ :btn-class="args.btnClass"
40
+ :auto-resize="args.autoResize"
41
+ :expanded="expanded"
42
+ :expand-label="args.expandLabel"
43
+ :collapse-label="args.collapseLabel"
44
+ @update:expanded="expanded = $event"
45
+ />
46
+ </div>
47
+ </section>
48
+
49
+ <section class="pz-text-clamp-story-grid">
50
+ <article
51
+ v-for="item in clampStories"
52
+ :key="item.title"
53
+ class="pz-text-clamp-story-card"
54
+ >
55
+ <div class="pz-text-clamp-story-card-header">
56
+ <span class="pz-text-clamp-story-kicker">{{ item.kicker }}</span>
57
+ <pz-text variant="body-semibold">{{ item.title }}</pz-text>
58
+ </div>
59
+
60
+ <pz-text-clamp
61
+ :text="item.text"
62
+ :max-content-lines="item.maxContentLines"
63
+ :expanded="item.expanded"
64
+ />
65
+ </article>
66
+ </section>
67
+ </div>
68
+ `})},z={},b={args:{text:$[0].text,maxContentLines:2,title:"News teaser"}},y={parameters:{docs:{source:{code:Fe()}}},render:()=>({components:{pzText:re,pzTextClamp:M},setup(){return{text:"Publishing teams can replace the default inline action with a branded control while keeping the same clamp behavior and the same underlying library implementation."}},template:`
69
+ <div class="pz-text-clamp-story">
70
+ <section class="pz-text-clamp-story-hero">
71
+ <div class="pz-text-clamp-story-copy">
72
+ <span class="pz-text-clamp-story-eyebrow">Toggle slot</span>
73
+ <pz-text variant="h4-bold">Custom action content</pz-text>
74
+ </div>
75
+
76
+ <div class="pz-text-clamp-story-preview">
77
+ <pz-text-clamp
78
+ :text="text"
79
+ :max-content-lines="2"
80
+ >
81
+ <template #toggle="{ toggle, expanded, clamped }">
82
+ <button
83
+ v-if="clamped || expanded"
84
+ type="button"
85
+ class="pz-text-clamp-story-custom-toggle"
86
+ @click="toggle"
87
+ >
88
+ {{ expanded ? "Hide details" : "Open full text" }}
89
+ </button>
90
+ </template>
91
+ </pz-text-clamp>
92
+ </div>
93
+ </section>
94
+ </div>
95
+ `})};var Q,G,J;z.parameters={...z.parameters,docs:{...(Q=z.parameters)==null?void 0:Q.docs,source:{originalSource:"{}",...(J=(G=z.parameters)==null?void 0:G.docs)==null?void 0:J.source}}};var K,Y,Z;b.parameters={...b.parameters,docs:{...(K=b.parameters)==null?void 0:K.docs,source:{originalSource:`{
96
+ args: {
97
+ text: clampStories[0].text,
98
+ maxContentLines: 2,
99
+ title: "News teaser"
100
+ }
101
+ }`,...(Z=(Y=b.parameters)==null?void 0:Y.docs)==null?void 0:Z.source}}};var ee,te,ae;y.parameters={...y.parameters,docs:{...(ee=y.parameters)==null?void 0:ee.docs,source:{originalSource:`{
102
+ parameters: {
103
+ docs: {
104
+ source: {
105
+ code: buildSlotSource()
106
+ }
107
+ }
108
+ },
109
+ render: () => ({
110
+ components: {
111
+ pzText: PzText,
112
+ pzTextClamp: PzTextClamp
113
+ },
114
+ setup() {
115
+ const text = "Publishing teams can replace the default inline action with a branded control while keeping the same clamp behavior and the same underlying library implementation.";
116
+ return {
117
+ text
118
+ };
119
+ },
120
+ template: \`
121
+ <div class="pz-text-clamp-story">
122
+ <section class="pz-text-clamp-story-hero">
123
+ <div class="pz-text-clamp-story-copy">
124
+ <span class="pz-text-clamp-story-eyebrow">Toggle slot</span>
125
+ <pz-text variant="h4-bold">Custom action content</pz-text>
126
+ </div>
127
+
128
+ <div class="pz-text-clamp-story-preview">
129
+ <pz-text-clamp
130
+ :text="text"
131
+ :max-content-lines="2"
132
+ >
133
+ <template #toggle="{ toggle, expanded, clamped }">
134
+ <button
135
+ v-if="clamped || expanded"
136
+ type="button"
137
+ class="pz-text-clamp-story-custom-toggle"
138
+ @click="toggle"
139
+ >
140
+ {{ expanded ? "Hide details" : "Open full text" }}
141
+ </button>
142
+ </template>
143
+ </pz-text-clamp>
144
+ </div>
145
+ </section>
146
+ </div>
147
+ \`
148
+ })
149
+ }`,...(ae=(te=y.parameters)==null?void 0:te.docs)==null?void 0:ae.source}}};const Ie=["Playground","TwoLines","CustomToggle"];export{y as CustomToggle,z as Playground,b as TwoLines,Ie as __namedExportsOrder,je as default};
@@ -0,0 +1 @@
1
+ .pz-validator-xss-story{padding:40px;max-width:1000px;margin:0 auto;font-family:var(--pz-font-family, sans-serif);color:var(--pz-color-text-primary, #2d3436)}.pz-validator-xss-story__header{margin-bottom:48px;border-bottom:1px solid #eee;padding-bottom:24px}.pz-validator-xss-story__section{margin-bottom:64px}.pz-validator-xss-story__title{margin-bottom:24px;display:block}.pz-validator-xss-story__methods{display:flex;flex-direction:column;gap:24px}.pz-validator-xss-story__method-card{border:1px solid #e0e0e0;padding:24px;border-radius:12px;background:#fff;box-shadow:0 2px 4px #00000005}.pz-validator-xss-story__method-signature{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background:#f1f2f6;padding:4px 8px;border-radius:4px;font-size:14px;color:#d63031;display:inline-block;margin-bottom:12px}.pz-validator-xss-story__playground{display:grid;grid-template-columns:1fr 1fr;gap:32px;background:#f9f9f9;padding:32px;border-radius:16px}@media (width <= 768px){.pz-validator-xss-story__playground{grid-template-columns:1fr}}.pz-validator-xss-story__input-area{width:100%;height:150px;padding:16px;border:1px solid #dfe6e9;border-radius:8px;font-family:monospace;font-size:14px;resize:vertical;outline:none}.pz-validator-xss-story__input-area:focus{border-color:#0984e3}.pz-validator-xss-story__output-box{height:150px;padding:16px;border:1px solid #dfe6e9;background:#fff;border-radius:8px;overflow-y:auto;word-break:break-all}.pz-validator-xss-story__code-block{background:#2d3436;color:#dfe6e9;padding:20px;border-radius:8px;font-size:13px;line-height:1.6;overflow-x:auto;margin-top:12px}.pz-validator-xss-story__code-block--light{background:#f1f2f6;color:#2d3436}
@@ -0,0 +1,163 @@
1
+ import{i as c,g as z}from"./iframe-XnrfGA2g.js";import{P as u}from"./PzText-LfRr6NF7.js";import"./preload-helper-C1FmrZbK.js";class s{static validQuery(t){const i={};return Object.keys(t).forEach(e=>{const a=t[e];Array.isArray(a)?i[e]=a.map(n=>s.validString(n)):i[e]=s.validString(a)}),i}static validString(t){return t==null?"":String(t).replace(/<[^>]*>/gim,"").trim()}}const m=o=>`<script setup lang="ts">
2
+ import { PzValidatorXSS } from "@prozorro/prozorro-ui";
3
+
4
+ const input = "${o.testInput}";
5
+ const sanitizedInput = PzValidatorXSS.validString(input);
6
+
7
+ const queryParams = {
8
+ search: "<script>alert('XSS')<\/script>Tender",
9
+ filters: ["<b>Active</b>", "<i>Cancelled</i>"]
10
+ };
11
+ const sanitizedQuery = PzValidatorXSS.validQuery(queryParams);
12
+ <\/script>
13
+
14
+ <template>
15
+ <div>
16
+ <p>Sanitized string: {{ sanitizedInput }}</p>
17
+ <pre>Sanitized query: {{ JSON.stringify(sanitizedQuery, null, 2) }}</pre>
18
+ </div>
19
+ </template>`,y=[{name:"validString",signature:"PzValidatorXSS.validString(str: string | number): string",description:"Removes HTML tags from a string and trims whitespace. Handles numbers by converting them to strings.",params:"`str`: Input value to sanitize.",example:'PzValidatorXSS.validString("<p>Hello world</p>") // "Hello world"'},{name:"validQuery",signature:"PzValidatorXSS.validQuery(query: PzValidatorXSSQuery): PzValidatorXSSQuery",description:"Deep sanitization for an object (e.g. router query). Recursively cleans arrays and string values.",params:"`query`: Object with string or string array values.",example:"PzValidatorXSS.validQuery({ q: '<u>search</u>', ids: ['<i>1</i>', '2'] })"}],b={title:"Utilities/PzValidatorXSS",component:s,parameters:{layout:"fullscreen",docs:{description:{component:"Utility class for sanitizing inputs and preventing XSS by removing HTML tags from strings and query objects."}}},argTypes:{testInput:{control:"text",description:"Live test input with HTML tags."}}},r={args:{testInput:"<b>Hello</b> <script>alert('XSS')<\/script> <i>World!</i>"},render:o=>({components:{pzText:u},setup(){const t=c(o.testInput),i=z(()=>s.validString(t.value)),e={keyword:"<b>Prozorro</b>",tags:["<i>Active</i>","<u>Closed</u>"],page:"1"},a=s.validQuery(e);return{input:t,sanitized:i,queryInput:e,sanitizedQuery:a,methodDocs:y}},template:`
20
+ <div class="pz-validator-xss-story">
21
+ <header class="pz-validator-xss-story__header">
22
+ <pzText weight="bold" size="large" tag="h1" class="pz-validator-xss-story__title">PzValidatorXSS Utility</pzText>
23
+ <pzText color="secondary">
24
+ Provides robust sanitization to prevent XSS attacks by stripping all HTML tags from user inputs,
25
+ API responses, or URL parameters within the Prozorro UI ecosystem.
26
+ </pzText>
27
+ </header>
28
+
29
+ <section class="pz-validator-xss-story__section">
30
+ <pzText weight="bold" size="medium" tag="h2" class="pz-validator-xss-story__title">Methods Reference</pzText>
31
+ <div class="pz-validator-xss-story__methods">
32
+ <article v-for="method in methodDocs" :key="method.name" class="pz-validator-xss-story__method-card">
33
+ <code class="pz-validator-xss-story__method-signature">{{ method.signature }}</code>
34
+ <pzText size="small" style="display: block; margin-bottom: 12px;">{{ method.description }}</pzText>
35
+ <pzText size="small" color="secondary" style="display: block; margin-bottom: 8px;">
36
+ <strong>Parameter:</strong> {{ method.params }}
37
+ </pzText>
38
+ <pre class="pz-validator-xss-story__code-block pz-validator-xss-story__code-block--light">{{ method.example }}</pre>
39
+ </article>
40
+ </div>
41
+ </section>
42
+
43
+ <section class="pz-validator-xss-story__section">
44
+ <pzText weight="bold" size="medium" tag="h2" class="pz-validator-xss-story__title">Live Playground</pzText>
45
+ <div class="pz-validator-xss-story__playground">
46
+ <div>
47
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Try HTML Input:</pzText>
48
+ <textarea v-model="input" class="pz-validator-xss-story__input-area" placeholder="Enter text with <b>tags</b>..."></textarea>
49
+ </div>
50
+ <div>
51
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Sanitized Output:</pzText>
52
+ <div class="pz-validator-xss-story__output-box">
53
+ <pzText>{{ sanitized }}</pzText>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ </section>
58
+
59
+ <section class="pz-validator-xss-story__section">
60
+ <pzText weight="bold" size="medium" tag="h2" class="pz-validator-xss-story__title">Deep Object Sanitization (validQuery)</pzText>
61
+ <div class="pz-validator-xss-story__playground">
62
+ <div>
63
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Original Object:</pzText>
64
+ <pre class="pz-validator-xss-story__code-block">{{ JSON.stringify(queryInput, null, 2) }}</pre>
65
+ </div>
66
+ <div>
67
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Sanitized Result:</pzText>
68
+ <pre class="pz-validator-xss-story__code-block" style="color: #55efc4;">{{ JSON.stringify(sanitizedQuery, null, 2) }}</pre>
69
+ </div>
70
+ </div>
71
+ </section>
72
+ </div>
73
+ `}),parameters:{docs:{source:{code:m({testInput:"<b>Hello</b> <script>alert('XSS')<\/script> <i>World!</i>"})}}}};var l,d,p;r.parameters={...r.parameters,docs:{...(l=r.parameters)==null?void 0:l.docs,source:{originalSource:`{
74
+ args: {
75
+ testInput: "<b>Hello</b> <script>alert('XSS')<\/script> <i>World!</i>"
76
+ },
77
+ render: args => ({
78
+ components: {
79
+ pzText: PzText
80
+ },
81
+ setup() {
82
+ const input = ref(args.testInput);
83
+ const sanitized = computed(() => PzValidatorXSS.validString(input.value));
84
+ const queryInput = {
85
+ keyword: "<b>Prozorro</b>",
86
+ tags: ["<i>Active</i>", "<u>Closed</u>"],
87
+ page: "1"
88
+ };
89
+ const sanitizedQuery = PzValidatorXSS.validQuery(queryInput);
90
+ return {
91
+ input,
92
+ sanitized,
93
+ queryInput,
94
+ sanitizedQuery,
95
+ methodDocs
96
+ };
97
+ },
98
+ template: \`
99
+ <div class="pz-validator-xss-story">
100
+ <header class="pz-validator-xss-story__header">
101
+ <pzText weight="bold" size="large" tag="h1" class="pz-validator-xss-story__title">PzValidatorXSS Utility</pzText>
102
+ <pzText color="secondary">
103
+ Provides robust sanitization to prevent XSS attacks by stripping all HTML tags from user inputs,
104
+ API responses, or URL parameters within the Prozorro UI ecosystem.
105
+ </pzText>
106
+ </header>
107
+
108
+ <section class="pz-validator-xss-story__section">
109
+ <pzText weight="bold" size="medium" tag="h2" class="pz-validator-xss-story__title">Methods Reference</pzText>
110
+ <div class="pz-validator-xss-story__methods">
111
+ <article v-for="method in methodDocs" :key="method.name" class="pz-validator-xss-story__method-card">
112
+ <code class="pz-validator-xss-story__method-signature">{{ method.signature }}</code>
113
+ <pzText size="small" style="display: block; margin-bottom: 12px;">{{ method.description }}</pzText>
114
+ <pzText size="small" color="secondary" style="display: block; margin-bottom: 8px;">
115
+ <strong>Parameter:</strong> {{ method.params }}
116
+ </pzText>
117
+ <pre class="pz-validator-xss-story__code-block pz-validator-xss-story__code-block--light">{{ method.example }}</pre>
118
+ </article>
119
+ </div>
120
+ </section>
121
+
122
+ <section class="pz-validator-xss-story__section">
123
+ <pzText weight="bold" size="medium" tag="h2" class="pz-validator-xss-story__title">Live Playground</pzText>
124
+ <div class="pz-validator-xss-story__playground">
125
+ <div>
126
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Try HTML Input:</pzText>
127
+ <textarea v-model="input" class="pz-validator-xss-story__input-area" placeholder="Enter text with <b>tags</b>..."></textarea>
128
+ </div>
129
+ <div>
130
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Sanitized Output:</pzText>
131
+ <div class="pz-validator-xss-story__output-box">
132
+ <pzText>{{ sanitized }}</pzText>
133
+ </div>
134
+ </div>
135
+ </div>
136
+ </section>
137
+
138
+ <section class="pz-validator-xss-story__section">
139
+ <pzText weight="bold" size="medium" tag="h2" class="pz-validator-xss-story__title">Deep Object Sanitization (validQuery)</pzText>
140
+ <div class="pz-validator-xss-story__playground">
141
+ <div>
142
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Original Object:</pzText>
143
+ <pre class="pz-validator-xss-story__code-block">{{ JSON.stringify(queryInput, null, 2) }}</pre>
144
+ </div>
145
+ <div>
146
+ <pzText weight="bold" size="small" style="display: block; margin-bottom: 12px;">Sanitized Result:</pzText>
147
+ <pre class="pz-validator-xss-story__code-block" style="color: #55efc4;">{{ JSON.stringify(sanitizedQuery, null, 2) }}</pre>
148
+ </div>
149
+ </div>
150
+ </section>
151
+ </div>
152
+ \`
153
+ }),
154
+ parameters: {
155
+ docs: {
156
+ source: {
157
+ code: buildSource({
158
+ testInput: "<b>Hello</b> <script>alert('XSS')<\/script> <i>World!</i>"
159
+ })
160
+ }
161
+ }
162
+ }
163
+ }`,...(p=(d=r.parameters)==null?void 0:d.docs)==null?void 0:p.source}}};const _=["Documentation"];export{r as Documentation,_ as __namedExportsOrder,b as default};
@@ -1,4 +1,4 @@
1
- import{P as n}from"./PzText-B1cefxtz.js";import"./iframe-AHEBgGuT.js";import"./preload-helper-C1FmrZbK.js";const p=[{token:"4",value:"4px",variable:"--pz-space-4",utility:"pz-m-4 / pz-p-4",note:"Gap between a title and its supporting text."},{token:"8",value:"8px",variable:"--pz-space-8",utility:"pz-m-8 / pz-p-8",note:"Gap between dependent text rows."},{token:"16",value:"16px",variable:"--pz-space-16",utility:"pz-m-16 / pz-p-16",note:"Spacing for title blocks, table content, and link groups."},{token:"20",value:"20px",variable:"--pz-space-20",utility:"pz-m-20 / pz-p-20",note:"Gap between equal elements."},{token:"24",value:"24px",variable:"--pz-space-24",utility:"pz-m-24 / pz-p-24",note:"Spacing for docs, dividers, and tab padding."},{token:"32",value:"32px",variable:"--pz-space-32",utility:"pz-m-32 / pz-p-32",note:"Inset from content to nested background edges."},{token:"40",value:"40px",variable:"--pz-space-40",utility:"pz-m-40 / pz-p-40",note:"Large inset inside nested content areas."},{token:"44",value:"44px",variable:"--pz-space-44",utility:"pz-m-44 / pz-p-44",note:"Gap between a header and content in cabinet layouts."},{token:"60",value:"60px",variable:"--pz-space-60",utility:"pz-m-60 / pz-p-60",note:"Gap between equal large blocks."}],s=[{title:"Margin utilities",note:"Outer spacing",items:[{name:".pz-m-*",description:"Margin on all sides."},{name:".pz-mt-* / .pz-mr-* / .pz-mb-* / .pz-ml-*",description:"Single-side margin utilities."},{name:".pz-mx-* / .pz-my-*",description:"Inline and block axis margin utilities."},{name:".pz-m-auto / .pz-mx-auto / .pz-my-auto",description:"Auto alignment helpers."}]},{title:"Padding utilities",note:"Inner spacing",items:[{name:".pz-p-*",description:"Padding on all sides."},{name:".pz-pt-* / .pz-pr-* / .pz-pb-* / .pz-pl-*",description:"Single-side padding utilities."},{name:".pz-px-* / .pz-py-*",description:"Inline and block axis padding utilities."}]}],d={title:"Foundation/Spacing",parameters:{prototype:{caption:"Spacing scale",note:"Spacing token and utility reference for margin and padding helpers."},docs:{description:{component:"Spacing foundation for `@prozorro/prozorro-ui`. The utility module emits `pz-m-*` and `pz-p-*` classes backed by the shared `--pz-space-*` token scale aligned with the visible Figma spacing board."}}},render:()=>({components:{pzText:n},setup(){return{spacingTokens:p,utilityGroups:s}},template:`
1
+ import{P as n}from"./PzText-LfRr6NF7.js";import"./iframe-XnrfGA2g.js";import"./preload-helper-C1FmrZbK.js";const p=[{token:"4",value:"4px",variable:"--pz-space-4",utility:"pz-m-4 / pz-p-4",note:"Gap between a title and its supporting text."},{token:"8",value:"8px",variable:"--pz-space-8",utility:"pz-m-8 / pz-p-8",note:"Gap between dependent text rows."},{token:"16",value:"16px",variable:"--pz-space-16",utility:"pz-m-16 / pz-p-16",note:"Spacing for title blocks, table content, and link groups."},{token:"20",value:"20px",variable:"--pz-space-20",utility:"pz-m-20 / pz-p-20",note:"Gap between equal elements."},{token:"24",value:"24px",variable:"--pz-space-24",utility:"pz-m-24 / pz-p-24",note:"Spacing for docs, dividers, and tab padding."},{token:"32",value:"32px",variable:"--pz-space-32",utility:"pz-m-32 / pz-p-32",note:"Inset from content to nested background edges."},{token:"40",value:"40px",variable:"--pz-space-40",utility:"pz-m-40 / pz-p-40",note:"Large inset inside nested content areas."},{token:"44",value:"44px",variable:"--pz-space-44",utility:"pz-m-44 / pz-p-44",note:"Gap between a header and content in cabinet layouts."},{token:"60",value:"60px",variable:"--pz-space-60",utility:"pz-m-60 / pz-p-60",note:"Gap between equal large blocks."}],s=[{title:"Margin utilities",note:"Outer spacing",items:[{name:".pz-m-*",description:"Margin on all sides."},{name:".pz-mt-* / .pz-mr-* / .pz-mb-* / .pz-ml-*",description:"Single-side margin utilities."},{name:".pz-mx-* / .pz-my-*",description:"Inline and block axis margin utilities."},{name:".pz-m-auto / .pz-mx-auto / .pz-my-auto",description:"Auto alignment helpers."}]},{title:"Padding utilities",note:"Inner spacing",items:[{name:".pz-p-*",description:"Padding on all sides."},{name:".pz-pt-* / .pz-pr-* / .pz-pb-* / .pz-pl-*",description:"Single-side padding utilities."},{name:".pz-px-* / .pz-py-*",description:"Inline and block axis padding utilities."}]}],d={title:"Foundation/Spacing",parameters:{prototype:{caption:"Spacing scale",note:"Spacing token and utility reference for margin and padding helpers."},docs:{description:{component:"Spacing foundation for `@prozorro/prozorro-ui`. The utility module emits `pz-m-*` and `pz-p-*` classes backed by the shared `--pz-space-*` token scale aligned with the visible Figma spacing board."}}},render:()=>({components:{pzText:n},setup(){return{spacingTokens:p,utilityGroups:s}},template:`
2
2
  <div class="spacing-foundation">
3
3
  <section class="spacing-foundation-board">
4
4
  <header class="spacing-foundation-hero">
@@ -1,4 +1,4 @@
1
- import{P as p}from"./PzText-B1cefxtz.js";import"./iframe-AHEBgGuT.js";import"./preload-helper-C1FmrZbK.js";const a=[{variant:"h1-bold",label:"Headline Bold 1",spec:"44px / 700 / 1.5"},{variant:"h1-regular",label:"Headline Regular 1",spec:"44px / 400 / 1.5"},{variant:"h2-bold",label:"Headline Bold 2",spec:"32px / 700 / 1.5"},{variant:"h3-bold",label:"Headline Bold 3",spec:"24px / 700 / 1.5"},{variant:"h3-regular",label:"Headline Regular 3",spec:"24px / 400 / 1.5"},{variant:"h4-regular",label:"Headline Regular 4",spec:"18px / 400 / 1.5"},{variant:"h4-semibold",label:"Headline Semibold 4",spec:"18px / 600 / 1.5"},{variant:"h4-bold",label:"Headline Bold 4",spec:"18px / 700 / 1.5"},{variant:"subtitle",label:"Subtitle",spec:"16px / 600 / 1.5"},{variant:"body-regular",label:"Body text regular",spec:"14px / 400 / 1.5"},{variant:"body-semibold",label:"Body text semibold",spec:"14px / 600 / 1.5"},{variant:"body-bold",label:"Body text bold",spec:"14px / 700 / 1.5"},{variant:"capitalized",label:"Capitalized text",spec:"14px / 400 / uppercase"},{variant:"hint",label:"Hint text",spec:"14px / 400 / muted"},{variant:"line-through",label:"Archived value",spec:"14px / 400 / strike"},{variant:"small-regular",label:"Small text regular",spec:"12px / 400 / 1.5"},{variant:"small-semibold",label:"Small text semibold",spec:"12px / 600 / 1.5"},{variant:"small-bold",label:"Small text bold",spec:"12px / 700 / 1.5"},{variant:"link",label:"Review procurement details",spec:"14px / 400 / underline"},{variant:"document",label:"Document text",spec:"14px / 400 / default"}],t=8,r=15,n=[{title:"Headlines",description:"Primary hierarchy for pages, sections and table headers.",items:a.slice(0,t)},{title:"Reading text",description:"Core editorial styles for descriptions, summaries and UI copy.",items:a.slice(t,r)},{title:"Utility styles",description:"Compact text styles for metadata, helpers and document references.",items:a.slice(r)}],m={title:"Foundation/Typography",parameters:{prototype:{caption:"Typography reference",note:"Foundation board for validating hierarchy, weight, and text semantics against the shared design-system scale."},docs:{description:{component:"Typography foundation reference. Use this page to review the full type scale and variant grouping; use `Components/PzText` for the component API."}}},args:{variant:"body-regular",content:"Every procurement notice should stay readable across dense interfaces and long-form content."},render:o=>({components:{pzText:p},setup(){return{args:o,typographyReferenceGroups:n}},template:`
1
+ import{P as p}from"./PzText-LfRr6NF7.js";import"./iframe-XnrfGA2g.js";import"./preload-helper-C1FmrZbK.js";const a=[{variant:"h1-bold",label:"Headline Bold 1",spec:"44px / 700 / 1.5"},{variant:"h1-regular",label:"Headline Regular 1",spec:"44px / 400 / 1.5"},{variant:"h2-bold",label:"Headline Bold 2",spec:"32px / 700 / 1.5"},{variant:"h3-bold",label:"Headline Bold 3",spec:"24px / 700 / 1.5"},{variant:"h3-regular",label:"Headline Regular 3",spec:"24px / 400 / 1.5"},{variant:"h4-regular",label:"Headline Regular 4",spec:"18px / 400 / 1.5"},{variant:"h4-semibold",label:"Headline Semibold 4",spec:"18px / 600 / 1.5"},{variant:"h4-bold",label:"Headline Bold 4",spec:"18px / 700 / 1.5"},{variant:"subtitle",label:"Subtitle",spec:"16px / 600 / 1.5"},{variant:"body-regular",label:"Body text regular",spec:"14px / 400 / 1.5"},{variant:"body-semibold",label:"Body text semibold",spec:"14px / 600 / 1.5"},{variant:"body-bold",label:"Body text bold",spec:"14px / 700 / 1.5"},{variant:"capitalized",label:"Capitalized text",spec:"14px / 400 / uppercase"},{variant:"hint",label:"Hint text",spec:"14px / 400 / muted"},{variant:"line-through",label:"Archived value",spec:"14px / 400 / strike"},{variant:"small-regular",label:"Small text regular",spec:"12px / 400 / 1.5"},{variant:"small-semibold",label:"Small text semibold",spec:"12px / 600 / 1.5"},{variant:"small-bold",label:"Small text bold",spec:"12px / 700 / 1.5"},{variant:"link",label:"Review procurement details",spec:"14px / 400 / underline"},{variant:"document",label:"Document text",spec:"14px / 400 / default"}],t=8,r=15,n=[{title:"Headlines",description:"Primary hierarchy for pages, sections and table headers.",items:a.slice(0,t)},{title:"Reading text",description:"Core editorial styles for descriptions, summaries and UI copy.",items:a.slice(t,r)},{title:"Utility styles",description:"Compact text styles for metadata, helpers and document references.",items:a.slice(r)}],m={title:"Foundation/Typography",parameters:{prototype:{caption:"Typography reference",note:"Foundation board for validating hierarchy, weight, and text semantics against the shared design-system scale."},docs:{description:{component:"Typography foundation reference. Use this page to review the full type scale and variant grouping; use `Components/PzText` for the component API."}}},args:{variant:"body-regular",content:"Every procurement notice should stay readable across dense interfaces and long-form content."},render:o=>({components:{pzText:p},setup(){return{args:o,typographyReferenceGroups:n}},template:`
2
2
  <div class="pz-text-board">
3
3
  <section class="pz-text-board-hero">
4
4
  <div class="pz-text-board-hero-copy">