@kerfjs/ui 5.0.0-beta.102 → 5.0.0-beta.104

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 (48) hide show
  1. package/README.md +9 -1
  2. package/ai/component-catalog.json +10 -5
  3. package/ai/component-composition-rules.json +2 -1
  4. package/ai/component-composition.json +8 -1
  5. package/ai/components/README.md +1 -1
  6. package/ai/components/chip.md +7 -4
  7. package/ai/components/token-search-field.md +1 -0
  8. package/ai/public-api-signatures-v1.md +40 -10
  9. package/ai/skill.md +3 -3
  10. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  11. package/dist/catalog.js +1 -1
  12. package/dist/chip.d.ts +36 -6
  13. package/dist/chip.js +1 -1
  14. package/dist/{chunk-PKL6QJKK.js → chunk-CR5U5FV6.js} +2 -2
  15. package/dist/{chunk-PKL6QJKK.js.map → chunk-CR5U5FV6.js.map} +1 -1
  16. package/dist/{chunk-34U4ANDJ.js → chunk-N7MBGONH.js} +30 -2
  17. package/dist/chunk-N7MBGONH.js.map +1 -0
  18. package/dist/{chunk-IM3GKYOG.js → chunk-T5BJBMW7.js} +48 -28
  19. package/dist/chunk-T5BJBMW7.js.map +1 -0
  20. package/dist/{chunk-MF6ZUUJZ.js → chunk-ZJC5ND3M.js} +4 -6
  21. package/dist/chunk-ZJC5ND3M.js.map +1 -0
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +4 -4
  24. package/dist/styles/chip.css +38 -12
  25. package/dist/styles/components/actions/toolbar/toolbar.css +15 -0
  26. package/dist/styles/components/feedback/chip/chip.css +38 -12
  27. package/dist/styles/toolbar.css +15 -0
  28. package/dist/token-search-field.d.ts +1 -1
  29. package/dist/token-search-field.js +1 -1
  30. package/dist/{token-search-model-aYR0YAei.d.ts → token-search-model-JA1i8z4D.d.ts} +26 -2
  31. package/dist/token-search-model.d.ts +1 -1
  32. package/dist/token-search-model.js +1 -1
  33. package/dist/wire-catalog.js +1 -1
  34. package/dist/wire-token-search-fields.d.ts +1 -1
  35. package/dist/wire-token-search-fields.js +1 -1
  36. package/docs/accessibility.md +1 -1
  37. package/docs/component-selection.md +46 -2
  38. package/docs/design/templates/chip/action-filters-dark.svg +1 -0
  39. package/docs/design/templates/chip/action-filters.svg +1 -0
  40. package/docs/design/templates/chip/tags-dark.svg +1 -0
  41. package/docs/design/templates/chip/tags.svg +1 -0
  42. package/docs/design/templates/chip-dark.svg +1 -0
  43. package/docs/design/templates/chip.svg +1 -0
  44. package/llms.txt +12 -0
  45. package/package.json +1 -1
  46. package/dist/chunk-34U4ANDJ.js.map +0 -1
  47. package/dist/chunk-IM3GKYOG.js.map +0 -1
  48. package/dist/chunk-MF6ZUUJZ.js.map +0 -1
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 230" width="460" height="230"><defs><clipPath id="cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><linearGradient id="bg4" gradientUnits="userSpaceOnUse" x1="266.7813" y1="32.3906" x2="266.7813" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp5"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><clipPath id="ct6"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><linearGradient id="bg7" gradientUnits="userSpaceOnUse" x1="321.7266" y1="32.3906" x2="321.7266" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp8"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><clipPath id="ct9"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><linearGradient id="bg10" gradientUnits="userSpaceOnUse" x1="386.7109" y1="32.3906" x2="386.7109" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp11"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="ct12"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="cp13"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><clipPath id="ct14"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><linearGradient id="bg15" gradientUnits="userSpaceOnUse" x1="329.8047" y1="73.1875" x2="329.8047" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp16"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><clipPath id="ct17"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><linearGradient id="bg18" gradientUnits="userSpaceOnUse" x1="391.4063" y1="73.1875" x2="391.4063" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp19"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="ct20"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="cp21"><rect x="37" y="114" width="27.7" height="18"/></clipPath><clipPath id="ct22"><rect x="37" y="114" width="27.7" height="18"/></clipPath><linearGradient id="bg23" gradientUnits="userSpaceOnUse" x1="305.7188" y1="113.9844" x2="305.7188" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp24"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><clipPath id="ct25"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><linearGradient id="bg26" gradientUnits="userSpaceOnUse" x1="385.8594" y1="113.9844" x2="385.8594" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp27"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="ct28"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="cp29"><rect x="37" y="154.8" width="58" height="18"/></clipPath><clipPath id="ct30"><rect x="37" y="154.8" width="58" height="18"/></clipPath><linearGradient id="bg31" gradientUnits="userSpaceOnUse" x1="268.8203" y1="154.7813" x2="268.8203" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp32"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><clipPath id="ct33"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><linearGradient id="bg34" gradientUnits="userSpaceOnUse" x1="370.3672" y1="154.7813" x2="370.3672" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp35"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath><clipPath id="ct36"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath></defs><g clip-path="url(#cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="rgba(228,228,255,0.075)"/><rect x="28.5" y="20.5" width="403" height="164" rx="11.5" fill="none" stroke="rgba(253,253,255,0.196)" stroke-width="1"/></g><g clip-path="url(#ov1)"><g clip-path="url(#cp2)"><g clip-path="url(#ct3)"><text x="37" y="47.39" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Status</text></g></g><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="url(#bg4)"/><rect x="241.5" y="31.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp5)"><g clip-path="url(#ct6)"><text x="246.53" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:draft</text></g></g><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="url(#bg7)"/><rect x="297.5" y="31.5" width="48" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp8)"><g clip-path="url(#ct9)"><text x="303.03" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:sent</text></g></g><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="url(#bg10)"/><rect x="350.5" y="31.5" width="72" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp11)"><g clip-path="url(#ct12)"><text x="356.42" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:awarded</text></g></g></g><g clip-path="url(#ov1)"><g clip-path="url(#cp13)"><g clip-path="url(#ct14)"><text x="37" y="88.19" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Ownership</text></g></g><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="url(#bg15)"/><rect x="304.5" y="72.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp16)"><g clip-path="url(#ct17)"><text x="309.8" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:mine</text></g></g><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="url(#bg18)"/><rect x="360.5" y="72.5" width="62" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp19)"><g clip-path="url(#ct20)"><text x="365.81" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:shared</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="62.5" x2="423" y2="62.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g><g clip-path="url(#ov1)"><g clip-path="url(#cp21)"><g clip-path="url(#ct22)"><text x="37" y="128.98" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Site</text></g></g><rect x="266.7" y="113" width="78" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="266.7" y="113" width="78" height="20" rx="3" fill="url(#bg23)"/><rect x="267.5" y="113.5" width="77" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp24)"><g clip-path="url(#ct25)"><text x="272.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">site:Karachi</text></g></g><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="url(#bg26)"/><rect x="349.5" y="113.5" width="73" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp27)"><g clip-path="url(#ct28)"><text x="354.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">site:Lahore</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="103.5" x2="423" y2="103.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g><g clip-path="url(#ov1)"><g clip-path="url(#cp29)"><g clip-path="url(#ct30)"><text x="37" y="169.78" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Content</text></g></g><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="url(#bg31)"/><rect x="224.5" y="154.5" width="89" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp32)"><g clip-path="url(#ct33)"><text x="229.91" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">has:questions</text></g></g><g opacity="0.5" style="isolation:isolate"><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="url(#bg34)"/><rect x="318.5" y="154.5" width="104" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp35)"><g clip-path="url(#ct36)"><text x="323.73" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">has:attachments</text></g></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="143.5" x2="423" y2="143.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 230" width="460" height="230"><defs><clipPath id="cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><linearGradient id="bg4" gradientUnits="userSpaceOnUse" x1="266.7813" y1="32.3906" x2="266.7813" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp5"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><clipPath id="ct6"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><linearGradient id="bg7" gradientUnits="userSpaceOnUse" x1="321.7266" y1="32.3906" x2="321.7266" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp8"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><clipPath id="ct9"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><linearGradient id="bg10" gradientUnits="userSpaceOnUse" x1="386.7109" y1="32.3906" x2="386.7109" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp11"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="ct12"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="cp13"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><clipPath id="ct14"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><linearGradient id="bg15" gradientUnits="userSpaceOnUse" x1="329.8047" y1="73.1875" x2="329.8047" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp16"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><clipPath id="ct17"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><linearGradient id="bg18" gradientUnits="userSpaceOnUse" x1="391.4063" y1="73.1875" x2="391.4063" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp19"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="ct20"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="cp21"><rect x="37" y="114" width="27.7" height="18"/></clipPath><clipPath id="ct22"><rect x="37" y="114" width="27.7" height="18"/></clipPath><linearGradient id="bg23" gradientUnits="userSpaceOnUse" x1="305.7188" y1="113.9844" x2="305.7188" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp24"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><clipPath id="ct25"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><linearGradient id="bg26" gradientUnits="userSpaceOnUse" x1="385.8594" y1="113.9844" x2="385.8594" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp27"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="ct28"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="cp29"><rect x="37" y="154.8" width="58" height="18"/></clipPath><clipPath id="ct30"><rect x="37" y="154.8" width="58" height="18"/></clipPath><linearGradient id="bg31" gradientUnits="userSpaceOnUse" x1="268.8203" y1="154.7813" x2="268.8203" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp32"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><clipPath id="ct33"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><linearGradient id="bg34" gradientUnits="userSpaceOnUse" x1="370.3672" y1="154.7813" x2="370.3672" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp35"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath><clipPath id="ct36"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath></defs><g clip-path="url(#cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="rgba(0,0,98,0.05)"/><rect x="28.5" y="20.5" width="403" height="164" rx="11.5" fill="none" stroke="rgba(0,0,28,0.18)" stroke-width="1"/></g><g clip-path="url(#ov1)"><g clip-path="url(#cp2)"><g clip-path="url(#ct3)"><text x="37" y="47.39" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Status</text></g></g><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="url(#bg4)"/><rect x="241.5" y="31.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp5)"><g clip-path="url(#ct6)"><text x="246.53" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:draft</text></g></g><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="url(#bg7)"/><rect x="297.5" y="31.5" width="48" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp8)"><g clip-path="url(#ct9)"><text x="303.03" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:sent</text></g></g><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="url(#bg10)"/><rect x="350.5" y="31.5" width="72" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp11)"><g clip-path="url(#ct12)"><text x="356.42" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:awarded</text></g></g></g><g clip-path="url(#ov1)"><g clip-path="url(#cp13)"><g clip-path="url(#ct14)"><text x="37" y="88.19" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Ownership</text></g></g><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="url(#bg15)"/><rect x="304.5" y="72.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp16)"><g clip-path="url(#ct17)"><text x="309.8" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:mine</text></g></g><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="url(#bg18)"/><rect x="360.5" y="72.5" width="62" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp19)"><g clip-path="url(#ct20)"><text x="365.81" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:shared</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="62.5" x2="423" y2="62.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g><g clip-path="url(#ov1)"><g clip-path="url(#cp21)"><g clip-path="url(#ct22)"><text x="37" y="128.98" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Site</text></g></g><rect x="266.7" y="113" width="78" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="266.7" y="113" width="78" height="20" rx="3" fill="url(#bg23)"/><rect x="267.5" y="113.5" width="77" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp24)"><g clip-path="url(#ct25)"><text x="272.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">site:Karachi</text></g></g><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="url(#bg26)"/><rect x="349.5" y="113.5" width="73" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp27)"><g clip-path="url(#ct28)"><text x="354.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">site:Lahore</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="103.5" x2="423" y2="103.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g><g clip-path="url(#ov1)"><g clip-path="url(#cp29)"><g clip-path="url(#ct30)"><text x="37" y="169.78" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Content</text></g></g><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="url(#bg31)"/><rect x="224.5" y="154.5" width="89" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp32)"><g clip-path="url(#ct33)"><text x="229.91" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">has:questions</text></g></g><g opacity="0.5" style="isolation:isolate"><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="url(#bg34)"/><rect x="318.5" y="154.5" width="104" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp35)"><g clip-path="url(#ct36)"><text x="323.73" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">has:attachments</text></g></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="143.5" x2="423" y2="143.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 88" width="460" height="88"><defs><clipPath id="cp0"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="ct1"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="cp2"><rect x="78" y="28" width="12.2" height="12"/></clipPath><linearGradient id="bg4" gradientUnits="userSpaceOnUse" x1="158.2422" y1="21" x2="158.2422" y2="47"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp5"><rect x="120" y="28" width="12.2" height="12"/></clipPath><clipPath id="cp7"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="ct8"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="cp9"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath><clipPath id="ct10"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath></defs><rect x="20" y="20" width="83.2" height="28" rx="14" fill="rgb(34,43,48)"/><rect x="20.5" y="20.5" width="82" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp0)"><g clip-path="url(#ct1)"><text x="29" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(138,203,255)">Urgent</text></g></g><g clip-path="url(#cp2)"><g color="rgb(138, 203, 255)"><clipPath id="svgic3"><rect x="78.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgic3)"><g transform="matrix(.75 0 0 .75 78.156 28)"><path d="m3.5 3.5 9 9m0-9-9 9" fill="none" stroke="rgb(138, 203, 255)" stroke-width="1.75" stroke-linecap="round" stroke-dasharray="none" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1" opacity="1" style="marker:none;vector-effect:none;color-interpolation:srgb"/></g></g></g></g><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="rgba(228,228,255,0.075)"/><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="url(#bg4)"/><rect x="111.5" y="20.5" width="93" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp5)"><g color="rgb(194, 194, 198)"><clipPath id="svgic6"><rect x="120.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgic6)"><g transform="matrix(.5 0 0 .5 120.156 28)"><path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 1.7.7l3.6 3.6A2 2 0 0 1 20 8v12a2 2 0 0 1-2 2Z" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M14 2v5a1 1 0 0 0 1 1h5" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M10 9H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 13H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 17H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/></g></g></g></g><g clip-path="url(#cp7)"><g clip-path="url(#ct8)"><text x="136.16" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(194,194,198)">report.md</text></g></g><rect x="213.3" y="20" width="65.9" height="28" rx="14" fill="rgb(245,245,247)"/><rect x="213.5" y="20.5" width="65" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp9)"><g clip-path="url(#ct10)"><text x="222.33" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(28,28,30)">Backlog</text></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 88" width="460" height="88"><defs><clipPath id="cp0"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="ct1"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="cp2"><rect x="78" y="28" width="12.2" height="12"/></clipPath><linearGradient id="bg4" gradientUnits="userSpaceOnUse" x1="158.2422" y1="21" x2="158.2422" y2="47"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="cp5"><rect x="120" y="28" width="12.2" height="12"/></clipPath><clipPath id="cp7"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="ct8"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="cp9"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath><clipPath id="ct10"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath></defs><rect x="20" y="20" width="83.2" height="28" rx="14" fill="rgb(235,244,252)"/><rect x="20.5" y="20.5" width="82" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp0)"><g clip-path="url(#ct1)"><text x="29" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(26,93,207)">Urgent</text></g></g><g clip-path="url(#cp2)"><g color="rgb(26, 93, 207)"><clipPath id="svgic3"><rect x="78.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgic3)"><g transform="matrix(.75 0 0 .75 78.156 28)"><path d="m3.5 3.5 9 9m0-9-9 9" fill="none" stroke="rgb(26, 93, 207)" stroke-width="1.75" stroke-linecap="round" stroke-dasharray="none" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1" opacity="1" style="marker:none;vector-effect:none;color-interpolation:srgb"/></g></g></g></g><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="rgba(0,0,98,0.05)"/><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="url(#bg4)"/><rect x="111.5" y="20.5" width="93" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp5)"><g color="rgb(98, 98, 103)"><clipPath id="svgic6"><rect x="120.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgic6)"><g transform="matrix(.5 0 0 .5 120.156 28)"><path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 1.7.7l3.6 3.6A2 2 0 0 1 20 8v12a2 2 0 0 1-2 2Z" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M14 2v5a1 1 0 0 0 1 1h5" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M10 9H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 13H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 17H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/></g></g></g></g><g clip-path="url(#cp7)"><g clip-path="url(#ct8)"><text x="136.16" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(98,98,103)">report.md</text></g></g><rect x="213.3" y="20" width="65.9" height="28" rx="14" fill="rgb(29,29,31)"/><rect x="213.5" y="20.5" width="65" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#cp9)"><g clip-path="url(#ct10)"><text x="222.33" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(255,255,255)">Backlog</text></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 410" width="492" height="410"><defs><clipPath id="cp0"><rect x="16" y="38" width="460" height="88"/></clipPath><clipPath id="cp1"><rect x="16" y="164" width="460" height="230"/></clipPath><clipPath id="ct2"><rect x="16" y="16" width="460" height="22"/></clipPath><clipPath id="irc3"><rect x="16" y="38" width="460" height="88" rx="0"/></clipPath><clipPath id="ct5"><rect x="16" y="142" width="460" height="22"/></clipPath><clipPath id="irc6"><rect x="16" y="164" width="460" height="230" rx="0"/></clipPath></defs><rect x="0" y="0" width="492" height="410" rx="0" fill="rgb(28,28,30)"/><text x="16" y="28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="600" fill="rgb(174,174,178)">Removable, Link, and Plain Tags</text><g clip-path="url(#cp0)"><g clip-path="url(#irc3)"><clipPath id="svgimg4vclip"><rect x="16" y="38" width="460" height="88"/></clipPath><g clip-path="url(#svgimg4vclip)"><g transform="translate(16 38)"><defs><clipPath id="svgimg4cp0"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="svgimg4ct1"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="svgimg4cp2"><rect x="78" y="28" width="12.2" height="12"/></clipPath><linearGradient id="svgimg4bg4" gradientUnits="userSpaceOnUse" x1="158.2422" y1="21" x2="158.2422" y2="47"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg4cp5"><rect x="120" y="28" width="12.2" height="12"/></clipPath><clipPath id="svgimg4cp7"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="svgimg4ct8"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="svgimg4cp9"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath><clipPath id="svgimg4ct10"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath></defs><rect x="20" y="20" width="83.2" height="28" rx="14" fill="rgb(34,43,48)"/><rect x="20.5" y="20.5" width="82" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg4cp0)"><g clip-path="url(#svgimg4ct1)"><text x="29" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(138,203,255)">Urgent</text></g></g><g clip-path="url(#svgimg4cp2)"><g color="rgb(138, 203, 255)"><clipPath id="svgimg4svgic3"><rect x="78.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgimg4svgic3)"><g transform="matrix(.75 0 0 .75 78.156 28)"><path d="m3.5 3.5 9 9m0-9-9 9" fill="none" stroke="rgb(138, 203, 255)" stroke-width="1.75" stroke-linecap="round" stroke-dasharray="none" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1" opacity="1" style="marker:none;vector-effect:none;color-interpolation:srgb"/></g></g></g></g><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="rgba(228,228,255,0.075)"/><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="url(#svgimg4bg4)"/><rect x="111.5" y="20.5" width="93" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg4cp5)"><g color="rgb(194, 194, 198)"><clipPath id="svgimg4svgic6"><rect x="120.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgimg4svgic6)"><g transform="matrix(.5 0 0 .5 120.156 28)"><path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 1.7.7l3.6 3.6A2 2 0 0 1 20 8v12a2 2 0 0 1-2 2Z" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M14 2v5a1 1 0 0 0 1 1h5" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M10 9H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 13H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 17H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(194, 194, 198)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/></g></g></g></g><g clip-path="url(#svgimg4cp7)"><g clip-path="url(#svgimg4ct8)"><text x="136.16" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(194,194,198)">report.md</text></g></g><rect x="213.3" y="20" width="65.9" height="28" rx="14" fill="rgb(245,245,247)"/><rect x="213.5" y="20.5" width="65" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg4cp9)"><g clip-path="url(#svgimg4ct10)"><text x="222.33" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(28,28,30)">Backlog</text></g></g></g></g></g></g><text x="16" y="154" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="600" fill="rgb(174,174,178)">Action Chips in a Compact Value Table</text><g clip-path="url(#cp1)"><g clip-path="url(#irc6)"><clipPath id="svgimg7vclip"><rect x="16" y="164" width="460" height="230"/></clipPath><g clip-path="url(#svgimg7vclip)"><g transform="translate(16 164)"><defs><clipPath id="svgimg7cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="svgimg7ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="svgimg7cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg7ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><linearGradient id="svgimg7bg4" gradientUnits="userSpaceOnUse" x1="266.7813" y1="32.3906" x2="266.7813" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp5"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><clipPath id="svgimg7ct6"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><linearGradient id="svgimg7bg7" gradientUnits="userSpaceOnUse" x1="321.7266" y1="32.3906" x2="321.7266" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp8"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><clipPath id="svgimg7ct9"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><linearGradient id="svgimg7bg10" gradientUnits="userSpaceOnUse" x1="386.7109" y1="32.3906" x2="386.7109" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp11"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="svgimg7ct12"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="svgimg7cp13"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><clipPath id="svgimg7ct14"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><linearGradient id="svgimg7bg15" gradientUnits="userSpaceOnUse" x1="329.8047" y1="73.1875" x2="329.8047" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp16"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><clipPath id="svgimg7ct17"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><linearGradient id="svgimg7bg18" gradientUnits="userSpaceOnUse" x1="391.4063" y1="73.1875" x2="391.4063" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp19"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="svgimg7ct20"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="svgimg7cp21"><rect x="37" y="114" width="27.7" height="18"/></clipPath><clipPath id="svgimg7ct22"><rect x="37" y="114" width="27.7" height="18"/></clipPath><linearGradient id="svgimg7bg23" gradientUnits="userSpaceOnUse" x1="305.7188" y1="113.9844" x2="305.7188" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp24"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><clipPath id="svgimg7ct25"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><linearGradient id="svgimg7bg26" gradientUnits="userSpaceOnUse" x1="385.8594" y1="113.9844" x2="385.8594" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp27"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="svgimg7ct28"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="svgimg7cp29"><rect x="37" y="154.8" width="58" height="18"/></clipPath><clipPath id="svgimg7ct30"><rect x="37" y="154.8" width="58" height="18"/></clipPath><linearGradient id="svgimg7bg31" gradientUnits="userSpaceOnUse" x1="268.8203" y1="154.7813" x2="268.8203" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp32"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><clipPath id="svgimg7ct33"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><linearGradient id="svgimg7bg34" gradientUnits="userSpaceOnUse" x1="370.3672" y1="154.7813" x2="370.3672" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp35"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath><clipPath id="svgimg7ct36"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath></defs><g clip-path="url(#svgimg7cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="rgba(228,228,255,0.075)"/><rect x="28.5" y="20.5" width="403" height="164" rx="11.5" fill="none" stroke="rgba(253,253,255,0.196)" stroke-width="1"/></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp2)"><g clip-path="url(#svgimg7ct3)"><text x="37" y="47.39" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Status</text></g></g><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="url(#svgimg7bg4)"/><rect x="241.5" y="31.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp5)"><g clip-path="url(#svgimg7ct6)"><text x="246.53" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:draft</text></g></g><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="url(#svgimg7bg7)"/><rect x="297.5" y="31.5" width="48" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp8)"><g clip-path="url(#svgimg7ct9)"><text x="303.03" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:sent</text></g></g><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="url(#svgimg7bg10)"/><rect x="350.5" y="31.5" width="72" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp11)"><g clip-path="url(#svgimg7ct12)"><text x="356.42" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:awarded</text></g></g></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp13)"><g clip-path="url(#svgimg7ct14)"><text x="37" y="88.19" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Ownership</text></g></g><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="url(#svgimg7bg15)"/><rect x="304.5" y="72.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp16)"><g clip-path="url(#svgimg7ct17)"><text x="309.8" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:mine</text></g></g><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="url(#svgimg7bg18)"/><rect x="360.5" y="72.5" width="62" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp19)"><g clip-path="url(#svgimg7ct20)"><text x="365.81" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">is:shared</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="62.5" x2="423" y2="62.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp21)"><g clip-path="url(#svgimg7ct22)"><text x="37" y="128.98" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Site</text></g></g><rect x="266.7" y="113" width="78" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="266.7" y="113" width="78" height="20" rx="3" fill="url(#svgimg7bg23)"/><rect x="267.5" y="113.5" width="77" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp24)"><g clip-path="url(#svgimg7ct25)"><text x="272.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">site:Karachi</text></g></g><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="url(#svgimg7bg26)"/><rect x="349.5" y="113.5" width="73" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp27)"><g clip-path="url(#svgimg7ct28)"><text x="354.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">site:Lahore</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="103.5" x2="423" y2="103.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp29)"><g clip-path="url(#svgimg7ct30)"><text x="37" y="169.78" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(245,245,247)">Content</text></g></g><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="url(#svgimg7bg31)"/><rect x="224.5" y="154.5" width="89" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp32)"><g clip-path="url(#svgimg7ct33)"><text x="229.91" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">has:questions</text></g></g><g opacity="0.5" style="isolation:isolate"><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="rgba(228,228,255,0.075)"/><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="url(#svgimg7bg34)"/><rect x="318.5" y="154.5" width="104" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp35)"><g clip-path="url(#svgimg7ct36)"><text x="323.73" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(194,194,198)">has:attachments</text></g></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="143.5" x2="423" y2="143.5" stroke="rgba(253, 253, 255, 0.196)" stroke-width="1"/></g></g></g></g></g></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 410" width="492" height="410"><defs><clipPath id="cp0"><rect x="16" y="38" width="460" height="88"/></clipPath><clipPath id="cp1"><rect x="16" y="164" width="460" height="230"/></clipPath><clipPath id="ct2"><rect x="16" y="16" width="460" height="22"/></clipPath><clipPath id="irc3"><rect x="16" y="38" width="460" height="88" rx="0"/></clipPath><clipPath id="ct5"><rect x="16" y="142" width="460" height="22"/></clipPath><clipPath id="irc6"><rect x="16" y="164" width="460" height="230" rx="0"/></clipPath></defs><rect x="0" y="0" width="492" height="410" rx="0" fill="rgb(255,255,255)"/><text x="16" y="28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="600" fill="rgb(110,110,115)">Removable, Link, and Plain Tags</text><g clip-path="url(#cp0)"><g clip-path="url(#irc3)"><clipPath id="svgimg4vclip"><rect x="16" y="38" width="460" height="88"/></clipPath><g clip-path="url(#svgimg4vclip)"><g transform="translate(16 38)"><defs><clipPath id="svgimg4cp0"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="svgimg4ct1"><rect x="29" y="28" width="41.2" height="12"/></clipPath><clipPath id="svgimg4cp2"><rect x="78" y="28" width="12.2" height="12"/></clipPath><linearGradient id="svgimg4bg4" gradientUnits="userSpaceOnUse" x1="158.2422" y1="21" x2="158.2422" y2="47"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg4cp5"><rect x="120" y="28" width="12.2" height="12"/></clipPath><clipPath id="svgimg4cp7"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="svgimg4ct8"><rect x="136.2" y="25.6" width="60.2" height="16.8"/></clipPath><clipPath id="svgimg4cp9"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath><clipPath id="svgimg4ct10"><rect x="222.3" y="28" width="47.9" height="12"/></clipPath></defs><rect x="20" y="20" width="83.2" height="28" rx="14" fill="rgb(235,244,252)"/><rect x="20.5" y="20.5" width="82" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg4cp0)"><g clip-path="url(#svgimg4ct1)"><text x="29" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(26,93,207)">Urgent</text></g></g><g clip-path="url(#svgimg4cp2)"><g color="rgb(26, 93, 207)"><clipPath id="svgimg4svgic3"><rect x="78.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgimg4svgic3)"><g transform="matrix(.75 0 0 .75 78.156 28)"><path d="m3.5 3.5 9 9m0-9-9 9" fill="none" stroke="rgb(26, 93, 207)" stroke-width="1.75" stroke-linecap="round" stroke-dasharray="none" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1" opacity="1" style="marker:none;vector-effect:none;color-interpolation:srgb"/></g></g></g></g><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="rgba(0,0,98,0.05)"/><rect x="111.2" y="20" width="94.2" height="28" rx="14" fill="url(#svgimg4bg4)"/><rect x="111.5" y="20.5" width="93" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg4cp5)"><g color="rgb(98, 98, 103)"><clipPath id="svgimg4svgic6"><rect x="120.2" y="28" width="12" height="12"/></clipPath><g clip-path="url(#svgimg4svgic6)"><g transform="matrix(.5 0 0 .5 120.156 28)"><path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2 2 0 0 1 1.7.7l3.6 3.6A2 2 0 0 1 20 8v12a2 2 0 0 1-2 2Z" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M14 2v5a1 1 0 0 0 1 1h5" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M10 9H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 13H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/><path d="M16 17H8" style="marker:none;vector-effect:none;color-interpolation:srgb" fill="none" stroke="rgb(98, 98, 103)" stroke-width="2px" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="1" fill-opacity="1" opacity="1"/></g></g></g></g><g clip-path="url(#svgimg4cp7)"><g clip-path="url(#svgimg4ct8)"><text x="136.16" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(98,98,103)">report.md</text></g></g><rect x="213.3" y="20" width="65.9" height="28" rx="14" fill="rgb(29,29,31)"/><rect x="213.5" y="20.5" width="65" height="27" rx="13.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg4cp9)"><g clip-path="url(#svgimg4ct10)"><text x="222.33" y="38" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="650" fill="rgb(255,255,255)">Backlog</text></g></g></g></g></g></g><text x="16" y="154" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="12" font-weight="600" fill="rgb(110,110,115)">Action Chips in a Compact Value Table</text><g clip-path="url(#cp1)"><g clip-path="url(#irc6)"><clipPath id="svgimg7vclip"><rect x="16" y="164" width="460" height="230"/></clipPath><g clip-path="url(#svgimg7vclip)"><g transform="translate(16 164)"><defs><clipPath id="svgimg7cp0"><rect x="28" y="20" width="404" height="165.2"/></clipPath><clipPath id="svgimg7ov1"><rect x="29" y="21" width="402" height="163.2" rx="11"/></clipPath><clipPath id="svgimg7cp2"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><clipPath id="svgimg7ct3"><rect x="37" y="32.4" width="46.5" height="18"/></clipPath><linearGradient id="svgimg7bg4" gradientUnits="userSpaceOnUse" x1="266.7813" y1="32.3906" x2="266.7813" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp5"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><clipPath id="svgimg7ct6"><rect x="246.5" y="33.7" width="40.5" height="15.4"/></clipPath><linearGradient id="svgimg7bg7" gradientUnits="userSpaceOnUse" x1="321.7266" y1="32.3906" x2="321.7266" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp8"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><clipPath id="svgimg7ct9"><rect x="303" y="33.7" width="37.4" height="15.4"/></clipPath><linearGradient id="svgimg7bg10" gradientUnits="userSpaceOnUse" x1="386.7109" y1="32.3906" x2="386.7109" y2="50.3906"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp11"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="svgimg7ct12"><rect x="356.4" y="33.7" width="60.6" height="15.4"/></clipPath><clipPath id="svgimg7cp13"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><clipPath id="svgimg7ct14"><rect x="37" y="73.2" width="77.8" height="18"/></clipPath><linearGradient id="svgimg7bg15" gradientUnits="userSpaceOnUse" x1="329.8047" y1="73.1875" x2="329.8047" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp16"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><clipPath id="svgimg7ct17"><rect x="309.8" y="74.5" width="40" height="15.4"/></clipPath><linearGradient id="svgimg7bg18" gradientUnits="userSpaceOnUse" x1="391.4063" y1="73.1875" x2="391.4063" y2="91.1875"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp19"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="svgimg7ct20"><rect x="365.8" y="74.5" width="51.2" height="15.4"/></clipPath><clipPath id="svgimg7cp21"><rect x="37" y="114" width="27.7" height="18"/></clipPath><clipPath id="svgimg7ct22"><rect x="37" y="114" width="27.7" height="18"/></clipPath><linearGradient id="svgimg7bg23" gradientUnits="userSpaceOnUse" x1="305.7188" y1="113.9844" x2="305.7188" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp24"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><clipPath id="svgimg7ct25"><rect x="272.7" y="115.3" width="66" height="15.4"/></clipPath><linearGradient id="svgimg7bg26" gradientUnits="userSpaceOnUse" x1="385.8594" y1="113.9844" x2="385.8594" y2="131.9844"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp27"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="svgimg7ct28"><rect x="354.7" y="115.3" width="62.3" height="15.4"/></clipPath><clipPath id="svgimg7cp29"><rect x="37" y="154.8" width="58" height="18"/></clipPath><clipPath id="svgimg7ct30"><rect x="37" y="154.8" width="58" height="18"/></clipPath><linearGradient id="svgimg7bg31" gradientUnits="userSpaceOnUse" x1="268.8203" y1="154.7813" x2="268.8203" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp32"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><clipPath id="svgimg7ct33"><rect x="229.9" y="156.1" width="77.8" height="15.4"/></clipPath><linearGradient id="svgimg7bg34" gradientUnits="userSpaceOnUse" x1="370.3672" y1="154.7813" x2="370.3672" y2="172.7813"><stop offset="0" stop-color="rgba(0,0,0,0)"/><stop offset="1" stop-color="rgba(0,0,0,0)"/></linearGradient><clipPath id="svgimg7cp35"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath><clipPath id="svgimg7ct36"><rect x="323.7" y="156.1" width="93.3" height="15.4"/></clipPath></defs><g clip-path="url(#svgimg7cp0)"><rect x="28" y="20" width="404" height="165.2" rx="12" fill="rgba(0,0,98,0.05)"/><rect x="28.5" y="20.5" width="403" height="164" rx="11.5" fill="none" stroke="rgba(0,0,28,0.18)" stroke-width="1"/></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp2)"><g clip-path="url(#svgimg7ct3)"><text x="37" y="47.39" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Status</text></g></g><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="240.5" y="31.4" width="52.5" height="20" rx="3" fill="url(#svgimg7bg4)"/><rect x="241.5" y="31.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp5)"><g clip-path="url(#svgimg7ct6)"><text x="246.53" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:draft</text></g></g><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="297" y="31.4" width="49.4" height="20" rx="3" fill="url(#svgimg7bg7)"/><rect x="297.5" y="31.5" width="48" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp8)"><g clip-path="url(#svgimg7ct9)"><text x="303.03" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:sent</text></g></g><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="350.4" y="31.4" width="72.6" height="20" rx="3" fill="url(#svgimg7bg10)"/><rect x="350.5" y="31.5" width="72" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp11)"><g clip-path="url(#svgimg7ct12)"><text x="356.42" y="45.89" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:awarded</text></g></g></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp13)"><g clip-path="url(#svgimg7ct14)"><text x="37" y="88.19" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Ownership</text></g></g><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="303.8" y="72.2" width="52" height="20" rx="3" fill="url(#svgimg7bg15)"/><rect x="304.5" y="72.5" width="51" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp16)"><g clip-path="url(#svgimg7ct17)"><text x="309.8" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:mine</text></g></g><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="359.8" y="72.2" width="63.2" height="20" rx="3" fill="url(#svgimg7bg18)"/><rect x="360.5" y="72.5" width="62" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp19)"><g clip-path="url(#svgimg7ct20)"><text x="365.81" y="86.69" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">is:shared</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="62.5" x2="423" y2="62.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp21)"><g clip-path="url(#svgimg7ct22)"><text x="37" y="128.98" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Site</text></g></g><rect x="266.7" y="113" width="78" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="266.7" y="113" width="78" height="20" rx="3" fill="url(#svgimg7bg23)"/><rect x="267.5" y="113.5" width="77" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp24)"><g clip-path="url(#svgimg7ct25)"><text x="272.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">site:Karachi</text></g></g><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="348.7" y="113" width="74.3" height="20" rx="3" fill="url(#svgimg7bg26)"/><rect x="349.5" y="113.5" width="73" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp27)"><g clip-path="url(#svgimg7ct28)"><text x="354.72" y="127.48" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">site:Lahore</text></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="103.5" x2="423" y2="103.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g><g clip-path="url(#svgimg7ov1)"><g clip-path="url(#svgimg7cp29)"><g clip-path="url(#svgimg7ct30)"><text x="37" y="169.78" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="16" fill="rgb(29,29,31)">Content</text></g></g><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="223.9" y="153.8" width="89.8" height="20" rx="3" fill="url(#svgimg7bg31)"/><rect x="224.5" y="154.5" width="89" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp32)"><g clip-path="url(#svgimg7ct33)"><text x="229.91" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">has:questions</text></g></g><g opacity="0.5" style="isolation:isolate"><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="rgba(0,0,98,0.05)"/><rect x="317.7" y="153.8" width="105.3" height="20" rx="3" fill="url(#svgimg7bg34)"/><rect x="318.5" y="154.5" width="104" height="19" rx="2.5" fill="none" stroke="rgba(0,0,0,0)" stroke-width="1"/><g clip-path="url(#svgimg7cp35)"><g clip-path="url(#svgimg7ct36)"><text x="323.73" y="168.28" font-family="system-ui, &quot;-apple-system&quot;, sans-serif" font-size="11" font-weight="650" fill="rgb(98,98,103)">has:attachments</text></g></g></g><g data-domotion-pseudo-source="blink-pseudo-fragment-v1" data-domotion-pseudo="::before" data-domotion-pseudo-owner="source-fragments"><g><line x1="37" y1="143.5" x2="423" y2="143.5" stroke="rgba(0, 0, 28, 0.18)" stroke-width="1"/></g></g></g></g></g></g></g></svg>
package/llms.txt CHANGED
@@ -610,6 +610,10 @@ headingLevel`, `TokenSearchField clearIcon`, `ContentItem frame="framed"` for a
610
610
  A sibling helper can call `model.commit(value)` for the active `name:` prefix
611
611
  even when that value is not suggested; invalid values and missing prefixes
612
612
  leave state unchanged.
613
+ A managed field subscribes the host render only to `model.structure`
614
+ (committed tokens, empty or non-empty text, editor revision), so typing plain
615
+ text never re-runs it; in the host's own render read `model.state.peek()` and
616
+ bind `model.result` as a signal hole instead of reading `model.state.value`.
613
617
  The one richer case is `wireTokenSearchFields`, which manages the
614
618
  collapsible field's expand/collapse/focus by default (on, per-behavior opt-out) and
615
619
  exposes the `expanded` signal on its handle — bind it in render or hand in your own
@@ -767,6 +771,14 @@ created, input }`. Never use a hand-styled `<input list>` + `<datalist>`.
767
771
  `external` (new tab, safe rel, announced) are optional, and a link chip has
768
772
  no remove button. Inside a ContentItem bubble set `tone="inherit"` so it
769
773
  follows the bubble's foreground instead of styling an anchor yourself.
774
+ - **Use an action `Chip` for a value the user activates once.** `action` (with
775
+ `itemId`) renders the whole chip as a native
776
+ `<button type="button" data-action data-item-id>` for a delegated handler,
777
+ such as a search help filter token that inserts itself into the query, with
778
+ hover, press, focus-ring, and `disabled` states. `actionLabel` is an optional
779
+ accessible name that contains the visible label. It cannot also take `href`
780
+ or `removeAction`. A compact rounded action chip keeps a compact `Badge`'s row
781
+ height in a compact `ValueTable` cell; never make a `Badge` clickable.
770
782
  - **Use `ChoiceChips` for a wrapping exclusive choice.** When one value comes
771
783
  from a visible set too large for a `SegmentedControl` track (a nine-color
772
784
  palette in a 560px dialog), render separate pills backed by native radios:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kerfjs/ui",
3
- "version": "5.0.0-beta.102",
3
+ "version": "5.0.0-beta.104",
4
4
  "description": "Accessible, composable UI primitives for kerf applications.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/chip/chip.tsx"],"names":[],"mappings":"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","file":"chunk-34U4ANDJ.js","sourcesContent":["import type { SafeHtml } from 'kerfjs';\n\nimport type { SemanticTone } from '../../../shared/styles/semantic-tone.js';\nimport type { BadgeAppearance, BadgeShape, BadgeSize } from '../badge/badge.js';\n\n/**\n * A chip color role: a shared semantic tone, or `inherit`, which follows the\n * surrounding foreground (a chip inside a `brand-loud` ContentItem bubble)\n * and derives its fill, border, and focus ring from `currentColor`.\n */\nexport type ChipTone = SemanticTone | 'inherit';\n\ninterface ChipCommonProps {\n /** Decorative leading icon, normally an unsized LucideIcon. */\n icon?: SafeHtml;\n tone?: ChipTone;\n appearance?: BadgeAppearance;\n shape?: BadgeShape;\n size?: BadgeSize;\n disabled?: boolean;\n /** Record identifier available to an application delegated action handler. */\n itemId?: string;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\ntype ChipLabelProps =\n | { children: SafeHtml | string | number; truncate?: false }\n | { children: string; truncate: true };\n\ninterface ChipNoLinkProps {\n href?: never;\n download?: never;\n external?: never;\n}\n\n/**\n * A link chip renders a native `<a>` with Chip geometry. It cannot also carry\n * a remove button, because a button inside a link is invalid.\n */\ninterface ChipLinkProps {\n /** Native destination; the chip renders as an `<a>`. */\n href: string;\n /** Download the destination: `true`, or the suggested file name. */\n download?: string | boolean;\n /** Open in a new tab with a safe rel and announce that behavior. */\n external?: boolean;\n removeAction?: never;\n removeLabel?: never;\n}\n\n/**\n * A plain chip, a removable chip (a delegated action plus a specific\n * accessible name), or a link chip (`href`, optional `download`/`external`).\n */\nexport type ChipProps = ChipCommonProps &\n ChipLabelProps &\n (\n | ({ removeAction: string; removeLabel: string } & ChipNoLinkProps)\n | ({ removeAction?: never; removeLabel?: never } & ChipNoLinkProps)\n | ChipLinkProps\n );\n\nfunction removeButton(action: string, label: string, disabled: boolean) {\n return (\n <button\n class=\"kui-chip__remove\"\n type=\"button\"\n data-action={action}\n aria-label={label}\n disabled={disabled}\n >\n <svg viewBox=\"0 0 16 16\" width=\"12\" height=\"12\" aria-hidden=\"true\">\n <path\n d=\"M3.5 3.5 12.5 12.5M12.5 3.5 3.5 12.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n );\n}\n\nfunction downloadValue(download: string | boolean | undefined) {\n switch (download) {\n case undefined:\n case false:\n return undefined;\n case true:\n return '';\n default:\n return download;\n }\n}\n\n/**\n * A short label with an optional native remove button, or a native link when\n * `href` is set. The application owns removal and the link destination.\n */\nexport function Chip({\n children,\n icon,\n truncate = false,\n tone = 'neutral',\n appearance = 'quiet',\n shape = 'pill',\n size = 'default',\n disabled = false,\n itemId,\n className = '',\n slot,\n href,\n download,\n external = false,\n removeAction,\n removeLabel,\n}: ChipProps) {\n if (truncate && typeof children !== 'string')\n throw new TypeError('Chip truncate requires a plain text label');\n const content = (\n <>\n {icon === undefined ? null : (\n <span class=\"kui-chip__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span\n class=\"kui-chip__label\"\n title={truncate ? String(children) : undefined}\n >\n {children}\n </span>\n </>\n );\n const rootClass = `kui-chip ${className}`.trim();\n if (href !== undefined) {\n const textLabel =\n typeof children === 'string' || typeof children === 'number'\n ? String(children)\n : undefined;\n return (\n <a\n class={rootClass}\n href={disabled ? undefined : href}\n download={disabled ? undefined : downloadValue(download)}\n target={disabled || !external ? undefined : '_blank'}\n rel={disabled || !external ? undefined : 'noopener noreferrer'}\n tabindex={disabled ? -1 : undefined}\n aria-label={\n external && textLabel !== undefined\n ? `${textLabel} (opens in new tab)`\n : undefined\n }\n aria-disabled={disabled ? 'true' : undefined}\n data-component=\"chip\"\n data-link=\"\"\n data-tone={tone}\n data-appearance={appearance}\n data-shape={shape}\n data-size={size}\n data-disabled={disabled ? '' : undefined}\n data-truncate={truncate ? '' : undefined}\n data-item-id={itemId}\n slot={slot}\n >\n {content}\n </a>\n );\n }\n return (\n <span\n class={rootClass}\n data-component=\"chip\"\n data-tone={tone}\n data-appearance={appearance}\n data-shape={shape}\n data-size={size}\n data-disabled={disabled ? '' : undefined}\n data-truncate={truncate ? '' : undefined}\n data-item-id={itemId}\n slot={slot}\n >\n {content}\n {removeAction !== undefined && removeLabel !== undefined\n ? removeButton(removeAction, removeLabel, disabled)\n : null}\n </span>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/forms/token-search-field/model/token-search-model.ts"],"names":["commit"],"mappings":"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","file":"chunk-IM3GKYOG.js","sourcesContent":["import { type Signal, signal } from 'kerfjs';\n\nimport type {\n TokenSearchFieldValue,\n TokenSearchToken,\n} from '../token-search-field.js';\n\nexport interface TokenSearchRule {\n /** The word before `:` (for example `tag` or `status`). */\n name: string;\n /** Return a canonical value, or undefined to leave invalid input as text. */\n parse?: (input: string) => string | undefined;\n /** Label for a committed chip. Defaults to `name:input`. */\n label?: (value: string, input: string) => string;\n /** Suggestions for the unfinished value after `name:`, with current committed tokens. */\n suggest?: (\n input: string,\n state: TokenSearchState,\n ) => readonly (string | { value: string; label: string })[];\n}\n\nexport interface TokenSearchResolvedToken extends TokenSearchToken {\n kind: string;\n parsedValue: string;\n}\n\nexport interface TokenSearchState {\n query: string;\n tokens: TokenSearchResolvedToken[];\n}\n\nexport interface TokenSearchSuggestion {\n value: string;\n label: string;\n}\n\nexport interface TokenSearchModel<Result = unknown> {\n state: Signal<TokenSearchState>;\n /** Changes when a model action must replace DOM-owned editor text. */\n editorRevision: Signal<number>;\n suggestions: Signal<readonly TokenSearchSuggestion[]>;\n result: Signal<Result | undefined>;\n edit(value: TokenSearchFieldValue, commit?: boolean): void;\n /** Replace app-owned search state and rebuild the DOM-owned editor text. */\n replace(value: TokenSearchFieldValue): void;\n submit(value: TokenSearchFieldValue): void;\n choose(value: string): void;\n /** Commit a value for the active `name:` prefix, even when it is not suggested. */\n commit(value: string): void;\n expandToken(value: string): void;\n remove(value: string): void;\n clear(): void;\n dismiss(): void;\n}\n\nexport interface TokenSearchModelOptions<Result> {\n rules?: readonly TokenSearchRule[];\n initial?: TokenSearchFieldValue;\n /** Runs after every state change, including initial state. */\n evaluate?: (state: TokenSearchState) => Result;\n onSubmit?: (state: TokenSearchState, result: Result | undefined) => void;\n}\n\nconst escapePattern = (text: string) =>\n text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\nconst quote = (text: string) =>\n /[\\s()\"\\\\]/.test(text)\n ? `\"${text.replaceAll('\\\\', '\\\\\\\\').replaceAll('\"', '\\\\\"')}\"`\n : text;\nconst unquote = (text: string) =>\n text.startsWith('\"') && text.endsWith('\"')\n ? text.slice(1, -1).replace(/\\\\([\"\\\\])/g, '$1')\n : text;\n\n/** Opt-in state, token parsing, suggestions, and evaluation for TokenSearchField. */\nexport function createTokenSearchModel<Result = unknown>({\n rules = [],\n initial = { query: '', tokens: [] },\n evaluate,\n onSubmit,\n}: TokenSearchModelOptions<Result> = {}): TokenSearchModel<Result> {\n const byName = new Map(rules.map((rule) => [rule.name.toLowerCase(), rule]));\n if (\n byName.size !== rules.length ||\n rules.some((rule) => !/^[\\w-]+$/.test(rule.name))\n )\n throw new Error('Token search rule names must be unique words');\n const names = [...byName.keys()].map(escapePattern).join('|');\n const pattern = names\n ? new RegExp(\n `(?:^|[\\\\s(])((?:${names}):(?:\"(?:\\\\\\\\.|[^\"])*\"|[^\"\\\\s()][^\\\\s()]*))(?=$|[\\\\s)])`,\n 'gi',\n )\n : undefined;\n const activePattern = names\n ? new RegExp(\n `(?:^|[\\\\s(])((?:${names}):(?:\"(?:\\\\\\\\.|[^\"])*|[^\\\\s()]*))$`,\n 'i',\n )\n : undefined;\n\n const resolve = (\n raw: string,\n offset: number,\n ): TokenSearchResolvedToken | undefined => {\n const separator = raw.indexOf(':');\n const kind = raw.slice(0, separator).toLowerCase();\n const rule = byName.get(kind);\n if (!rule || separator < 0) return;\n const input = unquote(raw.slice(separator + 1));\n if (!input) return;\n const parsedValue = rule.parse ? rule.parse(input) : input;\n if (parsedValue === undefined) return;\n return {\n kind,\n parsedValue,\n value: `${kind}:${quote(input)}`,\n label: rule.label?.(parsedValue, input) ?? `${kind}:${input}`,\n offset,\n };\n };\n\n const rehydrate = (\n token: TokenSearchToken,\n ): TokenSearchResolvedToken | undefined => {\n const resolved = resolve(token.value, token.offset ?? 0);\n return resolved ? { ...resolved, ...token } : undefined;\n };\n\n const state = signal<TokenSearchState>({\n query: initial.query,\n tokens: initial.tokens.flatMap((token) => {\n const resolved = rehydrate(token);\n return resolved ? [resolved] : [];\n }),\n });\n const editorRevision = signal(0);\n const suggestions = signal<readonly TokenSearchSuggestion[]>([]);\n const result = signal<Result | undefined>(evaluate?.(state.value));\n let activeStart: number | undefined;\n let activeRule: TokenSearchRule | undefined;\n\n const refreshSuggestions = () => {\n const match = activePattern?.exec(state.value.query);\n const raw = match?.[1];\n const separator = raw?.indexOf(':') ?? -1;\n const rule =\n separator < 0\n ? undefined\n : byName.get(raw!.slice(0, separator).toLowerCase());\n activeRule = rule;\n const input = separator < 0 ? '' : unquote(raw!.slice(separator + 1));\n activeStart =\n match && raw ? match.index + match[0].lastIndexOf(raw) : undefined;\n suggestions.value = (rule?.suggest?.(input, state.value) ?? []).flatMap(\n (candidate) => {\n const value =\n typeof candidate === 'string' ? candidate : candidate.value;\n const token = resolve(`${rule!.name}:${quote(value)}`, 0);\n return token\n ? [\n {\n value: token.value,\n label:\n typeof candidate === 'string' ? token.label : candidate.label,\n },\n ]\n : [];\n },\n );\n };\n const publish = (next: TokenSearchState) => {\n state.value = next;\n result.value = evaluate?.(next);\n refreshSuggestions();\n };\n refreshSuggestions();\n\n const edit = (value: TokenSearchFieldValue, commit = false) => {\n let query = '';\n let cursor = 0;\n const added: TokenSearchResolvedToken[] = [];\n const removed: Array<{ start: number; end: number }> = [];\n for (const match of value.query.matchAll(pattern ?? /(?!) /g)) {\n const raw = match[1];\n const start = match.index + match[0].lastIndexOf(raw);\n const end = start + raw.length;\n if (end === value.query.length && !commit && !/\\s$/.test(value.query))\n continue;\n const token = resolve(raw, query.length + start - cursor);\n if (!token) continue;\n query += value.query.slice(cursor, start);\n token.offset = query.length;\n added.push(token);\n removed.push({ start, end });\n cursor = end;\n }\n const suffix = value.query.slice(cursor);\n query += added.length && /^\\s+$/.test(suffix) ? '' : suffix;\n const existing = value.tokens.flatMap((token) => {\n const resolved = rehydrate(token);\n if (!resolved) return [];\n const offset = token.offset ?? value.query.length;\n return [\n {\n ...resolved,\n offset:\n offset -\n removed.reduce(\n (total, range) =>\n total + Math.max(0, Math.min(offset, range.end) - range.start),\n 0,\n ),\n },\n ];\n });\n const tokens = [...existing, ...added].sort(\n (left, right) => (left.offset ?? 0) - (right.offset ?? 0),\n );\n publish({ query, tokens });\n };\n\n const commitResolved = (token: TokenSearchResolvedToken | undefined) => {\n if (!token || activeStart === undefined) return;\n const query = state.value.query.slice(0, activeStart);\n publish({ query, tokens: [...state.value.tokens, token] });\n };\n const choose = (value: string) => {\n if (\n activeStart === undefined ||\n !suggestions.value.some((suggestion) => suggestion.value === value)\n )\n return;\n commitResolved(resolve(value, activeStart));\n };\n const commit = (value: string) => {\n if (!activeRule || activeStart === undefined) return;\n commitResolved(resolve(`${activeRule.name}:${quote(value)}`, activeStart));\n };\n\n return {\n state,\n editorRevision,\n suggestions,\n result,\n edit,\n replace(value) {\n edit(value);\n editorRevision.value++;\n },\n submit(value) {\n edit(value, true);\n onSubmit?.(state.value, result.value);\n },\n choose,\n commit,\n expandToken(value) {\n const index = state.value.tokens.findIndex(\n (token) => token.value === value,\n );\n if (index < 0) return;\n const offset = Math.max(\n 0,\n Math.min(\n state.value.query.length,\n state.value.tokens[index].offset ?? state.value.query.length,\n ),\n );\n const insertion = `${value} `;\n publish({\n query: `${state.value.query.slice(0, offset)}${insertion}${state.value.query.slice(offset)}`,\n tokens: state.value.tokens.flatMap((token, at) =>\n at === index\n ? []\n : [\n {\n ...token,\n offset:\n (token.offset ?? 0) + (at > index ? insertion.length : 0),\n },\n ],\n ),\n });\n },\n remove(value) {\n const index = state.value.tokens.findIndex(\n (token) => token.value === value,\n );\n if (index < 0) return;\n publish({\n ...state.value,\n tokens: state.value.tokens.filter((_, at) => at !== index),\n });\n },\n clear() {\n publish({ query: '', tokens: [] });\n editorRevision.value++;\n },\n dismiss() {\n suggestions.value = [];\n },\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/forms/token-search-field/token-search-field.tsx"],"names":[],"mappings":";;;;AAmJA,SAAS,YAAA,CACP,OACA,MAAA,EACmB;AACnB,EAAA,MAAM,OAAA,GAAU,MAAA,CACb,GAAA,CAAI,CAAC,OAAO,KAAA,MAAW;AAAA,IACtB,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,MAAM,CAAC;AAAA,IACxE,CAAA,CACD,IAAA;AAAA,IACC,CAAC,MAAM,KAAA,KAAU,IAAA,CAAK,SAAS,KAAA,CAAM,MAAA,IAAU,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM;AAAA,GACpE;AACF,EAAA,MAAM,QAA2B,EAAC;AAClC,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,KAAA,MAAW,EAAE,KAAA,EAAO,MAAA,EAAO,IAAK,OAAA,EAAS;AACvC,IAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,MAAM,KAAA,CAAM,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA;AAC/D,IAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAO,EAAG,CAAA;AACzD,IAAA,MAAA,GAAS,MAAA;AAAA,EACX;AACA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA,EAAG,CAAA;AACvD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,SAAA,GAAY;AACnB,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,CAAA,EAAG,MAAK,GAAA,EAAI,CAAA;AACvC;AAEO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,EAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,EAAA;AAAA,EACR,SAAS,EAAC;AAAA,EACV,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,gBAAA,GAAmB,kBAAA;AAAA,EACnB,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,IAAA,GAAO,KAAA;AAAA,EACP,WAAA,GAAc,KAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,YAAA,GAAe,qBAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA,GAAe,YAAA;AAAA,EACf,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA,GAAa,mBAAA;AAAA,EACb,YAAA,GAAe,qBAAA;AAAA,EACf,WAAA,GAAc,oBAAA;AAAA,EACd,UAAA,GAAa,cAAA;AAAA,EACb,SAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,mBAAmB,EAAC;AAAA,EACpB;AACF,CAAA,EAA0B;AACxB,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,KAAA,CAAM,KAAA;AAC1B,IAAA,MAAA,GAAS,KAAA,CAAM,MAAM,KAAA,CAAM,MAAA;AAAA,EAC7B;AACA,EAAA,MAAM,WAAA,GAAc,KAAA,EAAO,WAAA,CAAY,KAAA,IAAS,EAAC;AACjD,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,EAAO,MAAM,CAAA;AACxC,EAAA,MAAM,QAAA,GAAW,OAAO,GAAA,CAAI,CAAC,UAAU,KAAA,CAAM,KAAK,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC5D,EAAA,MAAM,GAAA,GAAM,KAAA,GACR,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,MAAA,CAAO,QAAA,IAAY,EAAE,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,cAAA,CAAe,KAAK,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,GACzE,QAAA,KAAa,MAAA,GACX,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,GACjB,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,MAAA,CAAO,QAAQ,CAAC,IAAI,QAAQ,CAAA,CAAA;AAC3C,EAAA,MAAM,gBAAA,GACJ,CAAC,WAAA,IAAe,QAAA,IAAY,MAAM,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AAClE,EAAA,MAAM,OAAA,mBACJ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAO,CAAA,iBAAA,EAAoB,YAAA,KAAiB,eAAe,EAAA,GAAK,SAAS,GAAG,IAAA,EAAK;AAAA,MACjF,gBAAA,EAAe,oBAAA;AAAA,MACf,sBAAA,EAAsB,EAAA;AAAA,MACtB,eAAA,EAAe,OAAO,QAAQ,CAAA;AAAA,MAC9B,kBAAA,EAAkB,OAAO,WAAW,CAAA;AAAA,MACpC,eAAA,EAAe,OAAO,gBAAgB,CAAA;AAAA,MACtC,WAAA,EAAW,OAAO,IAAI,CAAA;AAAA,MACtB,mBAAA,EAAmB,MAAA,CAAO,OAAA,CAAQ,QAAA,IAAY,cAAc,CAAC,CAAA;AAAA,MAC7D,mBAAA,EAAmB,YAAA;AAAA,MACnB,kBAAA,EAAkB,MAAA,CAAO,MAAA,GAAS,gBAAA,GAAmB,WAAA;AAAA,MACrD,0BAAA,EAA0B,MAAA;AAAA,QACxB,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,MAAA,CAAO,MAAA,KAAW;AAAA,OAC1C;AAAA,MACA,IAAA;AAAA,MAEC,WAAC,gBAAA,mBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,KAAA,EAAM,0BAAA;AAAA,UACN,aAAA,EAAa,YAAA;AAAA,UACb,cAAY,WAAA,IAAe,KAAA;AAAA,UAC3B,OAAO,WAAA,IAAe,KAAA;AAAA,UACtB,QAAA;AAAA,UAEA,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,MAAK,QAAA,EAAS;AAAA;AAAA,0BAG1C,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAM,2BAAA,EAA4B,aAAA,EAAY,MAAA,EACjD,QAAA,EAAA,OAAA,oBAAW,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAK,QAAA,EAAS,CAAA,EACtD,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACE,GAAG,gBAAA;AAAA,YACJ,KAAA,EAAM,0BAAA;AAAA,YACN,UAAA,EAAU,GAAA;AAAA,YACV,iBAAA,EAAe,IAAA;AAAA,YACf,0BAAA,EAA0B,EAAA;AAAA,YAC1B,oBAAkB,MAAA,CAAO,MAAA;AAAA,YACzB,kBAAA,EAAkB,MAAA,CAAO,MAAA,GAAS,gBAAA,GAAmB,WAAA;AAAA,YACrD,IAAA,EAAK,WAAA;AAAA,YACL,YAAA,EAAY,YAAA,KAAiB,YAAA,GAAe,MAAA,GAAY,KAAA;AAAA,YACxD,iBAAA,EACE,YAAA,KAAiB,YAAA,GAAe,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,YAElD,oBACE,YAAA,KAAiB,YAAA,IAAgB,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA;AAAA,YAEzD,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,YACnC,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,YACnC,eAAA,EAAiB,WAAW,OAAA,GAAU,MAAA;AAAA,YACtC,UAAA,EAAW,OAAA;AAAA,YACX,SAAA;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,cAAI,CAAC,IAAA,KACV,IAAA,CAAK,IAAA,KAAS,MAAA,mBACZ,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,wBAAA,EAAsB,IAAA;AAAA,kBACtB,YAAA,EAAY,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA,kBAEzC,QAAA,EAAA,IAAA,CAAK,KAAA,KAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,EAAA;AAAA;AAAA,eAC7C,mBAEA,IAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAM,yBAAA;AAAA,kBACN,eAAA,EAAgB,OAAA;AAAA,kBAChB,gBAAA,EAAe,oBAAA;AAAA,kBACf,kBAAA,EAAkB,KAAK,KAAA,CAAM,KAAA;AAAA,kBAE7B,QAAA,EAAA;AAAA,oCAAA,GAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,QAAA;AAAA,wBACL,KAAA,EAAM,8BAAA;AAAA,wBACN,aAAA,EAAa,UAAA;AAAA,wBACb,kBAAA,EAAkB,KAAK,KAAA,CAAM,KAAA;AAAA,wBAC7B,cAAY,CAAA,KAAA,EAAQ,IAAA,CAAK,MAAM,eAAA,IAAmB,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,wBAClE,QAAA;AAAA,wBAEC,eAAK,KAAA,CAAM;AAAA;AAAA,qBACd;AAAA,oCACA,GAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,QAAA;AAAA,wBACL,KAAA,EAAM,gCAAA;AAAA,wBACN,aAAA,EAAa,YAAA;AAAA,wBACb,kBAAA,EAAkB,KAAK,KAAA,CAAM,KAAA;AAAA,wBAC7B,cAAY,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,eAAA,IAAmB,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,wBACpE,QAAA;AAAA,wBAEA,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA;AACb;AAAA;AAAA;AACF;AAEJ;AAAA,SACF;AAAA,QAAA,CACE,KAAA,IAAS,MAAA,CAAO,MAAA,GAAS,CAAA,qBACzB,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAM,yBAAA;AAAA,YACN,aAAA,EAAa,WAAA;AAAA,YACb,YAAA,EAAY,UAAA;AAAA,YACZ,KAAA,EAAO,UAAA;AAAA,YACP,QAAA;AAAA,YAEC,QAAA,EAAA,SAAA,wBAAc,SAAA,EAAA,EAAU;AAAA;AAAA,SAC3B;AAAA,QAED,cAAA,mBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACE,GAAG,cAAA,CAAe,UAAA;AAAA,YACnB,IAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAM,mCAAA;AAAA,YACN,IAAI,cAAA,CAAe,EAAA;AAAA,YACnB,eAAa,cAAA,CAAe,MAAA;AAAA,YAC5B,cAAY,cAAA,CAAe,KAAA;AAAA,YAC3B,iBACE,cAAA,CAAe,QAAA,KAAa,SACxB,MAAA,GACA,MAAA,CAAO,eAAe,QAAQ,CAAA;AAAA,YAEpC,gBACE,cAAA,CAAe,OAAA,KAAY,SACvB,MAAA,GACA,MAAA,CAAO,eAAe,OAAO,CAAA;AAAA,YAEnC,iBAAe,cAAA,CAAe,QAAA;AAAA,YAC9B,iBAAe,cAAA,CAAe,QAAA;AAAA,YAC9B,OAAO,cAAA,CAAe,KAAA;AAAA,YACtB,QAAA;AAAA,YAEC,QAAA,EAAA,cAAA,CAAe;AAAA;AAAA,YAEhB,QAAA,mBACF,GAAA,CAAC,UAAK,KAAA,EAAM,4BAAA,EAA8B,oBAAS,CAAA,GACjD,IAAA;AAAA,QACH,CAAC,QAAA,IAAY,WAAA,CAAY,MAAA,GAAS,CAAA,oBACjC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,+BAAA;AAAA,YACN,6BAAA,EAA2B,IAAA;AAAA,YAE1B,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,qBAChB,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,KAAA,EAAM,8BAAA;AAAA,gBACN,gCAA8B,UAAA,CAAW,KAAA;AAAA,gBAExC,QAAA,EAAA,UAAA,CAAW;AAAA;AAAA,aAEf;AAAA;AAAA;AACH,OAAA,EAEJ;AAAA;AAAA,GAEJ;AAEF,EAAA,IAAI,YAAA,KAAiB,cAAc,OAAO,OAAA;AAC1C,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,wBAAA,EAA2B,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MACnD,8BAAA,EAA8B,EAAA;AAAA,MAE9B,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,+BAAA;AAAA,YACN,EAAA,EAAI,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,YACT,8BAAA,EAA8B,EAAA;AAAA,YAE7B,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cACA,4BACC,GAAA,CAAC,MAAA,EAAA,EAAK,OAAM,kCAAA,EAAmC,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAElE;AAAA;AAAA;AAAA,SAEJ;AAAA,QACC,OAAA;AAAA,QACA,IAAA,wBACE,KAAA,EAAA,EAAI,KAAA,EAAM,gCAA+B,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,EAChD,QAAA,EAAA,IAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAGO,SAAS,oBAAA,CACd,MAAA,EACA,WAAA,GAA2C,EAAC,EACrB;AACvB,EAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,EAAA,MAAM,SAA6B,EAAC;AACpC,EAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,KAAqB;AAClC,IAAA,IAAI,IAAA,CAAK,QAAA,KAAa,IAAA,CAAK,SAAA,EAAW;AACpC,MAAA,KAAA,IAAA,CAAU,IAAA,CAAK,eAAe,EAAA,EAC3B,UAAA,CAAW,QAAU,GAAG,CAAA,CACxB,UAAA,CAAW,QAAA,EAAU,EAAE,CAAA;AAC1B,MAAA;AAAA,IACF;AACA,IAAA,IAAI,EAAE,gBAAgB,WAAA,CAAA,EAAc;AACpC,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,uCAAuC,CAAA,EAAG;AACzD,MAAA,MAAM,KAAA,GAAQ,KAAK,OAAA,CAAQ,UAAA;AAC3B,MAAA,MAAM,QAAQ,WAAA,CAAY,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,KAAK,CAAA;AAC/D,MAAA,IAAI,KAAA,SAAc,IAAA,CAAK,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,CAAA;AAAA,WAAA,IAChD,KAAA;AACP,QAAA,MAAA,CAAO,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,EAAO,OAAO,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAA;AAC3D,MAAA;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,YAAY,IAAA,EAAM;AACzB,MAAA,KAAA,IAAS,GAAA;AACT,MAAA;AAAA,IACF;AACA,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,UAAA,EAAY,KAAA,CAAM,KAAK,CAAA;AAAA,EAClD,CAAA;AACA,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,UAAA,EAAY,KAAA,CAAM,KAAK,CAAA;AAClD,EAAA,OAAO,EAAE,OAAO,MAAA,EAAO;AACzB;AAGO,SAAS,qBAAA,CACd,QACA,MAAA,EACM;AACN,EAAA,MAAA,CAAO,KAAA,CAAM,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AACpC,EAAA,MAAM,SAAA,GAAY,WAAW,YAAA,EAAa;AAC1C,EAAA,IAAI,CAAC,SAAA,EAAW;AAChB,EAAA,MAAM,KAAA,GAAQ,SAAS,WAAA,EAAY;AACnC,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,KAAA,CAAM,mBAAmB,MAAM,CAAA;AAC/B,IAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,EACtB,CAAA,MAAO;AACL,IAAA,IAAI,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA;AAClC,IAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,gBAAA,CAAiB,MAAA,EAAQ,WAAW,SAAA,EAAW;AAAA,MACrE,UAAA,EAAY,CAAC,IAAA,KACX,IAAA,CAAK,aAAA,EAAe,QAAQ,uCAAuC,CAAA,GAC/D,UAAA,CAAW,aAAA,GACX,UAAA,CAAW;AAAA,KAClB,CAAA;AACD,IAAA,KAAA,IAAS,IAAA,GAAO,OAAO,QAAA,EAAS,EAAG,MAAM,IAAA,GAAO,MAAA,CAAO,UAAS,EAAG;AACjE,MAAA,MAAM,MAAA,GAAS,KAAK,WAAA,IAAe,EAAA;AACnC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,QAAA,EAAU,EAAE,CAAA,CAAE,MAAA;AAC/C,MAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,QAAA,KAAA,CAAM,QAAA;AAAA,UACJ,IAAA;AAAA,UACA,WAAW,QAAA,GAAW,CAAA,GAAI,KAAK,GAAA,CAAI,SAAA,EAAW,OAAO,MAAM;AAAA,SAC7D;AACA,QAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AACnB,QAAA,KAAA,GAAQ,IAAA;AACR,QAAA;AAAA,MACF;AACA,MAAA,SAAA,IAAa,MAAA;AAAA,IACf;AACA,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,KAAA,CAAM,mBAAmB,MAAM,CAAA;AAC/B,MAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,IACtB;AAAA,EACF;AACA,EAAA,SAAA,CAAU,eAAA,EAAgB;AAC1B,EAAA,SAAA,CAAU,SAAS,KAAK,CAAA;AAC1B","file":"chunk-MF6ZUUJZ.js","sourcesContent":["import type { SafeHtml } from 'kerfjs';\nimport { Search, X } from 'lucide';\n\nimport type { KerfUiContent } from '../../../shared/content/semantic-content.js';\nimport { LucideIcon } from '../../media/lucide-icon/lucide-icon.js';\nimport type { TokenSearchModel } from './model/token-search-model.js';\n\nexport interface TokenSearchToken {\n value: string;\n label: string;\n offset?: number;\n accessibleLabel?: string;\n}\n\n/**\n * Domain `data-*` metadata for a trailing action button. The component owns\n * `data-action` (pass `action`) and its state attributes.\n */\nexport type TokenSearchTrailingActionAttributes = Readonly<\n Record<`data-${string}`, string | undefined> & {\n 'data-action'?: never;\n 'data-component'?: never;\n 'data-key'?: never;\n }\n>;\n\ninterface TokenSearchTrailingActionBase {\n /** Decorative glyph, such as a `LucideIcon`. */\n icon: SafeHtml;\n /** Accessible name and tooltip, in title style (\"Search Help\"). */\n label: string;\n /** Delegated `data-action` value. */\n action: string;\n id?: string;\n /** `aria-controls`: the id of the surface this button opens or toggles. */\n controls?: string;\n /** `aria-haspopup` for a button that opens a dialog, menu, or listbox. */\n haspopup?: 'dialog' | 'menu' | 'listbox' | 'true';\n /** Domain `data-*` metadata for the app's delegated handler. */\n attributes?: TokenSearchTrailingActionAttributes;\n}\n\n/**\n * A compact icon button in the field's trailing slot, sized and styled like\n * the clear button. Pass `expanded` for a disclosure (a help surface it opens)\n * or `pressed` for a toggle; the button shows the state with its hover fill.\n */\nexport type TokenSearchTrailingAction = TokenSearchTrailingActionBase &\n (\n | { expanded?: boolean; pressed?: never }\n | { expanded?: never; pressed?: boolean }\n );\n\nexport type TokenSearchEditorAttributes = Readonly<\n Record<`data-${string}`, string | undefined> & {\n 'data-component'?: never;\n 'data-key'?: never;\n 'data-morph-skip'?: never;\n 'data-token-search-editor'?: never;\n 'data-token-count'?: never;\n 'data-placeholder'?: never;\n }\n>;\n\ninterface TokenSearchFieldBaseProps {\n id: string;\n label: string;\n query?: string;\n tokens?: readonly TokenSearchToken[];\n /** Opt-in grammar, suggestion, and evaluation state. Overrides `query` and `tokens`. */\n model?: TokenSearchModel;\n /**\n * Editor identity for a programmatic text replacement. The editor's text is\n * DOM-owned between token changes, so a new `query` with the same tokens\n * does not re-render it (that would reset the caret on every keystroke).\n * Change `revision` when the app replaces the text itself — reseeding a\n * persistent dialog's field on reopen, applying a saved search — and the\n * editor is rebuilt from `query` and `tokens`.\n */\n revision?: string | number;\n placeholder?: string;\n tokenPlaceholder?: string;\n disabled?: boolean;\n autofocus?: boolean;\n /** Let an expanded collapsible field consume the available inline width. */\n fill?: boolean;\n leading?: KerfUiContent;\n editAction?: string;\n removeAction?: string;\n clearAction?: string;\n clearLabel?: string;\n /** Icon for the clear button. Default: the Lucide `x` glyph token chips also use. */\n clearIcon?: SafeHtml;\n className?: string;\n editorAttributes?: TokenSearchEditorAttributes;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\ntype TokenSearchTrailingProps =\n | { trailing?: KerfUiContent; trailingAction?: never }\n | { trailing?: never; trailingAction: TokenSearchTrailingAction };\n\ntype TokenSearchPresentationProps =\n | {\n /** Standalone field chrome or the inset visual layer of a configured toolbar group. */\n presentation?: 'standalone' | 'toolbar-group';\n hint?: never;\n required?: never;\n }\n | {\n /** Visible form label and optional hint around the full-width standalone control. */\n presentation: 'form-field';\n hint?: string;\n /** Marks the editor required; the app validates its value. */\n required?: boolean;\n };\n\ntype TokenSearchCollapsibleProps =\n | {\n /** Allow an empty field to render as one iconic action. */\n collapsible: true;\n /** Keep an empty collapsible field open while the application owns focus. */\n expanded?: boolean;\n expandAction?: string;\n expandLabel?: string;\n }\n | {\n collapsible?: false;\n expanded?: never;\n expandAction?: never;\n expandLabel?: never;\n };\n\nexport type TokenSearchFieldProps = TokenSearchFieldBaseProps &\n TokenSearchCollapsibleProps &\n TokenSearchTrailingProps &\n TokenSearchPresentationProps;\n\nexport interface TokenSearchFieldValue {\n query: string;\n tokens: TokenSearchToken[];\n}\n\ntype TokenSearchPart =\n { kind: 'text'; value: string } | { kind: 'token'; token: TokenSearchToken };\n\nfunction orderedParts(\n query: string,\n tokens: readonly TokenSearchToken[],\n): TokenSearchPart[] {\n const ordered = tokens\n .map((token, index) => ({\n token,\n index,\n offset: Math.max(0, Math.min(query.length, token.offset ?? query.length)),\n }))\n .sort(\n (left, right) => left.offset - right.offset || left.index - right.index,\n );\n const parts: TokenSearchPart[] = [];\n let cursor = 0;\n for (const { token, offset } of ordered) {\n parts.push({ kind: 'text', value: query.slice(cursor, offset) });\n parts.push({ kind: 'token', token: { ...token, offset } });\n cursor = offset;\n }\n parts.push({ kind: 'text', value: query.slice(cursor) });\n return parts;\n}\n\nfunction CloseIcon() {\n return <LucideIcon icon={X} name=\"x\" />;\n}\n\nexport function TokenSearchField({\n id,\n label,\n query = '',\n tokens = [],\n model,\n revision,\n placeholder = 'Search',\n tokenPlaceholder = 'Add search…',\n disabled = false,\n autofocus = false,\n fill = false,\n collapsible = false,\n expanded = false,\n expandAction = 'expand-token-search',\n expandLabel,\n leading,\n trailing,\n trailingAction,\n presentation = 'standalone',\n hint,\n required = false,\n editAction = 'edit-search-token',\n removeAction = 'remove-search-token',\n clearAction = 'clear-token-search',\n clearLabel = 'Clear Search',\n clearIcon,\n className = '',\n editorAttributes = {},\n slot,\n}: TokenSearchFieldProps) {\n if (model) {\n query = model.state.value.query;\n tokens = model.state.value.tokens;\n }\n const suggestions = model?.suggestions.value ?? [];\n const parts = orderedParts(query, tokens);\n const tokenKey = tokens.map((token) => token.value).join('|');\n const key = model\n ? `${id}@${String(revision ?? '')}:${model.editorRevision.value}:${tokenKey}`\n : revision === undefined\n ? `${id}:${tokenKey}`\n : `${id}@${String(revision)}:${tokenKey}`;\n const resolvedExpanded =\n !collapsible || expanded || query.length > 0 || tokens.length > 0;\n const control = (\n <div\n class={`kui-token-search ${presentation === 'form-field' ? '' : className}`.trim()}\n data-component=\"token-search-field\"\n data-token-search-id={id}\n data-disabled={String(disabled)}\n data-collapsible={String(collapsible)}\n data-expanded={String(resolvedExpanded)}\n data-fill={String(fill)}\n data-has-trailing={String(Boolean(trailing || trailingAction))}\n data-presentation={presentation}\n data-placeholder={tokens.length ? tokenPlaceholder : placeholder}\n data-placeholder-visible={String(\n query.length === 0 && tokens.length === 0,\n )}\n slot={slot}\n >\n {!resolvedExpanded ? (\n <button\n type=\"button\"\n class=\"kui-token-search__expand\"\n data-action={expandAction}\n aria-label={expandLabel ?? label}\n title={expandLabel ?? label}\n disabled={disabled}\n >\n <LucideIcon icon={Search} name=\"search\" />\n </button>\n ) : (\n <>\n <span class=\"kui-token-search__leading\" aria-hidden=\"true\">\n {leading ?? <LucideIcon icon={Search} name=\"search\" />}\n </span>\n <div\n {...editorAttributes}\n class=\"kui-token-search__editor\"\n data-key={key}\n data-morph-skip\n data-token-search-editor={id}\n data-token-count={tokens.length}\n data-placeholder={tokens.length ? tokenPlaceholder : placeholder}\n role=\"searchbox\"\n aria-label={presentation === 'form-field' ? undefined : label}\n aria-labelledby={\n presentation === 'form-field' ? `${id}-label` : undefined\n }\n aria-describedby={\n presentation === 'form-field' && hint ? `${id}-hint` : undefined\n }\n aria-required={required ? 'true' : undefined}\n aria-disabled={disabled ? 'true' : undefined}\n contenteditable={disabled ? 'false' : 'true'}\n spellcheck=\"false\"\n autofocus={autofocus}\n >\n {parts.map((part) =>\n part.kind === 'text' ? (\n <span\n data-token-search-text\n data-empty={String(part.value.length === 0)}\n >\n {part.value || (tokens.length ? '\\u200b' : '')}\n </span>\n ) : (\n <span\n class=\"kui-token-search__token\"\n contenteditable=\"false\"\n data-component=\"token-search-token\"\n data-token-value={part.token.value}\n >\n <button\n type=\"button\"\n class=\"kui-token-search__token-edit\"\n data-action={editAction}\n data-token-value={part.token.value}\n aria-label={`Edit ${part.token.accessibleLabel ?? part.token.label}`}\n disabled={disabled}\n >\n {part.token.label}\n </button>\n <button\n type=\"button\"\n class=\"kui-token-search__token-remove\"\n data-action={removeAction}\n data-token-value={part.token.value}\n aria-label={`Remove ${part.token.accessibleLabel ?? part.token.label}`}\n disabled={disabled}\n >\n <CloseIcon />\n </button>\n </span>\n ),\n )}\n </div>\n {(query || tokens.length > 0) && (\n <button\n type=\"button\"\n class=\"kui-token-search__clear\"\n data-action={clearAction}\n aria-label={clearLabel}\n title={clearLabel}\n disabled={disabled}\n >\n {clearIcon ?? <CloseIcon />}\n </button>\n )}\n {trailingAction ? (\n <button\n {...trailingAction.attributes}\n type=\"button\"\n class=\"kui-token-search__trailing-action\"\n id={trailingAction.id}\n data-action={trailingAction.action}\n aria-label={trailingAction.label}\n aria-expanded={\n trailingAction.expanded === undefined\n ? undefined\n : String(trailingAction.expanded)\n }\n aria-pressed={\n trailingAction.pressed === undefined\n ? undefined\n : String(trailingAction.pressed)\n }\n aria-controls={trailingAction.controls}\n aria-haspopup={trailingAction.haspopup}\n title={trailingAction.label}\n disabled={disabled}\n >\n {trailingAction.icon}\n </button>\n ) : trailing ? (\n <span class=\"kui-token-search__trailing\">{trailing}</span>\n ) : null}\n {!disabled && suggestions.length > 0 && (\n <div\n class=\"kui-token-search__suggestions\"\n data-token-search-keep-open\n >\n {suggestions.map((suggestion) => (\n <button\n type=\"button\"\n class=\"kui-token-search__suggestion\"\n data-token-search-suggestion={suggestion.value}\n >\n {suggestion.label}\n </button>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n );\n if (presentation !== 'form-field') return control;\n return (\n <div\n class={`kui-token-search__field ${className}`.trim()}\n data-token-search-form-field={id}\n >\n <div\n class=\"kui-token-search__field-label\"\n id={`${id}-label`}\n data-token-search-form-label={id}\n >\n {label}\n {required && (\n <span class=\"kui-token-search__field-required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </div>\n {control}\n {hint && (\n <div class=\"kui-token-search__field-hint\" id={`${id}-hint`}>\n {hint}\n </div>\n )}\n </div>\n );\n}\n\n/** Read editable text and ordered token offsets from a rendered TokenSearchField editor. */\nexport function readTokenSearchField(\n editor: HTMLElement,\n knownTokens: readonly TokenSearchToken[] = [],\n): TokenSearchFieldValue {\n let query = '';\n const tokens: TokenSearchToken[] = [];\n const visit = (node: Node): void => {\n if (node.nodeType === Node.TEXT_NODE) {\n query += (node.textContent ?? '')\n .replaceAll('\\u00a0', ' ')\n .replaceAll('\\u200b', '');\n return;\n }\n if (!(node instanceof HTMLElement)) return;\n if (node.matches('[data-component=\"token-search-token\"]')) {\n const value = node.dataset.tokenValue;\n const known = knownTokens.find((token) => token.value === value);\n if (known) tokens.push({ ...known, offset: query.length });\n else if (value)\n tokens.push({ value, label: value, offset: query.length });\n return;\n }\n if (node.tagName === 'BR') {\n query += ' ';\n return;\n }\n for (const child of node.childNodes) visit(child);\n };\n for (const child of editor.childNodes) visit(child);\n return { query, tokens };\n}\n\n/** Focus an editor and place its caret at a text offset, skipping atomic token chips. */\nexport function placeTokenSearchCaret(\n editor: HTMLElement,\n offset?: number,\n): void {\n editor.focus({ preventScroll: true });\n const selection = globalThis.getSelection();\n if (!selection) return;\n const range = document.createRange();\n if (offset === undefined) {\n range.selectNodeContents(editor);\n range.collapse(false);\n } else {\n let remaining = Math.max(0, offset);\n let found = false;\n const walker = document.createTreeWalker(editor, NodeFilter.SHOW_TEXT, {\n acceptNode: (node) =>\n node.parentElement?.closest('[data-component=\"token-search-token\"]')\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n });\n for (let node = walker.nextNode(); node; node = walker.nextNode()) {\n const source = node.textContent ?? '';\n const length = source.replaceAll('\\u200b', '').length;\n if (remaining <= length) {\n range.setStart(\n node,\n source === '\\u200b' ? 0 : Math.min(remaining, source.length),\n );\n range.collapse(true);\n found = true;\n break;\n }\n remaining -= length;\n }\n if (!found) {\n range.selectNodeContents(editor);\n range.collapse(false);\n }\n }\n selection.removeAllRanges();\n selection.addRange(range);\n}\n"]}