Skip to content

Initiial working release process - #3

Open
kthoms wants to merge 3 commits into
mainfrom
release/0.1.x
Open

Initiial working release process#3
kthoms wants to merge 3 commits into
mainfrom
release/0.1.x

Conversation

@kthoms

@kthoms kthoms commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings July 9, 2026 20:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR establishes an initial release pipeline for the operaton-starter project, including version bumping across Maven + npm modules, GitHub Actions automation, and JReleaser-based packaging (including Docker).

Changes:

  • Bump project/package versions from 0.1.0 to 0.1.1 and introduce a deploy-skip mechanism for selected submodules.
  • Add/extend release automation: GitHub Actions release.yml, project version set script, local act helper script, and .env template.
  • Add JReleaser distribution + Docker packaging configuration and update committed static web build artifacts.

Reviewed changes

Copilot reviewed 19 out of 25 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
starter-web/pom.xml Bumps parent version and adds deploy skip property for the web module.
starter-web/package.json Bumps npm package version to 0.1.1.
starter-web/package-lock.json Aligns lockfile version metadata with 0.1.1.
starter-templates/pom.xml Bumps parent version to 0.1.1-SNAPSHOT.
starter-server/src/main/resources/static/index.html Updates hashed asset reference for the bundled web UI.
starter-server/src/main/resources/static/assets/index-D3NRmT5g.js Adds new bundled JS asset for the UI.
starter-server/src/main/resources/static/assets/ConfigureView-Lv2wFFMh.js Adds new bundled Configure view chunk.
starter-server/pom.xml Bumps parent version to 0.1.1-SNAPSHOT.
starter-mcp/pom.xml Bumps parent version and adds deploy skip property for the MCP module.
starter-mcp/package.json Bumps npm package version and reformats keywords list.
starter-mcp/package-lock.json Aligns lockfile version metadata with 0.1.1.
starter-cli/pom.xml Bumps parent version and adds deploy skip property for the CLI module.
starter-cli/package.json Bumps npm package version and reformats keywords list.
starter-cli/package-lock.json Aligns lockfile version metadata with 0.1.1.
starter-archetypes/pom.xml Bumps parent version to 0.1.1-SNAPSHOT.
src/jreleaser/distributions/operaton-starter/docker/Dockerfile.tpl Introduces Docker image template using Spring Boot layertools layers.
pom.xml Bumps root version and adds deploy plugin configuration with a skip flag + local staging repo.
jreleaser.yml Adds Java metadata, GitHub release settings, checksum config, Docker packager config, and distribution definition.
.mvn/wrapper/maven-wrapper.properties Adds Maven Wrapper properties (including Maven distribution URL).
.mvn/maven.config Adds Maven CLI defaults and a Java 25 XML attribute limit override.
.gitignore Adjusts Maven ignore entries, adds .env, adds JReleaser output ignore.
.github/workflows/release.yml Reworks release workflow: version computation, Maven deploy, Docker login, JReleaser release, and post-release bump.
.github/scripts/set-project-version.sh Adds script to set Maven + npm versions across the repo.
.github/scripts/act/release.sh Adds local runner script to execute the release workflow with act.
.env.template Adds a template for release-related secrets for local runs.
Files not reviewed (4)
  • starter-cli/package-lock.json: Generated file
  • starter-mcp/package-lock.json: Generated file
  • starter-server/src/main/resources/static/assets/ConfigureView-Lv2wFFMh.js: Generated file
  • starter-web/package-lock.json: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 164 to +167
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_PASSWORD }}
JRELEASER_DOCKER_DEFAULT_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
JRELEASER_DOCKER_DEFAULT_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Comment on lines +199 to +202
SNAPSHOT_TAGS=(
"${{ needs.release_build.outputs.version }}-SNAPSHOT"
"v${{ needs.release_build.outputs.version }}-SNAPSHOT"
)
Comment on lines +219 to +223
if [ -n "${{needs.prepaare.outputs.is_prerelease}}" ]; then
NEXT_VERSION=${{needs.prepare.outputs.outputs.base_version}}-SNAPSHOT
else
NEXT_VERSION=${{needs.prepare.outputs.next_version}}-SNAPSHOT
fi
Comment on lines +8 to +17
REQUIRED_SECRETS=(
GITHUB_TOKEN
GPG_SECRET_KEY
GPG_PASSPHRASE
MAVEN_CENTRAL_USERNAME
MAVEN_CENTRAL_TOKEN
NPM_TOKEN
DOCKERHUB_USERNAME
DOCKERHUB_TOKEN
)
Comment on lines +35 to +38
Required environment variables:
GITHUB_TOKEN, GPG_SECRET_KEY, GPG_PASSPHRASE,
MAVEN_CENTRAL_USERNAME, MAVEN_CENTRAL_TOKEN,
NPM_TOKEN, DOCKERHUB_USERNAME, DOCKERHUB_TOKEN
Comment on lines +159 to +168
cat > "${secret_file}" <<EOF
GITHUB_TOKEN=${GITHUB_TOKEN}
GPG_SECRET_KEY=${GPG_SECRET_KEY}
GPG_PASSPHRASE=${GPG_PASSPHRASE}
MAVEN_CENTRAL_USERNAME=${MAVEN_CENTRAL_USERNAME}
MAVEN_CENTRAL_TOKEN=${MAVEN_CENTRAL_TOKEN}
NPM_TOKEN=${NPM_TOKEN}
DOCKERHUB_USERNAME=${DOCKERHUB_USERNAME}
DOCKERHUB_TOKEN=${DOCKERHUB_TOKEN}
EOF
Comment thread .env.template
Comment on lines +9 to +20
# GPG private key (armored, base64-encoded) for artifact signing
GPG_PRIVATE_KEY=

