@@ -147,6 +147,27 @@ const sizeEvents = computed(() => {
147147 return events
148148})
149149
150+ // Detect license changes between consecutive versions
151+ const licenseChanges = computed (() => {
152+ const changes = new Map <string , { from: string ; to: string }>()
153+ const entries = timelineEntries .value
154+
155+ for (let i = 0 ; i < entries .length - 1 ; i ++ ) {
156+ const current = pkg .value ?.versions [entries [i ]! .version ]
157+ const previous = pkg .value ?.versions [entries [i + 1 ]! .version ]
158+ if (! current || ! previous ) continue
159+
160+ const currentLicense = current .license ?? ' Unknown'
161+ const previousLicense = previous .license ?? ' Unknown'
162+
163+ if (currentLicense !== previousLicense ) {
164+ changes .set (entries [i ]! .version , { from: previousLicense , to: currentLicense })
165+ }
166+ }
167+
168+ return changes
169+ })
170+
150171const bytesFormatter = useBytesFormatter ()
151172
152173useSeoMeta ({
@@ -190,12 +211,12 @@ useSeoMeta({
190211 aria-hidden =" true"
191212 />
192213 </span >
193- <div
194- class =" border rounded-lg px-3 py-2 text-sm"
214+ <p
215+ class =" text-sm"
195216 :class ="
196217 sizeEvents.get(entry.version)!.direction === 'decrease'
197- ? 'border-green-600/40 bg-green-500/10 text-green-800 dark:text-green-400'
198- : 'border-amber-600/40 bg-amber-500/10 text-amber-800 dark:text-amber-400'
218+ ? 'text-green-700 dark:text-green-400'
219+ : 'text-amber-700 dark:text-amber-400'
199220 "
200221 >
201222 <template v-if =" sizeEvents .get (entry .version )! .sizeThresholdExceeded " >
@@ -234,7 +255,23 @@ useSeoMeta({
234255 })
235256 }}
236257 </template >
237- </div >
258+ </p >
259+ </div >
260+ <!-- License change -->
261+ <div v-if =" licenseChanges.has(entry.version)" class =" mb-4 -ms-6 ps-6 relative" >
262+ <span
263+ class =" absolute -start-2 flex items-center justify-center w-4 h-4 rounded-full border bg-amber-500 border-amber-600"
264+ >
265+ <span class =" w-2.5 h-2.5 text-white i-lucide:scale" aria-hidden =" true" />
266+ </span >
267+ <p class =" text-sm text-amber-700 dark:text-amber-400" >
268+ {{
269+ $t('package.timeline.license_change', {
270+ from: licenseChanges.get(entry.version)!.from,
271+ to: licenseChanges.get(entry.version)!.to,
272+ })
273+ }}
274+ </p >
238275 </div >
239276 <!-- Dot -->
240277 <span
0 commit comments