# Passphrase for the GPG key
GPG_PASSPHRASE=

# Maven Central (Sonatype) publishing credentials
MAVEN_CENTRAL_USERNAME=
MAVEN_CENTRAL_TOKEN=

# npm registry token for publishing npm packages
NPM_TOKEN=
Comment thread jreleaser.yml
Comment on lines +14 to +18
java:
groupId: org.operaton.starter
artifactId: starter-server
mainClass: org.operaton.dev.starter.server.StarterServerApplication
version: 21
Comment thread jreleaser.yml
Comment on lines +79 to +82
java:
groupId: org.operaton.starter
artifactId: starter-server
mainClass: org.operaton.dev.starter.server.StarterServerApplication
* vue-router v4.6.4
* (c) 2025 Eduardo San Martin Morote
* @license MIT
*/let Nu=()=>location.protocol+"//"+location.host;function ro(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,a=r.slice(o);return a[0]!=="/"&&(a="/"+a),pi(a,"")}return pi(n,e)+s+r}function Du(e,t,n,s){let r=[],i=[],o=null;const a=({state:d})=>{const g=ro(e,location),b=n.value,_=t.value;let I=0;if(d){if(n.value=g,t.value=d,o&&o===b){o=null;return}I=_?d.position-_.position:0}else s(g);r.forEach(M=>{M(n.value,b,{delta:I,type:Zs.pop,direction:I?I>0?Ls.forward:Ls.back:Ls.unknown})})};function l(){o=n.value}function u(d){r.push(d);const g=()=>{const b=r.indexOf(d);b>-1&&r.splice(b,1)};return i.push(g),g}function c(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(Y({},d.state,{scroll:vs()}),"")}}function f(){for(const d of i)d();i=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:u,destroy:f}}function xi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?vs():null}}function Lu(e){const{history:t,location:n}=window,s={value:ro(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Nu()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),r.value=u}catch(g){console.error(g),n[c?"replace":"assign"](d)}}function o(l,u){i(l,Y({},t.state,xi(r.value.back,l,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=l}function a(l,u){const c=Y({},r.value,t.state,{forward:l,scroll:vs()});i(c.current,c,!0),i(l,Y({},xi(s.value,l,null),{position:c.position+1},u),!1),s.value=l}return{location:s,state:r,push:a,replace:o}}function Mu(e){e=vu(e);const t=Lu(e),n=Du(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=Y({location:"",base:e,go:s,createHref:wu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Bt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var ve=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(ve||{});const ju={type:Bt.Static,value:""},Bu=/[a-zA-Z0-9_]/;function Fu(e){if(!e)return[[]];if(e==="/")return[[ju]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=ve.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let a=0,l,u="",c="";function f(){u&&(n===ve.Static?i.push({type:Bt.Static,value:u}):n===ve.Param||n===ve.ParamRegExp||n===ve.ParamRegExpEnd?(i.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Bt.Param,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a<e.length;){if(l=e[a++],l==="\\"&&n!==ve.ParamRegExp){s=n,n=ve.EscapeNext;continue}switch(n){case ve.Static:l==="/"?(u&&f(),o()):l===":"?(f(),n=ve.Param):d();break;case ve.EscapeNext:d(),n=s;break;case ve.Param:l==="("?n=ve.ParamRegExp:Bu.test(l)?d():(f(),n=ve.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--);break;case ve.ParamRegExp:l===")"?c[c.length-1]=="\\"?c=c.slice(0,-1)+l:n=ve.ParamRegExpEnd:c+=l;break;case ve.ParamRegExpEnd:f(),n=ve.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--,c="";break;default:t("Unknown state");break}}return n===ve.ParamRegExp&&t(`Unfinished custom RegExp for param "${u}"`),f(),o(),r}const yi="[^/]+?",Uu={sensitive:!1,strict:!1,start:!0,end:!0};var Pe=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Pe||{});const Hu=/[.+*?^${}()[\]/\\]/g;function Vu(e,t){const n=Y({},Uu,t),s=[];let r=n.start?"^":"";const i=[];for(const u of e){const c=u.length?[]:[Pe.Root];n.strict&&!u.length&&(r+="/");for(let f=0;f<u.length;f++){const d=u[f];let g=Pe.Segment+(n.sensitive?Pe.BonusCaseSensitive:0);if(d.type===Bt.Static)f||(r+="/"),r+=d.value.replace(Hu,"\\$&"),g+=Pe.Static;else if(d.type===Bt.Param){const{value:b,repeatable:_,optional:I,regexp:M}=d;i.push({name:b,repeatable:_,optional:I});const C=M||yi;if(C!==yi){g+=Pe.BonusCustomRegExp;try{`${C}`}catch(S){throw new Error(`Invalid custom RegExp for param "${b}" (${C}): `+S.message)}}let L=_?`((?:${C})(?:/(?:${C}))*)`:`(${C})`;f||(L=I&&u.length<2?`(?:/${L})`:"/"+L),I&&(L+="?"),r+=L,g+=Pe.Dynamic,I&&(g+=Pe.BonusOptional),_&&(g+=Pe.BonusRepeatable),C===".*"&&(g+=Pe.BonusWildcard)}c.push(g)}s.push(c)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=Pe.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const o=new RegExp(r,n.sensitive?"":"i");function a(u){const c=u.match(o),f={};if(!c)return null;for(let d=1;d<c.length;d++){const g=c[d]||"",b=i[d-1];f[b.name]=g&&b.repeatable?g.split("/"):g}return f}function l(u){let c="",f=!1;for(const d of e){(!f||!c.endsWith("/"))&&(c+="/"),f=!1;for(const g of d)if(g.type===Bt.Static)c+=g.value;else if(g.type===Bt.Param){const{value:b,repeatable:_,optional:I}=g,M=b in u?u[b]:"";if(Ze(M)&&!_)throw new Error(`Provided param "${b}" is an array but it is not repeatable (* or + modifiers)`);const C=Ze(M)?M.join("/"):M;if(!C)if(I)d.length<2&&(c.endsWith("/")?c=c.slice(0,-1):f=!0);else throw new Error(`Missing required param "${b}"`);c+=C}}return c||"/"}return{re:o,score:s,keys:i,parse:a,stringify:l}}function zu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Pe.Static+Pe.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Pe.Static+Pe.Segment?1:-1:0}function io(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const i=zu(s[n],r[n]);if(i)return i;n++}if(Math.abs(r.length-s.length)===1){if(vi(s))return 1;if(vi(r))return-1}return r.length-s.length}function vi(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const qu={strict:!1,end:!0,sensitive:!1};function Gu(e,t,n){const s=Vu(Fu(e.path),n),r=Y(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ku(e,t){const n=[],s=new Map;t=hi(qu,t);function r(f){return s.get(f)}function i(f,d,g){const b=!g,_=wi(f);_.aliasOf=g&&g.record;const I=hi(t,f),M=[_];if("alias"in f){const S=typeof f.alias=="string"?[f.alias]:f.alias;for(const z of S)M.push(wi(Y({},_,{components:g?g.record.components:_.components,path:z,aliasOf:g?g.record:_})))}let C,L;for(const S of M){const{path:z}=S;if(d&&z[0]!=="/"){const ue=d.record.path,fe=ue[ue.length-1]==="/"?"":"/";S.path=d.record.path+(z&&fe+z)}if(C=Gu(S,d,I),g?g.alias.push(C):(L=L||C,L!==C&&L.alias.push(C),b&&f.name&&!_i(C)&&o(f.name)),lo(C)&&l(C),_.children){const ue=_.children;for(let fe=0;fe<ue.length;fe++)i(ue[fe],C,g&&g.children[fe])}g=g||C}return L?()=>{o(L)}:Cn}function o(f){if(no(f)){const d=s.get(f);d&&(s.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(o),d.alias.forEach(o))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&s.delete(f.record.name),f.children.forEach(o),f.alias.forEach(o))}}function a(){return n}function l(f){const d=Zu(f,n);n.splice(d,0,f),f.record.name&&!_i(f)&&s.set(f.record.name,f)}function u(f,d){let g,b={},_,I;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw on(me.MATCHER_NOT_FOUND,{location:f});I=g.record.name,b=Y(ki(d.params,g.keys.filter(L=>!L.optional).concat(g.parent?g.parent.keys.filter(L=>L.optional):[]).map(L=>L.name)),f.params&&ki(f.params,g.keys.map(L=>L.name))),_=g.stringify(b)}else if(f.path!=null)_=f.path,g=n.find(L=>L.re.test(_)),g&&(b=g.parse(_),I=g.record.name);else{if(g=d.name?s.get(d.name):n.find(L=>L.re.test(d.path)),!g)throw on(me.MATCHER_NOT_FOUND,{location:f,currentLocation:d});I=g.record.name,b=Y({},d.params,f.params),_=g.stringify(b)}const M=[];let C=g;for(;C;)M.unshift(C.record),C=C.parent;return{name:I,path:_,params:b,matched:M,meta:Qu(M)}}e.forEach(f=>i(f));function c(){n.length=0,s.clear()}return{addRoute:i,resolve:u,removeRoute:o,clearRoutes:c,getRoutes:a,getRecordMatcher:r}}function ki(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function wi(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Wu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Wu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function _i(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Qu(e){return e.reduce((t,n)=>Y(t,n.meta),{})}function Zu(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;io(e,t[i])<0?s=i:n=i+1}const r=Yu(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Yu(e){let t=e;for(;t=t.parent;)if(lo(t)&&io(e,t)===0)return t}function lo({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Si(e){const t=We(ks),n=We(vr),s=Q(()=>{const l=q(e.to);return t.resolve(l)}),r=Q(()=>{const{matched:l}=s.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(ln.bind(null,c));if(d>-1)return d;const g=Ei(l[u-2]);return u>1&&Ei(c)===g&&f[f.length-1].path!==g?f.findIndex(ln.bind(null,l[u-2])):d}),i=Q(()=>r.value>-1&&tf(n.params,s.value.params)),o=Q(()=>r.value>-1&&r.value===n.matched.length-1&&to(n.params,s.value.params));function a(l={}){if(ef(l)){const u=t[q(e.replace)?"replace":"push"](q(e.to)).catch(Cn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Q(()=>s.value.href),isActive:i,isExactActive:o,navigate:a}}function Ju(e){return e.length===1?e[0]:e}const Xu=Fe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Si,setup(e,{slots:t}){const n=ds(Si(e)),{options:s}=We(ks),r=Q(()=>({[Ri(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ri(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Ju(t.default(n));return e.custom?i:zl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),oo=Xu;function ef(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function tf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ze(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ri=(e,t,n)=>e??t??n,nf=Fe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=We(Js),r=Q(()=>e.route||s.value),i=We(bi,0),o=Q(()=>{let u=q(i);const{matched:c}=r.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=Q(()=>r.value.matched[o.value]);qn(bi,Q(()=>o.value+1)),qn(Ou,a),qn(Js,r);const l=ze();return _n(()=>[l.value,a.value,e.name],([u,c,f],[d,g,b])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!ln(c,g)||!d)&&(c.enterCallbacks[f]||[]).forEach(_=>_(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Ai(n.default,{Component:d,route:u});const g=f.props[c],b=g?g===!0?u.params:typeof g=="function"?g(u):g:null,I=zl(d,Y({},b,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Ai(n.default,{Component:I,route:u})||I}}});function Ai(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const ao=nf;function sf(e){const t=Ku(e.routes,e),n=e.parseQuery||Pu,s=e.stringifyQuery||mi,r=e.history,i=gn(),o=gn(),a=gn(),l=ra(At);let u=At;Yt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Ns.bind(null,v=>""+v),f=Ns.bind(null,pu),d=Ns.bind(null,Nn);function g(v,D){let $,j;return no(v)?($=t.getRecordMatcher(v),j=D):j=v,t.addRoute(j,$)}function b(v){const D=t.getRecordMatcher(v);D&&t.removeRoute(D)}function _(){return t.getRoutes().map(v=>v.record)}function I(v){return!!t.getRecordMatcher(v)}function M(v,D){if(D=Y({},D||l.value),typeof v=="string"){const m=Ds(n,v,D.path),x=t.resolve({path:m.path},D),k=r.createHref(m.fullPath);return Y(m,x,{params:d(x.params),hash:Nn(m.hash),redirectedFrom:void 0,href:k})}let $;if(v.path!=null)$=Y({},v,{path:Ds(n,v.path,D.path).path});else{const m=Y({},v.params);for(const x in m)m[x]==null&&delete m[x];$=Y({},v,{params:f(m)}),D.params=f(D.params)}const j=t.resolve($,D),G=v.hash||"";j.params=c(d(j.params));const h=mu(s,Y({},v,{hash:uu(G),path:j.path})),p=r.createHref(h);return Y({fullPath:h,hash:G,query:s===mi?Iu(v.query):v.query||{}},j,{redirectedFrom:void 0,href:p})}function C(v){return typeof v=="string"?Ds(n,v,l.value.path):Y({},v)}function L(v,D){if(u!==v)return on(me.NAVIGATION_CANCELLED,{from:D,to:v})}function S(v){return fe(v)}function z(v){return S(Y(C(v),{replace:!0}))}function ue(v,D){const $=v.matched[v.matched.length-1];if($&&$.redirect){const{redirect:j}=$;let G=typeof j=="function"?j(v,D):j;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=C(G):{path:G},G.params={}),Y({query:v.query,hash:v.hash,params:G.path!=null?{}:v.params},G)}}function fe(v,D){const $=u=M(v),j=l.value,G=v.state,h=v.force,p=v.replace===!0,m=ue($,j);if(m)return fe(Y(C(m),{state:typeof m=="object"?Y({},G,m.state):G,force:h,replace:p}),D||$);const x=$;x.redirectedFrom=D;let k;return!h&&bu(s,j,$)&&(k=on(me.NAVIGATION_DUPLICATED,{to:x,from:j}),Je(j,j,!0,!1)),(k?Promise.resolve(k):ge(x,j)).catch(y=>dt(y)?dt(y,me.NAVIGATION_GUARD_REDIRECT)?y:Rt(y):Z(y,x,j)).then(y=>{if(y){if(dt(y,me.NAVIGATION_GUARD_REDIRECT))return fe(Y({replace:p},C(y.to),{state:typeof y.to=="object"?Y({},G,y.to.state):G,force:h}),D||x)}else y=he(x,j,!0,p,G);return pe(x,j,y),y})}function Ue(v,D){const $=L(v,D);return $?Promise.reject($):Promise.resolve()}function Ye(v){const D=Kt.values().next().value;return D&&typeof D.runWithContext=="function"?D.runWithContext(v):v()}function ge(v,D){let $;const[j,G,h]=$u(v,D);$=Ms(j.reverse(),"beforeRouteLeave",v,D);for(const m of j)m.leaveGuards.forEach(x=>{$.push(Pt(x,v,D))});const p=Ue.bind(null,v,D);return $.push(p),He($).then(()=>{$=[];for(const m of i.list())$.push(Pt(m,v,D));return $.push(p),He($)}).then(()=>{$=Ms(G,"beforeRouteUpdate",v,D);for(const m of G)m.updateGuards.forEach(x=>{$.push(Pt(x,v,D))});return $.push(p),He($)}).then(()=>{$=[];for(const m of h)if(m.beforeEnter)if(Ze(m.beforeEnter))for(const x of m.beforeEnter)$.push(Pt(x,v,D));else $.push(Pt(m.beforeEnter,v,D));return $.push(p),He($)}).then(()=>(v.matched.forEach(m=>m.enterCallbacks={}),$=Ms(h,"beforeRouteEnter",v,D,Ye),$.push(p),He($))).then(()=>{$=[];for(const m of o.list())$.push(Pt(m,v,D));return $.push(p),He($)}).catch(m=>dt(m,me.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function pe(v,D,$){a.list().forEach(j=>Ye(()=>j(v,D,$)))}function he(v,D,$,j,G){const h=L(v,D);if(h)return h;const p=D===At,m=Yt?history.state:{};$&&(j||p?r.replace(v.fullPath,Y({scroll:p&&m&&m.scroll},G)):r.push(v.fullPath,G)),l.value=v,Je(v,D,$,p),Rt()}let Se;function un(){Se||(Se=r.listen((v,D,$)=>{if(!Nt.listening)return;const j=M(v),G=ue(j,Nt.currentRoute.value);if(G){fe(Y(G,{replace:!0,force:!0}),j).catch(Cn);return}u=j;const h=l.value;Yt&&Eu(gi(h.fullPath,$.delta),vs()),ge(j,h).catch(p=>dt(p,me.NAVIGATION_ABORTED|me.NAVIGATION_CANCELLED)?p:dt(p,me.NAVIGATION_GUARD_REDIRECT)?(fe(Y(C(p.to),{force:!0}),j).then(m=>{dt(m,me.NAVIGATION_ABORTED|me.NAVIGATION_DUPLICATED)&&!$.delta&&$.type===Zs.pop&&r.go(-1,!1)}).catch(Cn),Promise.reject()):($.delta&&r.go(-$.delta,!1),Z(p,j,h))).then(p=>{p=p||he(j,h,!1),p&&($.delta&&!dt(p,me.NAVIGATION_CANCELLED)?r.go(-$.delta,!1):$.type===Zs.pop&&dt(p,me.NAVIGATION_ABORTED|me.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),pe(j,h,p)}).catch(Cn)}))}let qt=gn(),ke=gn(),ne;function Z(v,D,$){Rt(v);const j=ke.list();return j.length?j.forEach(G=>G(v,D,$)):console.error(v),Promise.reject(v)}function ht(){return ne&&l.value!==At?Promise.resolve():new Promise((v,D)=>{qt.add([v,D])})}function Rt(v){return ne||(ne=!v,un(),qt.list().forEach(([D,$])=>v?$(v):D()),qt.reset()),v}function Je(v,D,$,j){const{scrollBehavior:G}=e;if(!Yt||!G)return Promise.resolve();const h=!$&&Ru(gi(v.fullPath,0))||(j||!$)&&history.state&&history.state.scroll||null;return ul().then(()=>G(v,D,h)).then(p=>p&&Su(p)).catch(p=>Z(p,v,D))}const $e=v=>r.go(v);let Gt;const Kt=new Set,Nt={currentRoute:l,listening:!0,addRoute:g,removeRoute:b,clearRoutes:t.clearRoutes,hasRoute:I,getRoutes:_,resolve:M,options:e,push:S,replace:z,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:i.add,beforeResolve:o.add,afterEach:a.add,onError:ke.add,isReady:ht,install(v){v.component("RouterLink",oo),v.component("RouterView",ao),v.config.globalProperties.$router=Nt,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>q(l)}),Yt&&!Gt&&l.value===At&&(Gt=!0,S(r.location).catch(j=>{}));const D={};for(const j in At)Object.defineProperty(D,j,{get:()=>l.value[j],enumerable:!0});v.provide(ks,Nt),v.provide(vr,ll(D)),v.provide(Js,l);const $=v.unmount;Kt.add(v),v.unmount=function(){Kt.delete(v),Kt.size<1&&(u=At,Se&&Se(),Se=null,l.value=At,Gt=!1,ne=!1),$()}}};function He(v){return v.reduce((D,$)=>D.then(()=>Ye($)),Promise.resolve())}return Nt}function co(){return We(ks)}function ed(e){return We(vr)}const rf={class:"h-16 bg-neutral-0 border-b border-neutral-200 flex items-center px-6 md:px-8"},lf={class:"flex items-center gap-3 flex-1"},of=Fe({__name:"AppHeader",setup(e){return(t,n)=>(R(),O("header",rf,[A("div",lf,[be(q(oo),{to:"/",class:"flex items-center gap-2 no-underline","aria-label":"Operaton Starter home"},{default:gl(()=>[...n[0]||(n[0]=[A("div",{class:"w-8 h-8 bg-primary rounded-s flex items-center justify-center","aria-hidden":"true"},[A("span",{class:"text-white text-xs font-bold"},"O")],-1),A("span",{class:"text-lg font-bold text-neutral-900"},[ct(" Operaton "),A("span",{class:"font-normal text-neutral-500"},"Starter")],-1)])]),_:1})]),n[1]||(n[1]=A("nav",{"aria-label":"External links",class:"flex items-center gap-6"},[A("a",{href:"https://docs.operaton.org",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-neutral-500 hover:text-primary transition-colors"},"Docs"),A("a",{href:"https://operaton.org",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-neutral-500 hover:text-primary transition-colors"},"operaton.org"),A("a",{href:"https://github.com/operaton/operaton-starter",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-neutral-500 hover:text-primary transition-colors"},"GitHub")],-1))]))}}),af={class:"border-t border-neutral-200 bg-neutral-0 py-6 px-6 md:px-8 text-center"},cf={class:"text-sm text-neutral-500"},uf={href:"https://github.com/operaton/operaton-starter",target:"_blank",rel:"noopener noreferrer",class:"hover:text-primary"},ff=Fe({__name:"AppFooter",setup(e){const n="0.1.0".replace(/-.*$/,"");return(s,r)=>(R(),O("footer",af,[A("p",cf,[A("a",uf,[r[0]||(r[0]=ct("operaton-starter",-1)),q(n)?(R(),O(de,{key:0},[ct(ce(q(n)),1)],64)):re("",!0)]),r[1]||(r[1]=ct(" · Apache 2.0 · ",-1)),r[2]||(r[2]=A("a",{href:"https://operaton.org",target:"_blank",rel:"noopener noreferrer",class:"hover:text-primary"},"operaton.org",-1))])]))}}),hf={class:"min-h-screen flex flex-col"},pf={id:"main-content",class:"flex-1"},df=Fe({__name:"App",setup(e){return(t,n)=>(R(),O("div",hf,[be(of),A("main",pf,[be(q(ao))]),be(ff)]))}}),gf="modulepreload",mf=function(e){return"/"+e},Ci={},bf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let o=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=o(n.map(u=>{if(u=mf(u),u in Ci)return;Ci[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":gf,c||(d.as="script"),d.crossOrigin="",d.href=u,l&&d.setAttribute("nonce",l),document.head.appendChild(d),c)return new Promise((g,b)=>{d.addEventListener("load",g),d.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return r.then(o=>{for(const a of o||[])a.status==="rejected"&&i(a.reason);return t().catch(i)})},ws="";async function xf(){const e=await fetch(`${ws}/api/v1/metadata`,{headers:{Accept:"application/json"}});if(!e.ok)throw await e.json();return e.json()}async function td(e){const t=await fetch(`${ws}/api/v1/generate`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/zip"},body:JSON.stringify(e)});if(!t.ok)throw await t.json();return t.blob()}async function nd(e,t){try{const n=await fetch(`${ws}/api/v1/preview`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({templateId:e,config:t})});return n.ok?(await n.json()).content??null:null}catch{return null}}async function yf(e,t,n){const s=await fetch(`${ws}/api/v1/examples/${e}/${t}/${n}/download`,{headers:{Accept:"application/zip"}});if(!s.ok)throw await s.json();return s.blob()}function uo(){const e=ze(null),t=ze(!0),n=ze(null);return xf().then(s=>{e.value=s}).catch(s=>{n.value=s}).finally(()=>{t.value=!1}),{data:e,isLoading:t,error:n}}function vf(){const{data:e}=uo(),t=Q(()=>{var l;return((l=e.value)==null?void 0:l.examples)??[]}),n=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>l.add(f.label))}),Array.from(l).sort()}),s=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.integrations)==null||c.forEach(f=>l.add(f))}),Array.from(l).sort()}),r=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>{f.category==="RUNTIME"&&l.add(f.label)})}),Array.from(l).sort()}),i=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>{f.category==="BUILD_SYSTEM"&&l.add(f.label)})}),Array.from(l).sort()}),o=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>{f.category==="COMPLEXITY"&&l.add(f.label)})}),Array.from(l).sort()}),a=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.bpmnConcepts)==null||c.forEach(f=>l.add(f))}),Array.from(l).sort()});return{examples:t,allTags:n,allIntegrations:s,runtimes:r,buildSystems:i,complexities:o,bpmnConcepts:a}}function kf(e){const t=ze({query:"",runtime:new Set,buildSystem:new Set,complexity:new Set,integrations:new Set,bpmnConcepts:new Set});function n(a,l){const u=t.value[a];u.has(l)?u.delete(l):u.add(l)}function s(a){t.value.query=a}function r(){t.value.query="",t.value.runtime.clear(),t.value.buildSystem.clear(),t.value.complexity.clear(),t.value.integrations.clear(),t.value.bpmnConcepts.clear()}const i=Q(()=>{let a=e.value;if(t.value.query){const l=t.value.query.toLowerCase();a=a.filter(u=>{var c,f,d;return((c=u.title)==null?void 0:c.toLowerCase().includes(l))||((f=u.shortDescription)==null?void 0:f.toLowerCase().includes(l))||((d=u.tags)==null?void 0:d.some(g=>g.label.toLowerCase().includes(l)))})}return t.value.runtime.size>0&&(a=a.filter(l=>{var u;return(u=l.tags)==null?void 0:u.some(c=>c.category==="RUNTIME"&&t.value.runtime.has(c.label))})),t.value.buildSystem.size>0&&(a=a.filter(l=>{var u;return(u=l.tags)==null?void 0:u.some(c=>c.category==="BUILD_SYSTEM"&&t.value.buildSystem.has(c.label))})),t.value.complexity.size>0&&(a=a.filter(l=>{var u;return(u=l.tags)==null?void 0:u.some(c=>c.category==="COMPLEXITY"&&t.value.complexity.has(c.label))})),t.value.integrations.size>0&&(a=a.filter(l=>{var u;return(u=l.integrations)==null?void 0:u.some(c=>t.value.integrations.has(c))})),t.value.bpmnConcepts.size>0&&(a=a.filter(l=>{var u;return(u=l.bpmnConcepts)==null?void 0:u.some(c=>t.value.bpmnConcepts.has(c))})),a}),o=Q(()=>t.value.runtime.size>0||t.value.buildSystem.size>0||t.value.complexity.size>0||t.value.integrations.size>0||t.value.bpmnConcepts.size>0);return{filters:t,filteredExamples:i,hasActiveFilters:o,toggleFilter:n,setQuery:s,clear:r}}function wf(){const e=ze(new Map);function t(i){return e.value.get(i)??{state:"idle"}}function n(i,o){e.value.set(i,o)}async function s(i){const o=i.id??"";n(o,{state:"downloading"});try{const[a="",l=""]=(i.sourceRepo??"").split("/"),u=await yf(a,l,o),c=URL.createObjectURL(u),f=document.createElement("a");f.href=c,f.download=`${o}.zip`,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(c),n(o,{state:"success"}),setTimeout(()=>{n(o,{state:"idle"})},3e3)}catch(a){n(o,{state:"error",error:a instanceof Error?a.message:"Unknown error"})}}function r(i){n(i,{state:"idle"})}return{getStatus:t,setStatus:n,download:s,retry:r}}function fo(e){switch(e){case"BPMN_CONCEPT":return"bg-blue-100 text-blue-800";case"TECHNOLOGY":return"bg-amber-100 text-amber-800";case"PLATFORM":return"bg-green-100 text-green-800";case"STANDARD":return"bg-purple-100 text-purple-800";default:return"bg-neutral-100 text-neutral-600"}}function Ti(e){return"bg-neutral-50 text-neutral-900 border border-neutral-200"}function _f(){return"bg-amber-100 text-amber-800"}function Sf(){return"bg-blue-100 text-blue-800"}const Ef=["aria-label"],Rf={class:"text-xl font-semibold text-neutral-900 mb-2"},Af={class:"text-sm text-neutral-500 leading-relaxed mb-3 flex-1"},Cf={class:"flex flex-wrap gap-2 mb-3"},Tf={class:"text-sm text-primary font-medium mb-3"},Pf=["aria-expanded","aria-controls"],If=["id"],Of=["aria-label"],$f=Fe({__name:"ProjectTypeCard",props:{projectType:{}},setup(e){const t=e,n=co(),s=ze(!1);function r(){n.push({path:"/configure",query:{projectType:t.projectType.id}})}return(i,o)=>(R(),O("article",{class:"rounded-s border border-neutral-200 bg-neutral-0 p-6 hover:shadow-md hover:border-primary transition-all cursor-pointer flex flex-col",tabindex:"0","aria-label":e.projectType.displayName,onClick:r,onKeydown:Wc(r,["enter"])},[A("h3",Rf,ce(e.projectType.displayName),1),A("p",Af,ce(e.projectType.description),1),A("div",Cf,[(R(!0),O(de,null,Le(e.projectType.tags,a=>(R(),O("span",{key:a.label,class:vt(["inline-flex text-xs font-medium px-2 py-1 rounded-full",q(fo)(a.category)])},ce(a.label),3))),128))]),A("p",Tf,ce(e.projectType.personaHint),1),A("button",{type:"button",class:"text-sm text-neutral-500 hover:text-primary flex items-center gap-1 mb-2 w-fit","aria-expanded":s.value,"aria-controls":`help-${e.projectType.id}`,onClick:o[0]||(o[0]=ui(a=>s.value=!s.value,["stop"]))},[...o[1]||(o[1]=[A("span",{class:"w-4 h-4 rounded-full bg-neutral-200 text-neutral-500 text-xs inline-flex items-center justify-center font-bold","aria-hidden":"true"},"?",-1),ct(" More about this project type ",-1)])],8,Pf),ml(A("div",{id:`help-${e.projectType.id}`,role:"note",class:"text-sm text-neutral-600 border-t border-neutral-200 pt-2 mb-3 leading-relaxed"},ce(e.projectType.detailedDescription??e.projectType.description),9,If),[[Cc,s.value]]),A("button",{type:"button",class:"w-full bg-primary text-white py-2 rounded-s font-medium hover:bg-primary-dark transition-colors text-sm mt-auto","aria-label":`Configure ${e.projectType.displayName} project`,onClick:ui(r,["stop"])}," Configure → ",8,Of)],40,Ef))}}),an=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Nf={},Df={class:"rounded-s border border-neutral-200 bg-neutral-0 p-6 animate-pulse","aria-hidden":"true"};function Lf(e,t){return R(),O("div",Df,[...t[0]||(t[0]=[uc('<div class="h-6 bg-neutral-200 rounded w-3/4 mb-3"></div><div class="h-4 bg-neutral-200 rounded w-full mb-2"></div><div class="h-4 bg-neutral-200 rounded w-5/6 mb-4"></div><div class="flex gap-2 mb-4"><div class="h-6 bg-neutral-200 rounded-full w-16"></div><div class="h-6 bg-neutral-200 rounded-full w-20"></div></div><div class="h-10 bg-neutral-200 rounded-s w-full"></div>',5)])])}const Mf=an(Nf,[["render",Lf]]),jf={key:0,role:"alert","aria-live":"assertive",class:"rounded-s border border-red-200 bg-red-50 p-4 flex gap-3 items-start"},Bf={class:"font-semibold text-red-700"},Ff={key:0,class:"text-sm text-red-600 mt-1"},Uf=Fe({__name:"ErrorBanner",props:{error:{}},setup(e){return(t,n)=>e.error?(R(),O("div",jf,[n[0]||(n[0]=A("span",{class:"text-red-600 text-xl","aria-hidden":"true"},"⚠",-1)),A("div",null,[A("p",Bf,ce(e.error.title),1),e.error.detail?(R(),O("p",Ff,ce(e.error.detail),1)):re("",!0)])])):re("",!0)}}),Hf=["aria-pressed"],Vf={key:0,class:"ml-1","aria-hidden":"true"},zf=Fe({__name:"FilterChip",props:{label:{},isActive:{type:Boolean},category:{},colorClasses:{default:""}},emits:["toggle"],setup(e,{emit:t}){const n=e,s=t,r=Q(()=>n.isActive);function i(){s("toggle")}function o(a){(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),s("toggle"))}return(a,l)=>(R(),O("button",{type:"button","aria-pressed":r.value,class:vt(["filter-chip",[{"filter-chip-active":e.isActive},!e.isActive&&e.colorClasses?e.colorClasses:""]]),onClick:i,onKeydown:o},[ct(ce(e.label)+" ",1),e.isActive?(R(),O("span",Vf,"×")):re("",!0)],42,Hf))}}),mn=an(zf,[["__scopeId","data-v-826fe0e2"]]),qf={class:"search-bar-sticky"},Gf={class:"search-bar-content"},Kf={class:"search-input-wrapper"},Wf={class:"filter-details"},Qf={class:"filter-groups"},Zf={key:0,class:"filter-group"},Yf={role:"toolbar","aria-label":"Filter by runtime"},Jf={key:1,class:"filter-group"},Xf={role:"toolbar","aria-label":"Filter by build system"},eh={key:2,class:"filter-group"},th={role:"toolbar","aria-label":"Filter by complexity"},nh={key:3,class:"filter-group"},sh={role:"toolbar","aria-label":"Filter by integration"},rh={key:4,class:"filter-group"},ih={role:"toolbar","aria-label":"Filter by BPMN concept"},lh={role:"status","aria-live":"polite",class:"sr-only"},oh=Fe({__name:"GallerySearchBar",props:{filteredExamplesCount:{},runtimes:{},buildSystems:{},complexities:{},integrations:{},bpmnConcepts:{},activeFilters:{}},emits:["update:query","toggle-filter","clear-filters"],setup(e,{emit:t}){const n=e,s=t,r=ze(""),i=ze(null),o=Q(()=>n.filteredExamplesCount===0?"No results found":n.filteredExamplesCount===1?"1 example found":`${n.filteredExamplesCount} examples found`);_n(r,l=>{i.value!==null&&clearTimeout(i.value),i.value=window.setTimeout(()=>{s("update:query",l)},200)});function a(l,u){s("toggle-filter",l,u)}return(l,u)=>(R(),O("div",qf,[A("div",Gf,[A("div",Kf,[ml(A("input",{"onUpdate:modelValue":u[0]||(u[0]=c=>r.value=c),type:"search",class:"search-input","aria-label":"Search examples",placeholder:"Search examples…"},null,512),[[zc,r.value]])]),A("details",Wf,[u[1]||(u[1]=A("summary",{class:"filter-summary"},"Filters",-1)),A("div",Qf,[e.runtimes.length>0?(R(),O("div",Zf,[A("div",Yf,[(R(!0),O(de,null,Le(e.runtimes,c=>(R(),yt(mn,{key:`runtime-${c}`,label:c,"is-active":e.activeFilters.runtime.has(c),category:"runtime","color-classes":"bg-neutral-50 text-neutral-900 border border-neutral-200",onToggle:f=>a("runtime",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.buildSystems.length>0?(R(),O("div",Jf,[A("div",Xf,[(R(!0),O(de,null,Le(e.buildSystems,c=>(R(),yt(mn,{key:`buildSystem-${c}`,label:c,"is-active":e.activeFilters.buildSystem.has(c),category:"buildSystem","color-classes":"bg-neutral-50 text-neutral-900 border border-neutral-200",onToggle:f=>a("buildSystem",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.complexities.length>0?(R(),O("div",eh,[A("div",th,[(R(!0),O(de,null,Le(e.complexities,c=>(R(),yt(mn,{key:`complexity-${c}`,label:c,"is-active":e.activeFilters.complexity.has(c),category:"complexity","color-classes":"bg-neutral-50 text-neutral-900 border border-neutral-200",onToggle:f=>a("complexity",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.integrations.length>0?(R(),O("div",nh,[A("div",sh,[(R(!0),O(de,null,Le(e.integrations,c=>(R(),yt(mn,{key:`integration-${c}`,label:c,"is-active":e.activeFilters.integrations.has(c),category:"integrations","color-classes":"bg-amber-100 text-amber-800",onToggle:f=>a("integrations",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.bpmnConcepts.length>0?(R(),O("div",rh,[A("div",ih,[(R(!0),O(de,null,Le(e.bpmnConcepts,c=>(R(),yt(mn,{key:`bpmnConcept-${c}`,label:c,"is-active":e.activeFilters.bpmnConcepts.has(c),category:"bpmnConcepts","color-classes":"bg-blue-100 text-blue-800",onToggle:f=>a("bpmnConcepts",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0)])]),A("span",lh,ce(o.value),1)])]))}}),ah=an(oh,[["__scopeId","data-v-a28050b0"]]);function kr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var zt=kr();function ho(e){zt=e}var jt={exec:()=>null};function Qt(e){let t=[];return n=>{let s=Math.max(0,Math.min(3,n-1)),r=t[s];return r||(r=e(s),t[s]=r),r}}function K(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(r,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(Ae.caret,"$1"),n=n.replace(r,o),s},getRegex:()=>new RegExp(n,t)};return s}var ch=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),Ae={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Qt(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Qt(e=>new RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,"i")),blockquoteBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}>`))},uh=/^(?:[ \t]*(?:\n|$))+/,fh=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,hh=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,jn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ph=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,wr=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,po=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,go=K(po).replace(/bull/g,wr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),dh=K(po).replace(/bull/g,wr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),_r=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,gh=/^[^\n]+/,Sr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,mh=K(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Sr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),bh=K(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,wr).getRegex(),_s="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Er=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,xh=K("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Er).replace("tag",_s).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),mo=K(_r).replace("hr",jn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),yh=K(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",mo).getRegex(),Rr={blockquote:yh,code:fh,def:mh,fences:hh,heading:ph,hr:jn,html:xh,lheading:go,list:bh,newline:uh,paragraph:mo,table:jt,text:gh},Pi=K("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",jn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),vh={...Rr,lheading:dh,table:Pi,paragraph:K(_r).replace("hr",jn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Pi).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex()},kh={...Rr,html:K(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Er).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:jt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:K(_r).replace("hr",jn).replace("heading",` *#{1,6} *[^
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants