From c5a83d26ff764923382eed37e9a3de91795646b4 Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 1 Sep 2026 09:09:51 +0200 Subject: [PATCH 001/157] fix(icons): added RWD metadata to monitor, tablet & smartphone icons (#4775) --- icons/monitor-check.json | 6 ++++++ icons/monitor-cloud.json | 11 +++++++---- icons/monitor-cog.json | 4 +++- icons/monitor-dot.json | 6 ++++++ icons/monitor-down.json | 7 ++++++- icons/monitor-off.json | 12 +++++++++++- icons/monitor-pause.json | 4 ++++ icons/monitor-play.json | 4 ++++ icons/monitor-smartphone.json | 16 ++++++++++++---- icons/monitor-speaker.json | 13 +++++++++++-- icons/monitor-stop.json | 3 +++ icons/monitor-up.json | 6 +++++- icons/monitor-x.json | 6 ++++++ icons/monitor.json | 10 +++++++++- icons/smartphone.json | 13 +++++++++++-- icons/tablet-smartphone.json | 17 ++++++++++++++--- icons/tablet.json | 13 +++++++++++-- 17 files changed, 129 insertions(+), 22 deletions(-) diff --git a/icons/monitor-check.json b/icons/monitor-check.json index 7bd0d8eb2..b5bb0ced1 100644 --- a/icons/monitor-check.json +++ b/icons/monitor-check.json @@ -8,9 +8,15 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", + "external display", + "screen sharing", + "connected", + "success", + "verified", "running", "active", "virtual machine", diff --git a/icons/monitor-cloud.json b/icons/monitor-cloud.json index ff36ae17a..97f25571a 100644 --- a/icons/monitor-cloud.json +++ b/icons/monitor-cloud.json @@ -9,6 +9,12 @@ ], "use-cases": [], "tags": [ + "tv", + "computer", + "screen", + "display", + "desktop", + "external display", "virtual machine", "virtual desktop", "vm", @@ -20,10 +26,7 @@ "software as a service", "saas", "workstation", - "environment", - "tv", - "screen", - "display" + "environment" ], "categories": [ "connectivity", diff --git a/icons/monitor-cog.json b/icons/monitor-cog.json index 97c700b79..dd6224bac 100644 --- a/icons/monitor-cog.json +++ b/icons/monitor-cog.json @@ -8,13 +8,15 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", + "desktop", + "external display", "virtual machine", "vm", "executable", "settings", - "cog", "edit", "gear", "configuration", diff --git a/icons/monitor-dot.json b/icons/monitor-dot.json index 7bd0d8eb2..fa7c19529 100644 --- a/icons/monitor-dot.json +++ b/icons/monitor-dot.json @@ -8,9 +8,15 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", + "external display", + "screen sharing", + "status", + "notification", + "indicator", "running", "active", "virtual machine", diff --git a/icons/monitor-down.json b/icons/monitor-down.json index d177cc67e..ffba9d252 100644 --- a/icons/monitor-down.json +++ b/icons/monitor-down.json @@ -8,10 +8,15 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", - "download" + "external display", + "screen sharing", + "download", + "remote", + "cast" ], "categories": [ "connectivity", diff --git a/icons/monitor-off.json b/icons/monitor-off.json index 3c49d7094..01f80bcd9 100644 --- a/icons/monitor-off.json +++ b/icons/monitor-off.json @@ -7,7 +7,17 @@ ], "use-cases": [], "tags": [ - "share" + "tv", + "computer", + "screen", + "display", + "desktop", + "external display", + "screen sharing", + "offline", + "disabled", + "disconnected", + "power" ], "categories": [ "connectivity", diff --git a/icons/monitor-pause.json b/icons/monitor-pause.json index 0b1b02d71..0257090ed 100644 --- a/icons/monitor-pause.json +++ b/icons/monitor-pause.json @@ -8,12 +8,16 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", + "external display", + "screen sharing", "video", "movie", "film", + "pause", "suspend", "hibernate", "boot", diff --git a/icons/monitor-play.json b/icons/monitor-play.json index 42916bebc..a3b1dc9df 100644 --- a/icons/monitor-play.json +++ b/icons/monitor-play.json @@ -8,12 +8,16 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", + "external display", + "screen sharing", "video", "movie", "film", + "play", "running", "start", "boot", diff --git a/icons/monitor-smartphone.json b/icons/monitor-smartphone.json index 7edcd1a0b..7f986c4ac 100644 --- a/icons/monitor-smartphone.json +++ b/icons/monitor-smartphone.json @@ -6,17 +6,25 @@ "jguddas", "ericfennis" ], - "use-cases": [], + "use-cases": [ + "Showing synchronization between desktop and mobile devices", + "Representing responsive previews across screen sizes", + "Indicating casting or screen sharing to a display" + ], "tags": [ - "smartphone", "phone", "cellphone", "device", "mobile", "desktop", - "monitor", + "screen", + "display", + "external display", + "screen sharing", "responsive", - "screens" + "screens", + "sync", + "cast" ], "categories": [ "connectivity", diff --git a/icons/monitor-speaker.json b/icons/monitor-speaker.json index 3085d95b0..08ed1f14b 100644 --- a/icons/monitor-speaker.json +++ b/icons/monitor-speaker.json @@ -6,9 +6,18 @@ ], "use-cases": [], "tags": [ - "devices", + "tv", + "computer", + "screen", + "display", + "desktop", + "external display", "connect", - "cast" + "cast", + "audio", + "sound", + "volume", + "presentation" ], "categories": [ "connectivity", diff --git a/icons/monitor-stop.json b/icons/monitor-stop.json index 4b8be56f0..447671cd6 100644 --- a/icons/monitor-stop.json +++ b/icons/monitor-stop.json @@ -8,9 +8,12 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", + "external display", + "screen sharing", "video", "movie", "film", diff --git a/icons/monitor-up.json b/icons/monitor-up.json index bbc53064e..0f0fddbd5 100644 --- a/icons/monitor-up.json +++ b/icons/monitor-up.json @@ -8,12 +8,16 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", + "desktop", + "external display", "upload", "connect", "remote", - "screen share" + "screen sharing", + "cast" ], "categories": [ "connectivity", diff --git a/icons/monitor-x.json b/icons/monitor-x.json index b2be2194b..b769a2076 100644 --- a/icons/monitor-x.json +++ b/icons/monitor-x.json @@ -8,12 +8,18 @@ "use-cases": [], "tags": [ "tv", + "computer", "screen", "display", "desktop", + "external display", + "screen sharing", "virtual machine", "vm", "close", + "error", + "failed", + "disconnected", "stop", "suspend", "remove", diff --git a/icons/monitor.json b/icons/monitor.json index 89b4283b0..d1032d11b 100644 --- a/icons/monitor.json +++ b/icons/monitor.json @@ -7,11 +7,19 @@ "jguddas", "karsa-mistmere" ], - "use-cases": [], + "use-cases": [ + "Representing desktop displays and computer monitors", + "Showing screen-sharing or external display settings", + "Indicating virtual machines in infrastructure dashboards" + ], "tags": [ "tv", + "computer", + "desktop", "screen", "display", + "external display", + "screen sharing", "virtual machine", "vm" ], diff --git a/icons/smartphone.json b/icons/smartphone.json index d3205dd41..e57da1911 100644 --- a/icons/smartphone.json +++ b/icons/smartphone.json @@ -5,12 +5,21 @@ "mittalyashu", "ericfennis" ], - "use-cases": [], + "use-cases": [ + "Representing mobile phones in device settings", + "Showing mobile access or app availability", + "Indicating phone-based communication channels" + ], "tags": [ "phone", "cellphone", "device", - "screen" + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive" ], "categories": [ "connectivity", diff --git a/icons/tablet-smartphone.json b/icons/tablet-smartphone.json index 0c2174fb6..f0aba491a 100644 --- a/icons/tablet-smartphone.json +++ b/icons/tablet-smartphone.json @@ -3,13 +3,24 @@ "contributors": [ "danielbayley" ], - "use-cases": [], + "use-cases": [ + "Previewing layouts across mobile device sizes", + "Testing responsive behavior on handheld screens", + "Representing mobile-first design workflows" + ], "tags": [ + "phone", + "cellphone", + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", "responsive", "screens", "browser", - "testing", - "mobile" + "testing" ], "categories": [ "devices", diff --git a/icons/tablet.json b/icons/tablet.json index e4d631086..4462f9364 100644 --- a/icons/tablet.json +++ b/icons/tablet.json @@ -4,9 +4,18 @@ "colebemis", "ericfennis" ], - "use-cases": [], + "use-cases": [ + "Representing tablet devices in responsive layouts", + "Showing touch-based interfaces on larger mobile screens" + ], "tags": [ - "device" + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive" ], "categories": [ "devices" From 2119ad0eb1e066a42b7a01b383fc94df1f92a58a Mon Sep 17 00:00:00 2001 From: Ayantunji Timilehin <39725296+timmy471@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:33:00 +0100 Subject: [PATCH 002/157] feat(icons): add `whistle` icon (#3006) * added icons/whistle.svg * updated icons/whistle.svg * updated whistle-icon * Fix indentation * Update whistle icon from karsa * Update whistle.json * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update whistle.json --------- Co-authored-by: timmy471 Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Karsa --- icons/whistle.json | 41 +++++++++++++++++++++++++++++++++++++++++ icons/whistle.svg | 14 ++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 icons/whistle.json create mode 100644 icons/whistle.svg diff --git a/icons/whistle.json b/icons/whistle.json new file mode 100644 index 000000000..bb99afcb5 --- /dev/null +++ b/icons/whistle.json @@ -0,0 +1,41 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "briz123", + "UsamaKhan", + "ajokt123", + "timmy471", + "jguddas", + "karsa-mistmere" + ], + "use-cases": [ + "Representing coaches or referees in sports apps", + "Signaling alerts in training interfaces", + "Indicating traffic control or public safety roles", + "Marking lifeguard equipment in safety systems" + ], + "tags": [ + "alert", + "signal", + "sound", + "blow", + "noise", + "coach", + "trainer", + "referee", + "gym", + "game", + "training", + "sports", + "traffic cops", + "police", + "lifeguard", + "safety", + "rescue", + "emergency" + ], + "categories": [ + "sports", + "notifications" + ] +} diff --git a/icons/whistle.svg b/icons/whistle.svg new file mode 100644 index 000000000..3edb8a50c --- /dev/null +++ b/icons/whistle.svg @@ -0,0 +1,14 @@ + + + + From eaace8a81bc9448c9e9b924354d878fa67ca9620 Mon Sep 17 00:00:00 2001 From: Jenn M Date: Tue, 1 Sep 2026 09:33:18 -0400 Subject: [PATCH 003/157] feat(icons): Add `mail-pen` icon (#4399) * Add mail pen icon * Update icons/mail-pen.svg Co-authored-by: Karsa * Update mail-pen.svg * Update mail-pen.json Added contributors from mail & missing metadata --------- Co-authored-by: Eric Fennis Co-authored-by: Karsa --- icons/mail-pen.json | 31 +++++++++++++++++++++++++++++++ icons/mail-pen.svg | 15 +++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 icons/mail-pen.json create mode 100644 icons/mail-pen.svg diff --git a/icons/mail-pen.json b/icons/mail-pen.json new file mode 100644 index 000000000..d1a362430 --- /dev/null +++ b/icons/mail-pen.json @@ -0,0 +1,31 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "karsa-mistmere", + "ericfennis", + "jguddas", + "jennieboops" + ], + "use-cases": [ + "Composing or editing email messages", + "Drafting letters in mail interfaces", + "Editing email addresses on settings pages" + ], + "tags": [ + "email", + "message", + "letter", + "pen", + "edit", + "compose", + "draft", + "write", + "writing", + "create", + "reply" + ], + "categories": [ + "mail" + ] +} diff --git a/icons/mail-pen.svg b/icons/mail-pen.svg new file mode 100644 index 000000000..111c65c2e --- /dev/null +++ b/icons/mail-pen.svg @@ -0,0 +1,15 @@ + + + + + From 066f42db8b795b5cbb389a5af682f0aab6cd3d96 Mon Sep 17 00:00:00 2001 From: Louis <70532216+l0uisgrange@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:35:33 +0200 Subject: [PATCH 004/157] feat(icons): added `can` icon (#4767) * can icon * cleaned using lucide studio * added use cases and tags * Update can.svg * Update can.json --------- Co-authored-by: Karsa --- icons/can.json | 28 ++++++++++++++++++++++++++++ icons/can.svg | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 icons/can.json create mode 100644 icons/can.svg diff --git a/icons/can.json b/icons/can.json new file mode 100644 index 000000000..99253ebf8 --- /dev/null +++ b/icons/can.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "l0uisgrange", + "karsa-mistmere" + ], + "use-cases": [ + "Representing canned food in grocery or delivery apps", + "Labelling pantry items or nonperishable inventory", + "Indicating metal recycling or recyclable containers", + "Denoting canned ingredients in recipe or meal-planning interfaces" + ], + "tags": [ + "food", + "storage", + "groceries", + "tin", + "metal", + "recyclable", + "container", + "pantry", + "grocery", + "preserved" + ], + "categories": [ + "food-beverage" + ] +} diff --git a/icons/can.svg b/icons/can.svg new file mode 100644 index 000000000..3a984f3c8 --- /dev/null +++ b/icons/can.svg @@ -0,0 +1,16 @@ + + + + + + From c646eea6339fcd52a8aed92f9a9faed2c0152c1c Mon Sep 17 00:00:00 2001 From: Nykoula <151553265+Nykoula@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:39:43 +0200 Subject: [PATCH 005/157] feat(icons): added `bridge` icon (#3949) * Added icons/bridge.svg * Added icons/bridge.json * Replace icon design with jamiemlaw's design from issue #3364 * Add jamiemlaw as a contributor and tags to bridge.json * Apply suggestion from @karsa-mistmere Co-authored-by: Karsa * Add empty use-cases array to bridge.json * Update bridge.json --------- Co-authored-by: Eric Fennis Co-authored-by: Karsa --- icons/bridge.json | 36 ++++++++++++++++++++++++++++++++++++ icons/bridge.svg | 18 ++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 icons/bridge.json create mode 100644 icons/bridge.svg diff --git a/icons/bridge.json b/icons/bridge.json new file mode 100644 index 000000000..12a98fd3d --- /dev/null +++ b/icons/bridge.json @@ -0,0 +1,36 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "Nykoula", + "jamiemlaw" + ], + "use-cases": [ + "Representing crossing infrastructure in navigation apps", + "Marking river crossings or connecting routes on maps", + "Showing clearance-limited transit zones in maritime dashboards" + ], + "tags": [ + "overpass", + "cross over", + "traverse", + "viaduct", + "suspension", + "infrastructure", + "transportation", + "crossing", + "road", + "river", + "gate", + "golden", + "travel", + "landmark", + "route", + "maritime", + "clearance" + ], + "categories": [ + "travel", + "transportation", + "buildings" + ] +} diff --git a/icons/bridge.svg b/icons/bridge.svg new file mode 100644 index 000000000..76ee1f838 --- /dev/null +++ b/icons/bridge.svg @@ -0,0 +1,18 @@ + + + + + + + + From 5c7c083e565c4a4978c04f57aa13428e17876c60 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Tue, 1 Sep 2026 16:39:50 +0200 Subject: [PATCH 006/157] feat(icons): added `shrimp-off` icon (#3613) * Added icons/shrimp-off.svg * Added icons/shrimp-off.json * Update icons/shrimp-off.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Updated icons/shrimp.svg * Updated icons/shrimp-off.svg * Apply suggestion from @jguddas * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update shrimp-off.json * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update icons/shrimp-off.json Co-authored-by: Karsa * Update shrimp.json * Update shrimp-off.json * Update shrimp-off.json --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Karsa Co-authored-by: Eric Fennis --- icons/shrimp-off.json | 36 ++++++++++++++++++++++++++++++++++++ icons/shrimp-off.svg | 19 +++++++++++++++++++ icons/shrimp.json | 11 +++++++++-- icons/shrimp.svg | 10 +++++----- 4 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 icons/shrimp-off.json create mode 100644 icons/shrimp-off.svg diff --git a/icons/shrimp-off.json b/icons/shrimp-off.json new file mode 100644 index 000000000..06f8c7fb3 --- /dev/null +++ b/icons/shrimp-off.json @@ -0,0 +1,36 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere", + "jguddas" + ], + "use-cases": [ + "Indicating shellfish allergen information", + "Marking seafood-free items on a menu" + ], + "tags": [ + "marine", + "creature", + "fisherman", + "ocean", + "fresh", + "cuisine", + "marine-life", + "seafood", + "shellfish", + "crustacean", + "prawn", + "scallop", + "whelk", + "arthropod", + "littleneck", + "quahog", + "allergy", + "intolerance", + "diet" + ], + "categories": [ + "animals", + "food-beverage" + ] +} diff --git a/icons/shrimp-off.svg b/icons/shrimp-off.svg new file mode 100644 index 000000000..60c0d3aa5 --- /dev/null +++ b/icons/shrimp-off.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/icons/shrimp.json b/icons/shrimp.json index 72f0e552f..ce4a0cdef 100644 --- a/icons/shrimp.json +++ b/icons/shrimp.json @@ -14,9 +14,16 @@ "arthropod", "littleneck", "quahog", - "cherrystone" + "marine", + "creature", + "fisherman", + "ocean", + "fresh", + "cuisine", + "marine-life" ], "categories": [ - "animals" + "animals", + "food-beverage" ] } diff --git a/icons/shrimp.svg b/icons/shrimp.svg index fed36840b..750a59647 100644 --- a/icons/shrimp.svg +++ b/icons/shrimp.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + From 32703fc21aac71b16e59a683bec2a832b015fb1b Mon Sep 17 00:00:00 2001 From: Ajay <46723178+Ajay199210@users.noreply.github.com> Date: Tue, 1 Sep 2026 10:44:59 -0400 Subject: [PATCH 007/157] feat(icons): added `shopping-cart-plus` & `shopping-cart-minus` icons (#4248) * Added icons/shopping-cart-plus.svg * Added icons/shopping-cart-plus.json * feat(icons): add shopping-cart variants Updated the base shopping-cart icon and added the plus and minus variants to satisfy the request in issue #1746. All icons have been redesigned to stay consistent with each other, adhering to the official Lucide contribution guidelines. Closes #1746 Base icon design is related to PR #2909 * fix(icons): update shopping-cart variants * feat(metadata): simplify search tags for shopping-cart variants * Update shopping-cart.json * Update shopping-cart-minus.svg * Update shopping-cart-plus.svg * Update shopping-cart-plus.json * Update shopping-cart-minus.json --------- Co-authored-by: Jakob Guddas Co-authored-by: Karsa --- icons/shopping-cart-minus.json | 35 ++++++++++++++++++++++++++++++++++ icons/shopping-cart-minus.svg | 18 +++++++++++++++++ icons/shopping-cart-plus.json | 35 ++++++++++++++++++++++++++++++++++ icons/shopping-cart-plus.svg | 19 ++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 icons/shopping-cart-minus.json create mode 100644 icons/shopping-cart-minus.svg create mode 100644 icons/shopping-cart-plus.json create mode 100644 icons/shopping-cart-plus.svg diff --git a/icons/shopping-cart-minus.json b/icons/shopping-cart-minus.json new file mode 100644 index 000000000..a817ce6fe --- /dev/null +++ b/icons/shopping-cart-minus.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ajay199210", + "jguddas", + "ericfennis", + "karsa-mistmere" + ], + "use-cases": [ + "Removing products from a shopping cart", + "Updating order contents in ecommerce apps", + "Indicating fewer items in a purchase" + ], + "tags": [ + "trolley", + "cart", + "basket", + "e-commerce", + "ecommerce", + "store", + "purchase", + "products", + "items", + "checkout", + "order", + "retail", + "remove", + "decrease", + "quantity", + "subtract" + ], + "categories": [ + "shopping" + ] +} diff --git a/icons/shopping-cart-minus.svg b/icons/shopping-cart-minus.svg new file mode 100644 index 000000000..0fd077750 --- /dev/null +++ b/icons/shopping-cart-minus.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/icons/shopping-cart-plus.json b/icons/shopping-cart-plus.json new file mode 100644 index 000000000..4425236b3 --- /dev/null +++ b/icons/shopping-cart-plus.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ajay199210", + "jguddas", + "ericfennis", + "karsa-mistmere" + ], + "use-cases": [ + "Adding products to a shopping cart", + "Saving products for purchase in ecommerce apps", + "Confirming items were added to an order" + ], + "tags": [ + "trolley", + "cart", + "basket", + "e-commerce", + "ecommerce", + "store", + "purchase", + "products", + "items", + "checkout", + "order", + "retail", + "add", + "increase", + "quantity", + "buy" + ], + "categories": [ + "shopping" + ] +} diff --git a/icons/shopping-cart-plus.svg b/icons/shopping-cart-plus.svg new file mode 100644 index 000000000..e52a74750 --- /dev/null +++ b/icons/shopping-cart-plus.svg @@ -0,0 +1,19 @@ + + + + + + + + + From dce50dd0c9d6d55dde2a8880732bbe2acc6ba29e Mon Sep 17 00:00:00 2001 From: Ethan Hazel <134425461+EthanHazel@users.noreply.github.com> Date: Tue, 1 Sep 2026 11:01:16 -0400 Subject: [PATCH 008/157] fix(docs): updated artboard name on illustrator template (#4724) --- docs/public/templates/illustrator_template.ai | 4302 +++++++++++++++-- 1 file changed, 4021 insertions(+), 281 deletions(-) diff --git a/docs/public/templates/illustrator_template.ai b/docs/public/templates/illustrator_template.ai index fc7472e63..28ab9dea7 100644 --- a/docs/public/templates/illustrator_template.ai +++ b/docs/public/templates/illustrator_template.ai @@ -1,111 +1,113 @@ %PDF-1.6 %âãÏÓ -1 0 obj <>/OCGs[18 0 R 19 0 R 20 0 R 21 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - application/pdf - - - illustrator_template - - - 2023-11-18T19:30:35Z - 2023-11-18T19:30:35Z - 2023-11-18T19:30:35Z - Adobe Illustrator 25.2 (Macintosh) - - - - 256 - 256 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYqlvmPzHovlvRbrWtauks9Ns05zzv9wVQN2ZjsqjcnYYq+P/AMzv+cu/OGt3Etl5 NB0HSASq3ZCvfTL4ljyWEeyfEP5sVeG6v5h1/WZjPrGpXWozE1Ml3NJO1fnIzeOKu0jzDr+jTCfR 9SutOmBqJLSaSBq/ONl8MVe5flj/AM5d+cNEuIrLzkDr2kEhWuwFS+hXxDDisw9n+I/zYq+wPLnm PRfMmi2utaLdJeabeJzgnT7irA7qynZlO4OxxVMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdir4R/5ya/Ny586ecptGsJz/hrQpXgtkQ/BPcIeMtw1Nm3qsf8A k7j7RxV4zirsVdirsVezf84y/m5deS/OcOjX05/w1rsqQXUbn4ILh/giuFrsu9FkP8u5+yMVfd2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsY/M/X5fL/5deZNZ gbhc2en3D2ziu0xjKxHb/LIxV+aZJJqdycVaxV2KuxV2KtgkGo2IxV+ln5Ya/L5g/Lry3rM7c7m8 0+3e5c13mEYWU7/5YOKsnxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KsA/P7/yTXmz/AJgW/wCJLir86sVdirsVdirsVdir9DP+ccXd/wAk/KpcliLeVQT4LcSgD6AM VekYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWAfn9/5JrzZ/zA t/xJcVfnVirsVdirsVdirsVfoV/zjd/5JLyt/wAYJv8AqJlxV6VirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVYB+f3/AJJrzZ/zAt/xJcVfnVirsVdirsVdirsVfoV/ zjd/5JLyt/xgm/6iZcVelYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FWAfn9/5JrzZ/zAt/xJcVfnVirsVdirsVdirsVfoV/wA43f8AkkvK3/GCb/qJlxV6VirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYB+f3/kmvNn/ADAt/wASXFX5 1Yq7FXYq7FXYq7FX6Ff843f+SS8rf8YJv+omXFXpWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxVgH5/f+Sa82f8wLf8SXFX51Yq7FXYq7FXYq7FX6Ff843f+SS8rf8A GCb/AKiZcVelYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWAfn9 /wCSa82f8wLf8SXFX51Yq7FXYq7FXYq7FX6Ff843f+SS8rf8YJv+omXFXpWKuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgH5/f+Sa82f8wLf8SXFX51Yq7FXYq7FXYq 7FX6Ff8AON3/AJJLyt/xgm/6iZcVelYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FWAfn9/5JrzZ/wAwLf8AElxV+dWKuxV2KuxV2KuxV+hX/ON3/kkvK3/GCb/qJlxV 6VirsVdirsVdirsVdirsVdirsVdirsVdirsVYxr/AOZ/5deX5Wg1nzJp9ncps9s9xGZhvTeJSX/D FUstfz1/J+5mEUfm7TVZuhlmES/S8nBR9+Ks0s72zvbZLqynjuraQVjnhdZI2HirKSDiqtirsVdi rsVdirsVdirAPz+/8k15s/5gW/4kuKvzqxV2KuxV2KuxV2Kv0K/5xu/8kl5W/wCME3/UTLir0rFX Yq7FXYq7FXYq7FVG8vLOytnubyeO2tohWSeZ1jRR4szEAYqwu6/PT8n7WZoZfNunF16mKYSr/wAH HyX8cVTPQPzP/LrzBKsGjeZNPvLl9ktkuIxMd6bRMQ/4YqyfFXYqlvmPzHovlvRbrWtauks9Ns05 zzv9wVQN2ZjsqjcnYYq+I/zc/wCcmvOfnS6nsdGml0Ly1UpHawPwuJ06criVN/iHWNTx7Hl1xV40 SSancnFWsVZH5L/MLzj5L1Bb7y5qc1i/INLArcoJadpYTVHHzFfDFX2z+Rv5+aN+ZNibK6VNO802 qcrrTw3wTIKVmt+W5Wv2l3K+43xV6xirsVdirsVdirsVYB+f3/kmvNn/ADAt/wASXFX51Yq7FXYq 7FXYq7FX6Ff843f+SS8rf8YJv+omXFXpWKuxV2KuxV2KuxV5P+eX5+aN+W1iLK1VNR803ScrXTy3 wQoa0muOO4Wv2V2Lew3xV8TedPzC84+dNQa+8x6nNfPyLRQM3GCKvaKEURB8hXxxVjmKtgkGo2Ix V7L+Uf8Azk15z8l3UFjrM0uu+WqhJLWd+dxAnTlbyvv8I6RsePYceuKvtzy55j0XzJotrrWi3SXm m3ic4J0+4qwO6sp2ZTuDscVfH/8Azl3+Z1xrfnAeTbKUjSNBIN2qn4Zr51qxPtCrcB4NyxV8+4q7 FXYq7FUZo+sapo2qW2q6VcyWeo2cgltrmI0dHHcfqIOxGxxV92/kN+fOl/mNpYsL8x2fm2zjreWY 2SdBsZ4Ae38y9VPtQ4q9bxV2KuxV2KuxVgH5/f8AkmvNn/MC3/ElxV+dWKuxV2KuxV2KuxV+hX/O N3/kkvK3/GCb/qJlxV6VirsVdirsVdiryT8+fz50v8udLNhYGO8823kdbOzO6QIdhPOB2/lXqx9q nFXwlrGsaprOqXOq6rcyXmo3khlubmU1d3Pc/qAGwGwxVB4q7FXYq7FX0F/ziJ+Z1xonnA+Tb2Un SNeJNorH4Yb5FqpHtMq8D4txxV4b5h1ebWdf1LWJyTNqN1NdyE9eU8jSHx/mxVL8VdirsVdirsVR mj6xqmjapbarpVzJZ6jZyCW2uYjR0cdx+og7EbHFX3b+Q3586X+Y2liwvzHZ+bbOOt5ZjZJ0Gxng B7fzL1U+1Dir1vFXYq7FXYqwD8/v/JNebP8AmBb/AIkuKvzqxV2KuxV2KuxV2Kv0K/5xu/8AJJeV v+ME3/UTLir0rFXYq7FXYq8k/Pn8+dL/AC50s2FgY7zzbeR1s7M7pAh2E84Hb+VerH2qcVfCWsax qms6pc6rqtzJeajeSGW5uZTV3c9z+oAbAbDFUHirsVdirsVdiqYeXtXm0bX9N1iAkTaddQ3cZHXl BIsg8P5cVd5h0ibRtf1LR5wRNp11NaSA9eUEjRnw/lxVL8VdirsVdirsVdiqM0fWNU0bVLbVdKuZ LPUbOQS21zEaOjjuP1EHYjY4q+7fyG/PnS/zG0sWF+Y7PzbZx1vLMbJOg2M8APb+Zeqn2ocVet4q 7FXYqwD8/v8AyTXmz/mBb/iS4q/OrFXYq7FXYq7FXYq/Qr/nG7/ySXlb/jBN/wBRMuKvSsVdirsV eSfnz+fOl/lzpZsLAx3nm28jrZ2Z3SBDsJ5wO38q9WPtU4q+EtY1jVNZ1S51XVbmS81G8kMtzcym ru57n9QA2A2GKoPFXYq7FXYq7FXYqmHl7SJtZ1/TdHgBM2o3UNpGB15TyLGPH+bFXuX/ADl3+WNx onnAecrKInSNeIF2yj4Yb5FowPtMq8x4tyxV8+4q7FXYq7FXYq7FXYqjNH1jVNG1S21XSrmSz1Gz kEttcxGjo47j9RB2I2OKvu38hvz50v8AMbSxYX5js/NtnHW8sxsk6DYzwA9v5l6qfahxV63irsVY B+f3/kmvNn/MC3/ElxV+dWKuxV2KuxV2KuxV+hX/ADjd/wCSS8rf8YJv+omXFXpWKuxV5J+fP586 X+XOlmwsDHeebbyOtnZndIEOwnnA7fyr1Y+1Tir4S1jWNU1nVLnVdVuZLzUbyQy3NzKau7nuf1AD YDYYqg8VdirsVdirsVdirsVfQX/OIn5Y3Gt+cD5yvYiNI0EkWjMPhmvnWige0KtzPg3HFX2B5j8u aL5k0W60XWrVLzTbxOE8D/eGUjdWU7qw3B3GKvgr87vyR1r8tdaqOd55avHP6M1OnTv6E9NllUfQ w3HcBV5lirsVdirsVdirsVdiqM0fWNU0bVLbVdKuZLPUbOQS21zEaOjjuP1EHYjY4q+7fyG/PnS/ zG0sWF+Y7PzbZx1vLMbJOg2M8APb+Zeqn2ocVet4qwD8/v8AyTXmz/mBb/iS4q/OrFXYq7FXYq7F XYq/Qr/nG7/ySXlb/jBN/wBRMuKvSsVeSfnz+fOl/lzpZsLAx3nm28jrZ2Z3SBDsJ5wO38q9WPtU 4q+EtY1jVNZ1S51XVbmS81G8kMtzcymru57n9QA2A2GKoPFXYq7FXYq7FXYq7FXpv5I/kjrX5la1 U87Py1ZuP0nqdOvf0IK7NKw+hRuewKr718ueXNF8t6La6LotqlnptmnCCBPvLMTuzMd2Y7k7nFUy xVLfMflzRfMmi3Wi61apeabeJwngf7wykbqyndWG4O4xV8Ffnd+SOtflrrVRzvPLV45/Rmp06d/Q npssqj6GG47gKvMsVdirsVdirsVdirsVRmj6xqmjapbarpVzJZ6jZyCW2uYjR0cdx+og7EbHFX3b +Q3586X+Y2liwvzHZ+bbOOt5ZjZJ0GxngB7fzL1U+1Diqefn9/5JrzZ/zAt/xJcVfnVirsVdirsV dirsVfoV/wA43f8AkkvK3/GCb/qJlxVLvz5/PnS/y50s2FgY7zzbeR1s7M7pAh2E84Hb+VerH2qc VfCWsaxqms6pc6rqtzJeajeSGW5uZTV3c9z+oAbAbDFUHirsVdirsVdirsVdir038kfyR1r8ytaq edn5as3H6T1OnXv6EFdmlYfQo3PYFV96+XPLmi+W9FtdF0W1Sz02zThBAn3lmJ3ZmO7MdydziqZY q7FXYqlvmPy5ovmTRbrRdatUvNNvE4TwP94ZSN1ZTurDcHcYq+Cvzu/JHWvy11qo53nlq8c/ozU6 dO/oT02WVR9DDcdwFXmWKuxV2KuxV2KuxV2KozR9Y1TRtUttV0q5ks9Rs5BLbXMRo6OO4/UQdiNj ir6tl/PnS/zG/IfzXYX5js/NtnprG8sxsk6BlBngB7fzL1U+1Dir5GxV2KuxV2KuxV2Kvq7SPz50 v8uf+cfvK9hYGO8823lpMbOzO6QIbmUCecDt/KvVj7VOKvl3WNY1TWdUudV1W5kvNRvJDLc3Mpq7 ue5/UANgNhiqDxV2KuxV2KuxV2KuxV6b+SP5I61+ZWtVPOz8tWbj9J6nTr39CCuzSsPoUbnsCq+9 fLnlzRfLei2ui6LapZ6bZpwggT7yzE7szHdmO5O5xVMsVdirsVdirsVS3zH5c0XzJot1outWqXmm 3icJ4H+8MpG6sp3VhuDuMVfBX53fkjrX5a61Uc7zy1eOf0ZqdOnf0J6bLKo+hhuO4CrzLFXYq7FX Yq7FXYq7FVyO6GqMVJBUkGhowoRt4g0OKrcVdirsVdirsVdirZZmNSSTQCp8AKDFWsVdirsVdirs VdirsVem/kj+SOtfmVrVTzs/LVm4/Sep069/Qgrs0rD6FG57AqvvXy55c0Xy3otroui2qWem2acI IE+8sxO7Mx3ZjuTucVTLFXYq7FXYq7FXYq7FUt8x+XNF8yaLdaLrVql5pt4nCeB/vDKRurKd1Ybg 7jFXwV+d35I61+WutVHO88tXjn9GanTp39CemyyqPoYbjuAq8yxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KvTfyR/JHWvzK1qp52flqzcfpPU6de/oQV2aVh9Cjc9gVX3r5c8uaL 5b0W10XRbVLPTbNOEECfeWYndmY7sx3J3OKplirsVdirsVdirsVdirsVdiqW+Y/Lmi+ZNFutF1q1 S8028ThPA/3hlI3VlO6sNwdxir4K/O78kda/LXWqjneeWrxz+jNTp07+hPTZZVH0MNx3AVeZYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXpv5I/kjrX5la1U87Py1ZuP0nqdOvf0IK7NK w+hRuewKr718ueXNF8t6La6LotqlnptmnCCBPvLMTuzMd2Y7k7nFUyxV2KuxV2KuxV2KuxV2KuxV 2KuxVLfMflzRfMmi3Wi61apeabeJwngf7wykbqyndWG4O4xV8Ffnd+SOtflrrVRzvPLV45/Rmp06 d/Qnpssqj6GG47gKvMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir038kfyR1r8ytaqedn5 as3H6T1OnXv6EFdmlYfQo3PYFV96+XPLmi+W9FtdF0W1Sz02zThBAn3lmJ3ZmO7MdydziqZYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYqlvmPy5ovmTRbrRdatUvNNvE4TwP8AeGUjdWU7qw3B3GKvgr87 vyR1r8tdaqOd55avHP6M1OnTv6E9NllUfQw3HcBV5lirsVdirsVdirsVdirsVdirsVdirsVdirsV em/kj+SOtfmVrVTzs/LVm4/Sep069/Qgrs0rD6FG57AqvvXy55c0Xy3otroui2qWem2acIIE+8sx O7Mx3ZjuTucVTLFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUt8x+XNF8yaLdaLrVql5pt4nCe B/vDKRurKd1Ybg7jFXwV+d35I61+WutVHO88tXjn9GanTp39CemyyqPoYbjuAq8yxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KvTfyR/JHWvzK1qp52flqzcfpPU6de/oQV2aVh9Cjc9gVX3r5c8uaL5b0W10 XRbVLPTbNOEECfeWYndmY7sx3J3OKplirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqW+Y /Lmi+ZNFutF1q1S8028ThPA/3hlI3VlO6sNwdxir4K/O78kda/LXWqjneeWrxz+jNTp07+hPTZZV H0MNx3AVeZYq7FXYq7FXYq7FXYq7FXYq7FXpv5I/kjrX5la1U87Py1ZuP0nqdOvf0IK7NKw+hRue wKr718ueXNF8t6La6LotqlnptmnCCBPvLMTuzMd2Y7k7nFUyxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxVLfMflzRfMmi3Wi61apeabeJwngf7wykbqyndWG4O4xV8Ffnd+SOtflrrV RzvPLV45/Rmp06d/Qnpssqj6GG47gKvMsVdirsVdirsVdirsVdir038kfyR1r8ytaqedn5as3H6T 1OnXv6EFdmlYfQo3PYFV96+XPLmi+W9FtdF0W1Sz02zThBAn3lmJ3ZmO7MdydziqZYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmPy5ovmTRbrRdatUvNNvE4TwP94ZSN1ZT urDcHcYq+Cvzu/JHWvy11qo53nlq8c/ozU6dO/oT02WVR9DDcdwFXmWKuxV2KuxV2KuxV6b+SP5I 61+ZWtVPOz8tWbj9J6nTr39CCuzSsPoUbnsCq+9fLnlzRfLei2ui6LapZ6bZpwggT7yzE7szHdmO 5O5xVMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVS3zH5c0XzJot1 outWqXmm3icJ4H+8MpG6sp3VhuDuMVfBH53fkrrH5aa8Fq955cvmY6VqRG+25gmpssqD6GG47hVX mmKuxV2KuxV6X+SP5K6x+ZevFavZ+XLFlOq6kBvvuIIa7NK4+hRuewZV97+XPLmi+W9FtdF0W1Sz 02zThBAn3lmJ3ZmO7MdydziqZYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYqlXmnytoXmnQrrQ9ctVvNOvF4yxN1B/ZdG6q6ndWG4OKvjr8zf+cSfO/l+ea88phvM Wi/E6xJxW/iUfsvF8Il60BiqT/IuKvEdT0fVtKuntNUsriwu4zSS3uonhkU+BRwrDFXaZpGrardJ aaXZT393IaR29rE80jHwCIGY4q9u/LL/AJxJ87+YJ4bzzYG8u6L8LtE/Fr+VT+ykXxCLpQmWhH8j Yq+xfK3lbQvK2hWuh6HarZ6dZrxiiXqT+07t1Z2O7MdycVTXFXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FX/9k= - - - - uuid:8821779b-762c-6743-9c68-7f3a5e3bebda - xmp.did:779ae009-2b38-eb48-94c6-923993797922 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - xmp.iid:a8cac32b-00c6-cf4b-a912-99935168cf83 - xmp.did:a8cac32b-00c6-cf4b-a912-99935168cf83 - uuid:5D20892493BFDB11914A8590D31508C8 - default - - - - - saved - xmp.iid:e743d930-1240-8f4e-9990-55c7f8311d80 - 2021-06-19T17:54:42+02:00 - Adobe Illustrator 25.3 (Windows) - / - - - saved - xmp.iid:779ae009-2b38-eb48-94c6-923993797922 - 2021-06-19T18:02:38+02:00 - Adobe Illustrator 25.3 (Windows) - / - - - - Document - Print - AIRobin - False - True - 1 - - 24.000000 - 24.000000 - Pixels - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - #F56565 - SPOT - 100.000000 - RGB - 245 - 101 - 101 - - - - - - - Adobe PDF library 15.00 + + + + + + illustrator_template + + + + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEAAAAAAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAAAAAAAEA AQAAAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYqlvmPzHovlvRbrWtauks9Ns05zzv9wVQN2ZjsqjcnYYq+P/AMzv+cu/OGt3Etl5 NB0HSASq3ZCvfTL4ljyWEeyfEP5sVeG6v5h1/WZjPrGpXWozE1Ml3NJO1fnIzeOKu0jzDr+jTCfR 9SutOmBqJLSaSBq/ONl8MVe5flj/AM5d+cNEuIrLzkDr2kEhWuwFS+hXxDDisw9n+I/zYq+wPLnm PRfMmi2utaLdJeabeJzgnT7irA7qynZlO4OxxVMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdir4R/5ya/Ny586ecptGsJz/hrQpXgtkQ/BPcIeMtw1Nm3qsf8A k7j7RxV4zirsVdirsVezf84y/m5deS/OcOjX05/w1rsqQXUbn4ILh/giuFrsu9FkP8u5+yMVfd2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsY/M/X5fL/5deZNZ gbhc2en3D2ziu0xjKxHb/LIxV+aZJJqdycVaxV2KuxV2KtgkGo2IxV+ln5Ya/L5g/Lry3rM7c7m8 0+3e5c13mEYWU7/5YOKsnxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KsA/P7/yTXmz/AJgW/wCJLir86sVdirsVdirsVdir9DP+ccXd/wAk/KpcliLeVQT4LcSgD6AM VekYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWAfn9/5JrzZ/zA t/xJcVfnVirsVdirsVdirsVfoV/zjd/5JLyt/wAYJv8AqJlxV6VirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVYB+f3/AJJrzZ/zAt/xJcVfnVirsVdirsVdirsVfoV/ zjd/5JLyt/xgm/6iZcVelYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FWAfn9/5JrzZ/zAt/xJcVfnVirsVdirsVdirsVfoV/wA43f8AkkvK3/GCb/qJlxV6VirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYB+f3/kmvNn/ADAt/wASXFX5 1Yq7FXYq7FXYq7FX6Ff843f+SS8rf8YJv+omXFXpWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxVgH5/f+Sa82f8wLf8SXFX51Yq7FXYq7FXYq7FX6Ff843f+SS8rf8A GCb/AKiZcVelYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWAfn9 /wCSa82f8wLf8SXFX51Yq7FXYq7FXYq7FX6Ff843f+SS8rf8YJv+omXFXpWKuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVgH5/f+Sa82f8wLf8SXFX51Yq7FXYq7FXYq 7FX6Ff8AON3/AJJLyt/xgm/6iZcVelYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FWAfn9/5JrzZ/wAwLf8AElxV+dWKuxV2KuxV2KuxV+hX/ON3/kkvK3/GCb/qJlxV 6VirsVdirsVdirsVdirsVdirsVdirsVdirsVYxr/AOZ/5deX5Wg1nzJp9ncps9s9xGZhvTeJSX/D FUstfz1/J+5mEUfm7TVZuhlmES/S8nBR9+Ks0s72zvbZLqynjuraQVjnhdZI2HirKSDiqtirsVdi rsVdirsVdirAPz+/8k15s/5gW/4kuKvzqxV2KuxV2KuxV2Kv0K/5xu/8kl5W/wCME3/UTLir0rFX Yq7FXYq7FXYq7FVG8vbOytnur2eO1toxWSeZ1jjUeLMxAGKsLuvz0/J+1maGXzbpxdepimEq/wDB x8l/HFUz0D8z/wAuvMEqwaN5k0+8uX2S2S4jEx3ptExD/hirJ8VdiqW+Y/Mei+W9Futa1q6Sz02z TnPO/wBwVQN2ZjsqjcnYYq+I/wA3P+cmvOfnS6nsdGml0Ly1UpHawPwuJ06criVN/iHWNTx7Hl1x V40SSancnFWsVZH5L/MLzj5L1Bb7y5qc1i/INLArcoJadpYTVHHzFfDFX2z+Rv5+aN+ZNibK6VNO 802qcrrTw3wTIKVmt+W5Wv2l3K+43xV6xirsVdirsVdirsVYB+f3/kmvNn/MC3/ElxV+dWKuxV2K uxV2KuxV+hX/ADjd/wCSS8rf8YJv+omXFXpWKuxV2KuxV2KuxV5P+eX5+aN+W1iLK1VNR803ScrX Ty3wQoa0muOO4Wv2V2Lew3xV8TedPzC84+dNQa+8x6nNfPyLRQM3GCKvaKEURB8hXxxVjmKtgkGo 2IxV7L+Uf/OTXnPyXdQWOszS675aqEktZ353ECdOVvK+/wAI6RsePYceuKvtzy55j0XzJotrrWi3 SXmm3ic4J0+4qwO6sp2ZTuDscVfH/wDzl3+Z1xrfnAeTbKUjSNBIN2qn4Zr51qxPtCrcB4NyxV8+ 4q7FXYq7FUZo+sapo2qW2q6VcyWeo2cgltrmI0dHHcfqIOxGxxV92/kN+fOl/mNpYsL8x2fm2zjr eWY2SdBsZ4Ae38y9VPtQ4q9bxV2KuxV2KuxVgH5/f+Sa82f8wLf8SXFX51Yq7FXYq7FXYq7FX6Ff 843f+SS8rf8AGCb/AKiZcVelYq7FXYq7FXYq8k/Pn8+dL/LnSzYWBjvPNt5HWzszukCHYTzgdv5V 6sfapxV8JaxrGqazqlzquq3Ml5qN5IZbm5lNXdz3P6gBsBsMVQeKuxV2KuxV9Bf84ifmdcaJ5wPk 29lJ0jXiTaKx+GG+RaqR7TKvA+LccVeG+YdXm1nX9S1ickzajdTXchPXlPI0h8f5sVS/FXYq7FXY q7FUZo+sapo2qW2q6VcyWeo2cgltrmI0dHHcfqIOxGxxV92/kN+fOl/mNpYsL8x2fm2zjreWY2Sd BsZ4Ae38y9VPtQ4q9bxV2KuxV2KsA/P7/wAk15s/5gW/4kuKvzqxV2KuxV2KuxV2Kv0K/wCcbv8A ySXlb/jBN/1Ey4q9KxV2KuxV2KvJPz5/PnS/y50s2FgY7zzbeR1s7M7pAh2E84Hb+VerH2qcVfCW saxqms6pc6rqtzJeajeSGW5uZTV3c9z+oAbAbDFUHirsVdirsVdiqYeXtXm0bX9N1iAkTaddQ3cZ HXlBIsg8P5cVd5h0ibRtf1LR5wRNp11NaSA9eUEjRnw/lxVL8VdirsVdirsVdiqM0fWNU0bVLbVd KuZLPUbOQS21zEaOjjuP1EHYjY4q+7fyG/PnS/zG0sWF+Y7PzbZx1vLMbJOg2M8APb+Zeqn2ocVe t4q7FXYqwD8/v/JNebP+YFv+JLir86sVdirsVdirsVdir9Cv+cbv/JJeVv8AjBN/1Ey4q9KxV2Ku xV5J+fP586X+XOlmwsDHeebbyOtnZndIEOwnnA7fyr1Y+1Tir4S1jWNU1nVLnVdVuZLzUbyQy3Nz Kau7nuf1ADYDYYqg8VdirsVdirsVdiqYeXtIm1nX9N0eAEzajdQ2kYHXlPIsY8f5sVe5f85d/ljc aJ5wHnKyiJ0jXiBdso+GG+RaMD7TKvMeLcsVfPuKuxV2KuxV2KuxV2KozR9Y1TRtUttV0q5ks9Rs 5BLbXMRo6OO4/UQdiNjir7t/Ib8+dL/MbSxYX5js/NtnHW8sxsk6DYzwA9v5l6qfahxV63irsVYB +f3/AJJrzZ/zAt/xJcVfnVirsVdirsVdirsVfoV/zjd/5JLyt/xgm/6iZcVelYq7FXkn58/nzpf5 c6WbCwMd55tvI62dmd0gQ7CecDt/KvVj7VOKvhLWNY1TWdUudV1W5kvNRvJDLc3Mpq7ue5/UANgN hiqDxV2KuxV2KuxV2KuxV9Bf84ifljca35wPnK9iI0jQSRaMw+Ga+daKB7Qq3M+DccVfYHmPy5ov mTRbrRdatUvNNvE4TwP94ZSN1ZTurDcHcYq+Cvzu/JHWvy11qo53nlq8c/ozU6dO/oT02WVR9DDc dwFXmWKuxV2KuxV2KuxV2KozR9Y1TRtUttV0q5ks9Rs5BLbXMRo6OO4/UQdiNjir7t/Ib8+dL/Mb SxYX5js/NtnHW8sxsk6DYzwA9v5l6qfahxV63irAPz+/8k15s/5gW/4kuKvzqxV2KuxV2KuxV2Kv 0K/5xu/8kl5W/wCME3/UTLir0rFXkn58/nzpf5c6WbCwMd55tvI62dmd0gQ7CecDt/KvVj7VOKvh LWNY1TWdUudV1W5kvNRvJDLc3Mpq7ue5/UANgNhiqDxV2KuxV2KuxV2KuxV6b+SP5I61+ZWtVPOz 8tWbj9J6nTr39CCuzSsPoUbnsCq+9fLnlzRfLei2ui6LapZ6bZpwggT7yzE7szHdmO5O5xVMsVS3 zH5c0XzJot1outWqXmm3icJ4H+8MpG6sp3VhuDuMVfBX53fkjrX5a61Uc7zy1eOf0ZqdOnf0J6bL Ko+hhuO4CrzLFXYq7FXYq7FXYq7FUZo+sapo2qW2q6VcyWeo2cgltrmI0dHHcfqIOxGxxV92/kN+ fOl/mNpYsL8x2fm2zjreWY2SdBsZ4Ae38y9VPtQ4qnn5/f8AkmvNn/MC3/ElxV+dWKuxV2KuxV2K uxV+hX/ON3/kkvK3/GCb/qJlxVLvz5/PnS/y50s2FgY7zzbeR1s7M7pAh2E84Hb+VerH2qcVfCWs axqms6pc6rqtzJeajeSGW5uZTV3c9z+oAbAbDFUHirsVdirsVdirsVdir038kfyR1r8ytaqedn5a s3H6T1OnXv6EFdmlYfQo3PYFV96+XPLmi+W9FtdF0W1Sz02zThBAn3lmJ3ZmO7MdydziqZYq7FXY qlvmPy5ovmTRbrRdatUvNNvE4TwP94ZSN1ZTurDcHcYq+Cvzu/JHWvy11qo53nlq8c/ozU6dO/oT 02WVR9DDcdwFXmWKuxV2KuxV2KuxV2KozR9Y1TRtUttV0q5ks9Rs5BLbXMRo6OO4/UQdiNjir6tl /PnS/wAxvyH812F+Y7PzbZ6axvLMbJOgZQZ4Ae38y9VPtQ4q+RsVdirsVdirsVdir6u0j8+dL/Ln /nH7yvYWBjvPNt5aTGzszukCG5lAnnA7fyr1Y+1Tir5d1jWNU1nVLnVdVuZLzUbyQy3NzKau7nuf 1ADYDYYqg8VdirsVdirsVdirsVem/kj+SOtfmVrVTzs/LVm4/Sep069/Qgrs0rD6FG57AqvvXy55 c0Xy3otroui2qWem2acIIE+8sxO7Mx3ZjuTucVTLFXYq7FXYq7FUt8x+XNF8yaLdaLrVql5pt4nC eB/vDKRurKd1Ybg7jFXwV+d35I61+WutVHO88tXjn9GanTp39CemyyqPoYbjuAq8yxV2KuxV2Kux V2KuxVcjuhqjFSQVJBoaMKEbeINDiq3FXYq7FXYq7FXYq2WZjUkk0AqfACgxVrFXYq7FXYq7FXYq 7FXpv5I/kjrX5la1U87Py1ZuP0nqdOvf0IK7NKw+hRuewKr718ueXNF8t6La6LotqlnptmnCCBPv LMTuzMd2Y7k7nFUyxV2KuxV2KuxV2KuxVLfMflzRfMmi3Wi61apeabeJwngf7wykbqyndWG4O4xV 8Ffnd+SOtflrrVRzvPLV45/Rmp06d/Qnpssqj6GG47gKvMsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdir038kfyR1r8ytaqedn5as3H6T1OnXv6EFdmlYfQo3PYFV96+XPLmi+W9F tdF0W1Sz02zThBAn3lmJ3ZmO7MdydziqZYq7FXYq7FXYq7FXYq7FXYqlvmPy5ovmTRbrRdatUvNN vE4TwP8AeGUjdWU7qw3B3GKvgr87vyR1r8tdaqOd55avHP6M1OnTv6E9NllUfQw3HcBV5lirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVem/kj+SOtfmVrVTzs/LVm4/Sep069/Qgrs0rD6 FG57AqvvXy55c0Xy3otroui2qWem2acIIE+8sxO7Mx3ZjuTucVTLFXYq7FXYq7FXYq7FXYq7FXYq 7FUt8x+XNF8yaLdaLrVql5pt4nCeB/vDKRurKd1Ybg7jFXwV+d35I61+WutVHO88tXjn9GanTp39 CemyyqPoYbjuAq8yxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvTfyR/JHWvzK1qp52flqz cfpPU6de/oQV2aVh9Cjc9gVX3r5c8uaL5b0W10XRbVLPTbNOEECfeWYndmY7sx3J3OKplirsVdir sVdirsVdirsVdirsVdirsVdiqW+Y/Lmi+ZNFutF1q1S8028ThPA/3hlI3VlO6sNwdxir4K/O78kd a/LXWqjneeWrxz+jNTp07+hPTZZVH0MNx3AVeZYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXpv5 I/kjrX5la1U87Py1ZuP0nqdOvf0IK7NKw+hRuewKr718ueXNF8t6La6LotqlnptmnCCBPvLMTuzM d2Y7k7nFUyxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVLfMflzRfMmi3Wi61apeabeJwngf7w ykbqyndWG4O4xV8Ffnd+SOtflrrVRzvPLV45/Rmp06d/Qnpssqj6GG47gKvMsVdirsVdirsVdirs VdirsVdirsVdir038kfyR1r8ytaqedn5as3H6T1OnXv6EFdmlYfQo3PYFV96+XPLmi+W9FtdF0W1 Sz02zThBAn3lmJ3ZmO7MdydziqZYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmPy5o vmTRbrRdatUvNNvE4TwP94ZSN1ZTurDcHcYq+Cvzu/JHWvy11qo53nlq8c/ozU6dO/oT02WVR9DD cdwFXmWKuxV2KuxV2KuxV2KuxV2KuxV6b+SP5I61+ZWtVPOz8tWbj9J6nTr39CCuzSsPoUbnsCq+ 9fLnlzRfLei2ui6LapZ6bZpwggT7yzE7szHdmO5O5xVMsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVS3zH5c0XzJot1outWqXmm3icJ4H+8MpG6sp3VhuDuMVfBX53fkjrX5a61Uc7z y1eOf0ZqdOnf0J6bLKo+hhuO4CrzLFXYq7FXYq7FXYq7FXYq9N/JH8kda/MrWqnnZ+WrNx+k9Tp1 7+hBXZpWH0KNz2BVfevlzy5ovlvRbXRdFtUs9Ns04QQJ95Zid2ZjuzHcnc4qmWKuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpb5j8uaL5k0W60XWrVLzTbxOE8D/eGUjdWU7qw3 B3GKvgr87vyR1r8tdaqOd55avHP6M1OnTv6E9NllUfQw3HcBV5lirsVdirsVdirsVem/kj+SOtfm VrVTzs/LVm4/Sep069/Qgrs0rD6FG57AqvvXy55c0Xy3otroui2qWem2acIIE+8sxO7Mx3ZjuTuc VTLFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUt8x+XNF8yaLdaLrV ql5pt4nCeB/vDKRurKd1Ybg7jFXwR+d35K6x+WmvBaveeXL5mOlakRvtuYJqbLKg+hhuO4VV5pir sVdirsVel/kj+SusfmXrxWr2flyxZTqupAb77iCGuzSuPoUbnsGVfe/lzy5ovlvRbXRdFtUs9Ns0 4QQJ95Zid2ZjuzHcnc4qmWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KpV5p8raF5p0K60PXLVbzTrxeMsTdQf2XRuqup3VhuDir46/M3/nEnzv5fnmvPKYbzFovx OsScVv4lH7LxfCJetAYqk/yLirxHU9H1bSrp7TVLK4sLuM0kt7qJ4ZFPgUcKwxV2maRq2q3SWml2 U9/dyGkdvaxPNIx8AiBmOKvbvyy/5xJ87+YJ4bzzYG8u6L8LtE/Fr+VT+ykXxCLpQmWhH8jYq+xf K3lbQvK2hWuh6HarZ6dZrxiiXqT+07t1Z2O7MdycVTXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/ 2Q== + + 0 + + + + + + + + + + + + + + Cyan + Magenta + Yellow + Black + + + + + + + + + + + - + + + + + @@ -127,183 +129,3921 @@ - - endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/Properties<>>>/Thumb 25 0 R/TrimBox[0.0 0.0 24.0 24.0]/Type/Page>> endobj 23 0 obj <>stream -H‰Ò÷wVÐ÷u6PprqVàrõú!CL!#L!cˆ��¹s)”+˜(ø**d±P�{°�Bz1W!� Rc¨`h¤`h¦�œ Ö"u-r¸‚¹‘ÔX€TÁ•˜(èš•X9…`Û;$ú endstream endobj 25 0 obj <>stream -8;Xp,rVCX@L?f9"! endstream endobj 26 0 obj [/Indexed/DeviceRGB 255 27 0 R] endobj 27 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <> endobj 34 0 obj [/View/Design] endobj 35 0 obj <>>> endobj 32 0 obj [/View/Design] endobj 33 0 obj <>>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <>>> endobj 28 0 obj [/View/Design] endobj 29 0 obj <>>> endobj 24 0 obj <> endobj 7 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 25.2.3 %%For: (Daniel Bayley) () %%Title: (illustrator_template.ai) %%CreationDate: 18/11/2023 7:30 pm %%Canvassize: 16383 %%BoundingBox: 7 -17 17 -7 %%HiResBoundingBox: 7 -17 17 -7 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 259 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBCustomColor: 0.960784316062927 0.396078437566757 0.396078437566757 (#F56565) %%RGBProcessColor: 0 0 0 ([Passermarken]) %AI3_Cropmarks: 0 -24 24 0 %AI3_TemplateBox: 12.5 -12.5 12.5 -12.5 %AI3_TileBox: -294 -408 318 384 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 4 %AI9_OpenToView: -11.8017206063087 5.30848013109426 24.41 1524 934 18 0 0 6 20 1 1 0 1 1 0 1 1 0 0 %AI5_OpenViewLayers: 7333 %%PageOrigin:-294 -408 %AI7_GridSettings: 1 1 1 1 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 16 0 obj <>stream -%AI24_ZStandard_Data(µ/ýX´È: p8 C   �u¡F)’¤L…6œRUüaóc£Sþpl6gK¶»$C,hW¹B ÈÄÀ:ŒZÍ×­—šþ2)ŽÓ@DI|}¸ß1ÄèPúTE� Ë#)E�#’>ÉÈ‚аŠ*1$§*Mp‚’аbĸxÀ÷;ÌòKçÿfç-TÛ³XÃþKžqÚÉÎL²¯a áá4ѯ·“Vþ’gI„‡ÓL~é]o‚üÖk€0Š*;?þâ¿$¾b>ª ¯"äŒYra«ÃÂ%†Œä‘ôH.ú¥#òä:œ Ü�ȓ˯õ¤,ð@¿Ò$MÒ$€G¢¦I¢ tJZr‚S„¢Š‚“Å€~qxk/9hpœú¥/·îý•¿L£Nã×_¦N€A§±$éWþŒó4[=&#Â#úž\Æ“·u‚I§‰ ÓB\[û øÜ÷/SÁïü"~éŒ-ŽhýgʾÏyKô7Ô§¡NE§âÂ)¿2r¹U»†8NUÐýú‰ªõÄÜqœ†ëBå�„²c£Š~ýž’‹«¢NÆïi;î7V¿Þîêà8�âqÅ÷ö›·_ï”<~eÃÚcQ¡àÂC¡U¹m­J80ŠÏo^¸äWˆ1‚EDDìç¶]ó<ØÕ~‡¥Ôoù‹»ŒA|ö�[_‘žNKöô&qel1]Ø·ßÖýNOȉÆEB(-ö­˜²·KMÈÓzô»J&óiŸ†_[, o‰pݳb^¢m}ëÜ:ûxš=\¹µÀM�+ôo/«yï)³g[OÎóâºi•ÜÏš­uxrgÕÚ›ÿÍœ�îÛû"4É¥Cé�Jök§íg*åÒ æ>WÛéèÑ¥KÑJ‡P:¤èP:¢Ç[-¯Ý*Ùó»Ï1Ê�· -bt)¥‘RZQJ饥RöM ;óÜúóÂgLÝUÓ&Þxs8OügKµ\|=ΣtοÕ*P;)¼|&=Wï”Ña”5dö+öï�[ä{ ì‰ÝTØ÷¹§ÓvºJä…Yt³ìfŒøyùõä&,. ’díãs�ä·@DˆC§ôz—ÙÜ ôz‹¾3;ìû—²g!‡#‹äô7óAÍ{*À#„1j�ÇÕ‰9aÞ~•¼ö,–*yKDksÓ—¯oW:;ìŽ:m¦al-šŒÛ Ö>S–ÿn´þÄFë#�£ú�¼y0Mù«†³AþiÂîßí%�Wµ™§­ÚwÁo]Æ -‘®xÁÎMg¶DßÜ: aÄd@zßsàóäõ̲ìí -¾¶:lt×­õcæ¦ œwé}ëeÙsp¸å%�ïÓ*¶ÑÊ® -¿ï<à÷F§µü%{-ã¶|‡÷ÆÙ'É/iç74|’´Ú(aÑs>‚bk¶¿’'†J‡Îƒé+Àƒ¹ôµ\fî)yÛqS_˜w`ŽÞ_y›Íš'&Î=µ¹ŸÃ s0G àÁ̹¼�9ÍÜSbE2’[×¥¡”&QŠ"AÖ#)YÖ4Yš&Jiš ˆŒò{¿�íÄ Ñ00°­7-/Y NP” ))ŠÐb@·&ɪ$M“Á¨Š¢IŠ”Œ¬hQº4Y‘QS%eEÃv\­L2r‰<º½ õèg �¦1ÜǼN›W@këÄÚ:ÙÕÓ.ŽH’wž”†7wGS`1†(¾ª/ÂÓ¸âñÆ ¡ǦÂa£9d`Wp]£7àÐ pØ|›„I’‚"+ J%§j’,)Q�¢*(+ˆ’�Ä€nYP¤*ÊŠ¢(VÅ€›‡~5š×^˘~ÃÆ Ï V6Þ°X l�4ü‰þ8ï -­zB"èÜ›U] -¿un‘§¹¼ñh4þÜ\h¸‚ Q «P’ îó‹ïãi.¿øÐhôÛoWv~X0:„2z|ÅÓh×€áŠÆF=ìà E~-3xþ˼SÁ«†m¨c»!S )3#@c00,« ¦“MRtÀD£à`ˆBƒp €@ ƒ��P‘Æ1 !,³V“A]6“‡v‡a ‚‰³%’eÜÓäÀÜTÆ�ȵoûÔGÓ_G–e0£èK=Þ&t P„£‰©WÑç�E�€¢æ­³¹£ø"”1|‚¡±¿"¹z‰¼qåñ˜5 -æ8¿@Š�¡_ð¥ï4€Î$=ö¶n¯#À4µ  ‚öœZfU¥u[ ž{=›½®“dÍ%¶@ɼ¡@Ó—Fõ˼<æ%è,rÃi0¨ˆ7´jþ=�A%ß5¼XYJˆã¯Šý0{·LÔ²3è:üQ€ñþZï[1NwQz–q¥_1;©KDÇÁò›¦^ Öâ¶:Ÿ’l…(‡°r£_å²Â–Ï#{j?¹·Êù¦ÃQèžÞõŽý\kÊlÈ ú 1Ë;mトóŸ�G*xÔÿêhÆa½;H9‹.Âû /;é½&¤ò ²¨î7fC‹$¨½®Á�À´“‚†Ö%©ÛÚ�aדõ9ÈŽ¬Á²3­¬5į¯7¯ºç+¬ï°:õÀ»Ú.=Ð;¼O2ón§¦"ksÓóÛæ;å>Â4*—¶ðUÁ�Ü�¡ß?$àn|X6O,Ú‰<Ît‚ÄÔ úʆ°2Zµ‰ÓŠ˜ä·AµÍæA"ÎaËŽÁ dOÓkfÐÙ¢-„Vjëg¦ö?é[ËüâÌo©Ùã•‚$`mç~Š"YM¶ü³ZíÉBâõ ºfq _½… --´cœôgª»‰Ô±Žkx:Ÿ¹ãÔšhdø‹gÓQ^Â0au½ÏJìqû ÌZ`‡ÖÝáŠ$÷yó#Æ:Ü´¹¸«ÆOSVò|ßÉZíuòª?É�ØmÒÕÀè3§ÖÞÀlgLÇÄkð¹Ó§ ¡×�|¨Ð»Ejw¬é% XŒ/›N$ßåtœ…ŸæäF~ƒVMÛ=ÈU¼º[Ä%ù6‘m~—{¸¤»¾ÎŸÈÖX²Cg2€pq­6ê«1Ô«Ìí@Ž_“}ºáøa×ë^¡Óq8ºyG£ 5ºñ£ÎŠÖz�^0ƒ±Ã1&Õ4¸± Ÿ-X\Š +endstream endobj 3 0 obj <> endobj 5 0 obj <>/Properties<>>>/TrimBox[0.0 0.0 24.0 24.0]/Type/Page/PieceInfo<>>> endobj 14 0 obj <>stream +H‰Ò÷wVÐ÷u6PprqVàrõú!CL!#L!cˆ��¹s)”+˜(ø**d±P�{°�Bz1W!� Rc¨`h¤`h¦�œ Ö"u-r¸‚¹‘ÔX€TÁ•˜(èš•X9…`ÿÿÿÿÛ;$ú +endstream endobj 15 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 30.6.0 +%%Title: (~ai-114c9dc2-27ad-46af-99f5-a98294587d8a_.tmp) +%%CreationDate: 8/18/2026 11:59 AM +%%Canvassize: 16383 +%%BoundingBox: 7 -17 17 -7 +%%HiResBoundingBox: 7 -17 17 -7 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 109 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBCustomColor: 0.960784316062927 0.396078437566757 0.396078437566757 (#F56565) +%%RGBProcessColor: 0 0 0 ([Passermarken]) +%AI3_Cropmarks: 0 -24 24 0 +%AI3_TemplateBox: 12.5 -12.5 12.5 -12.5 +%AI3_TileBox: -294 -408 318 384 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 4 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -29 5.96330275229411 36.3333333333333 0 8187.94036697248 8190.23853211009 2765 1260 18 0 0 78 127 1 1 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -29 5.96330275229411 36.3333333333333 2765 1260 18 0 0 78 127 1 1 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7333 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:-294 -408 +%AI7_GridSettings: 1 1 1 1 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 20 0 obj <>stream +%AI24_ZStandard_Data(µ/ýX|¸:’à90) ¹ †0¨CEÜ´È2‰ÐÅ¥ˆ¥"²ÇÇ$¦¡ÌñÁ-¢ÔŒl›ì�×�S h€£œœPc4Å÷¸5ëìå¢Nvë¾5_.Vˆ¸n?&ÃçË­Ùë}Û0…^ƒÅBá`,�÷,”+Âû{K[¹ªA*‚ÒTU±z±‚ð=êñüAZóÁ5Y·f5/|&/‹çy&‰¯ý‹^‰ê·¼ù·•<}ŠÐ©‰‚þ¤=’¦èÕ{Æ'¢žøx¤œ‚âTIÒó ê1Q�òçÏCzÂØFJX™åÖŸ_ö¼ñžøÏX�Š"è�ñ@'-ûþöSZN×�Ä>Æþ½R£lžçE1ÂÌ&> ÕDŽW^ËÌGÈ=¶îÎû¶Ëänc�Ô8û"Ž}„b…˜å·<÷oÚ®Yìjáƒâ�Á€Ð�ÁçpŒ·Æ„}+¾<'â„&r¼÷ #óþbNcý”Xîô•[_LÉÒvó9Ý-Ìç´&aelñtd·n-«–ñv³õÂc°î׆Jéäʪu'ÂuËñtë[¥ÆYÉÏÜaÌ­�Í0¶íôçˆÁ¶–Õ×4R„\‡n€Ã.›]Â|�DáÞÎòq…q‹ñdSõE`0\á¸Â¡þ*†õ×nñ]¡;àÏ ð§p6þŽä¡‚¢8=ðyTõ"hŠ%EUŒ¦7MÔ‹Ô3Å'z<¯ªNÔTA©hz< +‡ÁŸ[ôiÆó6V€x^°¶V fð¶V ΀þ8ïYµœ@L¹16Suu€4üV©Q ’ߤÄèÉ™*ÀT0±müâ+a(˯¾@Ž~»Ù˜�%Õó÷ ¿¡C†Âi0õðD›npH#?Í ž?“WZœ¢×àzA²ˆ¨§Éng?“«D~‡÷xqΩë–CQÒ£‰„¢&Â!|Ï~†�Š®Ì8B?Gö[\#"8«ôÖÈw6¹ÿ9‹l"/ú‹‘8i¼{zkÁ–Ï}®–Ó +:Œ¼èôÈ{Ñß‹‘ú‹è0oŸ#ƒýÊiûšz�™çœpÎ9ç¤æœsR[½òsDÝ•R)ÿVk™V΋o·us*DtÃ9…é¨#+šRL¡™‘$IÒ£@0H$&IÅsQVu€@ÄÂð@0„¡0 ‚‚‚„¡€(‚Á�€@–Á ¶²�m"ˆMs&Ó.&„*ãüOJöeÛ«œä·¿ +¡ŠáLM¬IdJ%S,ûëÈmÆl8ÉÍe%ò.‡”˜ýTÁ¦ö®@ê+Á`\ nÄù Qbüo�ëˆWâ| 0 [§Û%,ahCõàçð÷þ`ϲœ½àøxÀ• sñq¿„3kŽÄµ½–äPõâSϧc×oRÕ6æã "¯›y*àØÃE�ò¸X ï¡“J¶ß#ìã=º#a’Â5;!u7õKu‡ìÓ;oÁ(=—l(ŸPÀÒûxáB(tkžj¨o Ý=+7àþŠÙ�¹&L¿¢ÕÁpÀç…hú‰ r8{Õ¼Ðon–¨º1(¢%F� ÆÝ‰8sè9Œ°„(ö Aðê’P5inB®úôž’¢NýBùÕ oó¥ë�„=·ó»rœ;§äòŽV.§Žlùêºrm‘3µ_ZeaÛ�Ó*°¥i_#ÜÔ‹pßVÒŽî?§¬ÁÀ½FÄÉ=ºáeæ-m‚¯¯e”�ðйY +”þl©›†€ó>M±ºšø]‹vÑ ˜¤Ak€é^ï@/^~Dmu�ʉDjýà×p8è,<ö1N|ÇGPŒ9F›Þ/ }³ j dZ7mA(Ðê ¨!q–� +°çÛ±çÉÿ;Ò­F‚�烾jÑÖR0™0k@¶r ßo~|ˆ>Ç,x�l�%%ýìíAÐÎÄQÇB éÀƒÜö!²ít\a4)%ƒ¹-¸·ö4ÛƒÇ)×ê2ue±µk}¦™¦6.‡T<Ò"ºm†€¢£Æ˜B–$b‰KÆýîí”ÝÓäÇ„c&áÉ;–ÁƒD§[�o… )KF«ò�iÑï£G-3.Ó;Ó¬ÕÛH_´‘:àžÜ]B�.ê)´–œgÒ³cÙ!#Á#3׿1AvþZÉ &6¯Hc ²Jç*r ïì¨*úïLyL}°dMì=A´ùДåÂwt~+Èsîö–¡€'èÎŽh6d=Òm5—ô£ËÇd1hÓé×Vˆw^6†mýVPv‰äör´äáXàœogAhouVëÌ6ç_¼2úË}pˆŸÞRgÌŽŠRˆÝ +K$ñ£ÇÑ T02;Éж*Åꜟ3+È3ba¯„ëû šxéÈsÝžß0�£Zb/‡‡t¯ñ§jgøÂˆaSÁ:£ÁÄL@)q¦L6ÂoDCL�jODŸ��$/Ž"­RúØ”kâùÄcGyaV�•R£X–0‡ü·´ +x1% %Q9€*"ín±Y‚AFK‚Ôš ÛZP…§�Ù¼1áG4¦ô²V‹«ÎõýrQù Vm^cJ")zÛm'EÝ`é•Ã9Ôop÷nA'rx:H ‘ììÒ“ÒÀ“k²y¹a`퇩*ŸK·`c@cÖjº5o*÷ë +-芯O` Ö‹QÑS©�"uƒ4šà‚Çøýõ‰Qé¼ ­ô(ëxcW‚,V{ !Î>s¯1’.ÇPrþòv½|ñ`¿Ãy‚ãñô1ŽõúƒQ'ª¶kÿx¤€Ë¿*ª2Á&�æ(‚IϬí”H8Ñ ½m„]À +k 4­úà "¼ºú‘Dx$CÔsÜê˜À|Œ²• oÅõDz÷$ø@ÞZ?0ó¦rüÁdjUxC§ý÷€Á«›{V2Z ¾jñû�èg95³ƒ¸žåwlæ›™ª§‚C" ¾¡ÕÔ2úëY-Ûí‹Í*m’ÿØ“¼þéÝdY¡ré„Ú‚ãY¸"ò°¤¦!KÚµ¨ví� ´õ¤I3€‰/žQ[1ÅŠ1K¿ µ)Š¿])r¡áÝ{P×…¢4É èÛ”ÒaeÜñÒh¿Í+ŒŸÁNç6M®9roSí¦ß‹~SÙ¦¹E½ ¿DË4)ji�«8v,×^»Nõ7ýÚÓâ¦Ò93ÓK,ìª@Ü̽µÐ ø¥fÞ´�QØIX®L#�Yšºp6N.[(¸Œ9Û½÷=Nn~KÄ‹1h¼ÁrkìáéFe»p§d‘ ½¡¿ªsÎ[L6øÕ‡+Ê`Kïg¿²ìë”P L–Û~oõ†EñÌsÈ…¦¾b¾×ÿ´©§—Ìÿ=q#•Hë¢=ŽDYÕÙýÀ„»nº–!_ Á ¹k)nò¨©9Z|þýtwZ€‡Úô¹„ƒžÂ{êÛ@%P-ÿŠÀÔü´›* ÉvH|¢ ŒÚ‹¢WE†p ƺ +éQËèãŽSwÓÎ4ˆÀz=¤®¸§,ix¢Ø5¥ZvyL¨×*´DVùW#×ÉD g‘6ÃÖ’D ¸Þ;Û“ü4µ�#E2ú´�ßð£q9Ôe›}… ˤ•d±¬$0ä§ig‚çñà¶Z¼w0N¹× ÷ÄfJãTZèdÀ…M´°vÓø‹êx +âi®Ö7„·¼ã³*à5«ïi;ÏÔð$jw—b²í�ëuå7 Êa1›\œMÞ <ØÚ«)€P[µûvš²Ái +é¯{ _ÐÅÜ(�‹p°_0(p³¢5“šˆKë7Ëk½L�cBÙÞ$ÖÒýêâ´“ðÒŠÛ:"öêjÐéFã½þ¨ˆ¹L0µs®—:ðXàˆ–éR|dDõZ}îË:êsÜLÕAm�R µäÕL!Bá®¶Z1:Õ�Ø]hÖìÕ½°:F;F¿ Ö‰¹¬FqD}t‡Üô˜¾ûœþULÐ0X¿5É÷9•m”C*‡äñª9ïî·ùpBc7œšµUò’“:1þ¤²Ât%UUÖÑøsß"ñvûN­z®b*Íyä�}’×ý¸á}Ò{ó�}öJy’Ò\Ü�=Qu`d‘!·/YqÛ s;à Ð/M„+&P®Z}"´' a RHëZ pâG¿‰v�ÓLgŒÌ”›�:mI å]=¹Ã¼"‚Uàè‰ÜÖ sÜA4ûšÊÀ¢([l†BTgèJsÚGØ+‡}UÞÖhªÌPÙ+IéÛn%¯[cæÓ´AÐCPæ®D�>+„Øe,È~™ :Ðð J�&œ"Š0UsoÇMH}6Ǭ4¡–?'ð§CÞÙ¹¾˜'•¤�íÚ%ºÇFµ¥€ +Ž…õ±Ì +¶;q4aG.PÎ è·½ÙÆ�ÎwRY fO0¼DÅ8J]oZÏ3Sn¤ý2ðc /˯®þòÄé 'Ö™¯Ó+èÓÓÑ]ªPp‰�•”WÌF߃QÍÒ!òÖB40ˆýĤ Ëú…è°ý1öjåëü] þã•sºˆý[(«3D(âÁîE˪Ð0P?kËñë^>káö/1F Fm«Ât>‚ q.Àã`"àØ!ò+3çÀ\^`Ð"ñøÉ¨1N…Ýñ€Rí,=�—X ÕɰqšûSÏí´¢DÐsñŽmÁ²ý¾®¨4^¿"VAu© ,בzo:¢šç,¤[«ÒÖ¢ž£¢¯3" )µ)ÊtÒHœ] �¯j¤/P%ÆÒ�²ô¿V¬„q}ÖUÙµGƒ»h7¨h&�óOÜ0ýAæ*Ë–w œåã±ߪ´àƒ¡dŒ‚Yý’+]ª…šõ®ÕÙ˜M}[Q»8~Ï5ÆŽV†sö�>a^‰ž]Mœ°�‹f/C7°dH�d@-!�½(lWfã)�~Ž»1á`oŸ÷,§¿÷)›xÆ’E¸á™®3�X¼B<4Éóá��#qØc“1‰²6 ¦4TX0þú ò›h’%)0±ºxX³vÒTÖÆrJXš3bZÇ` �£W­¯TÁÄò{eu"y*˜l1zÛ"I^ˆJ¥Jļ ¶ø·†zžáö +»þU¼üªŸüÆg‰×õàˆâþ<–%ãõ3Nðÿ ,˜D¾{ÖËC“¡‡Ç`+§XÇK„²Q˜k�‚=І¼A\e—Ö vÄõ.ÎWy·lu®¶-×gåÑ +÷ʽ2dL"³ÉŠ‹®]Â}©f…ï�‰ÐCWJa�ÂÈó+•´§úù]cöW�çUúS£{]øcauô1Å7/{—�dõ ¬è®·»Oc‚dö£ÉÏYI=Tõ†¤¯æxbXSšÏ؆ÍTkΊ?ת¶ôµ¤!Å‘xæv: HAªîmàKaû̱"¥éfß“–f +ÆØ¯Dž… µ3ù¹æ”saÁ]i§#Jb\ú0ÆÀ W^¾OþÙi~¶óŒ ˆWö°y{ÔÙ¢:Á0r©@£pÿBk \ óe(„j8ßÐyÄ=‚X3Y¼8�¾Ãõ.~œÝœ-•Cøåkõœ»�–(\Ë-–Ð]W‚§ãìðôëj‰¯ n¬<;äwª¢l ã‘0ÍS°á뜳•44×·–1¥ÒVçÎË�1�Oíÿ<¦ +ç ï×LÍ6dBZ°×þo32á”ÕqÅÈi©£ðÃ0W>bý-”òmÕ2#ðw®’Qm¿ �ƒ16?{JCw +ZÖ÷œoµ¹uAï.ò%Ô�ÉQßwJÜ/9ÞTDÐßø…ð:Ýí[Õâ�Ï!Ù["yÆ÷mÈ[`ÌX®Ë`òYpNhÿŠê6\t�ܺ~ xòJÙäÎù,Gëë«ñý:žÙœ»lQ¬,ƒ×³¿®rÞ€Žõ¯ø~)It>ç3Öh<Ø $=L ÅmœSMg:8§�bÆ'ŸÂ™ãW¥HÌùÑ©–gA@ÝSƒ—9Rý2׬líN(qØ`vËün«ÌÜu¯C²s‘â.è¯Ï�^æÄ×FÔ ‹ ÐÏĬüQÒßvd5€‹¤ˆ àvòÑÿçG–bÅ–°PÑÌ®7.ƒè°‹@RØa$ ÂÑi©z‹4s¯˜#šp1DÑ,éšåôba¹ñ Ý97Bím\‘¹*_ +fÆœ³{Â÷Òà‰!ŠCo�}ybQæÀ+^Ù=Ô’ÝE´Ÿm0ÇŠL‹a¡ó(C]±aŽ·ÜE뺎\º`ˆçÅÚ$ž�ˆg +³Æ@ôaÃñºŠÔýºX`)ÝD. w4J +<¿Êà”,8Eê68`ôŠ$ÉI"uCUv§È?Ï;…¢ß½ú¯KŽ3ðÚöWÂÔø½c~'@P.—…Ïš�“]ú»£uz�åÒøå±žµf2ƒ4.©Ã‡ßº#Îã;Õm2³nªæ:ø½ÿúæË1™œ¯ñÉùz~뎼zÑÌŠÙd²gF¥gø6Íë²¥KÛQµ8Û‰¿¶^õùfÜÑÜø8Ûbº4Þ„ß׸ó~36]¸XBÓ…2Lß;ƒ4îŸWãüË­7vÝ>5næ±=NŽóØšÔw+~ú†"“ãñè÷�¼ßv&½\øô7G­¸šâ|.ù=e+îÂ`�šµ3bðfѦnÌ–²÷ȃa¿_‡ã¿å‹â;öÈäœ~ëŽV$î!ìg¿Üò¹ ?‰ßº#òÞܱ·|wO·$Z)s“©š‘_£ýDæJ[i+m¥­4Noü±ß¦È\iŽÇi§ò=uFD|´B)�äÓgZió÷;Á —.½äVùÍÛoþ“T×üå†�[Ã^þ’0ÕOw×Üõí–{mûŸ›ðã4\Çaæ/ù/æ&ü(½Ü,ÎûmÞOqÖ9Én·ø»�›ðÃ\0ïãŒEû1ù™_ã¦æÍè×ßnšµ†ß ÷û½=ÍýËo†Ÿå˜·1œíJË{ìþæ~ÜÌPêoÝQlÿ¿E�ª±�á*ÙÞ“ez܈³/Ðòµ@Ësö[ðf³þ ã ã`äjÅbä_T·e¥]ظ3÷/êfÑân3<Çw›±òñ:Ç48û-iÿ�Õ•¶ÒÈ�ÈJÛ¬´ƒiYiއýÜt\Ç}�G“ã1š�K¦^ºšé.�vf³ñ¼ wñ¼Ñäx8Pˆ¦ûÿÍÖDêOµ?—¶uAÕW½KÅÐMÍ`ºJ7�³Ñ`¸Îó6í4]çaj†ë6u“ñ6:1Þ¦Ût¯«\fÓe¶Ìc•Ÿ ÛC˜ÓÖ›Ô}+î>~Us£-~×ecá†í!Ž»1[ +q }É�ÔÛ“‚õ]à÷/¶;;è¼±Ý_ãÖ›´�¦ZïâìË<êpM\ ¿©Šh}}ËW.�36é{<š0ŽÛ÷¦qÛÁ›9þ¹$Ý ‹Êø5Á­Fí–ÅÝ�óm½.»¯ï7ãöMÜ9Ûªm9†ùMÜ4U½o⯿~Ó«á÷½é‹IÛC±“wj<·ž›zš7sœ=�i ¿ÉÕð#µÕx„z˜(Óg~ókÌyÑWçüÎ~E|{j¾Æ^‚‘žGºuÎ7XÌ%–~ûºµ1fÞyÞ<¿dü7²��s=VWß}#û(nŒ�k`qóܺ®Þ<uÙ¢\Åó6Õó|ÂÙ �üXóæ9Ýã×·_Ò¾üæy�m±ñ~�·ØÈqœÇz}Iò½q ªµ-�/¹c$ç7ç=’Ý’Ú~”j“¡¯­s~]6†·Î9W½~ó÷œ“[þ¾[ñë‹;—ÙÄ�‘@ß/Žsk#ûøñ7vÝÞºY»°¿ä&n ‘Û6ö±èí&n ÜŠlÞó¸[_—å[Ïãkã6÷›±7²�WãܺäFö±üµÝ¸Æ¸ÁëKòÞ,ÖÝê<“Û×­,Z}7ßɾïëï-6zõ·¹õ¯ß<¯ý2nžw×ï7Cï‘o¿q�­ÕÚ,æâ˼5CËälüíɽAÿz±DÕØö¸4&ïcŸ¯7ˆ’WŒ}ð·<¶= Ðt3nínz�ø5áûý7f»5…ìcòó»�¡æýø51½¿�ó535ü>ªgàoó=a*“æ|=—Öa>*ç~°�n]�ˆô÷-âÊíÉùzjÆÓ¼\øÒi2^†ë4�#KÃ…‡z?Íñ¨.Õh18©FKŸt›‰ê5YÃOD‹asÜ/§ >\$´0 \%6Á¢Þ!õ…_”lcQ’d0…Iv*°T²Ñ¥b€ÀâP–±ÒÔ)óùr%�¡d¡ áU `�‹æxxT G!B  +?Á¢Ud²à4ÇCR‘`¡¸ó%Y†aI†!W”ì€%Ó´X’ µ�“LSÑT² JÖõ.‰ Q¸¯ÄB�\ ñG€óë�P(Y<鿘‡R»Ï+¢Äâ.<’ç|!ñd˜Ë-LP'Õh¡¤j´ø­ÛLRˆP§1~0�¨9¡½u<Ÿ’34Aœ˜Ø TÈ,Ý� ¨Ô¹OçÀaÓ©áC'® µ # à¤Äê Ø<n€hA„ñ–�£0 +“HE‚…r$ZÉ4Ǥ Q2ÔA9ɶK’M ™ˆ‚DÉ: Ž’¡@%S‘+J¦mã$a¼(�/È^Þ)aÂ@ tib¡N†úN  ’rÅñ,ºÔáÂ:Y2äU5Ç#Ä–ÎãÀhX:Ðß�0ñX… I/™ bU,bž…§¹h: ÑF�!©ëa¡ƒ�…Iè °µ€4±P‹(±0ɰ0 +�Üã1š0ô >Ë<˜ŽÇ׸©ZÃ�Ãéû5j»"q¶«~%@ Éu=GqXT`¿´å›ð£\¿&L ?Ï�¦ÈäLÜŒS.u}—ê6NxTÃë²&ډអÕã¸�þ‚›.°5L—ÓãÖž×—3[ êpz;_céçˆ3çvþroØ<-žsÿIÞ«g¹7úž<5¶®;õžÚf>˽q½�˜4i;½�7ãÖÔvº4ΰ~êû*0ýœ÷õçív^_©Kˆwâ{ ¢°nIýÒŒ­cå+u¿íWßþþ‚ç¶§¸þUX·$×=an=.�?&˜‰B^ƒ ŒàdÀÒ�ž!é*V á ªe°è$`#”©TTt2#úòN <!))cÈ,€ 4&î»%Cx`pÝÍñ(•”JÂÓ8$ÀŸD zQÁé(…ÏD­Áƒ�$�UöRDæL*$�EÕÜ‚ÔážTz >%Šª �šã1À¡%¯AÄ+Ûï.: ª³H€]õ?ƒú²HôËA¬`w’jbÊÃEiŽGE…(ù©è8ˆhl�¨‰sÑ �€¯¢¦d!10àyË6â&šã1àD F6VÙù&(ð°OÛt¢:¡ñ\Åž<Ññ \tV‡] 0! èE\è +!©Á' ³˜„4ÞsWTg¡$PrÑ)<§w?+ $Õ�Â(LDVEÉ…4Þ²A²�¤Ԍ.[§²zÉïNFa¡ìz÷£‰…d"-ê;p %‹çU?†Ð¥à)T²hŽG$Ô¼ê‚õ]6§Ì‡JÅ$œ„:,4tN6Ö€Q˜p W€€`>µ À¤ 9O†‰EX"�ª€¤ƒŠgApù` +$£. É( � ¢2N²Ô6N2ˆËWɶq’y` +“ìÓƒ‚‰*1É,0^”lÓƒ‚Ìâ™@2ƒŒÖ²ž ²Æ‹’¡*šJVÚÆI–}®÷……‚VDDÕë0…‰'[µh‡ô„*(#°¶&ÙftÙ*ŠE4�K¬ ™¯„)Ü7Qi—ÀÉ’jiÆú"ǺpQj©k ‡„‰Çb!xHͰ`%g±ªÑÂÚ4 …"¨óØaš&•sH ‰ÈH’$ÓH@ˆD:¤�VQqÁˆ¤¡™H�£8 ƒ(£0„ˆBÊ(3C23Ò4�ðˆhÿÀ—‚Q~BÉUö´tC=Y}kœ½½7WÏ`óÆ%¾\“‰ƒ¹óyέÓϦ6 +仼À-ì ¼�_Иb£†ü¸ƒB®b˜f&/sžOå»�Щž•´Ñ�3 ´÷QuÜ¢ªíû­…üã¶að�ÓÜB8¢ìžfÒÊ„òJAÅÜÑÞ<ŠÆ T„ð šB#Rã­T[²r=úò)¥>MÞ–X>æ’gxx\òA ßPƒCê—ää>gµ<;�BçK.fT„ÁqøÌ�kï}…Ëæ8R GKsá‘[w\XdÄë 8akb Í +þ9fí¦"�¾ÕR7ëÌ'¡:‹–ËtC Ÿ}`(]9£ŒYÂåóSæ÷çO‚n»fU±)÷r˜Ä¹Èm8Þ+6^l@vî-‹¢Y”8§ØM,Sk6<@…8[.nÞý¢3# H� Obæbð¯‘V"„ols òFà�dH.çlm%#}vAs]N>9%ÇŸñ�nìa·­¼¦LÅæ—H‚Í#Û)¥–£ÈQ™>Û&\§Ã©M#-9¹÷0•èÒà Xž†K¿JlBQ#? Ñ÷xÕÞý)ÝgŸœq(”¼œàDÓç©VpVëmyrÍ Z¡ò{NšÇ¤²˜¦RÁŠß¶ÇQ½ q@ÿ]‰xTÒ;ã)Ê~ +žaÕÆwSîÀÒœúÈñÆ€Ó¹­�ÒŒ=^ŒpH†”Z—˜6„À +ýéœÙ¸«¸™v8‚lE—á" ;oWyðÛWéS€[W¬tŶ˜£0g<ÖŸè©«EM‰• ø²D&¤+ͰĄGP°ãˆ• ÎÒD0úPŸk¹,íG8ÿfqmi\Òý‡›Lו.}Èì5_jÈ+X É=#ÎxzàêÊý XŽÄÙ¦<š ¨×ýþu³­1‘”ó¤�"AúþvÑù‘ä©Ð3Ûì6ÁÎl¶àjPã´ÎC2’*8êþ¸T©kšW(ôØPl�óñ‘ó7µ�3ñj(¸ë©�¤¹NØXç ;�‰„ .„¤IÛ1’䌭D°ïB$]¹c¼ªØ¸¬@Fˆ¡ÍnáQ.Ë;…Ô/øŸ8;¦1™•a�̪a¢/ óÿªz�/kðÒ±÷c õ’‹ +hз2€ËèI2: ã²ó+9ýÝB�gÅ jÙݳS�–Ù¯Ã�ƒjƒB�H]£lš9üó©ÀÄgË^2"Š�R'ÖøI{Ú©dˆ÷�†€�fŸOõ.´}Uö…{—zew¦q,ˆÓ^^– +Æ0×·0luæÙäJw¼_¥m·ê\•mÕá ÿ»+,÷0h‰;3BP§üL;s?åÃÊ቞ ±6J%}ö£«Ž¬i.ƒÆÿz_Ÿé¬{«÷fʘjƒÿ2/–YÁk""z‘ºÂ•,74.+rß9çé[¤{ˆo~¨Š8ªáRiŠøˆÞnï‹æŒ—âõ#ಠüaxY5à¶jëc¥Úòû‘Ÿ7øpÃþäð_vâ¾xÚ'~­QP~:%§ø›„h5NpèÒ� Àj ß²Ú}”SÎ�x7K2 0Ð=€­´Kð¸"ÃpnaC@Æ~C(ŸŠ{—EC;🥻ÆÓÓX! |‘2–‚IÈ1wsÆËqgÂŽc$+(C@H6E;ÉŸucr‘làÊXt‚?'–_veFÒó!)ÙKÅûjpÄ»À[ �µá Xžv; Z½…1‚œ& ¬³kkK ûöˆ*¤tØAùî%ÐN¦…ß°{Î~gt­ É»ß �z#9i��ƒhL1xñEýÔpQós$ÀåUNVÐlSAÑ(r�`Ûíñpé|0ŸÑm<)e]?Æ{a—bD[˜Å†d$C-<ö{e :—/4¡(ÌtCÅ7;`�€ä/úâ~F˨áJÕŠûº0º, W‘¢?}X0®¤¨�‘i7c€¥Ð|·½PKeݰª½�Ëdߢùý2?~%Æ®ô½gO¦Ew`¡„:5M°MºÊ¾ÿ÷¡` £Ó6VböWëoÙă“aMÏŸi&%!Ò»Mˆ«Û?Á¸Kt Ù°ó Ò �gT�0¯•E7µ'¤ÿ˜ªx´Hc +둽{:7Ä5]h¤1éË*[�1JÄÄ•Íw3R™>ÓU4WÒEö� J0{ï“8òô¥0�á@ß"`Çe�…Q¢Ü lá™9)+‚ù&ÚcC⟈HüTøÚ¡Uñ=„?QðN2 >ÖÈqN›´±¸UàÝÜß-jÜGÜ5|×�iêyÇÁýÎ ;ÓÔ-âÀûy êó@DÎÑ8Dó@4ð,Ìò”Vd á�Å™~²8“Í�5´†ÖÐ�ëYgê‹3u…—º\�ÈQd¨Ÿ/Qx©¯4ðJ£ÉÐ+Sý¼wP?ÏiCchÏÅÐ Å�ý:Ï×¢ROQàNQàóB³øjåʬb¢Ú…A ZV1µ ƒØž#ƒ–[Û >ƒ–ûÓ.,Ó2h™SL”¬E¡,[²_idÖ¢Pjî9c4hÉy³Pz9µ ÌBYÊ©1o;Ôcyà|üþ¬ŸÏÛe=íÂ80ÿhö xrüó^¦Â?®ˆ#õ¼8Eí¼r„Ÿ9Ëü]S"(õ±Ž@…2ð n‡‚ñE¯?.G'ÿX^œ¢×Ï:óÐЙ&˜D³8S‡IðâÌhJ™ZTê„ÊÁýJ^¬¤nä ³*æ +"“P9ôƒû·Å2Ø•IgdM gG·†¬?rϲ¶>ÿuáìà>ת Ô ¾øjeý‘íñ|ad&/õô®Û —vÈÙ ðRwA[ŠŸ ;ÙFJ‰ r"�‚®Æãæ!góB°È9A×9«Q»°Õ"Š{g¨Ÿç ¼©6> Cý¼va«¯Uϵd”V%tÃGG¹¯]¡-�H­-�È_­¬úùÕ"ªÊÕjîY^ d‡ñ�ëÛ¼8µ-wJ^œ¨öå('Øâ«µÌO#Ç©i¹¯6Ê V,ÙU`ÈöØìÐ }&ôiy1`H�}®QAë=Ý Áé°æ +GCÀK„ ©%Qh ’.k¼§WÀ á ÔþXÕésÿor€æVxæÏ­]Xa…/è”°"l½ + Î@µ††ýÚ…ÁŠGà¹3Çd€‹>úÁ]Çÿ@QàÚ…�YÃÓB°±¢ Tà¾aQ@-ûíc0«·kVÚÐOY +eeż}p×1I"Ì ‡Sw +ì A»°oI1\äàN¥˜IíÂ0â'͸’p‚¥$SÀEŠƒû„m#�¡ÖíÔÏ{#GÃDñ ÷Ý¢…‹�ì¡I !÷vprŸôzè—år2¥À Ú¶¶LT`. Ú^ä¡ÝÈäÊzT‹qhsÀ[jƒÙÔ)gm¦ƒ7´•qªÍªk®fò•ÆOP…2i…b±¨œÿ|F%òqƒåY�¥„l²å>žªÕû&SkeòX¿ã¾Ç®«¤e¥vÜ7*É: ©²Ñîôé¦Òd�¿ºô&Â�ãÓ" «î|ʇ£(¡Ä+õI¼LÐtkœàd‘x¥ç xÕÙƒA°uGÄuà.l¾5’n¬¦kœnG”Ù‘.z$ütÐÎó…¨I˜2ÀA®u¦’à`ë‚‘O‡àùaä�^q7“4Û €Ó+ò<>ÄŸIâV•N…°Oñào¤î o¡Å#õ¶°jYø¾œ@ÁEþäD­ôn: QcZã‚^¸‘ú]×?ð"0©ƒ½?D@Ç«_€ûù‚ÖÛÛNÛá¾›•n”LmKZQlƒFü;[’ޝuÿìÌà¨Dg¬N…€�݈Ƨ)s€#ÍçfÌ œÁˆœh¬ø¤spF¢«¤%¬ˆœ-Ï Þ¯ÏàŒ’³è>¬øªù…zÁR:pº"ñN‰®ÄˆiH”v‘˜ÞþS�šQª +„èàûܑۤ¸Ý›¡Ö])è �w:”ó$€¢êÖ½‘rd-m˜½¨Ì¢Üït5“݃œ½L!%TIk‚êñ¸~ÅGkHެ©ã#8§×ÏrÊìïú®a–ç‹âÀ›Xx³¡7–�èEy\–öÀšM£¡ �ëÙ’Å™Xœ‰3q`Öãz6CW¶‹úù�ÂKÝ“(¼ÔWXóÄÏ«E%®•:ÄÖ2ˆ ñ ‰ ZVLB–-Ù£rªd- +¥œê ¥œ’;³PÊ©–ìÑÜá1DLýAà�JÂ?ÜÖåŸß¡oàvèc៨éõÇ5½þøãgM¯µˆâ‹^¿§)$šŸ šŸ9@gÂ$‡I¯è³CŽ âx\/r\¼8Ýïô¸žñ}C»0ïë*æ{ääe‰$ôeW²•«ø2þìKßÅ´7efÒÃ¥ßêÐYÕ.,¬_²ƒrdMâÈšz9v¦Iãà>;v¦©Ó4MßugšhÚÛhÆòlF‘gë�ˆˆ~C‡^Èö­Çõ�l=nëq}ëq=Øz\ÎÔK›csl|jÈq¥�ÏÏCá_‰ào¤Î²© 7RçJ¯•¼ZTêúB_è1w6E�)ð©eÐ2«˜¢•�™AK®b¢0ƒ–�žcÐRN�²âQ_­ ¶�f¡,@<*�'üCžðÏÿyÛ¡¸É27RgcüÌUøãX �~è{Ðý‰^¿›Á'ß +Ô­@ýûÃ$íÂÒ“ƒûƒ*98ª³LàŒƒû¶uZBÈú£Ð”£WTº ¯í�mçk;Ÿ‡¿_«^Íáo;Ý ’½õ¦:Õ£~~í¤ +¬S»°¸ì$…‘5̬f�ø{Эha>ÂiáM àLÎ2(`Åg¸*+þåTnOœ±0ÿÀð%òÿˆ„͵}ùx +^ñ|²†h˜h±¢ÄA¿Í“8Ò©Ù2Ø€¿Çj%�€ 4 o÷ï€C@Ì_ûw„Z·…cXe í;ÞŒ;úPë¦=Ã逓cJ^”3‰Z9ÎC )¤: & !bÕKW¡*@´}%•5ív¨J8ëÆý}\Y;Â�¨àæS©�‹'Qï^†~Œu¿ ±šÉ‹d¥ùdP jkvB‡³Ví“� &i>hVËÐá»…¡–…¶t"K-ƒ–ˆÏá ,÷^oåªÍ¡W»°y jŒÓû^M~0ädgYÜÿ$/ÊÉÞ¥ö”ŒtNvAQ°N^ĉ5y ‘Bi¬9ô!¯~ë2ýQIB�”û#êI£È.ZPR)‘}õ4ò�Ù½Gdä;="3#q2Z䢸‹ "¡.ðþÇxšCvңŔ¸ô…‹ŠBö´ cU‘_D*4¼8 nãÍp*skˆÈV@œ "ŠpÈž7R ¡¸„1‡,Q—™,;²ç©E¡ô +ÙÃúyrB!û=ˆ¼"òqƒbä ×’Çõ!÷ð¥�½þR +Ù[Y-ÁƒúyDûÔF9Á.9�’à vÓ†½0‚`¯](D`ïIN�‚y €õ‹¬va¶ 'Ù=)`žýüg³�¨^â${êÄ…þñˆ»·¥…-ØãÃI¾#{ ûÝ¡×:d·‘硸‰ÙU õó�çÆÙóúp‚c—“ýæÎ�ŠûX@9ÁÐfSo6U»0<²J©wa¤ Žƒì\úŽ¥9œ ëBX¼ˆ¶-æ»+»™CkÝèÜnL�?t©Åjˆsa#¼¿â@é$þÜ¿Úh€Ÿ!jýQs5“.�=ò¨�1õ-¤z\´…UËP¥B×(… B»°ÍÂÞ1o ÃëÆ›ï´v\—Ÿ“¤!kp7˜·Ÿhû ¾ ]h2g‹4y;d€@i‹>uÌ8œOæ <ÏÓ.  ÞWã½zeañFÔ -pÝ—ÐéW=ÖÆLSó3“òÜJÇ„"÷”]G*~s¢ä¾=P#Ô5Ëê*ñQwzÌ?¨É§·#tÓ ²­é,Ñô“ŠÓtÒˆ ÓW´¾ôǸôÿæЉôΚˆtK+„{üù¼=uo/m‰Û¹$¦·ãW³€Îóg•ËêË´ {»Ée†„JË:Î'sf›uãÊ¡‘÷ J*ª•´@^i+ÓÁ>5®fâ†F~À8Ýß9²NaûPÜç_ Õ Yœ‰EO Aσ@ìÎÌ %(ËÿñÈ?ÿs;4À?ÿn;´;ÐëGó´|"{+P +T·@�`…S >Lz_ÄíÐ×u,T€[Àq�]åÛ¶õT`(îÚ…i–“n2Õ.ŒbBÄj@zÞwf@% n…:“B*’­„E™™šL +cîg8òR_]VTÚ»KAÊ V"ïúÃsÖ¯š5½&FÖTŽXqdMìèÑ9Ša¢p…—@^Zi2°DPꪋ‚Ÿ±µoè'üóÞvèö xXòšÿX þ±€¡ü¾“kÕ�rÄRrówßNkËïÓ@$Š_Ò$Š´ ‡Xå$PÌ«]Ø™ ´”Pè[ï jƾ?t@Jbö +§1€™l¶,‡¸ }€|è#Iè¯Ü)ôj4ò¨yE¥¬ˆ€…´|†µðº[©]ØG»°D$Ôºµ kÃùtb^F)ÀH›˜BÚ…aB—ˆš� µ¢&X©²��E¶•véÒþ –)¶ƒý„КiÊ�»¦vaíÂ6•�¡]Ø1е Ó.L»°GŠA$v�&ÌZ\n³�îuÔ“‡H6oäiÿD$KX²¢Ò”7Íä$vÕrÃ9T‚ªãCObMÝþ€¼©kJh†¿àIç%˨ÔßÖtkœÀdoo°qÜ·:QÈv½aA}n—µ ´ £4†t&Yvê1`©fN IìCº*„¼�h†Ô2©)i;¬þ¢à5û'dhæù,èÆ5+²ù¸C®2:u`•>‰›—8�ƒè5£Ñ.ž‡×ÉØŽÓ.Ld‰VŽŒ@T ¾_JÃ�ÔYšÃéî;«_²´A£z> Š Lè9ÌÆN¡“¼?ÌÖ1ÌÒ1Dä¿e¿rŸ-'JzI= +RÓ‡òd! 2ÀŸ_ªþ)»¥•…!Q[+Ù"B¶]Â[ZÙQè}“]þ�-üÚ…U‹�ì_é~h«]˜BãQÆdô¹]†�1¥Ÿüh93Õ� úÖ”¾E4HT•¶G^þ:ZÉJW3I(ðÈ ,=*%ô»ÿ|‡ÔÙ§va™Ð7@°÷´ Ó.LÔ.ìo"Pèµ ¨va›‡Ú±÷µ û(ê³>€™važŠJÌ΂/‰ +1 ×ÏË8 YÌÊ�Í +³bj˜�À’àSï«Ûì#3eßö1nÏdŽPŒ3�ß"½ š5uï&°¶ükönȵì"©ë¤$N‚Œ©(D•Èå_»°‘Êabµ »C–±­OFúռȮ]X¹£–-M‚½™ÚJ EPˆ½vaMv.”…Yxß©TÅì,U±€:Álb³Â¬�±¹L»°‰¨3Æ ~NaÆu`&“ê0{ `–v`&áH1û–6„dšÐãðö6À¤o—|+ ,ÒW ‘!E…@3i;`™cB¥"zýì'²Ú…P´ SÍemê)™b¢÷à±µnÙÒô°\3-´ ;bûÁß1!}ái šÌ‡‡öý¤”ɪjñÞµ s¿:sl�/Ã¹ÄØzTjeY›€h·“�ž+: h?ÀÁ¹ãUÊ¢9Mzoï›Æß]/­üaïì«4'ÓÈeݸXÔj¹ØhH’к6±š"±º˜)3!€rùA+9’¢–˜ú»¨+AB w+s¦R, {Æ ”{ÎHÉÝ}À"KDvKhÐ.l ÍnµÄ>íÂpBªÒþÎ! øn€"ûÅãú”F.ïøiFäãÍ®˜è}·*Í‚WLmÁÐbTíÂ" �‰JˆÃú=M!7Ãäõûp@4iIƒ÷®(xý$eL]ã8¼¿� Ô‚’©ÿäõ»iŒcû7'×PËo4õ0ºÚ…áB(î f&SòáÏ,Uÿ›CÖ/ÙÙÏJ; HîȉDnij§¬uQQ÷¢Ä`•-FE9`¸õ´ãÌ¶Ö ‘r”àÿ¾s‹aõ틤­Jª¬ÔPb·Òu¨u äš©%b^ý’]Lh¥va©~^±¥ Ö篛n•v"cÖø¢�tе.ªŒè<ÚŽ€�Q9N“j"Yªå†DnšcÐ’±J=®„ìàódãdÚ;‡XõКøTE t»a€Â]h—¹¨t˜4IŒ#D3 óŽ æ+|€&@:d(4&42�Å�qH0 Ãáp(Fa L¢TÒ"_!ŽžhèÀðìDѤ‰×rôgÀ—ÂIUÿè‰;hÔ0Ï"”0ü»×#QF3wΛ�D5—ço a6ÁÄâ&9ñ’Å-—žnšœ¬)Ô¥©Z‰Ds®rÖjBÈ?#‰#°8®ë…¨ePÁØÄ›ìÏ!AÝ)š…©!þ²(”ùÄs…Ð)4×ï5ñ·–þuâIô›`_õÙ#±3 ŠœøìèVoýzÓ¬LT÷o ^c¢^·aç/ý÷@E5÷¿½ÿµ¬þ@ýáÿ($EX�Rÿ}®˜â± ?Ï 1wâðîL¼‚[:z}½fˆÉkÓž­J‹Î÷ÔZØ¢oÚ2À¯ÀP_æ¿ß:fÄÿ=Êe`Vàb!´÷Ýîeùo &¿¡ÍϦÎ(×ñþ[¾Ä4Ãô#¢¼H,ð`wTàu±Ý'ü›˜ M™ˆU)È>¬*'ÿê‘ÜÎÅîX!?·{! +ŽK0«L_ÓÔô¹vÏB„4—P$Ú ­¶JWÉ÷^`­Jù +®…•%§L�TDüÉY&B¦ÕFzŸAùrI¢w§¿ƒ‰#&yÅ6þÖs$½ìY“ìŽ÷׎�¤X6³ÁÑö-ÿSº´¤m»–OÊ!.˜tÇë,Ãî‰`˜é +‚ߊTVçÊûÛ¸ÄÞŸéj!|¸[¦ÄÐö;MEx©¤w¿Ý†�ùüœwÓT +D/B´Pà ÞóVDŽÒ¸©…SH«JˆÏ?•~«iÒ!ïâTàò6‘’pÌý!|[»‘¨\$8„oU²8ú�dÅÿ¯+¡§²"ñ–+ ÓvÀ*Wù­ O“€rÚZØË=„9÷h€Ü^m{‚9 pv\p‘FD™°Ú Š”tE³'r…nãCw”©”w7†Oä CBs¹¬ÔOÝêVŠ\™lÓml“^ºÁ錀ÓHÓ<}™ÛÛ¢Õ³}?Ü6_(ɸÿs,v[§s‹Oï‘J£k‘~iµ„3¤,UJNðÊæuÄ™Mjç/UðÅÒGÂ.Â�ÝvèÛà@£ïVµø2'5¿”^ŸE9šìß» +@qˆä��3˜ÅªÊØØ +µÀqG Õ1ÝE:žΔcK¿oîç Kê€Þä±SçLVß`0iRQôjuŒUÌqœ½du%®NXëIÊ-Áõzq-õùÅ«ÉñŽ´¼oû4AïØoï‹¥ ë}m0²‰Ç—1z „€l–ÚmY»¡Ѩ0ŒÁyÝ0,¹î ¾ðMë4Ù˜#~ÈÛ¶o°¯?ͪâ豬WöêvؾÿÁe²zãµáÑD]2}/ +‡¦’÷\Mß éu‹¾�šDdáÑLôqÐ}÷Âáé +<<YACå +·„ï¯/+Ö>Ñ ?œ·4OÉ�-u·cp½qav›pÅ„ ?7P)tG ^”‹6¥®ì‘¢�ð¡ñT0É;Ôz.Ѳ‹� q¡»Ë‡KaƒbëÏŸ&?Ì[¥ò~²°çbݯR•Û}Pœäîh¿~¶öNâÙN$RGwºËÜëâ=Êk×{N鬌°ý¹­cwr7~ªðLqý‚”wÜåÜf7rR?»pdDà^2ÿË +Ú’¤Z‡«:úàý—Jé¶Ä°3�\ç§ÄhâÉ…«"ªÊ5øÚ&ï®´¢Ä´ŸÛAh9Ì:ˆòsʛѣ|HYÕTöYe.Z6½Bph0-~ìèÇ~ÛÙûª£¦¤þƒ¡Ò5W††²þ ÛW1³*³ÔvÖ¬�ºÕ6Þ¢d·>%wŒìäA•_vìð̓+wªÒVóK q�ØôË�Q„ƒµú®sjߌb ‡0¢Ç8©:ãÖ >'»}Gâ­¸4�”�®ËU[šáB&’äºÈÁl{QCÙ±*9-+UyØ5â …SŽþýÛÊ Ÿî].8 ¦©ŠÉâY:"íŸýÞd[GƒBþkƒ¶åçã_-<•ã{´ ³x•cT¥Ý�½N“"Z¿xð).�©HªNÝúÖä(’«²:h^Cp¬åEÖÕá¡B`9”™ðXØ“µHƒ®YñÂsRŠ+¦�;œ®R)Û¾ó;šHæóñÅÆ‚09ÄqÅF˜¸“Ó87LÙ¤»ÔŒNé°XÊdY±´ë×§–m ¦?�^(=u, ;ñšJ?ÐY›�Ïí�XO¦}$UÈ‚Öü²ÌP”—Ùùc„”@@øh|ùãBÚ žàÒXIï˜�5‹]+�C¬z@è^¾m¶¬�˜²ûµÉÞŠ>ا_‰Äm‘»¯dÔ´–ÛeõzuLYû$�•5Sto[ÞŠ4g˜–ë¦ÝÆþ¯k¦¤Î¿½Qª>öx@Ñ^~„Hè'ïÃåKÜ‘.¥ÕWm£˜UY_:%¯MnÿXppÝ�“ÊýG¦àõ(�=Ô¢Mž¦Òj!;†ûOX׳g–°Æ�ëG{úˆøHW—ýôb}â·XÍtÕŽMŽ'0á«òبyĦž–…‡Lk�p–6ÌØfºj5·ÊŽÂ£:aùz\c…:EHïÿÙ´!ž¬e„·ì‰8A1 {ÿB¨ÄÅùé xþåǹi)=ã“ÍÄ«ï/Äb�Üu©Óc3׸»'tmz̓¸n0pŽïþ�m»ôԯѿåô�`…ú ÙêùgÆ„�õ�¥j_H@�Q}øðI0)iÛBGCj¥5½ºàGS ö,§ßd…}Í­Dÿü¶ŠÒî¬ULáthon ›KÐoïzÕ¿ÇkoÝBUØá¯öóè ©í>×x�•0¡í÷ų4>º[37[é£F;꘶´´½jN“Õµ\9Õ»Xá{g®µ )A¦·�o¼9€FÓ7æ~»,~€Â€ÙÚÞÌ´Ý[ô$\_ÀBú6WÔ£�sÔî;¬Ÿy  p -Ì/¢6£4¦£ª?øFnp¨‹khÖ(ÞLn¸ÊÏ¿I4´(P¢“m h™ÎRtÄ+·‚ùª–œɼH�I&÷yŠΈü­F´bpŒà`—ýµk,LÓ—1Ã’Å×8L¼ÒÞEš~k}ìÌÅsô\Šÿ„%\’™*±à¸@ŒÂÂK.¾W|4�ÆDÁp›�ˆS¼ôçÚ'I�ø?ç÷¥¯_N#�³¯h//}f +ø\0&œÛ­/™~ù6:N/ýåLG3 Ò,?5flÔò˜¢ý¯¼AÌÅÃñGŽ­Ôè5Kýej¶0çr”Y¥ÒdQ[Np¤)¤¨6xñNpüO5´¬žîtÉqWÎN¬°÷ �W}Œ»kªö¾ù„Á_h@ž[÷pk¬Ž(²ð¾%.ñ¿&Ì©áüôÆðÈV.™/^·eÜäM–·+ ëÇ>+îc‹Ö*Ê9å!ÁÑ´õzô—ró÷ kˆ™æüæÃªü£&3Нÿ×ð  {/D´äÒÕ“F€¯%?Q†{ølD“=K>Õ +à/\aÅ›ä· �–ü<8 ù‰t‘® ±Gà:‰€?¸ÇÑ)Fnr|\ZÛ«ÕrÏb+yípFÄ=c÷ Y”�3dè À·ÏXI öñr,Þü£¿B7g+7ÐÛ“á†|3Šn´ùèËÆ'ÓV�¬Iùæoy¶,zö ô4w²yÍjk9ÉŽ8.pxWÆÈ.ºéë$êCÈvY Šn†™Õ’òÌÿo×#›ròÌÍB*ölLŠ“Ç‹—�ã�û}èKb˜ÆAœÚrH껕×?p~"Àz�IÿZÕÐÌ¢!Ðá;ôUth4%»�¤Êÿ¸·�ø¿Ô$­SÚJ~¦÷Ö¢ÌÌ$»ì çðw®ìDˆÆOêã&«("†ÀQƒ¯ Šóºb„0Îq†ÀµòøD‰Ü†@•õØKœ´¹A”èñ”ì€ÇWů޵ôâ|'òíÔ,�Uqþ„²+ç³ÁŒâLÊæÕ*$KMq>¥Ñë,‰%à~¯ùZy4Zd] ¸Töbª–”ŸGCˆŠÕ¨Žc«\`GS¦xlU�Û'Öv4ǧÒùÑSð3³âëQŽ¥Æ]è�g'†ÕEá‹ÀÐËê„ mA;mƒÿ÷Óª!N«’æG(°I¬“™s°ˆ¤¹}£\‚¼ ŽqršÛ«C ÿð:c‡Kš¹Ý¸?inñ +úDfÄr'žin湃 +E³š�Ï’,-H—#“‹áç³3 ¡õä²òAÁJi«°`V„úréÒ@N¿Lêå4Ä% ì\‹r¨[`\sÃ-ñª’ŠÂPjhÀ•€6{åNûFv›ãH·õ¡ yM8_ðHL0"F 9…Ï¥—ÜÝdÿë˜àâ3MÀV­£n²<‘‰v†ªŒO…ÞÝ�1­„ØÖ‘$E +¿ü@”ÐçÇò’¢X,+ê`†íšŠ‰TÔÔ[\@õ–³fôÆ/²ÿS%�œêÌ~2ð/ní«:¥2®á¥ÿœ)5d?ù.O~P4òÀlmðyfzªg}~¬€HøÀ¿‹O‹º¸~ÆgF½\I¼f~anÔW‹!FÅλ¤Ê°ÎÒ²?×-MÊY@…¤*+íà"UUê´#®…ë-8eKú -C&²ä -ŒÇ§®n‹íÀîÕ©Ã�Áw¯�MÝʬȡ¹ þJ‰¡¢¿#n•ÜM˜ÒGŸ¶LN.ol.£D{›Ï„: BDI’ïôi«BŒ„`à0p±Æšj @¶6mo¨EÆUÏ\€”;Ì„b9ú? -‡k"Ö$dðËŽ�' -)€œÓjú·Œ®ƒ'C$}�M-H–3¡tÅ¢ÉZpþPë¨y—c€ßœa0-…•°e4Ú  -¨oÂTž är¬–ð‘ƒr­DiÁ -*ðúyЊ& ^‘ÔU[Ù¿oWŒL_qŤ1ýغ˜‚ûNÜ_ÅiÑ$—€¦~�éÂ¥Å%[ òËl�éñ>E³bH"s*éóAÀ¬1–å¨Júcq²x£¡m¿ýÏèù6—JÙ÷ºÆ.~?XQ™8Óe~äïôR _J&œQú ß’B -«0vÚs_ä240q´æ¾63)GŸ©P»=JÏ]oßÝSžîV3âë£sC‹×) -æÒÑ“t9 H.m©ð [!0FŒ8-C2Xl¬*ÒÀõ(9ÖnmDÙèÖö´L5~û°�‡ÅJÆ+±ÞhØ*¿kŒ^èÜÖ_Y$åž?Á#M)yLJè¯ .,É6U¾œ}`ñ@ 1(¶Šfá™(Ëø;:‡Ÿ‰NŠ- ÇÞ^CÄü æ:ÚÄ\?g†z�“­';=ø${×Û}-ÉE&�ÓƒféÕp°[´aYÌ1‡ø‡/vxné!}ˆÀš¶²³"5Úf[‰éílâ+¼^¢u]‹ÁÉè–OÈ?«—¢À!í“Eö‰¡ó[Ó›ÊR4žñÊ-ibOÐJÈØÞ^a…ÑÇ�%¥®î7 ¯ k= uE@Ï™yjL”²RÀDÏ¿Pë›¶ùk'\m%žÄÊ(èèþ£òŒÝHª$ĨŠ0«ƒlcTפ­ËÑ]È;Ñ kSÎP'.·¶½ÚS03#>RÚ$ÔÔú#5Òkþ\Û$ž s-ß¼5Üœ›óS%ãÛØ|¢Í;ýCï6$Ç¡6ÇU•‡,¶3æÄf-‡œAÞ·m=輡#ªÍpö‰ã*kkCϺÖä0 -5¤{¨AšrxC?OÈYf~ Êãð¥C)¼ãâW›-Ö¬ -‚©/¶àÙgù*,Æ1AA«à¯ä�æÁO÷«¨Bdç¤A¢—K4EÏ'²UÅí­†SVa -[û(‡Xæf�["ðšëÚ¨ÈÑ„ž®&έ>“gΤ† læOùI©»ò XDe�glI<^/¤I)õA}˜3(›µDˆ|y˜Tè²?P^‚‡—î�¬pyÆE£#Y)Tºƒj§ÔeLêUOsñôÀÓl´©Æì‡4‘þR`1t›åTøtÿáãEœE~öîX6'M ٰخ‘«Î÷‹4ˆm×–®T#TÊ�ŒxúaκÅ|2.¨k+]öt9snAf$¯0[p …éX¾£‡QÝÅ€�yüe>žfh†âŒ 2bBAÙ¹ ‡ô‚õ¥ã3€k6w ‰9™GáI{þ[¿À2V#LìÏ Õ¥\phÖºèC5ÇíÅ[ð*58Þ*O£EäMb¬€;|‹Pb±"7DU‹™ =¨�N“©D³Gç ´ l©0k˜ési*xX² Txx�U¬2®"Ä“ùžu2º¶¡æãÆ�xÞÁ~€Q56e&ˆ_Ššá4 T`nƒêFÅxRÎQ²¢È¬‚sY!àzb’?:ý.øN*{�ØeÄhM;)~+1ÕI'|iOb(,^�2ñeº%ÏYSeJ’…çøÒCXváñZU?�àÀÁ&ΓS*³˜îbªÀð)�Ki˜¯mñÓÒo-±‡WФ¹¢©ŒÆY]á·ÿ¿2¿Ýö¶¼Šö4+7#‹D: Û\sÂʪR¢ÌíNÁ¥ÂPÉœ%8U¾ M0‰Õ:óK%ƒ³[�­qö‰R¥]68éÄÖ~¼—Ñ;Àï|åUýãlqÁ�þQyAÈ_@­Þ– kíK+B¶Uˈ´† G÷¬ÊagmºÔ‚®Ð­'‰Y*kÆáú¤'Hl°ör¤Èg‰1epzÙ~—TgÊ�m®òj6íèLÊ€ƒÓ¥\·¸qö°§tôwRi bóX G`ÞÀ£] ·]Oý·g=ûx"ŽÅû—ñ£¹‚‚õûàâ +°;€Hi¿:;%-ØvÜ=–èÔ|;ÞV•@שFÞ}ü ,XðÍ-@“ØPJ,/ì s3èk´“.(&Ib¡‡ZÎÒÍ^qŽnN-–Rÿ/â§€Ëã;»~ÆY®Î…Ao™6´ü¢‚ˆäpóƒsÐDvˆúø)ëµ­w íiclÃXªì�h5§¸Ô�c¦|1ñ�¡c¥¡èIžV�%‡c!ExEÁ„�a #‚éC Qý’‚Ò5t�ñÇég1�bµyBßi�µ ý>€{³î:e½˜Ug8\¥Ñ5‰kÚ -û§Ñ@ôËv]óÂ(�èr<%êqF7ùegg¼“ -ë…^"ª¹…�QC0ò,C¾‹¢�\]N®Šà ãjuR]ýÄÖIÄG¹R™™‘éKÖå½ÊÒÝÀgT(gðv¹�懔7Pëh& â¢ÂH��h¾ÙK-ô»ÊË=Zé˜p1¦«+¿ D�äêcFôš},PÝ -«Øð)çŠC‚´`<+b^ðÆ»ý,¹8„€uØ&�°TY™­1K@B±³/[#ëiÂ)ìhø_Ÿµ„ûõŽyðeD°ø<{BVS£¹a³PŒÔå Õ6ƒébjþL‹ù°\CDe D„ŒflO¶LEk6ì)SR1v -ꢟ1À{‚ -гҖýðƒ[̼‹pÃ’6Ð_mds KóX½28�÷$3=¾K!v¡‘˜�ex]Ž'ÝTÉ…YU€“Úé¿x‘¼yƒÐp‘± o£3ZpL"§–½�e�#•Ø -e±S p™,Cñˆ£€Ã3g‚—t¥|sªQ¦F¤g¯|�ö¿§g9Ð3ªD€GÙi‹˜9§ ËñËk<3_­8Æ=Y§ýeõ «=¤YEå¨!âq–Q€ä~#w±û³`ïíŸf¤<&Åà¹ÅÁnMÑ F¥£ƒfØô³·èm:ïaËmv™ -�’­+Xà?ñAa]‰<½Ö0¦¥‹³r\SÕh~„ -Ý[é¢Ö´O‚–ô Êš\„ñ­‚é~U“Äìï·B_*zÚ`ë²ìý�q¨N[/)Ÿ5tÒ�tÕv9l$1l64Uý�ÿ3Œ+Ž^s~´X�Ko¼|^à;Ž>Ü�‘lr›h¡ OëUªNý!u\ÁKçIá\_c+Wsôþéå2�Ò¸ÉÕC¦GOb,¿ÁI�š¤r¯ÞÂ�ŬùHרjË9ùñ�S=× RÃ3yöu°9&ˆHAó[Ù›D÷ü_à«ß?ŒäüÛl##Wi$º€9ùŠ»cº0¨QG˱Ë�Ë×hdŸ%'wO‰1ËïK˜Œ52#§�{Žîzp½h<ýuͪ¤1NÉÐRPX)Qœí?óÚ ó\ƾ”³Š�ÓNð¸ØÍ�Mn�Ž'›†¨ò@{aø±®¯ëŒËÕ¨Â3ó–¶T_êñ÷?än…å xD/ .½@ËÿÂpT?Ó—2–æ-žJ‚â€4ðÒ08_!]_!URùCþß·-l‰:-HßHÉî­Þ“àù‚Et(æˆUY¸êô I!Â@qVÞ"JÄ!Òºéô³XîmœüO‡R Ç^ÂZ(ó Þ6·¢6@T8¦ÎXÑ®ÁƒsvVy[b$Ú¥ª\õÁCRU4ªâ¢ˆ.I4i0xNÐÛ4ƒ\^£š…QŸèuå¯SY9•¾0PÔ£èm¬ fážAÝQP,\àTz›É  -Uã!` -Dp?‚غéY&ê‚BÓÞ6C½FÉö£ö‰¤pÓ•Q{ÛÈ®©è=#?¦ª©:½ð⇔àʨ½-ý¬/TŽ|£T´©~Ðt­QO…‡WóÝÖéö+cSûº,të Þ )–¨6EË è9µL½Í;>�r13�üUKš®5àÈ ‹Æ34G†sÆTÖÑÉú¹ -Z9ãwaÈzåÓBÉA´@C"ÚÁx&*ZPËò³Õ‘”4Ì 9Ì'iË@ˆD -®Ÿ%/|rð¾ÁAÉIëÈðJ-S@Ä ÅrÆ<Á„ ”¨¡d’Y„<§EAÉ@‰ê9LeM‹€Z«¸°y—‚Ï;–gÂ�t0ÞQ,8£È$3'ÆHôðFä™D@©ÛTÖ‚–@Ö¥·}igÆ Ñ[°…ª¨ðE•† -´EdtÉC&QÔÆÆ£r@bõ8}J©YE­kÖ£8SÍ”`Z,÷\QêIa—õQ—ò¨æ�% ’HçE½í0�¤%]?/!À�Ù¯œPÔçç‰ÃÔ6°³µS)¶HB>>¤ã)ý9iË$à¸G>º$ ¸h™'èm!÷_²ë«&ãrICèÈ9¸Íà‹z¿ sÈÇÿ}µôúŠÛøÕð¸�¹�ýšþŽ3ûË�ež_¾7_@º ´,sÅm’Ùí̊ůy·®Ð€–V?üÊJs‡ìúÕp³øâížÅoj[TÏÇ=Þ¹M+¾‹xÉî -»ueÚ…övÅJÙE¿q9–7å {íø¿.¯XNav|©SË/@~E -Ó ¥×7ói2-sɱ¼é²‹þXK»ÄdÕû–=¯]Õ÷-°i”&Ó–Ýnè¿mìÒn™èÛ-ýã¿öù¥]õWÅx€Ï⛫_˜Ìýúæà6Vã W·œÌuלë…ç¹åì[@ síËq²Í½þ�¹[-sáËÅo‹Å¯ý¾>Ë\ÜÂ3wËøu=âD‹ê‰[®n¹¿0.n¹Xü -hk.þ²\Íq_fsŸn¹_™è+ü—äþ’]·ŠèÕôyn½ÆÛ4Úi/-]~¬õÌèvû –Eõô~A9‡údX|qe gÇ/ ·]tå–]¢+üXÛÊ¿¦¿€O‹®<0‹[Ø�ßY-ºòçâ—ãä˜kp(gÇïCtå�Ú%«¿¾ELî†e׋n_qk‡èoÇ/ ÿ—L{Í3l×ó Û5=Ï/‘žç®¬¥½"=Ͼ± çùsôwßO‹8™‹¾U‘žç2‘žg‘žç8öÖÿ%ºò€ë[šýºu+ºò€+а<×" Ûñi9´,›_£åýá.xæ±ËUï-¾h—L€8·0ýÈâ‹v‰3ZŒÛ¯íÊ?~a؉œv‰3ZL†Åï�µ3ìÃoìÓüõ?ìÒâ<ݺߎ_‘暀æ²íz¦¿Ì–é˜8`¶¯·â<€ £gøeÓ_@,»w-Ú1l~a—8p¿ì_Ó" &‹3Zlþµ«Ã³\‹ó°XÏä,Ò\¢O(�®H+޲‚êOÿW+«Åz†Ý6þ"ÍE·ñëŠõÌã¸ýd×,‹ó®ø¦Á/ÑŽaýÛô‹nc?®l·0L¬çqTp‘Šv¿¯¿A}”£pc¨Ã…<•^·/Œr¯£Üå n€Ï/œr”óvÝjFîa»^µ¶ßWŦ[Z¨Ã}û••¸ùq‹XvýP_,fYÔXÈoìÓÜži²‹›_Ø·.' AÓ^»…?ÈLp¼¶]£´<Pm׫~ÜC~íTÛ±l±íÞ¡^Ó¯e€ÿŠ/fc‹_YýÆ-‰ë £¶ã—žé/@žaø§ŠN2¸N– –·…vȆ} g[T±ø® Pv£Ü§?lÛïõÉê¿1;gß³}w¸Æåä,{¸kïXÜj8þ¾†€ýÂíýábñË5.¨ÌõÊJößæ°¯a4fûÂ-÷Úq«èl,à¥eÖ´a_Ó½Âןžir -Ã?%kîÇ/lß2GÇûwÅâwÀIå‚a–”×ÿ0å–Sþé�`_#‚} èÛT&_) Å“p,F¿«µØ°¯);´,Ã;÷å‚ÎD.–ý{½ôÚË’ÁõFg¼v;ÓäÔ¢z~æÃ/L¦=¯ïÒ*5ýíOkéÖsAg¶<‡X¾Û®Wý°ÛŠÔ ýíøRZË�[—¬qɪݲð}ÜÃ~á×mí¾ˆûè_ÚóÖýçvæÔåºI𦢿^/ãàŠ?ÝÎuÜÒ6׸ 4ç9®å”áKo²¼-Œqö-Ï\r<û°Ë}»…åúå¸Þ/èÀK»nAœlß(wA?îQ¿p+¾ókÁòÚ™dy°ì*my®guKk?�Î2�¾~}á‹Îð¥gyÜ—¹P™ëýõ°¼X~í·–=Çò6�,‚?H½ŒF/º•]›Fy‚sþÍèv3Ë"^Ã÷üApëÊðjÊb/ˆdþæõ?Lá,o 㤷ÉlHô�ü¾R xd mÆCùþþ$t4(dȲŒ¼vO‚Å‹)Œ›b -ãb -ó¶Ó(¦°„˜Â¸ø9ÄÏA³L&ÍZùç8´æÎGQMUÔT¥§ŸOói>‘LaÍCÔ °Ñƒ³ú�)â�"z:«I™´Ê¤udBÌêϳúóñì4ý‹6àÈÉ«ýä�Õ~Nó¬g(dò¶�Il±<… ·ECÔµ�$1_¦K0µL’�é ‰¡‰¥ì2pØ|’ËÀžx›­~’ÚQŸ¶¼©O›Ç¡õYocclŒm­|Ë÷•o f&Š—™(~c'Å{šfÌNðCÒ ¿¾VAcvÞŒõµŽ"?3f5ïnm�îiikÞ�{¥¢†•Ue�ð¶ -)UéPžNpMœN°RY(¢?Ÿy¨ˆ›…°<'¨Ê›PE}·åCS(¢SdfÇTYÕbÚ½¢½ÒËh|Æfô¶™*J¨&Ý@Ñ�£š6h,±ƒÈß7�ZáZÖÁiåi Â@Áá ÷‘ÖMŸ%�P;IЗ -…WˆÂaÔ¯Sébaza q`Þ,‚ZàT¢ày4 a>1bAi8¼ ¤½^ÓBCCŠ%�v)H ;Ëì;oda'�…Ý©�Itéì»J“èV$šè*+Rر>q¢‹Õ¾x0œÒMTo ©/ªž »®@£wAeÝó µ ›è*¾ŽÏ j0d" ·}X&ŠOÇÚÕdº<™N¦“ 7%ìb -«ÝÚ¥Yë)~§YÞf"Ì"ŸzÛ@1x7bð)Kº'èm&šeJx[©–ª¥j©Zª4pm7 ÚžŽ‚«¥j©õI¤TªÒSÒ× °šÆçÓJ2�‡Ö<2}:Þ&“d’L’I#SçAýÖ¤‰Y-“dÒz‚qñ>çàóí|þý�Ï>ͳÒÉeàP«Užj/;V«|Š2¼8­~PX‚îz‚,ËDñÞ¶uoc™(~±ÚÏ Û6Q›�uû?÷ËDñ•Öðâl,$}ç$RÄà) ©1;Á¨³Ö2e"øâf­÷*bð6cvzËÑ×—g´F@Y6z›ßHwÙŸO¼�f­'h X‚¶S@m¡[ÏÐ1xÇÛ»ÞfWA‹iP|Í1n"%œÃ“ ÃxeR¿l,̧õÜjªÒ ™•œCÕT8´6‡$q"3”[å+«/ÜD Þp³.�Ù V -¢çsoƒW: ¨vP}ö°�¾Õyz•ód „¶{›ŠZç1P¿lôÔ/)µL}m‚"º·‰^ß|zž‰á“Ð\𜈛År¯Ðb¹g´6În=Aµ–)EôOŠH¤a%<Áφ •#¿p‰Á§¦µq|yŠTlÙzê@´8OÉ›#ˆ;z"Oð–Q¥BÊp SIÓÞÖnÞŽÇ2Ÿ•+«€uj©œÒ(<�Œ…·AímªC £$ßAf’taa¼éaB塃ÀkLt/†�b$0X¹·‘³EP§NªhA(¼mƒàÞ­›†À4¤h:”4}›"#7ÄŒÍxB¥ŽÓÛXF=ŠrpzN¤A�ðD ^@ƒ$F] ˆ~p#ï80 Z,W§Á¿,)“%5Øãij‚õ.t †(JÔæÔf¤¤}¦Š"ìeã²�ž`ãž“å˜,­ÉN¼ ZqÈ›Ñ~ÑâÖhòñ€@¨·�6µÊk|êi±|€À6Îù�væ¨T]Mc¡4=Ò(ŸÎ…â#4-~ßgB~Xš–pº�ôú”<ÁeÀ SqØïl Çô-‹Pñ¦ÖÛH5 -¡ò¨N‚ãÏr�ÆñcMÒL`…UÈ@œÄ�øÂ‹_>¶IPhp܃rÍ5€h4# )x”kЇä yiÚÛnKáÅ -šE¢�Z7=b"ìJŒÃVyCÇ‚v…·…•OÒ�S5]O -/nQ R�¨±L¬¦Eö; ~à Þ&3�„hё‹³h÷êðt`‰*Ý´¤ƒxÛj Z ç”:–¡H TÒEчIG©}XÜÛ,¦è¡}D[…€¨¦�X‡#¨½í ê¨x™*Ù(‹…p%%´UZ‘¼í ™�3‰gàu\Gr×�¸·1^n,t4 “�ÄS -†Mq¼í!a…ìð¿2©D¦þŽ? Ð”5› /�Ø(>ƒÙ¢®±‚aVP>(-³T¥Ã+i¦ )Š/q:Q>/ -/¾é& ÂòA„Ê‘®ßA�°5•>éx)ÛÌÿ [Mž<œœLAŸã¢8"nýµ  s b�_](›^ÆÍ�‘J^T3çÆËz-1„«^?«â¡-ô1*G ¥žrÕoÅ£?Ò­ mŽ‹0kÐŽÖ'‹wjÎmß^äÊ +ŒÁù8‘uÄ<»‚é³�ǸÖušÏШ&@ý>i¹�HÑòU¿5¬o’¨ß‘¼X/»†­Ýoh—ÆÄ¸Ó¦×í÷ƒ8v/êrø~CCeˆ�ðwšYÏÛƒÐl쌄±<‹|—04V4�íD“R÷åÀ-qYùç)–‰Sk=o^Y®›Fy^,Þ£¸Òk v<¤¼‘—%ÀÀ¿†/lÏ %ÒuTÏÃÙ& N1%·©ò¼(ö~Êõ¼šEëÝ ‚9E4˸Ôó‚%Ô/¡g–ç!ìRÕé† åy©.Áû‘J�8fjJ­£äbàÏK�G³¯ŠÙ8¶8ÿ xå½ÀôP§Ñ¨c86eë=@’ߥ»yxÅ@¨Tüªó¶“ ³¿k1 w‘[õîÅÅ€®hìv,& Ò§½ Ø8é5¼C•ba'uŽ>Œ¬o£¾[d4‘¶(ÕF£˜lH¶”# ;³wlG¾è·ô’ÖÈûÑ`èÂ_ò ÷°QÒpþ€%wû¶qf¢ -~×ÎS‹£‹ÆdL\Æ 3 /2pwyCä¢ëü�y@hó‘XO_åÂi€�ÿª(/ ¢Î°zßFšÿ®EæNšÕ €ä¥"|-OiְЦ½l5èê:NÒ©ª9>ü•¥ò•Œÿ ’Ú‹¢¹`z¯J7ŸÃÚ°}Váõõ�6‹\Û×ÊÓ¢úö#3hßk3;,ñóø¤TÓ{%áp…Ù�cÜôîÂÈGÒ·£¢�mèsšœü%&¼•—Ð(-¸$>÷_S›CÜö\ +ÜtG.ÁŃ<¤—»" ­ÝixÕ[÷î2Íóœë¤ ©|�Çj7e7 ‰@oÝLÝÄ›¥æ®ú%ˆÍ'ýí§s5ÜõEÓT. /ƒ¿qK‹ÃûØ+žº/ZwWÈþðõýä€çMí­G.-�ù y ܇þíD¨žtI!°�:ßfIÆ€ìÔ÷7Ì&üìYFø¡JÛ�.bsŒ aH.?»„Ù¥ùd¦æ0ž©’”�ÈÛ\^Y´ùkŸúÂx-Z3þÚ‡«G—`€íÄí×Þ:e «Ö:ŽÄ]˜9϶’¹=ò&Îë½^ ËJ/Ð +\‘X€‹æmÀ³úµ ¸¦ 26é]¸¸�£q–S¿HN�1XçÎ|êǪ´X„ê�ÊÖåªç_� µ­KN ênt~Â@-…ü~ÆtP#ÚÙ®Wúw‰]åQ`3ðÁüäÅÇ;Ÿöõ“ÃÁ¢Ô.#Â…CfCp.´�[!Gçrúµ€¼8ß.NÜOÎÐë“p.Tï4^ዹÀßjHôGI +È®ôAEä^ù)‚„ ¢ ÅžÏW(0²·ÒǸC�Àv1``›‡M­ê ãò7Æ�¼§´ýx`€4+'ÞXÛÌý"’xî#Šñ~jÐNð?æþ£W(|îyJó¥1ûå¢} +sYbZÔ¥.“/#2ì·Ÿu£~GM0ìIæ4ëÞf­¸*9�cž\Stò�¤’üNLðQ6¤¶^8l¯_,Ü›/½rùî[XØ4�%ÉOž�>èÕ¸›g�…Q, ¢cdÐÏÑ,”—I8§I-;© JqÇ€)µ°ýˆpœEM Ñ +>ª^_éD™B3+ðÁN*ðh ¨°yŠxH6~„ËIús®{§J‘HpT& J?ª éM©­rÄϱ=„¹ì>í�§Ð=D<#55sž™§!臭ÛéµåÅŒj¿™IšÈ*ÔÉ…Šþº¤¾âÄöö€CåŸýÚ\ªôÿÈFª�ºÂ€"¿Œ “!öm™,a¾ß67GVeJèñº—&bâÚ`+{¼Â!W®ú±8'ÎF�þpÅ„ÆE\Hy_õˆã_¨ÅÛ ¤üí¦Râkƒ1LÇ3Ì“ò4¦ŒE¼Uñ�bŽŽ̸Ì)/ +a/*Ï&å‹ñŒã5Txk*?³b²½fÎu!BWyámrœÎa1©4ï+¼ÉÖy»?/4ºÏoöVºôPù›3ؿֻÄM|$í…7! Ô J&2± û˜í!U¥q©ˆ€ì¨QÍÍyVÄT÷Q3hÙZîq©aõñÁxèF„{ð�eá>¬xõètVÝÄw:äK»¶ƒ6jIea>¨¾aÙ¶÷VfIf¬\0EâqŽ@ÑðãØt¡�Ó‡ €�{ϥ݊jMäã)¡=úg´p΋þ—/°=¼Ó@5b2§³ê+HÉ1À£KAÇ@kU¥R§EÉŠÄõÝÍò ˆ”ë=@Ú„òSÙO4ö‰<�ÚLÑ¢A²<’ ñ�ô Ëy†`�$Çx±ìpUØ)@a…L 0,öõà­w®+d¨ùŽVyIG3nÂ/A¡ù1ƒ*SŸNÅ›�U×Ngnfø{M@i°D,·¡*éšá¹w†¯pJfx¶°¸Ò9‚Ò)PA׺n +’fhL½…†(®+á1~`xáÕuE>Ã,ÞN•r]ql`9^{w]‘×ð„ñ_]¡—¹®´ „ Ã6t]ùæø\]¹³º®´Ô*€á��V®+*.ŸVWœz×ʸ¾<naxÛî”ëʳ=Ôt_`x¤ וÊF+•'ž�ÌðOe"x»¿—S‰ëŠ ùп^øKîÃâíU-0p¬tØùáÇÞ�#àu4¢Ýš²¥L[Þùãç}/¦¡zR(»`—€²†‘ÆîÝÄ %—R-à\ôES}~p°WÓ‡—Þ¼ÛƒÐÝ4G”C}�8à–œµÁGm@E‹ø2ógÊ‘©ïCGYooŠsÀ€\GéDæÛÙ� œßÆqŒ°r;.?1¤ªM¹ñRÀÛ¦Õ·gÌÕ/Y&ӷ䤼Ç=mñÕÝhé¢].@ˆWÁÈRÜßÈ[G$ê¶.ÒH©±M¯M{L»äHÝ6}uOŸ•ñä@=é ¼‹{YAá«d_w0Œ¹gd›„cAaúʧé¥Oí�Ý8ô7‡·nÁ¬õæéÏ,ÂΡK Éf—0 aw5÷¦ ØÛq˜Öˆdxo-Ô[Ä vá±+¾öv]†á'd+M« ¼Þ|L¿§kÎ7ÀÙ�Þ½�ã,3óp]Š!Ó[Ûc%(�ü1\ÚüÄý>“oxÇßÙI �)(é +Ó=‹Æ¿ÔrÇoúTgú@fEN9¦_:Kñä+CûdØÀö½ü0„Ž×|(´ �Êj0¶EbRC }C»mç‘�À…�„±BáM‡6Ocu _äs*á­œ^»:V�E/�'ÈÁ•ÀêYvnf0ÛV/mž¾jàè‘£�ª²Õ³!å« ˆŸg°2ÛVúyéS^¿=c«O#š�°€´œ³mOHe;¦­8ÓT:=°½dST×´áÁ«uù¨öQñIbåv£°ìw~çÁÅ!G̽¨ ŽQ̃gQ›)RAްh×âúdn%žƒe.ù”þØ¿=|àÁ騥©¦ /N ©‚i9ˆ$ŒŒ5˜=B{ç¶ÆÕÆþ !ð�¿‹®€—5\ú�7^v:*©�O®�IÀ˲»ÆCkàÊÝ.€wu¼ %†u AÂËDÕú¤3·›�sq3ò;Ñì�ê_}~ÆÐ„asI¨Î>•B“Ø=®3ÔPÈïâ¶šu¡_(dØ“l&.�&P²ÅƒI¹Ñe®é�'YºfI€ã)â0H²Õ¬O‹=¯Ïµ¤óa&³÷r˜í,X$�’ùÜ'O²•;0[Aekíö#Q•.®—¿¹úzù_™Š¥SAà%À¶ôEHØ"+s�tätÌÔL± D©’J�©ò[sʬª^¾Œ�Z}Ö·1{çJ:¤z‹]P3få‰~ÈÊãK`¾¨cO•Ýã®w8öG¦¢³©� †<ŸG7�‘œUk\µâ.µý¦{‰_ò�ž²Q† NÇÉìM4 Is8`ì1.‡RÉvTYUÂ5ÎoÀ TÕñ¿ZúA©³èg¬,ù‹ô/rÐM¨»|ø‹Üwç½`Ç{ÕÍ¡ן™†…1¹Ø^<ã=ÖÚ.ĺ¯3žà“VɱșpWãÒð¶8iËšÎ83«�Sö¶^ÕjÚª ¢3žY.ôþ”½ ~ÆË®4‘Í%ÆŠ‡cÙ4,#hÓl¤ZtÍ% çú“!åŸóš…n"Äð?þ®üç®™“宿ÁH”ÝD¦á¦”*„¶Á|¸Dí(*‚¬:ÔÍ1…ˆÀæçR_=N¤û�ã aò.n€CLJÀ‚@¶‚µÌ*©´”·‰¤¿ÔÙ–LwºFüÖ�yf^oX¯n¢u~¨{8ÑJÖɤTÌS"uù[N)•0Rƒ?™xoë?_IôC�z5 Ú ŸkϨ\€Î¦að„5KÞ¹«Y®Z)ož?¤05]4Ü‹dˆ!¦eðÏ›¤õ‹TÜ +u�6'#•~[>ûZqûKÃsgŸð :‡êmøðý¨YÜYk+IaME/c‡Czwôш‡“iN#–ú»`³‚ÉO΂UNž¼¶‚AÆ“u(ëÐ$y ƒ�)3¬T|6ëÐ锌ÓÁO¨)T~y0™) lP‹�L†š˜TÙ`ã�ÕÿY0„P‘A[Á¬*™ é/â_«­Lü3ϨÂ}Š;a¶‚ùB3 ÑäX==×u?õn½Z·J~—ìE…qÊf]äˆm'\g�—…í¨B£�`7ßÉwÚvVª +V3Ëà“ù§µóqN¶ïº˜t>EÆ 8·ý½k4œF+»tí5åx¢êV:Em"ZˆÙd&„½­¥=˜|fûšQ¥�‹ï…wrE&ÿ†Î•ÓTW©PòIïA„ÐgÆDIƒ†I˜‰ê•ˆE +zºãù_ú>•zÚÏ¥pC#ÁHàg�”� +oŽnšˆ0h?×~}ëúÚµˆ¿¸£0™dÃ{"‚¸‘9% GÿlL<›”+È.xÚÛ¤ôiÙ@óRa}¶X<6‡À Ü ×ãm'ç]ÿ ò àŽó^ˆ=Þ•F÷_9/ÐyßШ¿°�µOóxo²Ö‡¯àƲ»\9ÍcìÅñ1hÇj¤°ÂMù�+`gß³Œ´Æ1À˜ÄÄ\¦æ¢àkV¿À3‹fì4·¥J°ÆÁ*ˆäsªò<¬’V„Jc9Û»FŽþ+º&³/J§„gþ/‹×`¢”!§9OÉrì4ÿs-Öƒu‰#˜Ø÷`8râöô}c–=F �%yàbË`9Õ’Â*¬ÎŸ…ÐpZV ´ks“iøC‘Ó—Lc81^Æ|À*§nhPðB‘½ÐÒ¿1©`�Pp´úZ9 Ó +©Ô*EC;9ö^í&\×PŸÐ¡�dCkÈ5�\i(:}Y0³/ÜT¹Ð<Üú®¾\ú»éwj*ÂI)N JâëˆÒé¥ +€S“ÂÚ)—Ý«rÛŠìL#ÕMÆm–hPºGrÒÿLfÉ®xžb³q©¡oý0i»“J~ÔIðÓmœÝcG±GÑ=xƒTŒj•<É—ºÊ{¹Qßåóná`Éœé¨Y$i±ŠOÿþÝÎùrƒÇ—tIü^Êã‚!sF|ü^Ûü†+ªú�¯àˆZÊñ{�À$ŠÈv/A_Çï¥lh૪ü?*~¯é+xæ¿Ý@Ä_FÆŒ`ð{õªÒïÆ¿âÀc„×€]ü^{ø]ø½¨gŘÁÚÍø½·èÞÀ— èÀŽß«<4ðy$£Gx…&ß+ðU—ø½xÌ®Ì #¼,ù�hçÓ1¤|õø½ +¾B»ÃÆhƒö<‹û+ ŒÃ�=àµ/i1 +Ô7û7�ªS¢Äì90fÎR‚8)yn&ŽÇÑR¼E’pI +k.!ŽNT–0I#d¥à†€–—œÓ%©¥]È I¿~Œ +-èƒ3g‚4@Bq;Pw~–š,WxP›ø£Ýj¨Äµ*K3Èø¥–.bÎyiPÀ»7<^nE;%KMjLùÉ2 Î,õ\Åýwštâ™k„—Z¾§`©Ÿ©Œ5¶Ÿ¥v%ªDN;"z–Zð’±sœ™ öR”‰N�N6�âYÓ,~óat Ò>ÂøD$ÇCmózö5¿~ Dö[ø±=:;4ua#2hüL�»GÕ�kk8fûR'Ï’¸gÆ}uMš/j”÷/XoT<Eð’/îùAº­}1…¸a¡ H=¹;•È?sÔÁÍÜ ÅTýý߯²nYÓ_ôŒ ¯S�(Úâ!©ŠÉ¼3›{E’­Éˆ™ ‘&`‚þÓ¿Pà2µ1U麉Êг›N›|Î55lQMV>Úd BN#Bʉ.Ò‘—Ø�xòêÑ*< ôÉîa4ÐY�‚žmˆ—‰¾Ãõø{ºö¯û,|Ë­VÜ@S¸âyOfCœ!Î'ž¥Ø™ä&D)˜ò# 7×cÈÎéQ¨@rƒåÉžÎz!Ébx¯m$Ò!Р 4AäÎ “¶i9òm2SãÕ•ÿ1Ùi_ù”:¦~'Ã@7ÞšÛ›’Vhj„‹)Ÿù=û1u©¼””'í*IÉŒS/ú©Î¿ŒYãSTÕÖ}œnLSŸ” +EÅÔý6Ð)i 4<=Âk+b©¤©µ5œÈ´y`L „ = ¼ôH>Ê 96ˆ”Áhêä¸Ý`0<ÇÔ/â�`¨Œ˜"\£4ü±}Í»¡†RÞÀ »d5ì÷0¦ ¹ª-SÉ,¼Îï ­Ö´É^,uZV|ïÿ@•_±x*à>,%8^ÿhÀÁšƒ2nWy’Gm½ÊÉM-ŽáîC3U;¥%g×£¼eþÍ£'T*ù¹&ã>Œ +“D­/&ã4FbuË©�ŵ ºqXÕÆ%´�u8 ºï»wñúLVØÁ |òðF�yuqJw�¹íøŸ³fš‚�1Óô2Ir0Il›™ ‡ñOI�a�x›Q6»œÍ²÷oy)^ÖÜGh×&”‰³cÖ8ÀJlÑ)°Rî…3ö¿á`Ïf7b3œ½õ´áÄËúuŠ�MÓuÉ<ð7í5Èí5X4c(·«;}šSWGqõÓ-Ž‹Ý%Sµúäun{Íe¼ +ãH!Ž”d*ô“õȬ�™õ¤ŒŠüt¼Jõö3¿É€qíċʩ†—k³ê™¨€ÁŸœ]š�µž®ÏˆFùŸ©@l›Þ1 P„ž%+Ü‘V×íÆJ`šp¬/š¨Äeš“ †ý`÷M.Öú2AÀ”:틈•S\ÜaœóÀA]ƒÅôoš#9’užJNˆFî +¼M¯ òþ0š°–±²U¤.÷áÉå@ýň,? ·|ˆ˜Óò³ðÄL\šmIò÷%P(Ê´*v ·µFm-¶ªÊgj,ÍŽ£Ö¸"5oÔÎ*œq^žA@0^†|šF•é³WHèÚLc\k&„‚¬L'„ĬÅÖa£?‹’é¡åxMט)ezà�¶nÓ>±M™xo;؆.à¸5ÓŒNЀQ¦¯,.ã(Žçô‘݈$”FÒ;ï/Zsåë#”.KDN¨ hü`JªÂN|,ó\Œ�žE/ZõüÏ\ñÀ�`åÚ3dd¹øv3Vj‚ª¶—¢{Ë΋Îêfž ¡)£á§f¤7-j‚ΓÑa.››±Ç‹³{¤“ÑIêhs +ƒØÌÇ•Ñÿþ–ö­K"dwH‘�—ÑàªóEs¾ŒÖúW?}ÑtH}&£®æL{«È-Ò2ú.MöE¿et¶.a‚•¡díræ¾h4Êè¿€¾èT=Œï2úb@ò8ϾhÚ•Ñ +:~цWret•Ì-ùH¦ÑX¥ø›2:ÝÀÿƒ+à‹Êh‘–¯}.ÐM]F;'° 1¹/ú�et^*{ñE§]wÈhP*[öy_4×Ñ[*«ë­äetœµ4á×@ £{^4í*MÅmÙú\nU²^´Œ}ⓌNµ0U/i½ dt?¾niõ¢�ø”toþLèüEÃà×ÜÌ!£Ã}’÷¢‘¿‰SFû‘…ämÙɈÊ^´–*•{£2˜㉀S@Ð'MÈ£ÐÑ%`‚ºnØåR Þ(p8ó;¦×9Õ0¬•qx¯ßNäl%CÛ솓„ü"_øÕŠÚ�ü‹8}3üéCi[�ßù‰õ±¿Q«¢=< M#Ýq8ÓÜIi­WGZ‹ DS¤õ¨ÆäŒL*…B¿…àN*ÛÜUÕ?%^V‘“Á�e›¿€Á› ´Ô·XD\\~+„§sAV>€ñ‘³INdhÕH5ÁI”'mÑuç¢ Œ7q� pvû‚*[D1P­DÚœˆØ¶N�aU¾&'z$8Å�¹õ]gµ¥ÅϰÒÈ•”»›qÈÑt8jAHã `CýÉ“Q8ý +ÿzôj¼åš6šÙ•ß¶ 0Å�DÈß…ì"î*ÂîV†• +_º%EC ­÷ex“ùãħí©&�³ãÖ‘†¢l2O7Úà*)�ŽìbÄ�(çJŽÞ°G*v“ ð�„VÛ&`‚Ù3f¡®ð,-´U0ûF‡v +˜„hK¡^­Vo4Ž�õœW8Ò£ÑîÎÖ�6,úK£Á9Z«æ=-¶_æùÎ(óJÇ¥Ùsб�F£3boHÿီo"¢2 ×ÂÝgäYo´'ÙtL¢¯û?‰AZÚýæ:G-N¨æ8‹7ûj›Ó¸>©ºèS7ŽFLç9èÖGëÁtøJLãu–I+[®ƒ!JòŽ)›a|ÅuêÁr™L0(‰ê™dðWsÙ:iÁE“…Fº _÷iy–¤‚S¶©x¨QF”À÷‰¹*E¼×aþÉÑÏ ƒmÀ¯$­rúe:Ë«èÁŽ£¦)[¤¶ËPQå“‹gj®J�( ÀâÁ“‘¬�³?&WÉãö,àc€èa¤BûÁf6òYq«¾ 5ÔŒi›©™!v3ŸÝ”‡ÉÚPrm·ÕI¯åÀÈùW¸ØÔ"ÛU<1†=”#nÖS6`ê(0ÍKÔÏ x¼$²í/öMLp°Š­é'�#s˜åûj ±£ ++6˜èùÜ73˜¯}—p4葟R–cå˜XsÅj- ƒ +§œíxe ò±'}º62ÓÁ1ƒcÈÒ¦BŽæ"�Ô4 ⇿_n¡�~ô4?m…dµÍrWPMŒ 2«zþ¤!Ûe�^ók*]q€SUG”… @[â³+Cðá�¢A£ˆsÊ~�uq²ÝͰ¿Qiàp„N¾[iw0…¨Xí²dûõûW@õ’Õ§s¤>—_ jÉÇ¡ôW†O¿\·gC§ Ø’>E2ñéA Æ¢Â� +=~dôþTFE+Ê÷ ”Â9V— v¥§&•œ—�X%íxËFM/ïlì‹ Ry“áøÑ‘dþ|›­Ù2E<�«ô=ßP¥ï~xö½ñµ´áx Ñvo¡Ù� F‹ßFX #óî 2Ø�ï•ÔîÆ�áTìÛ»…%ý";ñá_ì>«°W ì]w.†h¬D¹\ɉWäñEɆ÷Ç…>…K$ïyzg r'¢87“¾`É�TžÔÂ{pÆG +î¿ó³+¢C¬ž9…Á°á¹gDnk¨€1šÇð^W{•9pÖvð%xj�ÍÊ&ä«+»+‘‰?z±÷´»&)]x/úÒ�ÁÑ¥Åu»‡²Ü†ó¼Ê~ …í:nËI”æw²€ª–׌IÉlîG×£î;›à£ +ÔšX×lQÊãfè 6_Ú�¯E¦¥Ò‹+'rg ¼=¥аYä”|ÄR{Çj5õºÇÇVæ¹”ww æ2VÄîªÄ åRëub³GÏ¥wéÚA‘��-§e5yé˜_�Ø¥99§†¹)±±é®ÛDiºÌ¡IÙ¡¢p˽Ä裗òCˆ•§ôD³Áør¡gãsi#;¡É&& `0žà™Ò¼Ž‹8]>:¼]Õ²�]ð9„-[æËÃÍd@‹+@·/.áQ¦¶–*(J¯Ò2×*8Ï‹64WãÇÀÒn|ä¯ÂŸ\\&E°b?ù±/å…[’ ‡í�PÈ}:´Í@çGºÐ:®èF~]#^‰ö]ŽäYà`×Ó„u +­.ˆ\³¶ñžŽ%™ðQâq o7xÆ~Sù9ˆœè¶ºQζÀ ÆÎØ×^ôÖo×ðÍ+þip³ß�¯ÒÍ‚ååRni·¨Ó{’ˆÒ£ÍÅê¾­î`„ +{ ãjæ¯Ò¶~¡ý^óöÿ¢éO( §VlÄÚe²»ñTÔ3Y¨Ã–§Øa�4_ö�A(޶p`ùC)í£zæ Ë#€ˆÏ6*2=ðd µ÷²÷S‚%"a<~¶s=å“wÐ< 2†'EÓƒ ‰òD/©‰v/0¾GZCA¾·1œ¨ØZ1ˆlª’Ü,OOléã8:X0A(¢#½õVQú3KËÈü´CëézŠma¯>Ø5UL‰ÞÁ–½ŒÄ΃ŒÐ#ÏãCz¤fS�3óÕð2àÈ)8rˆ‰ÜȱÇÝ9‰P,î„‚ü¹PÙ߆Ž\hÛÖAc�œ¯×#·ˆxMiP�> €.Ùܪ.„™–(¹â5Œ¬JeøÔ6y¨Î¼" "J“98…–å9½2^’n¨’B!×;œm²¯½¾§+J}–¿£ùg/Ì%kš’Ff*ºxYðþÛ€qvñMª@ÑûMÏ€-c]oå$e•İ âÕõµûÌž´º,t­¢ŸÜúCó]Ì:h!ÚÉ<ØAbtÖ’— +9m±vvù¢F²¹åƒ”9ÚŠ6†±¿ +¶˜š™ÂÌeþŽcHEGõ:K¼Q…Ñ-†h  &¥±ln_ŸˆR}86µ³óG:Ÿk¤‹bÔ†¿'à#œdÄ Óôjé�ðOü&ÂÍœB.°Â›#Jqìî�Ü¡X#¡v{“ ·ºÐ–ù p@¨Ë¾}(G¯¨à*ÛÀpÀ ÜÙiêgaãä(Xd¸ ò¿­Ö(>VñËøxvÊã\7Fe²ÒñÕ‰7$ƒâc6fÙ¿$t‚mé�P¡^g¯Ú¼ÔC–FK–ÊBo?6ÎTm(À µ"‹øoÑ>*s¶Ìa +þD"h[·ç| … �Uòf÷`ëOT¥EŒ²-Û#Ÿyˆ>ð™QØ ULㄯ}ª'$ÍI<Ê�UâUA¹QB§Ì¥/¹^À=Ë*#$z! â%Ûéw¸w¡„Ï5èèãÚ?ºÇé|¥.sõáJü—g’/°·á A´èû}m¥b—+æ@ù"]<`s$-Ç3¿•¾¡B0+ðùžøתB|D>±1O÷È�‹Ä>€ZgïûDídFò| ŸéG|o”�—©jÁúT%�ëKÛ[;ܸP3ºY�ë!PCŽ= l>Ö@¥ (qyÚ£F7œ1d_Z/�®F%È%h§ÓD ùyG´c’æDQQl 9&é—n`7¸þ÷^ênöðf‰‡gÁ×Ìk\�Û°Oãcw +ÝÂ*UÇæì,bmûQNÂmÞà³ÝŒá4 �þá4B|RCgêQ[�??AÈ�Óœ™òp´ÍK÷É^…½Ñ61µvk#ãXÎ{žQvVÁæ`îG+:u,ûQ<ÊÉÔË6fàšÙI€÷xµê©¢æáüyèŸãñ�çTK +èÞP-8 z]¬ýÊs.wèýÓj`øÊ‰ÌJü—/°×†žµU*áÔ6ƒD|WÀMLF ‘ò÷¸äMƒ ÎD醸—ª¾å0ŠOÂãKé�iºß÷H¶½ápü¾:mÈw[ T·|”“EÙK ËÅztÔ£çœð§�pfAjEˆUo´5p ˆž·��Zøh»øÃUK¢<ºid¾ÑàØFÛ6Ѳúçï1 ŒbmÛ8µ-†Ü☠ª£¨“ ŠFèPÛÁ]ii_†fÉ'OŸÅ5õ��hÊÅH{€áwà˜©ÜžHt´^ÅõIo„¾®õÌÊNF*¦ò ‹ðÃÌJ“ñYBk¦½ +dSÓÅ~Å[1õ[ôÓÇðÀ4UôCÚÙ¸ÍL­ï'¡–{½ƒš +Íf6Öa…ÀãÂÎè;Ð2Šè8+ŽЩ\u‚|œvÚ¼(ëm¯€&‚#.i—ÄØòNàfˆ�¯Ï.N‡X4Kð‰Ëg Ì( �Áù¹i#è#ÁÂ’HB�_à^O!0F�z3cù <2Sžš‹£gÅ`†ŒðÈ'óu"ºáT©µD«uüh·ò�´ø¯©µÕu5¬ÄÜK·dÇ��-s˜ÞœB¨h%L¸%~Ê‚+ +\Ž®y>»+ÈÛ¼«­õn¿‘OÇG6°tÐ*­^™(âp½f²BÎ9äÂjàVüÃ'è%�yg—\£É’™¸\ •p5@•ª'H•I·ïû_5øKåæ¶þ5ç¬_Y“ÏÏC¼`µ>¤<“Jú«@“VöÌ@¹?9¯X!WÃu0V¨ªHzEŠÈ9¯ù”m²Å®)‡¦ ó|ì|§lŽóÉ,Šàa3G4vf±Ñ¨Nï„ï$„KõWÉ7�ˆ™Ò…ôç1…"ˆÕ§{±:Ú|+‡Ë,ìÏ=;-Ž‹D¸ÁýMm·Å +»R1dRXt_wˆ¬ƒ·æ­H¦m¦0“ã@_0ñVRàÈÃâ'¥3w¯Q ÈJˆ¤œ”�†„mð½òíèý‰.¨¾´� Ô epüh⪘øÁÉXR(p Q¯$V‚4z%Ì_>D`ÿx"²XíOQ‹<ðÂ6ÊkMœl~ŽŽ@×gIàZ[<Ö¡P]8L/*ø2  äùÀSÏYõC?4OújNû5›J÷B‹—&Ç£z¼„"¥Œ%ÆÝ–_ +9¹€ê˜FüUk“Õ`©MÖ‚,6ÉÈL�üê?Ä­+c¥Âã×J†¬QÖY]‚”–uÂZ7iý× JF¡lHìÓi@ äØäL¹€À¯0±û7î Ô„ê á߸+PK¬P&T_´.TOø7îhëR4L¨®0߸×ì¸Áò¿M'�Ü�YP@â Ëq;s,jà VŒ°¨ždWÄ¢V~KµGgijÞÄ„çO²7ÚË£/ŽG{ª±ôkíÔ˜Ï÷åË÷SÜP ô°0Åï£cáû,è³j.µ¯ÀµwDµ'ÛCídžX‹ˆBzp®2�mbhFš {2µ?Æ{ùCD˜T ðˆÊ^ÑT½>é—{šw “ Uˆ Crùƒuoeè*=š²‡j¡¸€€pøfìëg¥  ~·�ÄÞÊBOa”8׆ž @š"ô$ªñ(xT5­Á(‚%Û�nsÛj¿A9æB.LÁä‘&icp¥ú¹¨>ý™¶Müæ äW k»dlë|ŸiÛT…ì“Jíkß¶]D¹Å,gú€q…\Ž�M!¡l%‰Á(”Va‘¶g¶IÑ�Eºš”EÂ&¬;O²]M8LDFìMËíѶM’¨;ñþ¶}Ë÷I»…cÄ�¯¹Ô—3å!W™ÀË™òã€}„r¦ÜCDØC`ƒÛòtØÿEÞ¯}?�r¦¼¢º0ÌÃŒ}}ÄK$¦³wù´ºH-¼A¤œ”œ)½&4qmèA ÖC?Ki)÷$]{ÇX Ÿ)ÿŒôëÇ™¢Pªð™ò¾é°?Â=ÉS?óÏ{ôzg°È‘»:d�Y¾„a6IŽÄ©Ì>,³4R•aT¢Š!SÁ+õ^ �T73–ãš?Ö¡Á…Jú]²¼� ÇÃ@Õu…~æ ~ÄQ2U‚‡�ªKŒ’˜•È`yk*wÐf&iÒq4ñw•­\P +ãÛ:�5CQÄâªgBuƒº‘>g/�òe×ÜÓ: Cr Líc¦ÐèG<[öÒú}�Iæ‚ÏÓà‚5àôi?8asþ¶–7Q¯b sx®;£{jgÚ.ÏÚNfY±,ÆîMtîÅ�vråË�Ä�¹•ŽKχ™¥ <¦j4E „Ãß�Âsa`‘ +2yLчA|JWˆ´Hs „6Âá¢ú ÞE . X�.-†òG‚;—�lÛÖ#ÛÒHud¸Ÿ‡áÈpÞ± ¹¨:ÏÛ¼Ò !…,|²S­ù·+c}ŽüWå} ¹AUíC;Gm�7€�KÂî†Û060Ä% y X’?œ˜n îà„#$Ð2”pc„^Yà®mÛ«¦w'ØÓpJ‚»,ÛÞ69~pÂþÐv y·gº2¥@“ª“æ¡ô½°m€“·“† +–…Èþ0î.²9ƒÄ+doîEúÅdº@g•X™RL«I��’¸1}º‚^VyTŒN!.€Q‡¦;¦G‡u±4N*‰ú!~:¢~†X93h <Í‘èLøy¬`Nk'TÈ:DNŸ€LoU8]™²ÊÛ Ÿ‚ͱIs7èMè�!4›8:e¢¬ û¦?@¤Ìa2æzP‰°"Ö]Í›‘é²6“çÎA®vî\@‚BÙl””2Ý_aÔ«2ÌI푵â wös�œä¾~ÌñD¸nT¬`%"o^¬Ê]ÎN€‘ˆ„ÊcNL9æÆöŽÖu¶p‘äQ¤‰‚ü’i& Ü1Ëí�ù�J¡±åÂæW¬‘r%~Û�îÔ3£Øw³Ö¨æ-XÛ&g�zd«Õ¶[TMkÿ£™`èßh¥•ÿÛ‹–ªð¸}îïÅŸa³k½;âLrßµD4,q‡É®î¥«¤ã•_Í0v@U$˜<Þá~2(ù؆ÏÞWJ8Ð,9ü¿òûóC�ûâ•ø„7'Ä +:˜”uðaHúä“`ËšÅ`Q#ÛlBN$¥¤Ó8ñʇ _ù&äz1¿ZKAÛS¨…®Œrg:~g䂆†ûíg�){̳UcÏË2ò®aƒ¼ Œ;ïHŸj¤Ó¾cet¾ãwŠŒœ&^œÒW“¥�ºà"O�ϳ›„¦åM«±÷â4”-ÅQzêÏî2 W!QjOÓ6¨¹¹ª8°×JýÈÛÐØƒ@r‚QÇ �íóÅ2¶vŽy‚�ØR2¾ÑÚ…ß´:’ò…ÎZ©·±¤Å òÌbvK,€)3·VùoÐby"=G>_mWEΑ«‹sôúæ³ z~†C’�˜Êƒ@‚Žð ¶é/�[åC1…qU71xQ>þÀçµÓ>Ak³Ì?{ä_éùœ>™'˜¨µsÈüÐT¥Ÿ"ðÊšdaW* DMm»ËAzQ måvM‡ä™l\ƒ êm¶¡Ùzv»¦~ytfº¸anˆÞ”¨‘³ Ñøº,MnÅ��P—V-*QÚAi$òmÕ‰zHB9òrTýËí‘”Bê.UsyPDL„) ´+µÜR)ƒ²&R,^�–�™­ºY\³¼ìÝÌ',ïmfÉU¸Ä�yó}v;­à9AðÓz+·sÌ4=�MÑygGÍ:roKX ŽU¥¯À‰ãû^ü0h±üàX)3IBjΑGba÷6ñÕG¡ë¥a¿\ØÏr{¡ -"2­˜‡=ƒ:°,¦‹ËrU©”Ak�LCùŹ·5j3WÅvŒ`¥&‘ø kž X3À¬y‚ˆ?ð±ÚÏGñãܦ5¤(˜�ÜÛj$óÏX,ìŒ�¯XèNó˜°X–‘÷±}ÓGO� ~Ù8“#'£ÖŽœÔ�FSÂ`‡]`çmÁì*¢ ì, •ÐuDØ©³ìH†1ѕȡ+ØÞá{ºZ¹Ý» Z^m ªÇ4^ÐxéDW?_iØ)²@ -,¯¦† ({Ì|}÷D" Úµ8åÞ•:ÎW÷‚wLfÖ£èø)¹D d÷árAÁ<Åú‘„Ž@ÒtÁ^°j²’bÕ:›‚·±†éMZwm@¾ÚT‡ÑLP„×[·7\hƒ¥x¤R,ßN”Ì4k�Sç½¼VŸ¯#òf™Àï½�×&Þf‹· 5‚¶ƒ6oÇU/Ý%.AmS•^I}Ö 3ò9 ‹L¸0"Ãj¼�Ã*}Á2Ò1á �žoh¿…÷(£MgPœ9†èd -PF™5ÊvÜô¥ ×´B…Ö´!Á¡éà -ÒâÑâqâÂâ&ÑVñ̬£âª+)qo#`f¯Å¹#N‘°BÜ4ͧõ$™§T¥§i:JHÆ¡8´†ÖÐvOZ,o?o?§yÖ“öµØLé�$df>DF23gúHBfæ�CrOj ycºCóµ�¼1]‚1dº„ÄÐ0™.ñ¶Qgmœ—Y­º �2Yå“T>I\«üEtkÕi{¶ÃÆüiŸ`…'ÈÆ<«O›^´J1!{wòW¹à9e¹à9U…0x¼ŠRU¢VðœrÁƒ-–÷åä(<‡R“*Ž:ŸSÉ2V§búpÿ%ûš‚H$Ó,‚u* -ÚнuÓŸà¡‘™ÊtÔt#±¶>Ñø2�äâ!d¦ßt\Ðãø :ËàÀÞ2OÌŒ”4u‰”#R°è„®¨¢“E@=-$"‹·y]Bƒê½A-´ÕÚa3ÌfÔˆ æ$ÎÄ_I \=îëçái²AN�N¼ñ"ËDñ‹Ú­ÝµvÅƽ-uM`Z"|AÛÆ]ÐaµÔš¼Í× °°f€Í'’‰ô‘èKª2ŸæÓêÁ œÕäFD’ŒL#Ó– Í“†Lkã<,¼‘„$»�CB’ÝÇ!É|’Ìœ|’ÎIHÛã�`ÌZƒpc:††i04Cw2C3ÎR!«Ul¬ìl¬> [b³±Î²,éE¯1[YjAëm²w+«JeåmdeUé¤*�¬¬Â“˜*50ÎU”Šz€Ñ¿ÄÉPð¨(í@�Vðx3ÖMw‘Žà:¯;ÑGaÐ,¶p G¾¶'osIãÌã±S9#J„ÌäŒà8ù0êŠ@ÕAR·¢6 Ín]�X2& ‰•E�:”3Áýdæ, |ô|d¦ÎäÈ š¬ŒçÅ -;*Bt¢+ìB+RØ•@jØõGѱŒD§™�`�…Ý‚ú:›¡!Å×È:†ÃiyL…S›¥Sñ<ÏÛ~¬�Ȳšû´lןŽq?ÖÎßn¹/ ­cýá·¥EŠÎ ·’‰ã¬• -ùîg> ¥UÞ;Ëcy,�å±<–Çðžädoi´Ìù¸'}wQFÀùzsq�ë>w¿¹83Áuß=G&6˜#]™àLŽL$8rƒ93Á‘›‹kôGr]¡h4ʆÂ,y¹Op$ƒ3H’s““¥Ù`ˆäs½3¸ÎYËcyŠW\±éÖý×#ƒìørªç†+|çkï¹ÍÅ%œß\¤¢Ñhtnz³/¥¨Ø\œ÷ ŸàÈÎ9£Q.J†÷¦¸è Î{¯¨ùb{™J&®Ç,�¦rœåm5Ê•,o›Q®³<úï¸eŽ/àÕ<|K¿Úû·¯ýÆOr’wþ˜¹d˜,™ýcZ>ÑߎÚŽ?@‚[ñås8>‹[ÛõAÇÛ~Üh+™¸ÃÇ)¶—‰ãÛh!6˜ßü¦rݲi4\ï$éÛŽ¹Ýˆ{û(Çcñûzµž®á¼wïI²,MS¡X,ŒFotÎ{÷Þ“é½÷Þ{ï{ï½÷Þ{ï½÷Þ;ï¼7 Æb¡P˜fY’¤÷ wà|›†ë ®ô­F9¿¡ß˜8¾¡\ßXÞöÙ4Ê✃S/#ÍÆ4Ú”ã[¬á¯—^¿ÍÕpœã&×yçÌÒs=ÁqŽs}£?ZÍ+®°zßN >æ ’ Û»%ÁœL/ë!]׌™‘·}óA¬yz#kž €¸Z»XkÈ kž '™(>²æ ž¶ƒóPš±.xo½g¦‘Ëžƒ!o*óMpÅðEÍ*�Þ¦eÙ¤Åã< ,$Û,l׫·öÈ¿I_;_Ù.“­ Í¼Ú¦å]ò5sûjÆQ3Ólä Ь|‘­;rÙ_§_¹#ï(w䇋ÆíÜäŽ|GnÇmËvÀ‚¢n:�üuQEß0±¬ŒÆ‡ám˜C ÚÞÒœÀÁ28A�Dy#ÏÈ 5eìxFNwmgh|]2ÜÈ;",ž‘³ÏÈïn$é uä÷@­ò‡”‰âaáÅÅ˺ -ÓuYG{«ÞAc�ñrªÒÓÛnËYj`¼cÚ„�f®…�éÅ -»�úºÆi϶mŸ ·Õ5›Žmo„ !|€ p7€oÛ®Õ1=›Õd3ÂÁUp ®ô·[síØ�¹²ï -¸nHF2t©Ú+Áím½ŠOçìtÖ²“ÀŠþÞVsO¦Žuºg2�íʧ˜ÔÁ¦”ýãÐ)u:]§ Ëi'íYu²G®¥¢þž˳JyÎ[¶ž ›2¥N*SJÔNÛÛ>1¿ª•­ÕK =¸$�Bx⤢}ñãôg�¼ -O�Ÿ£x¦*dÃLœ©J÷œð†PÉØÁím•¤Â1^`0ª X£S¦.œ I ýQ9¥7š‚ÏF¯¡j§·±Œ*}� ‹$b6Àާ½ŬRªHæzœ` ö8�”fTö8!Õ(¥Jéå‚ð�|:,s"‚t^Ô¢19c§°qLæTÁÕ/#¦f?÷`oØ_YÉÛ¼ÍÛ¼ÍÛ&«[å½í+OÖE1 CAGÌêÿ±f‚e¢xó1¤h„vEØ'Ș؟74¤Ø]`—úĉî„ßC·*Œ‰ÎC¢‰î1;Á#h_g*mÂÛ¢B˜.J®‰‹êAöR›ØàÊœÚ$ã e6y8BÎÈ©´Ü~QTÖþÍ6dÀZ‡Ne;ÔâÃÎýĉŽV{Qá,�´ 3'¢ñ¢Þ6‹ÀïgµaN$åúy*f6cm3<çå)&%ͬÜú«„·N�Ï#êZÓ=žÔF+gü¸JR3£<êm“#Ãi—oí%Õ-�òbµÿ§-ò+=¶�ÛN �©Q°�sÌ”d\“�šõ`YGN@TBõ¢@³8² !Ï2cž`Ô€Ón„‡Œy‚£Ìö‘HS“ åÁ8dáù4)ò¶t9cÀ€)‹B–«ÿ`� -)vNàå ž‹$¤É3òîÖ*ÏAž‘צˆÁ‹ÏÈïÄÅ3òxš(¢ƒ©§a·´Ì=ÁÎ1O�´$Ø>!°]ä”±•ó�Öîmó5ÊÚÓ9ì,²[‰–S#1øprªŽSõeb“Œ‡¿VÕ@ƒò$Ué†Ò¹a IHY­ò‰Z;òðŲ|bfŠÇÛ¾Òz‚¯ZåSsäƒF•jÖöVM,P¢–®¯›#�¤aÕÇB¢¦¯{¼Éuð�€Dó9-ld"9xˆCqð�2qð‘pð3•‚@GŸI‡uI.ט*\‘„«/®°Ï sÞÊí�‘h—lOÚƒ$lïÛ¹%Áz›è˜½-QÆVqµvo¿ÑÚÍÚÇH,«°{[jÂ~ˆù'3ðÉJ,5†•¨Tg„Á¬” )™‘#0ŠÃñ´–€=D*JLF,6$(#‘XŠc1Œƒ@ ‚0ǘ‚èªÈâý€y )[¬!ÝVh½j*©ø›õ‘íç÷5>ïÚù§YÌãŒxÃÁ™â"‹d$/96™)ÔŽ¡0phÄopu‰)¬ª„Ñýåú”dR/jƒ‰¨äÍçå&UfÁVN£,|th¼D*æàÙq&̇Ø@˜…ÜO="p¶%™ÀœH…MÊE*°+Ф«öº´E–"ØZÄ,!{Qm,Ê Ž.G~ì/l?'’ùsRÍñšPq(z=b}¡#zVžA°F¸ÌXF…yºEÌ®X'EÑšR"ÜG¬¢B>€äs6¬Ÿ¡h "xïêA�EìîVE€÷õO,µçì0ws-”,Áu¾„ñæTyst/Œ¤¿Ÿ¢·cÌ�ª(òVÉn$ŽS·xýÿßÕÇ£ïþ`» %lóìsÃMÝâúœ”nÕìÖøïÂQIþ3St´² bùÏQv½ ÉË´À†ÊFne5%¼)ˆÞl‹­ê1îÈ1{ûa‘<ÛÖp-º#°dêPÎ*¶î¡W±ú¸{Ì.x@Ñ«Ìùñ¿™¯;ÀVPsLG¤Xv¢ƒÉ~›UK« *Øv½­Ï¬)ÚJì?0áäR;æá«V¡Z»8Õ`g½—;ÇøÍ¶Kz6u:îI!U É XY§E ©¢Ò -[O½JGúÄG£Ãcæ¶T¹ºŠñiš“ÑÔ0g¡ ÷Þ‡O PàO@TQMÓHY–^GœÜFÿ0EqŽ'Õ`޳l\þTèJ»½…4‰ß¹éî,å¤Âìo ý…_#mw|8ï¨w‹µþÈVx¨AQ)R¡�³Ø·Â±ßl³›Án©*]×­²R“(:^¢'·Ö$úÑK”Ï88B›¯‰KIo2îÓõΩ/“!êÔ.Æk.ÈŸ´öüZ UyÙ 6�vXÛ™­$1^<Ó ÃÏxT|tAÒly+¨ªmƒ'aâX•ëaQ»žX•îÞ´ -±üI$Lù€l!ÝBM^ŽÐZ•ÓðÃÆ[&ø@Ø•9ÐA•]a4”®öÆšRvÿ�tg½By´‡ V"åX�ëü‰˜DOjèCìÉH¾»‚­Ùü†Pº™ç±lW.rgÎh$œ¢â,ûé{1ñ4ŠxTUETµxTäÜíº%ìª�G ÂInŽgIz„Ãöø›ØÅÒ̰4úÉW†;íba Æd·e'®NP®ù¦Ôs¨®×¼ D'¶/ 0+³�H ɘ[#ågçDúJ!´k 8 [ Œág¦ïTL`åÎ0¬æh�7¼yðl:“T?XÛ¾Ô[â°½½_÷ƒ*µ¼é&!Î0’28çÓ£"°«yÛ>Ÿ.?1–�s½¦ìdÝ6ì& Ñ f–íì¶í€X÷¥�›׫ôÓ‘âì¢ooû£EìNp_¡u»�qšñ‘zTA JPE{¤)íæÐËÕ—a\na0RvA?/s½`%Häïh]0‡`/QB�L[Há¾fœ†ØáO)$0s%ÈÅ;Ñ·…=û}ÏÈ�y.i`a¤yõC~Šf„I*&�ö$M‚ 7TÑ 7¤ Ÿ±q¢éÊÐ’æ­*p¡ÖðkôqšüÓ&@Yw˜ÉºâmÔ„÷}À|É»ÝÍ9Ø+G$t�Ÿ†–ƒÀpŽà†¹»Ó9">]íåÐ�säFNÞ¹ŽPðæ£ ˆsÒÊ!à9’žÓ«šÞ‹S Ó‘¢‹’+`_ŽfÄ~Ž`„! ->QĨšoÏgeS§ãƒá—ð¹3ÙÙ|Ö<½–¿cälÔÍRâ�¢®X -(^ó¢-ëw'sÿc¦>#^[%<¾J8š29BË6ÎuÂ+mÂ{ø·œA*éßWH:£Át!}C»¤S2�¦èàhDtH!8ÏEïÅU­¹${(ŽûßBôgxxºñ÷o)ú(â«„ë;aòJMdxÑÓi9ãìh¥¤B¬Zóa½`±>K÷Ä�Ýx2)@ãx§»NAÃU|íAè‹2Þ¬u%›bXNpÈÃ@;9:6ÈÅ”€%ÆCìwh6‚�½¼êQ]é‰�<Íš¢Î÷ÓS¯ düì'Cþàs WÄ1Ixtge&4D«TÂàßã<åîßTÝ#iaÑq«‡aR¾�ÏÒ&$§ÉɺÑå+ƒN®·_¿(±6yÜö£ ±¤�ÉUª>T:p5‘èù¡Cv)¤ÐÕÊE®x&˜Òï©•T±¥HÅŒt”fùBe¶ÎzÜÝJ óã×_=Œ‰DÝA Cz)³•¦”Z¤·à�rd0’Šä3‰ÛAUÓàz ~%Øí„|~ѦÆp‹b[ÜWW5éݘó óÞÙ­{jUÈÚÿäÕ0PJ¬ˆ[Áy§¨¹ù—�eéšÊªtßra-”Zÿ‘…B8DVå5Yh[dJ�¨GF鄺© ßÔQ,-ÄÞ�×yOÄÅý’ÖåÎ4BôgÒ)V»_!9-ày#Ým -Ö:ê}.ƒTVX¦(ˆ¡�²äCí² è ¶ÒuWìз÷ñÙÀ»f�{ ‚^ë fÈ"`… ΢A ûQS&§' +; /ï# À�?@ñtÏywKá<\ûœ-u®Ë)ü_vzi׿ç±ræ'+¤¢?;«À¼fm1ÈLââø�ØIK�³ie_5H€CÔf)É„ÅúKIu6@ä½áýšˆÔæ-jÈñËäçʤ.õúnžAtk�NÐÏpï=÷v*¸Â�© çÒĬÖVOô¼ù¦$ JwÙv­†aF,[5¹ Á—AfpÏFÕPgÕ –Éã3íF6[$B±áKì,ï•{ÁA ·?ô†Ÿ,Ow˜€5]⪆&,�ýÇ·¬TH‘(UVJ¶Y7ØB3©¼½…"Sek×j&z –±͹Q -ºÊEI„ÙÔ{6ƒÂùÇ&�AÕŸÐì4�G˜8[›˜'¤DDYãRÅ åÁÎëÅ]$¥œ”ž³�PKäSô<èõ5PQ™>a°¤kW‰ÀÔ¿5…kw4$Ãpµsuì‘…TEöKRØóUÏåÅé¡ ¢js“s )€N¥‡Á™,çÐøÆ98ŠŒ·tCƒ_Þ,õ6@1®Å¨Æf) -# ¤ÝD¶¾øYeùBÈð3)¨‰óã[:ÐLzÔÚ¤HJi)rBoX&�``xa†Îz!�¹%œV Ô¹‡dTãq\×  «‚%?HÃ÷2qI¸å|? /öN{I ŠC &<ãe­7í ð®•AË’ˆ‹p“` Ï9ó oð\[ÜT'øóþ}GäÒ½¾¶ŒÖ ¼A#  Æ2*YDù—{„ÉÿÒ/"Íða Æ š’ŠâW“/A4î®í¹‚b™š_W‰*†å{xÌ1û5 ªÏò-wÕñeU„‚ñ†SêÆNRDÑÀ­bULs�*X”—D¼Ý”tâl~ÄÚ©�Ĉ'Ž£Jsù\ñä Ža8c"’UÇý6Ýïýø?}(ÿˆƒ�jÀ#HL]áì…,E…CÚ€qÖÈI(²7 …{Ÿ™#_f¤.E�cD‰BƒïøIé#’•‡¶åâ û�Ï;rŸ±ëæHÜ¥·Ž|bŠ£_žÉêü²U‚’©}×uúJÝg˲o[dË Þå³—ÝdjO]{£þÍZÖ�³/E”²˜WDl#;³µ³*°�5çôqTÔêÈÞH,Æ4£†žHí¾ŒS×ö½ÙÈù]»¤&¯Éªÿ‚) ®ãµ¢.à穇3çÕJ›Ê‹YÖ¬Tfº3|ãÚ}ËǦF!³�ôcD4Ò|ä¶Îk� 44óôQw§ÛåVÀN9DPGjZfUäp.}‚þ Ñ�°M‹†ÙlªšK°2˜¼Í/gÓ³¾.F�‚ÕAq%Ö±ÙÞ¦Èd¹²jåÞanvf�Ý2»Æ3Û5ºÙj®±�q‡µ‹8Ó"E¤wè—&Ÿ*B ÊlIž �; ûCŸd³ °ÿD‹Å€²dPnÞÇ)ƒ“;ß’-�¸3N«$Jò[^ù#‚8k DOíüÖHiæí&íKnæ;wrm_û]“£w hÂJ»}Brx†ã§%¸쫽RýNÈ¢ó¥pd…Á‹»>ÌCŸœ:\×**‘ršŸš¢÷áF¸ÌþDŒÖɬv)Œ¯Ì¬Ð K_��ˆø=h]ˆŒ|§_Qô\- ߃Á«¯1‰Ò(4(ì»æ¶B[z©ÎõÜZøzÂ/7‘é�¹Ô†xÓ!BQ~±¶}u`{ AÇ\lŸ÷ˆµÃÌ�pÍûUI¶¬µèõG âС޳dOEà¡ùŨ7c7 ^6ÚÁCé¥Ä -êMþ¼;�z‰*­ZY£)C½mjšÐºÆ ¨—#µÈ*õÞq% 2ULŽiÈI§“[Ödµ¨7 Á^µD¨r­ˆ^)Žþºè0 €�¾œ¢™{ ¸Î.ÆU®mk)°ÁrL u\Åå—Ô7ö`ûÑ’×"¹ù²~ã"ù¯å¢Q‹èû›šq$bë2t’#—ß‹L£œR�'rF\u$a`Vò¢XfGGdæÂ–é_i,ˆšƒeDv´r÷fLGî‘ý»dlœ�n¡+²–/CñzÀK@=Ét+Î-R®;{ˆ ›b�8…È„˜ÕÔ0ŸF™Ê[WWì™Â\c+qk^nÅš§hÙˆQ­xuª×oJ, -Æê¸UÃ,úîë$x‹ u,‚/â ¯ÀµÀùi -òÄ“ÑÔ�pVPÅˆÌ ªþº�"k~˜$’l3^x‡6WŒ -£9Üyh̾�mJ"Š"4ääë8MØð -¸— ðÎ/<ÝCÜÍþãªÁæÝVß«÷£ÉÜèžÎÍ@ -{^½2ÿ#ªêÕ²I” �å–`źvÕKúùãÝÕ{æâ¨zE¸IœN$”í2sý¾Ë™È”KhÀ«zÔŠäˆÉ®ª—êñòÕÛ“tþõK‘mHDUo^†øê]⌞’ªwÝ:u|/þOU½Q¤ä{(>¨U½„f‰«gظÜS°�K+`ŸèŽ‹š6E4Zçk/Ö¥/(Š/9É*BÐXTp›ò� ÏÀ´=ïì|å^*�KtUÙkç½UÄÝôæ’åPy|œìUóJažÏ–”OõK&~#g6`áJäµ›ÎîÙšN¬Ã8CˆGÇtOΪ¥tÎ=Øê˜!�èçVîÿw ¹»þ&í,ìÀ§OœWwJ­�ðÞþX–MÀ…2tk|}ì |ù~#pfŠÃLG.ùjHàb[Æß¸¨åõxšH»<ì JL:UcÜ'„"ìä._qhX�!ÉÛq£Q½b4‚›ìÓwe1´b¥(¿DÞá¥dšªðâ}—.¾ ÞœT©=±Oþþ¤:ÿðãl_uv éÈäxWÊ`Vúî"É}pgâ�š”Àq†¢æyŽÐ¦€Í‘ÅÇ—ë<ì;CýþSY¿»n<ÚšÜÌÏØI,LrBvÎïŠ2›òÀ÷¼‡cš/–õ\2)#ß]ìiùÖ'ãÝx™«t8>óÓÅK«%ÞÝ•²r›£Ì”;Xæ´Wã©Ý±„}iûË»[Lôÿ Â‹w«—GŽ,¤¾¾RDCT»ŒMéþôäݼ»‘ºMd 3œÇª@Ûõ© -ƒ¦%ƒ›a‹ 9¬ÚÛC¾‡ �ræ8f4Tm/¦œ_¤ <º‡«@\ -µpßàÜM×¼à¬Ì7äæ�ª€€ê­YëŇð‘·ÌÁjy—k 8ÞMgrÔuÞÊ‘Då1  c8™z¹ÕHb £;­·ºµÒ׫»çÉ‚]Åüfâ?¹,ç0~x;ÁŒ%Œij±å;†s3ò�)4^¯¡á™i"\h_®Ñ¹f'S$e–1å1WÎ`½ ¿¸øÓù8²ôˆ­üYðH½%ð%ømYƒaþAAÿ,kBþôƓ톔¯¢Õ]İAèi€Ì1}¥%ו‰—^µ“›sx¦ÕëªIRÒe”Ñ5@$’D¨…°oÖKò’ IãDîP´ôhgE¼%SÖ¹�²À`êÿ‘ìÓÏŽ•:ùÛß8�Ç,쬃�Ðzó×$Éô¿¼I6ôEº Ç*Ü�tˆ…qÔ~±®½Žæ|”¶Õ•¨Çï’>=Ç!¥EíóÀ�bi w=v|ÖFóÞ±ªa­ÿüYÍæK¼ÓHÔÞûS»z"#ªàáSé˜JÖïÊášþ¶+¿rª5tΞ꘻LË7+`—ê•v¾GŠ“æ >óBÊ[� *Yú}MXSJ—w]Ø7¥ÙÄ ˆôš4ˆ‡Œà€20üzÒŽ‘ŽC - úŠRiA¸ÇÑa«j@z¡ìeÆ«€�5*¬%îî®EËnsˆÈ 1Iè(>Ðc#:Ó…dÆCööÆdkØ4Z†žE4Jth«±¬ë·>߈Ýðº!ýƪ‰¿u5¤w½fp­¬]†+Ûˆ‘[ñÔGW-øé ¸èžZK$ÏÑEfû´}Î IîèÊ'TQ~¬« ódâz8ºÑîRÑYÚÑ]®qE µØ(:"uH¾Íá«o«è~·ÊæŒw=ºÜK›LK?º‰êX";2û«¢«�ݶO·R©¾ÓVy&MS�*æ¯?ëh’Þì(^,x¯üqv›€Ôlñ‰a,œDR-2'>fôÍç¢�t5+Þr)¤Ôê¹3þŽ\!Ä®PŠ¿³ ⺘âÉ‹ZrÁÛð¢XKàfs'⥥Á…Tœ‰o+€yù4îj‡uÞã�J�vBM,„µÝH`AȤA”ËÛùÁÔ <ýȳ†ìaQÔ÷Êîªzž�ÚÑlÄ,+�ö¾Ô;"¾„\^ªUñ5᥈⾑Ì©l¡z¥ZG«üŽÞ+t„—HÐL‰tcXm -Ê68e"xùå±E§h¹Ó¶Z™¿¥ýüKúo=—÷¿Úc¢ª"p2S9˜8N›�)+&å.Ò‘�@&¢D6ÌgÄ:6a½6!é)¾ÝË{žÝr€Žâ”#cjE³µïPiû’€¿|&G+蘆æHÃ{­)®nêI멨H<¶UýYó"ºwÑ€¶°³‘Ċݰ§²#gº‹ëfÊ_2ã�éöObê®gÈ�1eöG¶e�à�é*�Þ”¾ùa‘—é"—XNJwæÂt�6¿ª!Œ0Ý•P›•ÿ¬tiFL”7*Ç0žwô0Ý…*R;ùKæ~3]÷2qåu‚‡ËFa™0[Y—pðÒmÅf[_ëWSи•ayp‚q?ÛÏj%ïG~Â×—€e)¯ ó5sV-ëC¡ˆž”’VmëÐvºç-©¤2Ü·•åq•Z‘9å-$É#þ5�©\Ú˜àÇfÔÎð¥ú•ìneX…ï¼7œJ –d™ÝWX!Y6è•åcXú\¯ÜÞ’çfqX �ª[fú1�Êê¾ìʃкÁØÂ'NÉ|EY.òî’lï@aÇd–‚‘™M ¨÷;â1½%nØžJ¹ô•‡lÝ•—Q’Ä �s§Z’ÔQzÊ9–ØÜ`Â\ï˜ð!¢e”8h§Á‡èH7r»HD[<Áï‘ÉYXCì³pÇ0yuÙzL˜@¬¿ÏTYIy£ÄýD³$8™Ð†ŸuYlð¦_…¬ ³¢#tÛ¸õ ŒH�çÈé˜RIà¤{hÕîAÅhñ(L ³ƒøCá‚XI�\ÈjdÒÄo)‚ÓEá¿5¼_ Á:Kjñ[=ò²å�ÊZt‘ pÆÒÊTJ¯AîÔL´…¦'úº[Ö³ás0* -0ó¬4óžã“>á)oo|ØŸx§ßÈÇŽÌqd ¾iÔaŸùfÅt´¥•¦;`M¨²q \Ѭ¯0‰^DYÔ¢–ŒX_é�^œBâX !ýÄMÉcqZxš¢œx2wsé(fq–S”Ï wòQªéܱÿ;YºuÀ`1�ëË�^ËùóùbÝ=M«Œ:+e ;­ñMšÙŒÉE�fïßç² -Uò„… ­‰qÝ–! B}.ÀšE³™]´V”k¤Š@¼�²³1µÿ¥.‹û -hëÉÂ`‰×¯”h&KSKuèwÑMeRŠÄ?­Uß��E¿Þ.9Þ\°bñ�ùU‡ã3³µ›‰Œ[7$kÚáè0Í{�)µs žÒ]…ˆ¶NQ‘Ð(n6½\5;W9Ê}Ÿ•w­U�ñ-†5ïâ§Î~œ`ûÒëRdßž¿ÇÏþŽ1«/%—ÍÝbèÄ‘ô�·$ØßQ!—<} ß•G�5k’º±š25#/»‡Äßn”°p~;Ö!¯o¤¿’Ó)‚p5ˆ•_3 ¿Ƿê"Ãïݸl1¹€FŽ�¿é(ÓXWTÅôm½èÉØ«™$CíöþÅS~5'DÇB?C!e8 ¿�Ǭ¾$ßΞSÁ8ü2ˆ¢ ¦˜òv¤Ø¯Ûó†zå^lý xßT±f)¯;} $-¡ñÕÃ0'`Wy»Ð‚ø�bwø)àzS@h:¥ìn5ò'*3Ë(RJÓlÙSDc+`tÚ´¿N"jé\n|g -ð@äˆáù×4e0#ãe1¦Z³êœd"nY‚á’\l‹œ©ÆL ¢`rk -{ͪc¿Ð 9¡–--}Kýx|bâ.†ÐtZb„*ÔMPƒo¯â¬+Øv}mC=Ü+�ú^ÆUTbÉ -æC‘Wµ)RÂÕ‘‡ž7ØÿOû¬¾[6ÇÐ6…�œ\H•¬J%¤·úe£“é%› = b±|¯^Z×2^~X“É%~gÄ•|ûN6v$.8bnþu{½-¨åÖnGüª+»ðDöñ‘ÌÉúø°Jóø_#…�XG‚·*~|\üV¿L QA¥Æ§r»³²^¶q@‹ñ’Oýáyä=õˆ9Öt2âg–óX´JL×9=`�“‰ÏG”“üرɶzÂ{ð2l0eÕ„GŒ�"òc-”OšÂ"R›Xw n>-ô!Åϯ¹ÃÃËp)#ÞsÜ8³Z/2ez‡ÖÞ£#K­;Ì¿Y¥×¿v3Õz1´}0 ?Î –Š{>lâŒÖ¡L¨ó¸¼§¨ìbË©qmV=ï7휙®†h5¼¶¶é¸ü(mH‹jôú¿ŽX 5Æ+kf›•jÄ ¡š“5~�¬ÂûÛ­c…¥k²W°cÅ Õ¼÷œ2–Û“ue¢šã|‡3÷¤mÓ¨Í�J�0‡À# ÛÞòe9±Ñ€žP‰{-ä—�óâ7VÖÓ¸…qa@!u„�³Óo?N\ߺä~À‰tnE8b0nIêàôÙÂÙð$ºXϳŒžGÉÉÛ[Eã›Ú&z+‡:*ÊØËFL(ÛÓ _�`H0Ùþ†/‚~FË Ý(.�o¿ÿÞ²)òj}ûåÝ‹X‘kµ šÍØ=ù¬·ìЍÈ_î=ï`í⥬œR¼Ï¹ŒíÕŒu[Ü߀¼~eͦyÁZW´‹� -¦èîL�Q˜yGŠa®Laϰ©(< AcÔ †G‰Åsf&ù1+k!ÞF ¦aBÇi,mP^»Âêµ÷äö¦/Å�|J7Û%+ܽûQÿ;«PƒéUÊs.5+ ¿ÈauG5?¢8h¸A^ý‚3à¼x_é5(f¡ÎE¬AÏ>Úbñ�‰W€‚-7ø øÎ/ó!J¢Œùó>�Âe~6̲™é.äUšŸGS~A\zÀÔÒD‹¦½¼[*DOYqŽ -�q޲åĈa%÷�Å/ÏCêŸÊyÛòZ�–d܉8•rþ‘õàl’¤š1­g€Ž"d€åÙþÄJ@ÐÚLÆÝës>ð(*¯Ç5ØMìQ$j@ÃÏß䑯à �Hµ=†wVY‘õ±pb°”‘¤!oê‡íuøŠÌihp¡C7ræe?cçââ€!6Ïw%¹Œ�”ঠ-z„]AÎP`½ø3™b'ªtB­bɪOÙ…ÏÙðé�VÚ4Ñ’ù�–OK ª¹©™(õÓWæ‘8p?77-ô¯ªe¯|²>Ñ™³âõy,¤%oŒX/½Òikü¥C{«n[¦'YI�.Ú3öhÇ4B¸`Þfvx¸ª´U%¶3e¬¨ÝO•:™ ³$§o·yë@ÝùÔÉ%°ò$Âü,ëÁâj”뤛€[~¾?uì´¤Ö¡þ¼VîØŒZ£Sw‚j¼‚ÖÇÀ‘tþ‚ËÔ®õŠŒ^ŒŸ�C�,åŠ6ýN§£PêòâŸK­hÕ¡©A›lòù¶¾‚\1ᩌêæìmà¾v‚WM4±¿zXRô´ž}·¾QÕ‘AT\('; FŽí÷õß!l7?*>:�”2†,*üz�I&Ré©`ðRª§DÍ8V³æÿ Šo¯akz–U°Jÿ3›–äÞ‘�– Ïüþé³³Çð{§m×d„®HË\ÃýµÔ�…Yö?ÐÁ=ú¸»W]P„»‹¯ñøioåÀK ‚´…L0Â&˜óU1jº±p—(ÅïË|q˜»A+�Ã.›®O�Ÿ¿Ü ŽÝš -¯¬b„^.æ�ÑÍIªU‡+Þ°œŸqW8ÙgliL >B`M1Õc9�¡ãC[¯Ö,˜Æö�x*1é¼úeÀÕµÔ� M�Z<ü?î(è~Ô5�ðCæëéïß ¨D)ü›�r™Ã€1ŠbéXX/G4Î5l4¢À“ߤ([ã‡ôùqœý‹fîjßô¦vʯÃ+Ã2“©†�ІÆ0¥3 -i¤á|{³ƒYj(m&K6ò¨š±àx°VˆÔ”˜žA‡¤Âñý1å­üÌ’­NG&�ÞHX_ÔëJkî�·d¹\Ÿš×¯ ç/!°¥÷êwfâýÍ{Št«wæ÷àÐÙM6€ÊÊÖI`?𵉂 à“V4VðÐo�1+bJ~ƒ'—û=*RÑ,x›Ô-'4êpÇ-ìcY¦ÝL�|ê­ W9*þ�ÀJ¿u"N¥úX|p±ªÔ l�Êô^X»Zë�çÅâ.Çåë³­â§êA+ÒyN¸½Í£ÝrÃMÊÐä!ëYÍh¿(C�rsJ�s„câËh+Ç ßórØ=¬Ò®»èW$z‹"Øi¸ŒwEŸÙ/dØ/÷¯ã5Ñö¢˜g ½ÁS�È&» †b‹±$‹r’GŠÝÌ^Зr—n™1–=Ÿn§„°b1dTÎ%Ý4ÕóI×^^÷;,á 'Ž3PÚS[:ÀÐ~a"3>{·óøú˜æHù�ÂyÖ;÷›�´– ÇqmÜøŽð�3åTPζþ‹–� ¯À�lÉ7Ú„mŠ1xÜâ¢Pæ~K3 -,•G]†i©‘¯ó®hmòcÚ‚Ì‹±5èð00(c™µGÕ8*ˆ¡Ñ @HJÇ‚-¹LD�Z‘•ßTp$�¯ Sà“Ÿ&÷¼´Û×»™ -%ˆÝpöçÜ'»?o+Z -ÉåóOíYxYŸ)&sªÓKi`6y>¡ÔJ´N^­jÑK'¢,Eö´�ô|‹ñ -ãÂFÌ6ù€iƒî.&‚Xx^Yeé�|ŸáCéÜjÔ¤Dð¿øã#…® ÏÖjÒpß„‘3¸HPg„ר˜ -®BÆeñÀu¥†sES$D*ËX¢Ïš!!†À¸È£š -1guHè2Í?°Ø ™Uú˜X¹ÊÙe–Z †c¿%ù�•›R‡ìV‘ UJ]Ñð¢p\ûÕûý¤®8Y¢u‡0¶‹é&S܃ZcÑ�Ò~“ço*!I’ÔïE$Ñ–�B¾–ojBÍìb ÔÃ=i+î#8b§2Àà&ùŒü(ý·Ý,¸”1.€AŒ»°‘9/ç°qq;PLäRºå$açÔRfœ ?î\G<¥e`qC@pèH“0ù`5èKx®¤ ìáAvL\!ñ¾Q÷¾µÛ~Úd…' *Ç"ؽ.;ŸH«á5J¥Ýž‚ϲ:]{lëB…-GlN›"N^SP¾¾&÷Oq¤6a}çINâ0ã݃ñBd H!•HžªJÎìò`ȃZ=£š8�;¤ðz³X´ sœÒZ´©Ò“˜ß§aP³­¸�Í·¯œ Õ �á -Ы¯ ×ß¶‚—�O²Z,[ ÌAÆÆ"ÕÆ²ŸiŸ#µf‰þ_@Õjgî 'ÓÈ€ ¦óž=×(rïÐËßzU -8—¿TõT.žÌGUî§Õ,¤Öþ0—&<‚4%!¾¯Õ™\+‡Þ^A ‹»|7‡¡› ÂK„àt’É­eXƒ>®veøØ]\˜Ëf[LõôÒ”‚Ø(qkA Jì�rCFþTÿbe—¨‡ 6§ñãBO¡æö E ­æ¥‡� -—“Ü_Áyªäq—«E‰®–{¬e¿Èû ý&Ç”LËzf‚^¯üÔ)2KÃñN°<äZ¡³è¬E©C�`=¶v;�_.˜¸øá1=¿®FvfwuïhQ²z!iãòä βÕ�µ€Ê=[t„s[ªb‰VžmTarÒþƲI[õEG%æAõjç-I¬'°RÚ¯^©‚/HÐkÊ­sEн6Ù†n¨Ð‰ŒC2ï¸â=P�Pí/h §"D`1(’°J¢V”€-"™æ"=�_í &¥—ˆD5C%ǽ"8)æÇ}*å˜~­$‡ ‘2¡j9¯ :Ï–™dïJ„XoОuí–}ZÏÐߣš Ü¤8~ë ®çp[laýbP Š$Z=êáR±º 9’~ ©R‹è¤«R© :©ºâ ß?Ž5„fAÃ[RT7«„¼ §w¡ –³’``%$e ý¤Ê¥AòÿDËL<\&5R ãÒ´ÑG^@èá.ñÏáõ“×FU‹{¬JÇ (VP‹lTnzíHí, ß¶©ïD°Ž›¦^c¾¬O� 쉢Ұv*ž²¼ÔŒÔ[OƒQ®Ôšî -µ»/·âù Iß°�˜ÙÌ–�A§2_ޕߛ©N‹!ÐxUt\§Ÿst'~+·¸,j�A¯c-Ã- òÔO£Ž ãn‰�˜5œ~£º=Q4›C:Qšëð­ô,쾿ï?1!È„üîÖ”­U9ÆrÖßHŠ•Oo…óð½<¢U~ Øî+¬î -E4LH1ÂbB º,˜¼;lw dTvµs�¥�„Yh”—È_˜4£·l¨­z˜çñÎ1ÎqvÏ·u˜dB • §È©ùd X[µ™ÔÛ’ý¾ì?˯è‚QdÃt�ߢdíaR`éL‘BB<ˆáüèŽêj -Þ¤nh¦·Dkw$Xòd7‰C:\¦'­²¨Ê x”í¹ÛÈß¹kj¥S`œ¿©rs¥Ët3×ÈUÍ”&ƒ ɲƒ­ÓþhRœ94@ºáChÔO‡g¬>šž7@#Ó?Wñ›óÚ¼­Í{Éá!jF<¿u­tëúûÊâ?[Ôôv­ :¬ðÿ‘‰4z˜’’ Øé¶!Q=·&zfŽ“®Ì (©+2ÿ -ÁÒWDácG�6'Ï~98+Î¥< 4!CŠd5´óïTÀl»TêaZ„yqŒddTÐÅb‚Y6Á,{k*Ž/»Xg$„ ;à ž\¦’ðÈ ¤´Á{7Ša2bl+q *ŽÇ£"€%ää%Ë!K5Ù )¥ÿ�JMó ž|k<2@[�ßý\™Fº”zuíkÏ ‡Ò^Iè¾Æ%“gŶo�Üaâ û£­ú˜C¨-²˜F„À³©r�Ùo F|è—é -âòQë?“¬· ÔÓ†VqÐ%Å-åõ¡NÏql endstream endobj 22 0 obj [21 0 R 20 0 R 19 0 R 18 0 R] endobj 36 0 obj <> endobj xref -0 37 -0000000004 65535 f +\�O,Ñ@KŒjöækö"ºm. ]Û¶/Þ„Ô �’Ôi%fÔS–"¨$[KRBBó‹„‚áX“ç€ H:n(8$.(Å�aH4Œƒa(ÈQIrÈaª-©'l¨üsbü3QC¶òcdßü•S�!¹:Uhk&I?22qŽó<Žøª"CÖÎz5>a5š€þ]I{næ÷<^™'¿1ÉÅš¢�×X®È`D?÷)`(ÝÃ`Ep·P’»rð™Z¹ýâV*”ší}ÜØoæãˆ>|¤k(ƒÖ†¶V¥Ç*‰‘=…;�F’öòæ$ð¹FnNNU)´�ÜJ‚æÜ`"1 'wP\i•;HÎb á§Ë=Hà ¹Ci¥¶CßÀj/,N¼C[þ8¤úÝÓ8ÈüÕSeôr…úž^ѽ°±–i Ãgµj¾o÷½ƒõ$–4š¡—@N¥ê}ëÌ®ç¼Sß@·³ˆ>àLõ�9¶)_£ä �s'ߺ¬�Ǧ¯`KzÌ|×HZ©¯ö'Jã@ˆ’Nú¦*‚™ØÛÔ€.yþ Í®[D(;ÁŒ’J^ª£æÃÞ¥ÀpÑœªÙ©3S䯣`ôÇ|áä&d¯¡¢±èYØ ÒÔ‡ºËáÐedÒþ%϶‘Þôã`û>dÔƒåá–£k>Ðù6ZÍ¿ê‹ws¼³«á ÷‡Ì'o º ÞT9d¨ä„­ñ#Z°Oª|ÂúøðaK[Ó$'·û¡£¼>6á|Ãÿ¬3œ–`¼� þ—kAmÞçkzC4ÄJ>´ù¿r…ëFVèLc�Ñ$ñ3€Î¼“DgÜz‹_U íÆ7êQ�'zv.á]×%‹W<>Š›cû¶;”{fSfIG~_(Š8M×ü½#Úí¼¾¡îõÍf’Œ–Œ¾tÇÜ=¶.ám4­`> +¹mPñûlèMI¿ã¬+(áU<ÃÁŸ¸EP3evBÆÛ„×zæ?Ñ`n¤ËçâÆJøDüésÐ)zVo}�ä•Yþý§9 ‘^ÁÐÖùëltÅ ;¡]0&à§4&lêÔNŠþèNiøk4®t„|zU´a T)cê:ABËæ=³RS†�‡��*e0òªSýJzbƒêAšãU>á ALþÌŒõþ¹!T:#›}ÕtÆÚÊ)§ù”#­EÞ§=º¢0רiY�?wRDQÐ >† +èjh»&1Ù]Áa52– ÍK�1¸ŸJ­§~{±s÷Í’8N(Àm,gppØàï7š~ÐíJÛÊk¯¶*R *’�«¯·w¨-í¡A +$¿�Ì|Íf«Îb¢R;[rB½U,^ú^É©*Ô )E/}›•û°ž¤juå²8TEÃÞ'ÏQ[r\Œƒ¬&9ã,õïcCêâè ÆY/�¶úž„I–HÇ—¾#Ž¥Þ1p‰gDö�¥BA/É0MW3TÝqšÉTM¶Æ�‹ö’É—Þ‘ãÚ*ùÒ„§ š�ÆIäÐÍ$Œ€6ò(üæ¼ÒÔó茜<ðñ!Õ"â�}‰†€xßìe•à?²W¸§®öö¾y°¸x}Ò@mœ ÛRráø[(ðøÙ’8-…Š—2"ÀoD¡C"¹Ôxà¶ìéïy-þXQ §Ë¿):Y¼�ÕãŒÀ¡¡�%VàŒA½´Ð¦Ã›®Ùqfd9wÝ(Í.Î !øE7jKP Ù›ÃAÑMú4—=`ä†Ð�¦�û�»E &ÕeÄ..`ÙÃ)ºqBâÙ¢4Œý;»{ò¨�†À + Î™¥wÊ-tÅ'¿ÌQ'ü&E€ëzh|Žk^_Nº/x±�µ†€xuó&€zsD”¸!0Ù÷Sgm@'bÑB÷ùõ´!pêD }"Àu‘Û(òY¡Iö_0˜ä[1E¨ðF`ÔÝ_Ú|™³"».  N:ªÅa£TýþܼÛú!ÜN¾€K6Vøu¡e‹É’<SÓ^b�çӤƗº†F$ Ðo늊Q¡þ q¶<ügÆÿt’迲°øÎOB‡8(¨Çd­ïããyÍø²‹Kží.Ù-óhþTrT«é0\BX9>ÞÅ3ëvçýFáXœ‚ÚÚJ訖Гr´¸•íy4áQ9ì`‚úuGÌ©“¯�”âpu y4t ƒ•0ãä y4‰`2µ�ˆÁÌÍ8Ó܈G±¦&XRNsÓT7¿³†-Š4ËhAœú§!‰O%Ѱj×¥Yº6„´Ë5N9ÛOðÓ®^›Aþÿ¡› 9û±ûY—cÜimsߺé‹�j†ìÒmÝ Š.¦ÑWŸ`4túC" ™~vCçÎÆÉãìhˆ¿9ƒL$øXß@:�i[È©OŠë¶¸ÆtérŽ62 öÝr <4búRŸ –y¼!åMq¡$O@KÉu»×JíbfÂS �aN¤BàŠ%?D¢22†ü@H‚B+ßV> ƒ²ÔÁQÄr'òNõò"É�ýÒœt fùƒ¤‰YÜ ì„ñ.[�Ï¿?WqØ™Vâ[Q=¾ 3,ƒ`ÔC€DgB¦OòMÏë.Ñ!Rð&R?1TªmÂÁÈF”Ëñ×#ßó5"¶ÿÀ~Éðó%Š5zIçxd9r'ó,©Ö¥´rTL³Ä»Šp\uån³W)�(Uó¡>E õ4D®ë½0ÂÛ�1-9Óm†F�†¨2™€à@ÐI¹©Ì¸]TEY'ɨ2°ã�…¡Ïl½'Á»öEó2eÿ ™…>YÊÒ<ñ j)6Bf/ð=òЬ4ž~ÌÚ08”Ì~R_yõ8Te@¡ý9Äò–�Y[À’%­ ¸ÿÇl}•S<tJ§°Ò(×hd[%õÙb_E_w¥Ï¦1ˆ¹#@õÙ 16 óï¯ê0QýNÛ¹6—BSÃ=5Æ"Ë~VÂÅ+Å#žÑF~{iOX-u‚ïmžæ„…å–°Iõ]Àà‹ËÁu”×Êð_"ñRF2RΛ�sØ +6Ô+f3êge­gܘN‹Žøðfu&]žç"]ø�¦Û$`‘Ë gÉû3äÆÉ鲉‡Ø¿8;.Œk›wHµOò¼ÚTñßÚ§èÞ÷ /¾¶Èѽ!oPž‡Tœ+Ž#«›ª�h6$µÔÂS,ñÉ)cÄÜìqHÀ!òÅÈÿ�=¶w\v3ú=k7 `tèÇÕ©—£³\¦/µ¦ƒ7ˆ£Æ¨U ùÏú³2—F¥½º­˜Ïî2:­v-×mìíj‰íŒôÐ8FFgÆ«ó²—bÌ +^—B5>eTqW?`%ð›mê+_ÈíñøÉ¡g¼ukÃ{b…((x�…™°�HÈPÔĦ9£@BíI{ä8Z¯§¹Ðú˜¿CEC<óÖ*$‡¾Mjm‰¿xéï„ ;$�úŒåí°¸±/udûG*XpªE²ƒ µÓpaÐGšÞ×(¤Ö†®›žgô� hÉ'¤Vé„„ÿõYE¢(L¦÷Žqµ¯‰þlJÞš†Có¹!µfmÄÚˆ³=j­Þšû—h56œúNGÔËônvÆêÝͳØKå½D1«ªÝ ‹$>’CÚé>™x¾ºÙ6Tjtj�Ô~fê*yç$é¬ÉúßA‰éC#x$F\hu¬h;v±¢ÿ]yØð5aøã4Ã"Ð7£þwÐ%€NA¨ÿÏE¾6‹šbàzη<$D]šoëNãѪ^óA@†3MîzÜXδy»j¼&ÝEÆ©»4‰yM(A_Bž†;ÿ ­qNxžÂ{™�²½UlØd'î +ì‘ë59¾�÷P²$æ¶ÛP£J‹‰Ž¨3}ˆ¾-êj"Tß�7ñþEçæ6uöî�T€Êáp”‹ÎÍžZo©ÈÞ äPÞ`âåˆÄQ`Ÿß “°wÉç’^EøÏ2pÌÐðâ¢cf8é€\޳±éÐbåzþ;p<¸0áÒšl¥²Ë+ès¸Ká�;-KsÔwùð‘+«˜ +xpv)å©uQîLÙE‹¥-¿è�üºÂ°•W(&d&,üžqãP–¹:—‘øîÅOÒ+ýÔxÜâ5£bÅÛïýP꫞ÃG²ßæM07ž`T­=úÔ–]s $uùLNv÷V8Ù×m�O3ð<ù£¼Ç3ipíd Ž�d›x—*WçѺmdD�”¬²$Fà¥:è ¾Uy‘œRü!Ñ0ŠAQ¥8<ÛVóy,™’sô³ â!òÈûlê¡®((ð‹ÄÇ{ +�íÇ1®+ppdÀVTk˜–Â,QÍ»Sh³µ6‚P!×–&H/¸á‘(KKøÂð  Ü܆ñ‘0]4ëæv)£s]ù�Å9Ãû‘êï Ÿ/Ï0|7p]�\ƒáå�ë +�Uñz�q]!a ~>Ž]W¨Õs:æ†?V®+Ú ,‚ΌëŠÌWÀ×À]¾Hq^‡¢ëŠ‚˜àƒíô6Æq]©ìò[Ãðó>"F*ס˜@Þþ®+Uá×–du%ñi®+¡3îæ‹j9•)óR×Vµ}Éw¬\}˜ëóJý€:�tP[~žB¢ªÝænŒ{La·¥‚lËSÒ±D­[èÕHïûòŒ–a‡òtÅ@¥Ýòd]R‘Û ²#ÕAzÄß�×\IPÈ1¯ÊãÀm•cº®ù6dQõ$ohqõ½”Ž?g¡Ê`”~§-æ5í•YìUþy¡ÿh2 _ÙÚѨ5®nè ×HŠ(¦0R!KÆÚá4šI +Ú Š¾óÊ-0;8�÷QUhk¡Þ‘�Ãæ¤,[}|2’µ M‘c×>Ô šˆüa U+’'ÐjgzOldø µ¥ïÜ[jµΰ§¥æ˜.o)µ>1Ó’þ3ùýƒ»Ù 3èì×e‘7 U{Y‹ãÞç�„£*üƒ£Õ1LK¶S é‚EóƒÃ°cr‰B¨%[jCl˜çÆd:ý•&ˆÞÚ.…£\^Î5È´•€ÓneáÁ%‚g“Àé­ÍƒËۘ͡vÁþcé�vqt'óìýö¬å2>8lOïö)OVîAØû%F“ §O{ËBs#33úAØ3°�ÅÐ\yUTž¹É +£u̧–dòŠx÷ Œ^«Ê«£P‘Q…¡k»6 e8ˆ°œ½úÎÞÝÛq¬jhY,î¯*ÌY»›ìiÇÚ¾øgËv8hÍÞ@›…ö¡ -*¨s¼/‹)·lXÎ�´oÞø±øÊ9˜…v�6`4ÉduèÛnouE¿N~ml°ú— $“Úê}�+K”û_Ê|«G•ÿC©ŒÒ2Îýâ´±øI$NM¬žmñ�"�ÇÈçf{jµ’qî°y«�K¬n�™ã޼!þ.-bõ5ì‰ñ‰^nôo[�ƒ’Ÿ@¦O¦jl覰ÈÈëàp¨8yăcŽk…ß½2ò_#·IÌiWÿâÁé( Š5•í:–q:9¸,×£`<øFÑ)‡ø;Œdd-!d”K„©Á¾6ZfÑ|¬ŒQ›!Ï2Våš2|½¾®ö‹;!äÙ�ó:ˆ½YˆõýZ'@§~µv`œí!HáÅ´GtÑ»thpÈ DÀÁU³]ñàeRæÎcÚìTþq Áé\cI6¬I€èõvªîxƪÚÍTºÎ ù xžˆ•Kè¤K——R­ËO]Æ8 ×�Œ'óOFå~( ñ1MÖþè@ Ã_®èc.À s�‡òT—á{²s#pxj²WcÞÑKçz(®ždŠärHßÑ<-Àyq}%[‘Eñ pþ“:¦>€•¾PË&'èIæ0ïVˆ{ˆvñ”$T»: +.’Õ.KIŠ� pÄö%Û¹DÈÁ_¬ɆúQ3Šm“2{‹üz�YêB¸Ð®£òQŽØk]³Èôî Ú.™ žÓèDFÔ¸T~›-¶ßy +C+¢ -WлþXºå܉ÞtKìéH‰ d¸ö^´æÀ™¬IBí#+¿Â§2>#p€€GEªx”Í‘UÍ” nÌŽq"ÃÒŸrÏÎOÛe;7³[ÑûÜfVÁßicé½eóqŽ)ôBA‘¹Ì¬}Án~„¢£êíï+àŒÓ\’‹“r±ØöOÏéV5‘ÖžT—«S!4‡ëG�zGRf´™^ p²[ô1”„ßgŸsUJ½”ºoÎUäBðIfêªÊÅ)ËÄkð�ëšg\(K£ñ¼Ò’+Å"fðô‰ù‘öV Ÿñp@zm-^Rçª:ÀöjùfÍ`>«…LK£Óyí»“kƒ¶høýœà ”w’ +މ¹Uv[‘ŽÙ€Óù ±GˆåGUq{§U{k–…O«š>ª’¶Rb’o5ú»å$U?;—9 ó£ªþæ @p=gn¼^ßóÈ46‡²ý¢l�ó6¥A`  +¶m,ª1Ä&Q§Kó�Ì=ªjä‹ÄI? +©ª/èwrÚ®­ßªGš€ø_ÍiÙA›M:vËÑeðLECÂ~ ðЗœcËoZºLLg@K¤^=aÍÓ—2ÔíQU3O-÷—~�‘Z:䎘ï©ê!¾äº€;ŒGU‘òKª¢Ò.Ã_z«0¾ä¦1�ž<ªbj®oJª’4€Û^'b÷?ÿ_ræw3sôߣª1w» fÆ—Ü¡-Í™'Xiìyn» ÝÊ—\_…|®q÷¨jöà ³Vª™Bä/;‚Û—ùo{ù¢e7­#“Zˆ�Áä}$> î‡½&˜±¤MYz…¬è³!•‚å¨ëàóBší˜@3Ýã€øq#2ÞmŸŒ/ ê�¦ ™ŒËïgM-ãb¹÷¶²í€•rña:‡{Šß øà".‚E;¼™!ËmIœªóK9‡Ç•ˆ©°FÏw?,íe +Nµ ¸_�@œªfŸb +ê#œJ•(jDJ%8•XO„‹^ëÊú¢p쨻‚}$[?Nø–²‡”¡&_©›•^A¹2GS R•�^9yQã½ ŠM$1üÉÝSsâT$gÔ÷BŽ÷i§j„µHq�¡$–F‚Ê¥ìHÅ×àTmï˜r È¡-�`Ñ°Úø"N@šL [pª8~¥QïÁµ@pª¸ÇHœJ¯ÍC N¥»®›OeœªwÚлev`œŠC¾àAÿT•È�§bs�àTy�Ä©¸öƒ®‰ÒÞ‚SÙå‘[U/Û[¢µ  0 §Â¾ q·C ÀÓ/¹sª„&qªø.JpkÞN¶`0-‹éH�‚ælÐâŒÞ‚]Ѫùç›87 «‘êàT›_”*êMº¬ú5-�ê”öjrÔajΗêÒœ/"„+h ’Ï3¢ÌébØ@ +32 Ô…Ü0~y¨¢ 8RÛ«Y1}Ü.ÄÚ° +XÚp®Ô¹¯íÁP÷N”®–vLó×öè9�6lóƒÚ^=�ɵ=:ó ê¢9|’–�P@­Þ²³H¼½™ú†ƒ«Éâ¢$¯H&ž±}÷¡ùov×}O—žDZ6Ç>©îˆŽ¹�5S¹®vxת°í5‰µlbjN˜#dÄ($lp`^õÏò&wŽn<‡lsGMFÊ¢ý†hnô ž‚<¯!J�'•úñ�ŧH͹Ÿ(Ç“1_ûMÝö Ú÷½ËƒÇÏè¹R6S9ùM“ì´¼žÖf�tbÐx’òáQ�eÓRFx×Û}Åî,É�sNÛVˆ%\€æ&ÌÆ\uνý¸¦XS0õA7kë  Úß-&ð¹R¡ˆŽ*KØoMãTD9=(r­•+ç¾”WßÖ1gÞ…°fòÔ ,tËŸ›)õ**­F½û-àöö)CE ÝÜ�CÚgå–h/ÙtÓ°yצ(¯«¯ l�÷Ç ›(á4 ä„㬠úÔ“D¸Zz¬¸QÍi·-—ÓeQÔ"^ƒÑ8 +sÙÚ¤_ÑÌWøÂ¬tX¬&O±¦„È ( +~'"Ô@ë2”“vb J5£”âëƉÝ̲($”œfnÝ«ž ÜµíVÿ^f¤"—'Æñ¤¶âª\\~aÆŽâ¾ä¹ßc¿J´-œ ü9§÷-_(G9uÒØ¥ÔÈÛ]СÆ8xí¶ìôÑ"2‚`µaàé(N$�Ÿ?›à …ÍE´.¹�X-ï÷ÒSd|"Œñ1fewýþ¹æ÷2gõ²ÁðÐÀWïÊ>ø½j]!!H8¿òû`.~/,Eà‹6„W§‚›~Ë]~¯n­–ÃïÕ¶øZœx­ +¿W÷Mî¿—ÑÀ%¨Cx+:+ðŶý^Nõi§äNyÝ/³„Äïõ®-–-ý^οL“Pµ;ñŒ)Âݧ–ܘƚ#ÆÌå…†?Þí½dI®Ì•ÿ¢_ƒsh+„LÏןÎ#ŽW‘*¿w»ˆ:ÄúÍO†ïvÞRQûE$² +~•ö?z‚@ÓRšlœ#39…}°¯Š6Ìw»"UV3Mx$YjÒŸ­'"Œ» –ÚKð�4 D™+æ øÅè?ßh–ÈP/8dÑXꪆÿØÐ Ë(½ôÀ9€,5Oz.ꆥ–Û°Ÿˆ%Y׉e©9*¯(3�#�L˜!jÛÑ€í¿º¾!w™ˆT…ÒÕéRæûmn¡±…6¤´0kîÞNXA]WID�÷öòíá¥8„üOúÖŒx†-„à½f:×Io6G€ûÉ jˆ8Ð.£+t—˜|ã§9ÇÏÝ4¹¦–ëR¸âÓ»n˨ôQéjz…�òß]rºhkºÕÎÍb¡Ó`Ÿå|'‚»a™á”2=ÜãžbÕ燂nuÓ ó ÷¼ÀP� ã« {•@íÍn˜¬(Å{ºW…{ýÄêFê¹PT3 ²ÓÛýÙKcX­"µZO›@²Õ™ö%ÑL Ý4”‹sû. –ª˜ÚŠs)$«O�ùu++Ì»ø[ŒAIûí­*öijöÿ1õÔ¶,+>¯D¡¦, Ÿ&&wÓî1µÖ&ôÒ€˜úSúYv#†5‹˜Ú@¨?%Œ©3œ—¦FýµHÅáaöê¬ÅäИ�ÁÇ‚ôo¹‘E¥û…¡Ê~•Wþ8©¬<Þ`ÐAoÿ HÄÁHù‚?¿Â¸ôBýWª:Uˆ(Ï A +\©âYñ¥¥rF篓>ÑY«^ïÊîI-x Q O | }ŽJà?\‹ÉE›Žb @rP\£¦£(ê…£ÔÍj:©Jž<ðÛt" ¨éLêZº•Š;Î ù.¹Ùó£-©zi ¹ºXŽùÇsé´ZÓÉg„уŸ”³rÃ_ÅýŸcÐËTä&)ä¦'ø–kÏÃ`³ÒË9;¼u)bq‰Aϵ<à�Ë=í';ˆ™r³d,@DxõÎÌÞ,Ì×!Å¿cëú.MÃW¯#|ÔkO>loùÄT [!õPÂÀÞ¤à•”cêå§áæüa…|P@¿¼dEX]dLÿs‘fõ9ôs§¶4¬Cô:‚FÃ}ù´acÂRa‹*ÃFS£{4aiÝΑy*²ÝûÇ1å~ùÄܽ 4¦æ¿µïDÞe:$zÙ&ß[ì òKáBi…›eÎ#L…ApšÀHÌm•2=ÍcbìŠÄ´Æy»Ò»KaÅŒú|ÕO(ÉÄÌn™ÙD·‹Ü4z°Þÿ…÷¬™ø,¢À{í"2÷@µëi°®@ïrÛݹÐa¯ÏÚN°Å*^,šipvÁÙ êð¼3°Ä¹̆2–6Pô*Þ´z–Z�U +>ÚT¦–(¸›í×LÚÐU¼Àñâ§_aópU¼OJ¸‚x;Å;þù±Ëh¯²�VãÅ�¼6´åh¶þRÌ#·<¿Úº�Ê\üÛ�„n-;㛤ô�€äâ« :ÃÆ9qôêŒÙšò"œ‰Õ×{!¥ ¹øhžâNl¢¸ÔÈ›‹/Ú‘;ÿQFw2ÿ0‹H±låÅA¥^¿“]¡_´ç³Ï(ÏEý�TPÄÙ�7,+²�Ò× Œ–_Á¥ôE“�DmF“!­phÞ¹HÛñh_©ÁXæ2"†ªÎ‹žã²HF;Óá�”=ýc&Ëhà)ŽÛ7Ä.OËfæå^DÉcc€Æ‹1° =›ç V¾hXé‚“ÑJŠƒÃòuqµ/2¡î?ÝÀå’£jäGxO1@T+ïÍØ ž“ÑJ¹/zŸ�îeô4Þœ›­¼Ò°¼£z½èáÜ„2º‹ƒîX/ú×›¿2:"¼m˜ó�=?Öÿ<M_¾hÓÔaÌRF»ì‘Ô´C+ï]e×ay³û+¯ŽÊ +�¯ä­¼}(£›œK”Ìšö ­•W�#ý¢•Ñ‘†ÒíOÇô¼*ó‘ÑžgÐÌ€÷—,ÕãªíÓèëÖ){½ºâ£Þƒû¢ÿa~–Ñm¢/Ó–`à 5dä¢ÎŠöp¿èpê7Wš@>{½M·4ƒ3¿ôçÃXb·×‹bïí�a~ù„/Ž™E+š÷zßM™ŽV�Õö†ïõÆ™¾„ê`½H,b{½:]h9º�e€vç6© U ûõÞ9&Ìi¯—_•ÂÜ%Ñ?µ£B\F#R}öz‹°7ŒÙÄ¢l꣘T„Û,ÌÃhš �Å»–tAÒI–¨1æÜÆ›ÛVjK|¢ób›‚õW]åCØëú¥Á¸t`²×‹Nm|”¸%%ž²§ 9LV¼�Éßë• W6`Iiî"özO€ÉoÞ:Ü•ÛëM–ë^ç,²×{áW¦ÏkaνQÖú£¦¯dNcîõBÎä0É!SÔ ªÿb2·“©zu8JM‚‚QñÐdÎE=b8TW(e{½6èÙVR1�…FŸ$6w9ƒöWH'úFãsÒhÓ(Nìq½Ñ´< ò½ÞªÓ4Ž "@£ õþ‘LèÍm¨“~È>�¶ØTþý·×Û…(‚EÍú„Ê^ï$ÿ&íE33¿SŸ;t¯-sÿÛô °�ãÙNš6XözGE§ `…öÚûÜjø{®æý›î™:Í®a_\Ÿ.‘:Ý¡éhD”¬QKŽ–šõ×Ë~4·oRc”j7ˆ´ó4Ö$ÛÃt ËHl¶;ý?é‘`{½HÄê6*b¯ ›ýϹç³_ÚëÝW×yÄÒ^ïÎ*°š‚Àxïìõ>²ÜŸUh°q²?„÷]Û‰i™Qx×®¿.²?Z~R;¶¹Y@„%ôÊé>öâÆ¸ˆ²{¯·Š…U•áú$ßawg¯>�*›¢åìõjnÓt†¦ñŸÿå^ïÙ.žP’ Ùë°,ŽsÓª„cÇ’ÕÆœìõöû)õS·t|p> à¨fµ/àh5q©fP­é.×íF˜xÙ¼½Â.µ�ŽŸz±h}çé5™••uæ§~´Õø ŸD�ô£Æôts ‡G‚ÆôøKšL‚ôî·—¯Î̪ù(´�çí]s9¦ãgP/e‡*�~Wõ-d†-ž&Ò¬ʬ(XT |C`O¢T8‰†åã0‹^1ÜFf¸ñ]Äe‡¼ç-ÿÑN‘õ“ñüUGú~®Ýšà«IBËçeeqA!A¹Ó³a‡UZ�'6 ¸Ri €¯wª´çs`_5O/ÒŸV|›šü&ÚJø–Á à{ˆ \Ý› +ù„0#�*ÉJI8°®hÊ8‡q¬‚ýp"­ˆŽ¯œ-¢z°A�@`ˆ§Ô“_ž3 ©¬4nÍsž]L‚u„9˜½�FM°Ð²m€Ò}~ÔgÞ5ƒaù˜4x�!j±ÚæÏ­á» £|YOWæh2Ó(gŸûÖÛY°ê_Çæ‹õíú‡ .Äý +J£\Aj +•aÛ;˜hÂÞ6‰qÿ¢t?ÀÙ 3°´Xw¤Ÿ€NÛ5ëÏ· +Z½‘öz,0¡U-�\Hyt¼ûØÅ «øNÝC”ègb””ðÏkZPIÄã6TM³ÏoÈâ÷Þ_O !Ýï5ú_„SW~Z”u·2^P«\Â<»vÅ>B  µ�XBÔEj2 ¼cj×wIÇbô«@Á½�?1 ·l÷Á…ϼ�V‡aÃõ%Ý •¦ã×!G]^,ÅèØ´ƒ¨ÚK¢§¿ ôÀ +¬ô,H­R×!\g +žU€6fú ÆÙͪ¢@AÒ.¿ÒOPgR U  ƒ™àºŸ`ÜUŸâ¤T ¢ú 65à¶@Aã?Qú î¤àÑE�‚Í7`O?Aó(PÐ4N]+¸~‚Âs +^’ûô� ´3лs^ë'(º’6PzSœì'hÐP7/ghåát¿Ÿài5P0ŠÝV‡°ŸÕªc(˜”ù€Ùü%Ée‚¼áä'X·±•›àŸˆ†Èµöå¶Æz"ŸhIî)º[�3úÿÉþ„»y{ËÖ§u…mŸiÕÂÞæu!šàÙv/Ò:Ù�‘.팅> â{+±„¢Í4¸¤:a潡ž@k±¶=p�ï@cìvœŠ>8˜óÅí§o”Jð§Á²â¨ú$š§ Ùf$²]×ÀÉ>#0 ^‰ÚEñ³Oƒ´ë8ˆ0Œ¾Žh¨h>–-†%ÕrIC7SÚS3ØÓÖ+¥`ïŸXÞÉ ÷Gžû453ÔáŠó­³ÚôŽ Í`…h½bm2.ß‘9/{¿´Âçè|?ž¬1}Ò"q¾+4§$(¦™-�7Î7ƒ¬=žÎr› !�nuéàþ.èYï`[ >,mý dx§çÖmmæ�óE5p/àºHï`{ �â[]þ*”CÅ�sÕ’IŠ¥DA�LàߦZYVEÞ’s°ŽÐ©pSc]8‚À´ù©µäÈY„K8¥Á&^ÊV ¸ B:çQ�@SÆšÓÈy4˜£ñÁ²ËÙIħCo½ù¢4Hú ÅÀ+$8»/×;X›‰Q©¡fE*mÄZóNkD�˜;Íú*;üÞ½’—sïüò0ÀÅÜ^`E_³¿w$Éö±¢'‚ ¶‡ª`Oa¤:‘�f$GSÎÆ±0^†!„ý²ûáôlmt4�Vgh”Ñ��L•Ôœ¨K�pN1à–žÁ'?ÿàò· ¾ë,þ‚ù[Úøø<߃åäp‘DAÑ–¼±Tî2n{ÈÌ sÝèCIž‡v[Ýjò2:5JË¿¾ræƒî–(kðhy r§åO�2MB£CY‚ªy¢z ŽÓèµ'J¿3_…�Q+jëoJÛz�[Ù%›/(O¦úŸº¢Õ£†#Á9;ÖÆè¶�±glú¶Éþ¦7ßÿ]6ÀEÛ;ÖÌ–M·¢çÜVŸo¾ˆƒž5ìï‚ó%»*$O64Ù|—Ýl‡Iê$Ri%þ™—Í·èËTwÑÛE&qãÍW÷&$>½m¡ü�ß‚ºÀ¬~_{¶ô„|ù+˜¡�,?‹RAôÂ@)´Ø6ÖLßEÐÑ Ç@ü+Ö…�^õ Œ�¯| ÜÉq†ÎãnM n7¾l™úž¯ß‹sNç’ŠƒÀRüþ¡ÃÒ¸pÄÔâßJ»„yrñI”hÆÅÄ2žÒP‹›j>»ƒ5ª¿¬ñS1é^”ûæ«Ø™f;9FEmÓºÔÐáŠæ¼†ð%8À ù¡(ÌÔ§Äp¾|EÂfÃ)MGOÇ#pø¾F5z&2²Äõ¸+åw9×A<œO⬫·@w4â¿ØA3ˆ~ˆó4ŽíûžWXÃU¨›Ä@YDÊ?ÚÚfg»388 +÷‡<„\µÏ²Ku• +Òü…ƒ +è�:Ù¬/.ó›`4Y~pÁ ’9ž¢’51qŽ� +*òƒt«ÂÙk²5‰:&€~ü�¢�@kÌYå9¡Ë~ªS"ÎñèŸü AšQз rR�ßIxÑ“¬/iRI”óøþÙNä +CT²µ‡qiùAq%~¬©±„¹/G�µ©€ò½º{EM4bóÔéšr ê>ŸždMÉ,®"ÁÀ¶ŸÔˆ°øô �ð¦>F8JÕ"°$U´$¶ú„ 1ñ+!;;dºa_=Lâ�ä¶¢V¬)?…i嘭Hd•KÏnŒ@©ÊŒŒe ~ù„ v�òMöM½ò¼â¹âבzµk�Á)ÈJ î%\¦ž›…üfò)^(ÛíóI‘øåÀÃX "K™ì#/ñ[4~óPÄÑŒò¦–HF¤³ËÔ¤—X{ÌA�`Ž!Ä *.[Ãï;9ÄÕj~bKkŽ`³o`μóW¶ä1-ù"Pî|61�‚VýÊ'·*±ƒÁH5ãg‹Ç¿’°êŸúè= ¶`ògSÜ0YG+5fGË'&œ�KNfò²‘ÆüªÔå‹ …](\È€Íêì©ã0tƒøA ›8öÕKùµ)—]a4¢$%_s¶B(Í}Ps¿£ï‰{´ßÜÊe+‹­ÍÖÔØèƒWƒÀ“²!È;¤Zxô—øTãdöo5á;ï£3nê‚`×mÑøOŸ7áß›äQîP‘iøMÖÕW)£ž'‚9Cð2lôÁ"‘ÿös�"�쀹iV\ÈÇþ*�Ãj ¥BZYÁØ„’öί¦[Ⱥä÷&^EX™Ù>°ÿ�¡JW/ÒD œñNË�£ +!D\´Ó÷ØFI"ØÍPž7HÇÊ, dQàÀiÑ \ñ(ï6ö-)û,=Êí0-†ÿ±¹"Ê•êÆ¢zx´eùù!ŠqÊIÅ*¦¬ï†Â{Ì •œÄaûž h¹4nß ¯÷m®\·I.›wù�˜ïÜâ ½HQKí¬´Yk­`{|T¦°ÒÕ– ©{ËŽòÃÍ(ïØ��¿“0ÃÛ/Èë�ŽdP“é¬éñë¡Ð³À�ÄŽ:1]A½[Éšl¬§�Çx—x6@`¯¦Ê.b$ô¦Úy„6HJ`_d¦:´Tr<?¤ëu74=—Z½Äp(üJ£3꬘*ÔíMð§�tÔÉm ‡Žb¤9ø8�Þ\·‹�­üº=mSà¥;`¨ÝÿÉÃk>¾•Ë\º¼§�éNèB;Á.’ÝTˆ€–“ñ¦è8oÃFMW’�W{¼—’aÕñ@܃“§¨J©Áë@tt‹ŒÄAt¯,¯ˆÆKë¢wÓ�dkªêß�(ÇJ႞ÅY»[3+î7l^˜ÿÃÒþkÐä.sè€E·Ò“óC_-hÈBĪš°,ΈË=ìpFEW¤]¡‰É)hZB†èÄ4?øä=óbªåŠ#°DÃñHÑü +“�5I1.qc…I½$ƒpÄŒHdĉ'2¨5À;ÞPYR™E.‚ÓÉÖVDÞñ?CgØ®ë¬-»àGIê£ܯì˜ M­9K>Ô–,:üòžÁ¡åæÆâIz•fL®gl)_4uûð +ÝÞ {a¤nvûX©N˜Ã £r€ �T›=!ÞÀ† «AÅApvYžô3±*<a *¼Ê +(è–í¨È²Ú Û�DôhÂ@P ú­0Ùï@Î�nVñ.œ^äÒª#ÔL=BW,NQ„# X×JÃtzëãÄ틲Âv±_Dpá4å0 ïYÕlk®õÊŽfÑöàRf¥\ýL€j#Y·:nY€F]?[�Q»Ü) Ș']ÃÄ.È#�8‚Œ«¸jý˜SƯ3ÿ|=¹Ï~¾D¸�T3âÇ4ƒ·£g#LÒ„†¦9ëªÚ„7“ŽÌ–œ}‡û›ù¿œ ZsÃËØßì„ÿGrv¢ëò›=9›JHî7C¹ ¦°®IÊÅhôš»„óÑ5¥é5;™Nœ™ÀuM×%èc¯ù¡]Uctͽæf"L×´‡5ïôšû‡Ëá)î5�® h¯É&©O×4±ÚL½¦·ìÿj]ó×f»^3�ä\Œ®9b¯Y˜{}N×Ü5íØkŠDÑ&ëšó˜ÍŠôš�wú?ºæ•½æäq©­¾‰B1œ@﻽„çßý»þ¼^\𯔥’?¢­:vlðûž’;A ë¦4ÃNdi%a�Io±«$4v2özZ?ZwRXä ̧^_A¤GZ!ߢ�òÿ#š˜€™2‘Ö +½É‹dÒ�=^þסyÃ/¼N9|r|Ó*É^7©±v"OÍpœiØ›ÈÈv”äÅ”ET;eÔCÎv€¹>75u‘ÊÁ9ñѵSúQ�K$ßÈB›ùiO7ëð™qØt(sŠ¢¸_C4è-×Å$ÑØaÃnS߆^ŸÄУ[™q¨àדÒ&|T”z{ÜG±2@*¶]…ðÌkC®y[ߤï6õàÛòaq%°oØ3QˆÈÐ,å=WÈ;†äw¨÷JÁÁAATPäÀƒ½h–€Ìoƒ“QpZóf4! œ“·Ê(Ñ*wV‚`EÐ.1?&ûŸ`È·©uõªa +Iy­æF}F¡äø›ù Ù©û¶`ÈÿcŒ�W×e 2“Ü·ˆ6ðäU� @£ÔÄ%¬†ƒ÷ +¾‹æN#öå­(­�%š'TÀx�]Ù·þXT;”¦~Jh¿†¼BJ¨¢ÅRQ5OÛŒKÇy~똨 Á~HJ�‘„‘_nö“Åjõô¸"GÙ "r ’]‹#B&ßÑñÁ«gN'ÔH=üé…•ýüÖNq瀒üA дÛÚ8ïóœXn&' ‡4òmÌ盦?óÂvº¯81ÖÔ�2äDWYk1+Åâ# äO“äã$Ž¥•Dºô™ký°¢þ…ˆ ëŸ3;„k(&ÿ%y¶a$QîzäÁR—÷ ô*nì\Ÿm2!µšŠø)�DˆùÀàŒÖùhK_̤®C� Õűm)•nP’D¾¿²ç†e®z9®á‘¹ÈèFâ…oÊ ·&^‹Á +5ã†bðý ËÔ@ê4Gòª+>XÔŽÐ?âŽ~ªuPNƒUr1 mX¶ØD<�ŪdUŠHÕ9DLËpyMœtÞµtÇ·LRÖ +“)»rYFoEȤ–=~JêŸÀt ‚(’>�"£ŸÒ¡&ržO#/jw’ÄÞbj‰Q°¼ªR;ÏÒží¿BÍX›#ªGV°¿ÈúCN�Ëbc‰�Bõ̉¯) ¼êB<^5œ?â+§ç Ju…žÌ5¹5qqÃ2�IÂÓ$6 + ŽÓ¦}5Ô\“jZÚ�ZEѰœ©›Òʆ—)¤2ñ ŠÄ`£>�Ñ ‹«p­c=d]L:/VH’O@‚,ãö:¤6Æð9òžÂÂdÚ…Žï"ô˜¢ð8I–¡� ˸DIŸV‘ÑOk5‘O¨y‡1HÍóŽSÁëëPt0bØÔ¨³6Ö«m‡:SڜۮÑ‚o ´è|Ç�Øü‚pΆe’W€¶k—°GLOä!(Hï*QHá­Þ²ŒQySˆ„áî9Ó°ôª�§mX–`°aÞè+ãLeÆ™¡ðÓðJ½îùjèºPy‰ó|ÂQ¢Aþ²×¨¹¥ÔHO�ÓLî4q¶Dëš^˜Yõ6"@U§J¨Pí ªetAF?Ï’ÑÏË2Š’Ý!a8�Ð×èóZ±F(-k¡�F#…æçùpð^mî„XT¦QOÜA?¿0ê„\oç%»Ÿå™G­ AS¹Ÿ:î´>RÇÂòUÇ0g:Z«µð(@xtœy3èç7, }´—ï€:Q •<�nôgåu@™ðˆŸ¹zÔ€èÇGýDúǂ袟H÷ýºƒ‚M°/Ì@ēдÁÏDS0`¹�ÛXb`$ðÞÍŒü{dPCå”8J‰ þw‚)±vSãdàò øi©Â+¾…‰wl‰~_ æ +–#31wi¼§r¦Hú´MAjìùú4Šb 5.ÁºP ö’€ÍÄcB˜ï{Oä]uKNY1aé+˜L»vÔŒˆ•$öôûy‹® Dì†eŠzÃ2ˆjm‰¾1��V"%Iþï}èíîÂaY»{¸I�e«ÝCZÝ~€»9–©»cÙ»a™@=«/ßç†L8­Å­g5¢nŽe¬vw¥Ô¼rX6j7ß¼Ü�÷]’~÷ps,›cà¶Äм-‹–y KúäÁØ®](Y¿t í:Ž +T²‰ø'°‡•ý¯¿J‰~_m‚}ÒUJôQ +°?¼ðñIC&þP89&>ÀÈÄ|FÑÏC¶&¦åwš¸†ë凫¬è×½’qEqĆYý ùE¢.*Ñ�t!ê1èzLl©Ä7Xѯ•(é ¤zS±+ÏâŸj‘ò‰tQU½.D,ê�6ѱNÁ•ò${8 ûj€»È‘ǰ<�Øïqx… p!ŸHF0ØŽDã’º�§`²Ô�êª0P‘@‚£>N΂s6,:#1�oÒ‰ˆÎ#X›‚ïDlÑ Ï2#ÛÌÈ_á$ó=2³¶ëÈC’uä¡/]»så- +%(˜¢Þyr\‰ƒ8EV|˜8[º‰{l‰~žLÇœ‚=ˆXN·ì(üg…€û$ÔHë˜w£˜¿Z#X&ÁD¶->Á®-½ã¹UÓñ|Úñ vÅ5¼c0}²9V¥ày³è�¿ïŠ Ñøî»ËÅÀ3„÷w{·w{·wkøß¹ÿ¾sx5·.\©�Nciwªzîî»ß?Ä2Õþá6¸ËýÃp—áþXFÚf÷ß}±0MÒ\”$ï"÷áþ ÞøŸó’²4âÇ2U™e�ÝßíÝÞ-+±"q*Ó:¨g¸ÖÄ©L‡v¥TªÈy¦à,°=íýÆ2ÒÃí±Œô¦iv^ú²3¤¸À2Òö>ôáþ�ó†I2Ȇ÷¥ÈèáöÞ/hÎHpwwYí»aY»‚lþn¤KÝýÝæXUbÁìyÆ.¥‰¤ÚóLÁs ~¨àT�bMüï<5@&µTÿ|çŽYsëqž± €Í«u ‚°&\B‡tç¸fÅ�óŒU'\“âƒóLÁÜNpwÇíË8–™<–yÈî,kûÿÆ”Xöò^X«›ŸX©R Îô¶wÎ{÷þ’,ËÅ‚Áh4ÌnvÎ{÷Þÿý½÷Þ{ï}ï½÷Þ{ï½÷Þ{ç�wÓl4ŒÅ¢ …Õ¨óirœ“hFD$IRè3@@( ˆCb™<Œ‘Ð@�ÈR�D‰„¡Æ@Æ1 ƒ e sÊ0d4Ût”¨÷ÜHºiYz«Åý¼&ŒŠûÈ/¯�Å~NÏ7—ri ¼w9Â)¶šÒÉ�ŠÔ:ô`èÐÎÝ´ª{èE8<¡\y¹8Ñ \½”Û¡’F‘¥ÊVçWÇýÚæÎ¸l§ žÃnÓÑ#/ršÒÌõ_€„ýOu¯ò¿2¡¤þÿJ+1¤V.Ä__ûGUÛ6ý�Ê­M.ƒ@’d@`ÙT2 +:Ä눂‡tÃÕ“ªÜå“§ ŒHʘ§:ã¶1xAgÙ=¢Ø¼:ÞíÉÞÆW¨ Î$þíBQK@Yli˜ji~\1SIê^·ÕOw ´þ$¦i»I´…�àÚˆ©¼è_ð“c-]Fh µüüt8Mýy¨ãþŽ‚ò¤fÊæ×}Nãâ�¹Å5kBÉ¡-m"/׫®H¾è4­@|“]LLT¬DN(tp / ta¼õBŸæ)|¦æ©ôºô–ÊOþ§ÓœÑ¡ž4UUÜ–m©0\äÁ>¾SokÑÅŒ^@qíæ_pq0ˉ®£¼=V� ãÃrw‚Tuô®¤(„@X9Œ0Mé‘ �&2=3šúþEÆ*HjÖ[ƒJ³hlFÛpž#é(Ua×O`D¨±±S`_:!ÜZdØf)S�°ëJ÷G.§ Œ£LHSë†ëšóÚ¤x±²š©GåûŽß±¶â„K¡Ó¸JlTùý‚¬‹&Ix¡Èû�ŒDMÏ4/%ñ«ôd•¯¬ˆ(®¾bVÅ?K½˜È�óg°{L6«I:ðŽ]KËíÕW´¤U¦CÛÞ““ZSÐÔT¥÷Üù«AXÖÀ�P¹KA Æ'µj|´‚do4õCt˜<^fƒ€ fj´®3 o%ºfU;“qž†J°”Ï-�>,u¦¬’Œ*® ØÆ£{j’ËEþ{ÚšzrStùˆíü6ùe ÿ8Q ïC¯NÊï ¼ÂAõF¦Sˆ‘vŽjaÆ]SɋĬH<)Þ¸—ë7ûj[s1f­þhWFNà¡è…�³Ç¬¥£àGŨ¹êWæ*Â]¤²µîç›ÔÕŠ«BÝ[“U'­�õ*T Ñåÿ‘nþÁ¦Ô{ɯLþM¾:ù~ò ””/R¾¦ü¢ò_å‹•ï•Ù3·l€C´ÀB/4`¥41 …+úÀC¡PôR7 + ¤õ}¥) G`Ÿ$>Þú{ Š C–/Ô¨ ŸùÐïúxÿ‡xdÇsu5Çç8>tãï[ãPg<“ñ9M8JúõÇÁÇ#VP©7^±‚NÍø‚w¸�ÙÝ9Ý•U‡‡é +þb¸lPp'K1ãáä’º;A5ŠÆAGºí.ÖÒzÙ«õwG³Ò´šõ[θ¡ÒŠ3¾¸�ƒò,œ+5—€ p¯Ïà×Eg§"n ø)]ÌH9P£ÍšÀEãˆqÑF+øÕ‰}“PJþl(8‚uI²¹Ì“OÈtT ÞQsã©7%ïm‰~‡ó>ëÆÌßÖ€‹û¤b^¥—ØýA¯šìÅF-löUíä8™5>[ToÃ�úCR¢³�Íur£`gÃðóôø©é%šƒá óžÔ"t– +Zî�QéÝŽW™¹†Dg¦N®8Q`fã®H镍:û·xÒö1± E¹j|4�fq‚nV£EE<šF�ÐE•3Š]Ÿ4#:Ñ‚hbí^!Æê/„fÂ�&Îϳª.œé6À¼’Ü_`º÷³Ñ°Þ]åÓ*óÂI}(¯uZ„–~DŽ⽑ꀦìê'&äV1VŸ¯šéÜ„q4šlbB­b3ÀwÀ0x¤Šä¶%u°ÍÐEuÑ”ÙÆD*(Tü™.C¥éˆL˜H7 Ó¡'h´.€ÊnCcð�1–`P™«+”BøHßa ÌX…ÁˆÁ3J—Ê7£ep­†±–[�˜ä¤i@mµ� µÆVã¼Ѹ:“Éʘ¦o—™ìçÁØà tƒH&\·¢Ø9^©4àéëN©�‰‡è ]cg¬¶3 í΀Î7£ÿÏ`ƒœ‘ÊÀûP�”qÑÇV˜;uÇ6ibšØ’Õƒ­{N’3A{ ÑF¹ƒøY’ +ƒ�÷…t€ÿ ìAbåozK{Ï~ÈYónæ!°DŒÌ9ˆS;k8Bsþm€QµÍII°h›w �4­CNQß ã7,&nô‚UÉÃ<K§yé@¼Ç”j„v-Á¡F숃C|†£. ®KÃóöbr¼*yaBD`¹ô(‡‘·"û�—>Ñ`GÌ·ÇIs%Jæ6�¢QùçÌ€ ëQG‡Âÿ»}V¹�õˆ*eS ¨ân/ê#ÌÞùJï–^úTOLž/§!·'kž@Ýqßϰ`Ó¦£øuU2±äZq;V¾ÜŸú3ÇÞUJÙÆ4 >0¾=�È`ð¤”I–U廑Aü½[Cd¾ÁAز‚4$ ˜í˜.²º…DíF_F�5Eb¼§Nô4ÔñÕÿ¤6cƒë͈rLxëW_ x͸B¢˜)ë�„PS`w]Ç=ÖV#ÀâÛ�±�eÒ qÆfFWß’“IÔRÁûK"A—Ù” > bT좠+’¯ê&.ê†îË/"êôTÍÈ×óßI©ß€ê¹b†îC4æ‰vNDÈ—”²ÀRœwwjвðÔS­ìd¡š(o³Å/™SÇ� 6³åJO’P«„£ö. › +ÀŸw�‹ ¦tó<Æ«WH©‰)�h}"ÌwBìn"‚ЖNp¤ÌpV +¬ðH4/¸€7L‚+ü8í¥Í´æç,†p’¹dqÕÇÿôPS¹T öÙMJÑþnÚ�¶ÞHŶ´S<`¥½ŽTp‡jø~<Œ$nŒAÔtõYŠ�¹íÊõ®ÛÛÐ}y–uŸRPÌ®½ñ­·dÝ£¦¹B2ÔgÚÑ’=ôw­öæŸ×Ó߸´oùÖ›:K\& ðo¢¤ÖŠo�@PŽ¡V¯•v•#¦äxE¾ B§ŸïÇ•N(‘’ý-²ç(«ò��ž„ÍÃÑAâÁÖºÿ±èÊKš6½F�^ô.$ö]9§;ºR‹ˆiku¦DG`eŸA§iLª!­Â@£7w’Ì¥Žz@8Biàû¸ÆKöK•D*ÑôÕu´¼†ÐÝÆŽÍìvS•lƒ€Ê(/ãY’ÿ¿‘ž€]çâÉÆÕšW×Y'âm$nf: &Â$%RØu*¤ÏÙ6û½a o¬3ÖŸxñªC…ÅßCÑQP'î£w‘�5ž¸ñ-ç?'ÞW¯ÈâHDeâË7†ÒW0Q+O›8>ñ-~a}•ø{Õ%P=²øaû¿d¹k´ 5Ã\D¤ªò&Î&�‚ëÿÄ£|`"“ºco‚´–Ou¹Å%é„T뉯ìåx«s°¸r‘ZÝêÈiü�쌱Øâsº8™^vgñÓG„0¯éÖÚoq ‚RT ‚ljSƒjñx�rìhÙÝÃ=7FJ·ˆ•Ø]Bªu¸(RC8]ò�¿00_ÓÕÔ»E/œÂë[°pèG¹[­µ²Hý.[°æ}Ü‹ÝÌò“ X ‘ÌòßñÜ8[i`´•ÂF§¥ã©·ŒÒ!»U´.t¶Û+…´j©»(ã­KÄ£æò�™˜Œá3·™E^>ë`‹ÔÚîÊÚp,¤†eÓ³òÁ ?|¾$À’)ÎÎV’¥„¥Ÿw,›?íÓ@iÙjøª¸ëu›•Bë“lWmâŸmë° +‡I65AjÐaE)m>XFw—ÀŒbC/+Ý»ÙaN‡¿{ ôùð%Àp)¼‹BLŽnWŽŸ¥‹À-%W"Q©šÞ€‚p£‹@”°È—¢Ö{ �ï EÙø�º€9ænk ¶†ü$”’Ô-ÚvÇgÁB’X±5d‘4_˜·§\œ’P!¿Óvèlƒ¬úLÛ-¬B’Œ]™`€"r˜àÐ4 þÇÈ|2œðƒÔöÔ3ìT£ÃÓGÅŸŸ ݨƕy­Â¢Ç§ÛeÁ€Á¾¶d€F ¿½²®Þš³°OvH`ý9ž)®î9ž`~!kбÕÜ[‘ˆ¥»ØC@)ã¥ö†8f� +’ƒ€?>/4¢p,²ða$ð8rzЈ¬* /H¹ÛEÔé\5Š*¯’yv«‰BJ%Mwë•¶�zñ‡Új¤†Æ6X'+WÍÅü(݆¯1ÍäOƒ€x|€÷Têãͺ±œMt’ÉêøŠy›’Ù°jÀ‡ä^ÍC ŽAÝ!>Û0UŽì¥Ü„ Àß.'!O~…¡·Ö�!¾ºní@ðî®káÜÂW­+‰ln’`'Á�1[…€Äzú~5™IŽÛ °ÞÖ¼=]�-qŒÊØYúD —¡ Ü oÏJú}x¹áûohè*0S߆wY]’Ç>L†5€Ñ™xÁ"hÈwhì ÛŠ_—&r >qÈŽü”yt ¯O™{æÔ G’ui¢â»jÀ\€Žv +¯Ì‰ùǃ z_‹ 0O”f8F…Â/ +�3¬X»×FFR�°‚ìˆ�@¥(t’?ŸTÒy}oòì_’€t�â?@½ÊvºJ"ÏÑýøÆ­æ›±† 0ÕÃó`ZþS��ý‡#”žm«˜ 8-¼A®)öÈÜøÔú½�åP¡Ù»½ŒŸ#ã­q›(HÒU~Äa§Õc0ôrrWR`¦iÁ;l �´¤‚ynw3þx¯’ÓØâm,¼­“û\k ÝLïÉéàfâxÄräàëÆ +endstream endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 12 0 obj <> endobj 27 0 obj [/View/Design] endobj 28 0 obj <>>> endobj 25 0 obj [/View/Design] endobj 26 0 obj <>>> endobj 23 0 obj [/View/Design] endobj 24 0 obj <>>> endobj 21 0 obj [/View/Design] endobj 22 0 obj <>>> endobj 16 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 33 0 obj [/View/Design] endobj 34 0 obj <>>> endobj 31 0 obj [/View/Design] endobj 32 0 obj <>>> endobj 29 0 obj [/View/Design] endobj 30 0 obj <>>> endobj 13 0 obj [12 0 R 11 0 R 10 0 R 9 0 R 8 0 R 7 0 R 6 0 R] endobj 35 0 obj <> endobj xref +0 36 +0000000000 65535 f 0000000016 00000 n -0000000194 00000 n -0000017644 00000 n +0000000228 00000 n +0000380500 00000 n 0000000000 00000 f -0000017695 00000 n -0000000000 00000 f -0000019829 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000019896 00000 n -0000020037 00000 n -0000021244 00000 n -0000000000 00000 f -0000018975 00000 n -0000019043 00000 n -0000019114 00000 n -0000019184 00000 n -0000049195 00000 n -0000018065 00000 n -0000019716 00000 n -0000018249 00000 n -0000018414 00000 n -0000018462 00000 n -0000019600 00000 n -0000019631 00000 n -0000019484 00000 n -0000019515 00000 n -0000019368 00000 n -0000019399 00000 n -0000019252 00000 n -0000019283 00000 n -0000049241 00000 n -trailer <<8DE991F14EB643839AD8BD996A30681D>]>> startxref 49429 %%EOF \ No newline at end of file +0000380551 00000 n +0000439254 00000 n +0000439321 00000 n +0000439391 00000 n +0000440105 00000 n +0000440172 00000 n +0000440243 00000 n +0000439460 00000 n +0000440661 00000 n +0000380925 00000 n +0000381119 00000 n +0000439992 00000 n +0000381184 00000 n +0000381258 00000 n +0000381399 00000 n +0000382960 00000 n +0000439876 00000 n +0000439907 00000 n +0000439760 00000 n +0000439791 00000 n +0000439644 00000 n +0000439675 00000 n +0000439528 00000 n +0000439559 00000 n +0000440545 00000 n +0000440576 00000 n +0000440429 00000 n +0000440460 00000 n +0000440313 00000 n +0000440344 00000 n +0000440724 00000 n +trailer +<<752461CC0A187547935702C929B19A73>]>> +startxref +440922 +%%EOF From c711d5990c4bc1d0557cb96739482c577b196ae6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 10:39:38 +0200 Subject: [PATCH 009/157] chore(deps): bump softprops/action-gh-release (#4781) Bumps the github-actions group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release). Updates `softprops/action-gh-release` from 3.0.2 to 3.0.3 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/3d0d9888cb7fd7b750713d6e236d1fcb99157228...efb35369e0ad2afab669f228072c1b0d510eae64) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-version: 3.0.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c410bd739..1ac4679de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: echo '${{ steps.change-log.outputs.CHANGE_LOG }}' - name: Create Release - uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2 + uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 with: tag_name: ${{ steps.new-version.outputs.NEW_VERSION }} name: Version ${{ steps.new-version.outputs.NEW_VERSION }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e200da21f..7901221a6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -169,7 +169,7 @@ jobs: zip -r lucide-icons-${{ needs.prepare.outputs.VERSION }}.zip icons - name: Release zip and fonts - uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2 + uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 with: tag_name: ${{ needs.prepare.outputs.VERSION }} From d771617ede97385fe4c15c11df4290e74d7585f8 Mon Sep 17 00:00:00 2001 From: Xougui <143881479+Xougui@users.noreply.github.com> Date: Thu, 3 Sep 2026 10:48:39 +0200 Subject: [PATCH 010/157] feat(icons): added `lighthouse` icon (#4507) * feat: add lighthouse icon * use case * Update icons/lighthouse.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/lighthouse.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/lighthouse.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * icon change * updated use cases to match guide * Update lighthouse.json * Update lighthouse.svg * Update lighthouse.svg --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Karsa Co-authored-by: Eric Fennis --- icons/lighthouse.json | 45 +++++++++++++++++++++++++++++++++++++++++++ icons/lighthouse.svg | 24 +++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 icons/lighthouse.json create mode 100644 icons/lighthouse.svg diff --git a/icons/lighthouse.json b/icons/lighthouse.json new file mode 100644 index 000000000..aad0294c8 --- /dev/null +++ b/icons/lighthouse.json @@ -0,0 +1,45 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "xougui", + "karsa-mistmere" + ], + "use-cases": [ + "Marking coastal landmarks or harbor entrances on maps", + "Indicating navigation beacons in maritime dashboards", + "Flagging maritime safety or beacon maintenance tasks", + "Representing guidance or guiding light in onboarding or help interfaces" + ], + "tags": [ + "lighthouse", + "beacon", + "coast", + "navigation", + "tower", + "sea", + "ocean", + "maritime", + "guide", + "safety", + "light", + "shine", + "port", + "marine", + "faro", + "signal", + "nautical", + "harbor", + "shore", + "lightbeam", + "wayfinding", + "guidance", + "onboarding", + "help", + "landmark" + ], + "categories": [ + "buildings", + "navigation", + "travel" + ] +} diff --git a/icons/lighthouse.svg b/icons/lighthouse.svg new file mode 100644 index 000000000..ebf682000 --- /dev/null +++ b/icons/lighthouse.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + From 6022cf9878ebc16cec962af8ca38c23a5d10a03e Mon Sep 17 00:00:00 2001 From: Rodrigo Rodrigues Date: Thu, 3 Sep 2026 02:52:29 -0600 Subject: [PATCH 011/157] feat(icons): Add new icons `germ` and `germ-off` (#4056) * add new icons and * Fix SVG path data for virus-off icon * renamed virus to germ, implemented feedback * Refactor SVG paths for consistency and clarity * Update germ.json * Update germ-off.json --------- Co-authored-by: Jakob Guddas Co-authored-by: Karsa Co-authored-by: Eric Fennis --- icons/germ-off.json | 49 +++++++++++++++++++++++++++++++++++++++++++++ icons/germ-off.svg | 26 ++++++++++++++++++++++++ icons/germ.json | 49 +++++++++++++++++++++++++++++++++++++++++++++ icons/germ.svg | 24 ++++++++++++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 icons/germ-off.json create mode 100644 icons/germ-off.svg create mode 100644 icons/germ.json create mode 100644 icons/germ.svg diff --git a/icons/germ-off.json b/icons/germ-off.json new file mode 100644 index 000000000..7b8e6ec97 --- /dev/null +++ b/icons/germ-off.json @@ -0,0 +1,49 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "rrod497", + "karsa-mistmere" + ], + "use-cases": [ + "Indicating sanitized or disinfected surfaces", + "Marking bacteria-free products or environments", + "Showing infection prevention or contamination control", + "Representing antimicrobial treatment in medical interfaces" + ], + "tags": [ + "virus", + "microbe", + "bacterium", + "bacteria", + "germ", + "organism", + "cilia", + "pathogen", + "infection", + "disease", + "contagion", + "contamination", + "microbiology", + "health", + "medicine", + "biology", + "science", + "microorganism", + "pandemic", + "epidemic", + "outbreak", + "amoeba", + "flu", + "security", + "single cell", + "unicellular", + "vaccine", + "immunity", + "quarantine" + ], + "categories": [ + "medical", + "science", + "security" + ] +} diff --git a/icons/germ-off.svg b/icons/germ-off.svg new file mode 100644 index 000000000..f78944ce4 --- /dev/null +++ b/icons/germ-off.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + diff --git a/icons/germ.json b/icons/germ.json new file mode 100644 index 000000000..2c717fd02 --- /dev/null +++ b/icons/germ.json @@ -0,0 +1,49 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "rrod497", + "karsa-mistmere" + ], + "use-cases": [ + "Representing bacteria or single-celled organisms", + "Indicating contamination or infectious disease", + "Marking microbiology research or laboratory samples", + "Showing microbes in hygiene and sanitation interfaces" + ], + "tags": [ + "virus", + "microbe", + "bacterium", + "bacteria", + "germ", + "organism", + "cilia", + "pathogen", + "infection", + "disease", + "contagion", + "contamination", + "microbiology", + "health", + "medicine", + "biology", + "science", + "microorganism", + "pandemic", + "epidemic", + "outbreak", + "amoeba", + "flu", + "security", + "single cell", + "unicellular", + "vaccine", + "immunity", + "quarantine" + ], + "categories": [ + "medical", + "science", + "security" + ] +} diff --git a/icons/germ.svg b/icons/germ.svg new file mode 100644 index 000000000..8d5865afd --- /dev/null +++ b/icons/germ.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + From 7a3df42d5abf442f0caa965771c2c5bf3022b6a6 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Thu, 3 Sep 2026 10:58:41 +0200 Subject: [PATCH 012/157] feat(icons): added `door-stairwell` icon & updated `door-*` icons (#3554) * Added icons/stairwell.svg * Added icons/stairwell.json * Update icons/stairwell.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Updated icons/stairwell.svg * Updated icons/stairwell.json * Update icons/stairwell.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Updated icons/door-closed.svg * Updated icons/door-open.svg * Update door-closed-locked.svg * Update door-closed.svg * Update door-open.svg * Update and rename stairwell.svg to door-stairwell.svg * Update and rename stairwell.json to door-stairwell.json * Update door-stairwell.json --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Karsa --- icons/door-closed-locked.svg | 10 ++++----- icons/door-closed.svg | 6 +++--- icons/door-open.svg | 8 ++++---- icons/door-stairwell.json | 40 ++++++++++++++++++++++++++++++++++++ icons/door-stairwell.svg | 17 +++++++++++++++ 5 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 icons/door-stairwell.json create mode 100644 icons/door-stairwell.svg diff --git a/icons/door-closed-locked.svg b/icons/door-closed-locked.svg index 9f7c04af0..3e3eeaf26 100644 --- a/icons/door-closed-locked.svg +++ b/icons/door-closed-locked.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + diff --git a/icons/door-closed.svg b/icons/door-closed.svg index 68e73918d..b22e3f330 100644 --- a/icons/door-closed.svg +++ b/icons/door-closed.svg @@ -9,7 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > - - - + + + diff --git a/icons/door-open.svg b/icons/door-open.svg index 6538907e0..f12c8fb3c 100644 --- a/icons/door-open.svg +++ b/icons/door-open.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - + + + - + diff --git a/icons/door-stairwell.json b/icons/door-stairwell.json new file mode 100644 index 000000000..9d4ad47aa --- /dev/null +++ b/icons/door-stairwell.json @@ -0,0 +1,40 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "jguddas", + "karsa-mistmere" + ], + "use-cases": [ + "Indicating stair access in building navigation", + "Showing floor levels in building directories", + "Marking where an item is located by floor", + "Directing users to take stairs instead of elevators" + ], + "tags": [ + "staircase", + "stairway", + "stairs", + "steps", + "ladder", + "transition", + "access", + "structure", + "espiral", + "building", + "vertical", + "movement", + "floor", + "level", + "entrance", + "entry", + "exit", + "egress", + "route", + "indoor", + "emergency exit" + ], + "categories": [ + "home", + "travel" + ] +} diff --git a/icons/door-stairwell.svg b/icons/door-stairwell.svg new file mode 100644 index 000000000..174c0ea9b --- /dev/null +++ b/icons/door-stairwell.svg @@ -0,0 +1,17 @@ + + + + + + + From 431af7618ee2d44dbc19564e8334868e3a246e37 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Thu, 3 Sep 2026 11:03:06 +0200 Subject: [PATCH 013/157] feat(icons): added `credit-card-reader` icon (#4616) * Added icons/credit-card-reader.svg * Added icons/credit-card-reader.json * Updated icons/credit-card-reader.json * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Updated icons/credit-card-reader.svg * Updated icons/credit-card-reader.json * Update credit-card-reader.json --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Karsa --- icons/credit-card-reader.json | 38 +++++++++++++++++++++++++++++++++++ icons/credit-card-reader.svg | 16 +++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 icons/credit-card-reader.json create mode 100644 icons/credit-card-reader.svg diff --git a/icons/credit-card-reader.json b/icons/credit-card-reader.json new file mode 100644 index 000000000..1ba7815eb --- /dev/null +++ b/icons/credit-card-reader.json @@ -0,0 +1,38 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "jguddas", + "karsa-mistmere" + ], + "use-cases": [ + "Processing card payments at checkout terminals", + "Locating ATMs or payment kiosks on maps", + "Indicating card-present transactions in finance apps", + "Showing contactless or chip card payment options" + ], + "tags": [ + "bank", + "purchase", + "payment", + "cc", + "atm", + "terminal", + "checkout", + "kiosk", + "pos", + "point of sale", + "transaction", + "contactless", + "chip", + "swipe", + "tap", + "banking", + "finance", + "retail" + ], + "categories": [ + "finance", + "navigation", + "shopping" + ] +} diff --git a/icons/credit-card-reader.svg b/icons/credit-card-reader.svg new file mode 100644 index 000000000..e0110e30c --- /dev/null +++ b/icons/credit-card-reader.svg @@ -0,0 +1,16 @@ + + + + + + From d72697aeab02fa74e0e18532d698764193a74ee0 Mon Sep 17 00:00:00 2001 From: Benjamin Haube Date: Thu, 3 Sep 2026 05:22:41 -0400 Subject: [PATCH 014/157] feat(icons): added 'engine' icon (#4598) * Add icons/engine * fix(icons): changed 'engine' icon * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update engine.svg * Add contributor 'jamiemlaw' to engine.json * Apply suggestion from @github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- icons/engine.json | 34 ++++++++++++++++++++++++++++++++++ icons/engine.svg | 17 +++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 icons/engine.json create mode 100644 icons/engine.svg diff --git a/icons/engine.json b/icons/engine.json new file mode 100644 index 000000000..373f86c4d --- /dev/null +++ b/icons/engine.json @@ -0,0 +1,34 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "benhaube", + "jamiemlaw" + ], + "use-cases": [ + "Indicating engine health or need of repair", + "Representing the engine category in a parts list", + "Representing automotive repair", + "showing a check engine warning on a dashboard", + "marking scheduled vehicle maintenance", + "filtering vehicle parts in an online catalog", + "labeling automotive diagnostic reports" + ], + "tags": [ + "vehicle", + "power", + "energy", + "drive", + "repair", + "car", + "motor", + "mechanical", + "diagnostics", + "maintenance", + "warning", + "dashboard", + "parts" + ], + "categories": [ + "transportation" + ] +} diff --git a/icons/engine.svg b/icons/engine.svg new file mode 100644 index 000000000..a76d6bf6e --- /dev/null +++ b/icons/engine.svg @@ -0,0 +1,17 @@ + + + + + + + From 85b455c323d362ffe9d494e0c8f77157c3ea65df Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 3 Sep 2026 11:23:06 +0200 Subject: [PATCH 015/157] feat(icons): fixed `germ` & `germ-off` (#4789) * Update germ.svg * Update germ-off.svg --- icons/germ-off.svg | 15 +++++++-------- icons/germ.svg | 12 ++++++------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/icons/germ-off.svg b/icons/germ-off.svg index f78944ce4..1a1259372 100644 --- a/icons/germ-off.svg +++ b/icons/germ-off.svg @@ -10,17 +10,16 @@ stroke-linejoin="round" > - - - + + + + - - + - - - + + diff --git a/icons/germ.svg b/icons/germ.svg index 8d5865afd..9bb2651e7 100644 --- a/icons/germ.svg +++ b/icons/germ.svg @@ -10,15 +10,15 @@ stroke-linejoin="round" > - - + + - - + - - + + + From bdb3684959a907cc8e9544abe0135f988623d379 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 11:29:53 +0200 Subject: [PATCH 016/157] chore(deps): bump the vue-deps group with 2 updates (#4771) Bumps the vue-deps group with 2 updates: [@vue/test-utils](https://github.com/vuejs/test-utils) and [vue](https://github.com/vuejs/core). Updates `@vue/test-utils` from 2.4.11 to 2.5.0 - [Release notes](https://github.com/vuejs/test-utils/releases) - [Commits](https://github.com/vuejs/test-utils/compare/v2.4.11...v2.5.0) Updates `vue` from 3.5.41 to 3.5.42 - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.5.41...v3.5.42) --- updated-dependencies: - dependency-name: "@vue/test-utils" dependency-version: 2.5.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: vue-deps - dependency-name: vue dependency-version: 3.5.42 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: vue-deps ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/vue/package.json | 4 +- pnpm-lock.yaml | 308 +++++++++++++++++++------------------- 3 files changed, 154 insertions(+), 160 deletions(-) diff --git a/docs/package.json b/docs/package.json index ef283ebfa..9c52294a6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -68,6 +68,6 @@ "react": "18.2.0", "react-dom": "18.2.0", "sandpack-vue3": "3.1.12", - "vue": "^3.5.41" + "vue": "^3.5.42" } } diff --git a/packages/vue/package.json b/packages/vue/package.json index dd513b015..962d9f964 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -47,12 +47,12 @@ "@testing-library/jest-dom": "^6.9.1", "@testing-library/vue": "^8.1.0", "@vitejs/plugin-vue": "^6.0.8", - "@vue/test-utils": "2.4.11", + "@vue/test-utils": "2.5.0", "rollup": "^4.62.2", "rollup-plugin-dts": "^6.4.1", "typescript": "^5.9.3", "vite": "^7.3.6", - "vue": "^3.5.41" + "vue": "^3.5.42" }, "peerDependencies": { "vue": ">=3.0.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 873d5a126..c7ce47a4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -130,22 +130,22 @@ importers: dependencies: '@floating-ui/vue': specifier: ^1.1.11 - version: 1.1.11(vue@3.5.41(typescript@6.0.3)) + version: 1.1.11(vue@3.5.42(typescript@6.0.3)) '@headlessui/vue': specifier: ^1.7.23 - version: 1.7.23(vue@3.5.41(typescript@6.0.3)) + version: 1.7.23(vue@3.5.42(typescript@6.0.3)) '@lucide/vue': specifier: workspace:* version: link:../packages/vue '@vueuse/components': specifier: ^14.3.0 - version: 14.3.0(vue@3.5.41(typescript@6.0.3)) + version: 14.3.0(vue@3.5.42(typescript@6.0.3)) '@vueuse/core': specifier: ^14.3.0 - version: 14.3.0(vue@3.5.41(typescript@6.0.3)) + version: 14.3.0(vue@3.5.42(typescript@6.0.3)) '@vueuse/integrations': specifier: ^14.3.0 - version: 14.3.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.41(typescript@6.0.3)) + version: 14.3.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.42(typescript@6.0.3)) element-to-path: specifier: ^1.2.1 version: 1.2.1 @@ -166,7 +166,7 @@ importers: version: link:../packages/lucide-react motion-v: specifier: 1.10.3 - version: 1.10.3(@vueuse/core@14.3.0(vue@3.5.41(typescript@6.0.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vue@3.5.41(typescript@6.0.3)) + version: 1.10.3(@vueuse/core@14.3.0(vue@3.5.42(typescript@6.0.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vue@3.5.42(typescript@6.0.3)) react: specifier: 18.2.0 version: 18.2.0 @@ -175,10 +175,10 @@ importers: version: 18.2.0(react@18.2.0) sandpack-vue3: specifier: 3.1.12 - version: 3.1.12(vue@3.5.41(typescript@6.0.3)) + version: 3.1.12(vue@3.5.42(typescript@6.0.3)) vue: - specifier: ^3.5.41 - version: 3.5.41(typescript@6.0.3) + specifier: ^3.5.42 + version: 3.5.42(typescript@6.0.3) devDependencies: '@lucide/build-icons': specifier: workspace:* @@ -738,13 +738,13 @@ importers: version: 6.9.1 '@testing-library/vue': specifier: ^8.1.0 - version: 8.1.0(@vue/compiler-dom@3.5.41)(@vue/compiler-sfc@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41(typescript@5.9.3)) + version: 8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) '@vitejs/plugin-vue': specifier: ^6.0.8 - version: 6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.41(typescript@5.9.3)) + version: 6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3)) '@vue/test-utils': - specifier: 2.4.11 - version: 2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41(typescript@5.9.3)) + specifier: 2.5.0 + version: 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) rollup: specifier: ^4.62.2 version: 4.62.2 @@ -758,8 +758,8 @@ importers: specifier: ^7.3.6 version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vue: - specifier: ^3.5.41 - version: 3.5.41(typescript@5.9.3) + specifier: ^3.5.42 + version: 3.5.42(typescript@5.9.3) tools/build-font: dependencies: @@ -3836,8 +3836,8 @@ packages: '@octokit/types@9.3.2': resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - '@one-ini/wasm@0.1.1': - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + '@one-ini/wasm@0.2.1': + resolution: {integrity: sha512-TUqERXGNTifZ9y2g3wPxQrw3HpHv/02DsW3D90T9x0hhonrL1ZqpSmNrU2XkoIq0fP1N6gZfVQzy2Fw1ZvGBNg==} '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -5283,17 +5283,17 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - '@vue/compiler-core@3.5.41': - resolution: {integrity: sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==} + '@vue/compiler-core@3.5.42': + resolution: {integrity: sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==} - '@vue/compiler-dom@3.5.41': - resolution: {integrity: sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==} + '@vue/compiler-dom@3.5.42': + resolution: {integrity: sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==} - '@vue/compiler-sfc@3.5.41': - resolution: {integrity: sha512-XJhip7R2wy6vX3knCxdZN4KracFaZUef58s1KYewqluedHIJaPIVfXoYT7MF1F8nCvv6k8bWWxDC8opMkg1VTQ==} + '@vue/compiler-sfc@3.5.42': + resolution: {integrity: sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==} - '@vue/compiler-ssr@3.5.41': - resolution: {integrity: sha512-U3v5OejKEGqOI0Wy0+Sz7hGuIFZHA4LSXzrNM3IMIeDyJEBBfTpX26n3SDgToRpP2bLc9FfI2j/kSgcJ8Emq5A==} + '@vue/compiler-ssr@3.5.42': + resolution: {integrity: sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==} '@vue/devtools-api@7.7.10': resolution: {integrity: sha512-KxtEpUOOpFz/qOGRrAwA36QF7DqIA+FXgCYit9mk9wjbaZt0sXOFz81ElOZtKA4HbWHUdwNjZHBFsFFyp5BZiA==} @@ -5304,26 +5304,26 @@ packages: '@vue/devtools-shared@7.7.10': resolution: {integrity: sha512-wOPslzB8vTvpxwdaOcR2qAbwmuSP0L+rhpoC6Cf56V3Jip+HWb7PQQXOUPgBNQARpXsbQX/+mvi8kKucmBGRwQ==} - '@vue/reactivity@3.5.41': - resolution: {integrity: sha512-rznsqKM0np0x18EjzF8x88MpEhdNsffbvFbckLL5+oUKz1BxAImEmO7J1ArRYSyo6aQaVoBDp7jEkT91OOxydA==} + '@vue/reactivity@3.5.42': + resolution: {integrity: sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==} - '@vue/runtime-core@3.5.41': - resolution: {integrity: sha512-Vcry58hiAKwGen9Z1jUZE0feFsNArPCMOImYI8el48A9Idf6DuQYD0U05zZIF2Iad1hGhPSvcbBbAOhNr55fhg==} + '@vue/runtime-core@3.5.42': + resolution: {integrity: sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==} - '@vue/runtime-dom@3.5.41': - resolution: {integrity: sha512-3vVBahVBS9+U6cmXBLyb8nE6/yYo4J/CGI9eVFs3KiMc0YHuudwKyShTD65jtJy/L9PUUxNAFu4cj4LiJ0UFbw==} + '@vue/runtime-dom@3.5.42': + resolution: {integrity: sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==} - '@vue/server-renderer@3.5.41': - resolution: {integrity: sha512-n6hx/pNFfbD6SuyeuMVkvqox8bwf/ET9JlA/kAz/imw8sw++wkqKe2mHX5KutjPpbKE4Z56yTHszoOjGMI9igQ==} + '@vue/server-renderer@3.5.42': + resolution: {integrity: sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==} '@vue/shared@3.5.39': resolution: {integrity: sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==} - '@vue/shared@3.5.41': - resolution: {integrity: sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==} + '@vue/shared@3.5.42': + resolution: {integrity: sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==} - '@vue/test-utils@2.4.11': - resolution: {integrity: sha512-GDqaqZsA6m2E5vNzej0aYiIb6BX8xV9pNSbbbXKOfEYwg7ZNblVX8suyqmUBThq8VIrgAJNxn+z72hVtUeiWHA==} + '@vue/test-utils@2.5.0': + resolution: {integrity: sha512-6Clu5EKR/r6cDPYrKsu+8wenciWJJ3rhS9OEGsfDlZeZIhlJeEPGIZQHxE4lHRJCzPSq3EWMsFxQUqCvrbHQuQ==} peerDependencies: '@vue/compiler-dom': 3.x '@vue/server-renderer': 3.x @@ -5453,10 +5453,6 @@ packages: a-sync-waterfall@1.0.1: resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - abbrev@3.0.1: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -5465,6 +5461,10 @@ packages: resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} + abbrev@5.0.0: + resolution: {integrity: sha512-/XrFJgzQQQHpti1raDJC6m4ws6aNktmjBlhk8Fdlk7LwCEuDoieEJJY9OFHjfiFJFFRM2tK+Ky/IsfbbmlMu1w==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6153,10 +6153,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -6680,9 +6676,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - editorconfig@1.0.7: - resolution: {integrity: sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==} - engines: {node: '>=14'} + editorconfig@3.0.2: + resolution: {integrity: sha512-T0ix8GhtxyKVfUFEcvdNDt3YGqlwkFHbD4/5bgFUDgFmxhI/cSRAeJ87/Sz//Cq8Eam6JX/e23RkoFO71P7aAA==} + engines: {node: '>=20'} hasBin: true ee-first@1.1.1: @@ -7978,8 +7974,8 @@ packages: jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} - js-beautify@1.15.4: - resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + js-beautify@2.0.3: + resolution: {integrity: sha512-cyFbh3tkPhknnTD/0bLf0T0yy2ZIbqL05mttzbt4y1Zfr7NxqXQZ62dkBLKs3oHH/lpjmDRAnciJiSUyOy8XwQ==} engines: {node: '>=14'} hasBin: true @@ -8774,9 +8770,9 @@ packages: resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} engines: {node: '>=18'} - nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + nopt@10.0.1: + resolution: {integrity: sha512-df3sBr/6ax9hSGuC3CspvLlbnX8cP5L5nZwXF8cGN8l0zSWR6BvzmQ6jPUKjvo6+/xdpkNvEcucBNUdBeeV13g==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} hasBin: true nopt@8.1.0: @@ -10973,8 +10969,8 @@ packages: '@vue/composition-api': optional: true - vue@3.5.41: - resolution: {integrity: sha512-2laE0p+aK+/AOPG/XL/WepOs/GlK755LJ1XECi9kDUrz1FKNw8rb2Xzlw9JS1rqEV55nb0ttsKxVlTCcd+R5cg==} + vue@3.5.42: + resolution: {integrity: sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -13548,11 +13544,11 @@ snapshots: '@floating-ui/utils@0.2.12': {} - '@floating-ui/vue@1.1.11(vue@3.5.41(typescript@6.0.3))': + '@floating-ui/vue@1.1.11(vue@3.5.42(typescript@6.0.3))': dependencies: '@floating-ui/dom': 1.8.0 '@floating-ui/utils': 0.2.12 - vue-demi: 0.14.10(vue@3.5.41(typescript@6.0.3)) + vue-demi: 0.14.10(vue@3.5.42(typescript@6.0.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -13562,10 +13558,10 @@ snapshots: '@harperfast/extended-iterable@1.0.3': optional: true - '@headlessui/vue@1.7.23(vue@3.5.41(typescript@6.0.3))': + '@headlessui/vue@1.7.23(vue@3.5.42(typescript@6.0.3))': dependencies: - '@tanstack/vue-virtual': 3.13.32(vue@3.5.41(typescript@6.0.3)) - vue: 3.5.41(typescript@6.0.3) + '@tanstack/vue-virtual': 3.13.32(vue@3.5.42(typescript@6.0.3)) + vue: 3.5.42(typescript@6.0.3) '@hono/node-server@1.19.14(hono@4.12.30)': dependencies: @@ -14625,7 +14621,7 @@ snapshots: dependencies: '@octokit/openapi-types': 18.1.1 - '@one-ini/wasm@0.1.1': {} + '@one-ini/wasm@0.2.1': {} '@open-draft/deferred-promise@2.2.0': {} @@ -15434,10 +15430,10 @@ snapshots: '@tanstack/virtual-core@3.17.4': {} - '@tanstack/vue-virtual@3.13.32(vue@3.5.41(typescript@6.0.3))': + '@tanstack/vue-virtual@3.13.32(vue@3.5.42(typescript@6.0.3))': dependencies: '@tanstack/virtual-core': 3.17.4 - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) '@testing-library/dom@10.4.1': dependencies: @@ -15519,14 +15515,14 @@ snapshots: vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - '@testing-library/vue@8.1.0(@vue/compiler-dom@3.5.41)(@vue/compiler-sfc@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41(typescript@5.9.3))': + '@testing-library/vue@8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3))': dependencies: '@babel/runtime': 7.29.7 '@testing-library/dom': 9.3.4 - '@vue/test-utils': 2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41(typescript@5.9.3)) - vue: 3.5.41(typescript@5.9.3) + '@vue/test-utils': 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) + vue: 3.5.42(typescript@5.9.3) optionalDependencies: - '@vue/compiler-sfc': 3.5.41 + '@vue/compiler-sfc': 3.5.42 transitivePeerDependencies: - '@vue/compiler-dom' - '@vue/server-renderer' @@ -16073,16 +16069,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': dependencies: vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) - '@vitejs/plugin-vue@6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.41(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.1 vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vue: 3.5.41(typescript@5.9.3) + vue: 3.5.42(typescript@5.9.3) '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: @@ -16238,35 +16234,35 @@ snapshots: '@vscode/l10n@0.0.18': {} - '@vue/compiler-core@3.5.41': + '@vue/compiler-core@3.5.42': dependencies: '@babel/parser': 7.29.8 - '@vue/shared': 3.5.41 + '@vue/shared': 3.5.42 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.41': + '@vue/compiler-dom@3.5.42': dependencies: - '@vue/compiler-core': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/compiler-core': 3.5.42 + '@vue/shared': 3.5.42 - '@vue/compiler-sfc@3.5.41': + '@vue/compiler-sfc@3.5.42': dependencies: '@babel/parser': 7.29.8 - '@vue/compiler-core': 3.5.41 - '@vue/compiler-dom': 3.5.41 - '@vue/compiler-ssr': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/compiler-core': 3.5.42 + '@vue/compiler-dom': 3.5.42 + '@vue/compiler-ssr': 3.5.42 + '@vue/shared': 3.5.42 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.19 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.41': + '@vue/compiler-ssr@3.5.42': dependencies: - '@vue/compiler-dom': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/compiler-dom': 3.5.42 + '@vue/shared': 3.5.42 '@vue/devtools-api@7.7.10': dependencies: @@ -16286,79 +16282,79 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.5.41': + '@vue/reactivity@3.5.42': dependencies: - '@vue/shared': 3.5.41 + '@vue/shared': 3.5.42 - '@vue/runtime-core@3.5.41': + '@vue/runtime-core@3.5.42': dependencies: - '@vue/reactivity': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/reactivity': 3.5.42 + '@vue/shared': 3.5.42 - '@vue/runtime-dom@3.5.41': + '@vue/runtime-dom@3.5.42': dependencies: - '@vue/reactivity': 3.5.41 - '@vue/runtime-core': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/reactivity': 3.5.42 + '@vue/runtime-core': 3.5.42 + '@vue/shared': 3.5.42 csstype: 3.2.3 - '@vue/server-renderer@3.5.41': + '@vue/server-renderer@3.5.42': dependencies: - '@vue/compiler-ssr': 3.5.41 - '@vue/runtime-dom': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/compiler-ssr': 3.5.42 + '@vue/runtime-dom': 3.5.42 + '@vue/shared': 3.5.42 '@vue/shared@3.5.39': {} - '@vue/shared@3.5.41': {} + '@vue/shared@3.5.42': {} - '@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41(typescript@5.9.3))': + '@vue/test-utils@2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3))': dependencies: - '@vue/compiler-dom': 3.5.41 - js-beautify: 1.15.4 - vue: 3.5.41(typescript@5.9.3) + '@vue/compiler-dom': 3.5.42 + js-beautify: 2.0.3 + vue: 3.5.42(typescript@5.9.3) vue-component-type-helpers: 3.3.9 optionalDependencies: - '@vue/server-renderer': 3.5.41 + '@vue/server-renderer': 3.5.42 - '@vueuse/components@14.3.0(vue@3.5.41(typescript@6.0.3))': + '@vueuse/components@14.3.0(vue@3.5.42(typescript@6.0.3))': dependencies: - '@vueuse/core': 14.3.0(vue@3.5.41(typescript@6.0.3)) - '@vueuse/shared': 14.3.0(vue@3.5.41(typescript@6.0.3)) - vue: 3.5.41(typescript@6.0.3) + '@vueuse/core': 14.3.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/shared': 14.3.0(vue@3.5.42(typescript@6.0.3)) + vue: 3.5.42(typescript@6.0.3) '@vueuse/core@12.8.2(typescript@6.0.3)': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@6.0.3) - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) transitivePeerDependencies: - typescript - '@vueuse/core@14.3.0(vue@3.5.41(typescript@6.0.3))': + '@vueuse/core@14.3.0(vue@3.5.42(typescript@6.0.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.3.0 - '@vueuse/shared': 14.3.0(vue@3.5.41(typescript@6.0.3)) - vue: 3.5.41(typescript@6.0.3) + '@vueuse/shared': 14.3.0(vue@3.5.42(typescript@6.0.3)) + vue: 3.5.42(typescript@6.0.3) '@vueuse/integrations@12.8.2(focus-trap@7.8.0)(fuse.js@7.5.0)(typescript@6.0.3)': dependencies: '@vueuse/core': 12.8.2(typescript@6.0.3) '@vueuse/shared': 12.8.2(typescript@6.0.3) - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) optionalDependencies: focus-trap: 7.8.0 fuse.js: 7.5.0 transitivePeerDependencies: - typescript - '@vueuse/integrations@14.3.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.41(typescript@6.0.3))': + '@vueuse/integrations@14.3.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.42(typescript@6.0.3))': dependencies: - '@vueuse/core': 14.3.0(vue@3.5.41(typescript@6.0.3)) - '@vueuse/shared': 14.3.0(vue@3.5.41(typescript@6.0.3)) - vue: 3.5.41(typescript@6.0.3) + '@vueuse/core': 14.3.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/shared': 14.3.0(vue@3.5.42(typescript@6.0.3)) + vue: 3.5.42(typescript@6.0.3) optionalDependencies: focus-trap: 7.8.0 fuse.js: 7.5.0 @@ -16369,13 +16365,13 @@ snapshots: '@vueuse/shared@12.8.2(typescript@6.0.3)': dependencies: - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) transitivePeerDependencies: - typescript - '@vueuse/shared@14.3.0(vue@3.5.41(typescript@6.0.3))': + '@vueuse/shared@14.3.0(vue@3.5.42(typescript@6.0.3))': dependencies: - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) '@xmldom/xmldom@0.9.10': {} @@ -16383,12 +16379,12 @@ snapshots: a-sync-waterfall@1.0.1: {} - abbrev@2.0.0: {} - abbrev@3.0.1: {} abbrev@4.0.0: {} + abbrev@5.0.0: {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -16540,12 +16536,12 @@ snapshots: ansi-styles@6.2.3: {} - ansi-to-vue3@0.1.2(vue@3.5.41(typescript@6.0.3)): + ansi-to-vue3@0.1.2(vue@3.5.42(typescript@6.0.3)): dependencies: anser: 2.3.5 escape-carriage: 1.3.1 optionalDependencies: - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) any-base@1.1.0: {} @@ -17300,8 +17296,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander@10.0.1: {} - commander@11.1.0: {} commander@12.1.0: {} @@ -17835,11 +17829,11 @@ snapshots: eastasianwidth@0.2.0: {} - editorconfig@1.0.7: + editorconfig@3.0.2: dependencies: - '@one-ini/wasm': 0.1.1 - commander: 10.0.1 - minimatch: 9.0.9 + '@one-ini/wasm': 0.2.1 + commander: 14.0.3 + minimatch: 10.2.5 semver: 7.8.5 ee-first@1.1.1: {} @@ -19352,13 +19346,13 @@ snapshots: jpeg-js@0.4.4: {} - js-beautify@1.15.4: + js-beautify@2.0.3: dependencies: config-chain: 1.1.13 - editorconfig: 1.0.7 - glob: 10.5.0 + editorconfig: 3.0.2 + glob: 13.0.6 js-cookie: 3.0.8 - nopt: 7.2.1 + nopt: 10.0.1 js-cookie@3.0.8: {} @@ -20301,13 +20295,13 @@ snapshots: motion-utils@12.39.0: {} - motion-v@1.10.3(@vueuse/core@14.3.0(vue@3.5.41(typescript@6.0.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vue@3.5.41(typescript@6.0.3)): + motion-v@1.10.3(@vueuse/core@14.3.0(vue@3.5.42(typescript@6.0.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vue@3.5.42(typescript@6.0.3)): dependencies: - '@vueuse/core': 14.3.0(vue@3.5.41(typescript@6.0.3)) + '@vueuse/core': 14.3.0(vue@3.5.42(typescript@6.0.3)) framer-motion: 12.42.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) hey-listen: 1.0.8 motion-dom: 12.42.2 - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) transitivePeerDependencies: - '@emotion/is-prop-valid' - react @@ -20594,9 +20588,9 @@ snapshots: node-releases@2.0.51: {} - nopt@7.2.1: + nopt@10.0.1: dependencies: - abbrev: 2.0.0 + abbrev: 5.0.0 nopt@8.1.0: dependencies: @@ -21706,7 +21700,7 @@ snapshots: safer-buffer@2.1.2: {} - sandpack-vue3@3.1.12(vue@3.5.41(typescript@6.0.3)): + sandpack-vue3@3.1.12(vue@3.5.42(typescript@6.0.3)): dependencies: '@codemirror/autocomplete': 6.20.3 '@codemirror/commands': 6.10.4 @@ -21719,12 +21713,12 @@ snapshots: '@codesandbox/sandpack-client': 2.19.8 '@lezer/highlight': 1.2.3 '@stitches/core': 1.2.8 - ansi-to-vue3: 0.1.2(vue@3.5.41(typescript@6.0.3)) + ansi-to-vue3: 0.1.2(vue@3.5.42(typescript@6.0.3)) clean-set: 1.1.2 dequal: 2.0.3 lz-string: 1.5.0 optionalDependencies: - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) sass-formatter@0.7.9: dependencies: @@ -23124,7 +23118,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3)) + '@vitejs/plugin-vue': 5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) '@vue/devtools-api': 7.7.10 '@vue/shared': 3.5.39 '@vueuse/core': 12.8.2(typescript@6.0.3) @@ -23134,7 +23128,7 @@ snapshots: minisearch: 7.2.0 shiki: 2.5.0 vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) optionalDependencies: postcss: 8.5.19 transitivePeerDependencies: @@ -23247,27 +23241,27 @@ snapshots: vue-component-type-helpers@3.3.9: {} - vue-demi@0.14.10(vue@3.5.41(typescript@6.0.3)): + vue-demi@0.14.10(vue@3.5.42(typescript@6.0.3)): dependencies: - vue: 3.5.41(typescript@6.0.3) + vue: 3.5.42(typescript@6.0.3) - vue@3.5.41(typescript@5.9.3): + vue@3.5.42(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.41 - '@vue/compiler-sfc': 3.5.41 - '@vue/runtime-dom': 3.5.41 - '@vue/server-renderer': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/compiler-dom': 3.5.42 + '@vue/compiler-sfc': 3.5.42 + '@vue/runtime-dom': 3.5.42 + '@vue/server-renderer': 3.5.42 + '@vue/shared': 3.5.42 optionalDependencies: typescript: 5.9.3 - vue@3.5.41(typescript@6.0.3): + vue@3.5.42(typescript@6.0.3): dependencies: - '@vue/compiler-dom': 3.5.41 - '@vue/compiler-sfc': 3.5.41 - '@vue/runtime-dom': 3.5.41 - '@vue/server-renderer': 3.5.41 - '@vue/shared': 3.5.41 + '@vue/compiler-dom': 3.5.42 + '@vue/compiler-sfc': 3.5.42 + '@vue/runtime-dom': 3.5.42 + '@vue/server-renderer': 3.5.42 + '@vue/shared': 3.5.42 optionalDependencies: typescript: 6.0.3 From f1d48381965e858fc2e65476261c257fabd326a1 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 3 Sep 2026 11:31:06 +0200 Subject: [PATCH 017/157] feat(icons): added `virus`/`virus-off` icon (#4765) * Added icons/virus.svg * Added icons/virus.json * feat(icons): added metadata to virus & virus-off --- icons/virus-off.json | 45 ++++++++++++++++++++++++++++++++++++++++++++ icons/virus-off.svg | 32 +++++++++++++++++++++++++++++++ icons/virus.json | 38 +++++++++++++++++++++++++++++++++++++ icons/virus.svg | 32 +++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+) create mode 100644 icons/virus-off.json create mode 100644 icons/virus-off.svg create mode 100644 icons/virus.json create mode 100644 icons/virus.svg diff --git a/icons/virus-off.json b/icons/virus-off.json new file mode 100644 index 000000000..453638a15 --- /dev/null +++ b/icons/virus-off.json @@ -0,0 +1,45 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Indicating no malware threats in security tools", + "Showing cleared infections in healthcare apps", + "Marking reduced infection risk in health dashboards", + "Representing blocked pathogens in science content" + ], + "tags": [ + "pathogen", + "infection", + "disease", + "illness", + "contagion", + "outbreak", + "pandemic", + "epidemic", + "covid", + "coronavirus", + "germ", + "microbe", + "microorganism", + "biology", + "medical", + "healthcare", + "malware", + "cybersecurity", + "threat", + "antivirus", + "blocked", + "removed", + "clean", + "safe", + "prevention", + "quarantine" + ], + "categories": [ + "medical", + "science", + "security" + ] +} diff --git a/icons/virus-off.svg b/icons/virus-off.svg new file mode 100644 index 000000000..d15c88563 --- /dev/null +++ b/icons/virus-off.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/virus.json b/icons/virus.json new file mode 100644 index 000000000..70037a884 --- /dev/null +++ b/icons/virus.json @@ -0,0 +1,38 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Representing viral infections in healthcare apps", + "Indicating malware threats in security tools", + "Showing disease outbreaks in public health dashboards", + "Labeling pathogens in biology or science content" + ], + "tags": [ + "pathogen", + "infection", + "disease", + "illness", + "contagion", + "outbreak", + "pandemic", + "epidemic", + "covid", + "coronavirus", + "germ", + "microbe", + "microorganism", + "biology", + "medical", + "healthcare", + "malware", + "cybersecurity", + "threat" + ], + "categories": [ + "medical", + "science", + "security" + ] +} diff --git a/icons/virus.svg b/icons/virus.svg new file mode 100644 index 000000000..401edaf71 --- /dev/null +++ b/icons/virus.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + From 20cc4c12b6c65223f5c3780ee0e6b75df0f4314d Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Thu, 3 Sep 2026 15:19:40 +0200 Subject: [PATCH 018/157] chore(copilot-reviews): Improve use-cases description. (#4558) * Add metadata information * Adjust the property name * Remove this section --------- Co-authored-by: Karsa --- .github/instructions/metadata.instructions.md | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/.github/instructions/metadata.instructions.md b/.github/instructions/metadata.instructions.md index 05aacbae1..dbde95726 100644 --- a/.github/instructions/metadata.instructions.md +++ b/.github/instructions/metadata.instructions.md @@ -15,6 +15,60 @@ The `tags` property is an array of strings that describe the icon and can be use Validate the tags against the `icon.schema.json` to ensure they are correctly formatted and adhere to the defined structure. Provide tag suggestions based on the name of the icon and the use cases provided in the PR description. Use the existing tags in the repository as a reference for consistency and to avoid duplicates. Don't suggest words like: 'icon' and preferably use single words. Tags should always be in lowercase, and may also contain spaces (e.g. `magnifying glass`). The name of icon should not be included in the tags, as it is already specified. -# Categories +## Categories The `categories` property is an array of strings that specify the categories to which the icon belongs, such as "devices", "interface", "media", etc. See the `categories` property in the `icon.schema.json` for more details on the allowed values. The categories should be chosen based on the use cases provided in the PR description and the existing categories in the repository. The categories should be relevant to the icon and should help users find the icon when searching for specific types of icons. The name of icon should not be included in the categories, as it is already specified. Suggest categories based on the name of the icon and the use cases provided in the PR description. Use the existing categories in the repository as a reference for consistency and to avoid duplicates. Categories should always be in lowercase and should not contain spaces. + +## Use Cases + +The `use-cases` property is an array of strings that describe the specific scenarios in which the icon would be used. Each use case should be concise and clearly convey the context in which the icon is applicable. Use the existing use cases in the repository as a reference for consistency and to avoid duplicates. + +### Writing icon use-cases + +A use-case tells a reader **where and why an icon would be used in a real interface**. Each entry should let someone who has never seen the icon understand what it's for. + +### Format + +- Write each use-case as a short phrase, not a sentence. Start with a present participle verb: *Representing…*, *Indicating…*, *Marking…*, *Showing…*, *Confirming…*, *Toggling…*, *Categorizing…*, *Searching…*. +- Keep it to roughly 4–12 words. One clear idea per entry. +- No trailing period. No leading bullet, number, or dash (the surrounding format supplies that). +- Give each icon 1–4 use-cases, ordered most-common first. Prefer fewer strong entries over many weak or repetitive ones. + +### Voice + +- Write from the interface's perspective, describing the function: "Indicating a low battery charge level" — not the requester's story ("I need an icon that shows…"). +- Name the concrete context where useful: *in smart home apps*, *in navigation apps*, *in text editors*, *on maps*. Context is what makes a use-case self-explanatory. +- Be neutral and factual. No first person, no marketing adjectives ("perfect for", "ideal", "beautiful"), no emoji. + +### What to exclude + +- **The requester's personal narrative.** "I'm building a SvelteKit UI and need…" → drop the framing, keep the function. +- **References to other issues, PRs, or icons by ID.** No "As provided in #1865", "complementary to git-branch-plus", "same as above", "see #2055". +- **Design/implementation chatter.** Bezier offsets, grid alignment, path cuts, "the icon works perfectly" — none of that is a use-case. +- **Restating the icon's name.** For `microchip`, "microchip" is not a use-case; describe what it represents ("Representing processors, chips, or embedded hardware"). +- **Links, image tags, emoji, and markdown artifacts.** +- **Meta-commentary.** "Self-explanatory", "lots and lots of use cases", "obvious :)". + +### Cross-contamination + +When a request covers several icons at once, assign each use-case only to the icon it actually describes. A bullet prefixed with another icon's name belongs to that icon, not this one. Don't let `briefcase-medical`'s meanings leak into `briefcase-business`. + +### Variants + +Related icons should get **variant-specific** wording, not one shared blurb. `battery-low` → "Indicating a low battery charge level"; `battery-full` → "…full…". `square-arrow-right-enter` → sign in / join; `-exit` → sign out / export. Resist copying the same line across a family. + +## Examples + +Good: + +- `ambulance` → "Directing users to nearby emergency services in navigation apps" +- `calendar-sync` → "Representing recurring events, promotions, or limited-time offers" +- `globe-x` → "Indicating a device or application is offline or unreachable" +- `heading-2` → "Applying a level-2 heading in text editors" + +Poor → fixed: + +- ~~"I need a firewall icon :-)"~~ → "Representing firewalls and firewall rules on cybersecurity platforms" +- ~~"As above"~~ → "Signifying a deal, agreement, or partnership" +- ~~"microchip"~~ → "Representing processors, chips, or embedded hardware" +- ~~"Same use cases as the other currency symbols, except Turkish lira"~~ → "Displaying prices or amounts in Turkish lira" From a744a40e2303e54196baf7e88c8bdb736ef5de16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jay=20=E2=99=A0=EF=B8=8F?= <65413190+jaynewey@users.noreply.github.com> Date: Thu, 3 Sep 2026 15:34:01 +0100 Subject: [PATCH 019/157] feat(icons): add `can-soda` icon (#4718) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(icons): add `can-soda` icon * Update icons/can-soda.svg Co-authored-by: Karsa * fix(icons): fix my own gap issues 😅 --------- Co-authored-by: Karsa --- icons/can-soda.json | 25 +++++++++++++++++++++++++ icons/can-soda.svg | 18 ++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 icons/can-soda.json create mode 100644 icons/can-soda.svg diff --git a/icons/can-soda.json b/icons/can-soda.json new file mode 100644 index 000000000..6568e648f --- /dev/null +++ b/icons/can-soda.json @@ -0,0 +1,25 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere", + "jaynewey" + ], + "use-cases": [ + "representing canned drinks like soda or beer", + "representing canned foods like soup or legumes", + "representing litter/waste" + ], + "tags": [ + "beverage", + "drink", + "food", + "soda", + "tin", + "beer", + "alcohol", + "waste" + ], + "categories": [ + "food-beverage" + ] +} diff --git a/icons/can-soda.svg b/icons/can-soda.svg new file mode 100644 index 000000000..a28e13766 --- /dev/null +++ b/icons/can-soda.svg @@ -0,0 +1,18 @@ + + + + + + + + From 3ccaafa69bdb9aa79c1336efdcf203e3ed5697eb Mon Sep 17 00:00:00 2001 From: avrl <79330197+viralcodex@users.noreply.github.com> Date: Thu, 3 Sep 2026 20:05:59 +0530 Subject: [PATCH 020/157] feat(icons): added `square-alert` Icon (#3687) * Add square alert icon Introduces a new 'square-alert' icon with associated metadata and SVG file. The icon represents alert or warning notifications within a square shape. * Reorder elements in square-alert.svg Moved the element before the elements to adjust the SVG structure. No visual changes to the icon. * Add newline at end of square-alert.json linting fix * changed path to line * Add missing contributors to square-alert.json * Update square-alert.json * docs(square-alert): add use cases * refactor(icons): rename square-alert to square-exclamation-point * fix: review comments * Update icons/square-exclamation-point.json * Update square-exclamation-point.json --------- Co-authored-by: Eric Fennis Co-authored-by: Karsa --- icons/square-exclamation-point.json | 31 +++++++++++++++++++++++++++++ icons/square-exclamation-point.svg | 15 ++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 icons/square-exclamation-point.json create mode 100644 icons/square-exclamation-point.svg diff --git a/icons/square-exclamation-point.json b/icons/square-exclamation-point.json new file mode 100644 index 000000000..70f983912 --- /dev/null +++ b/icons/square-exclamation-point.json @@ -0,0 +1,31 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "viralcodex", + "colebemis", + "ericfennis" + ], + "use-cases": [ + "Indicating application or system warnings or alerts", + "Highlighting important notifications that require user attention", + "Representing caution states for different components or elements", + "Marking validation errors, invalid input or configuration issues", + "Displaying diagnostic or troubleshooting information" + ], + "tags": [ + "warning", + "alert", + "danger", + "exclamation mark", + "rectangle", + "square", + "notification", + "attention", + "important", + "caution" + ], + "categories": [ + "notifications", + "shapes" + ] +} diff --git a/icons/square-exclamation-point.svg b/icons/square-exclamation-point.svg new file mode 100644 index 000000000..9055762fa --- /dev/null +++ b/icons/square-exclamation-point.svg @@ -0,0 +1,15 @@ + + + + + From ecccc7b96359ab6fe79aeecdbe31e52147d6e2ef Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Thu, 3 Sep 2026 17:18:14 +0200 Subject: [PATCH 021/157] Add label for lab icons (#4793) --- .github/labeler.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/labeler.yml b/.github/labeler.yml index aeb274b50..39a681277 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -30,6 +30,11 @@ - any-glob-to-any-file: - 'icons/*.svg' +🔬 Lab icon: + - changed-files: + - any-glob-to-any-file: + - 'lab/*.svg' + # For changes in the lucide package 🧳 lucide package: - changed-files: From b1a94838ac536c1cef5aaa802f78c07b30cac913 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 3 Sep 2026 17:30:23 +0200 Subject: [PATCH 022/157] Update bottle-toothbrush-comb.svg (#4756) --- lab/bottle-toothbrush-comb.svg | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lab/bottle-toothbrush-comb.svg b/lab/bottle-toothbrush-comb.svg index dfed37c74..c6728842f 100644 --- a/lab/bottle-toothbrush-comb.svg +++ b/lab/bottle-toothbrush-comb.svg @@ -9,13 +9,13 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + - + + + + From 6f56b8f1f665ce64c41506033b66ca67e2bc7724 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 4 Sep 2026 10:18:54 +0200 Subject: [PATCH 023/157] Create automatic release flow for lucide lab (#4792) --- .github/workflows/lucide-lab.yml | 1 + .github/workflows/release-lab.yml | 146 ++++++++++++++++++++++++++++++ packages/lab/package.json | 3 +- 3 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release-lab.yml diff --git a/.github/workflows/lucide-lab.yml b/.github/workflows/lucide-lab.yml index 323cb3595..67c7e7e20 100644 --- a/.github/workflows/lucide-lab.yml +++ b/.github/workflows/lucide-lab.yml @@ -3,6 +3,7 @@ name: Lucide Lab checks on: pull_request: paths: + - lab/** - packages/lab/** - packages/shared/** - tools/build-icons/** diff --git a/.github/workflows/release-lab.yml b/.github/workflows/release-lab.yml new file mode 100644 index 000000000..dfc7970b4 --- /dev/null +++ b/.github/workflows/release-lab.yml @@ -0,0 +1,146 @@ +name: Release @lucide/lab + +on: + push: + branches: + - main + paths: + - lab/**/*.svg + + workflow_dispatch: + inputs: + release-type: + description: Release type + required: true + default: 'minor' + type: choice + options: + - patch + - minor + - major + +permissions: {} + +jobs: + create-release: + if: github.repository == 'lucide-icons/lucide' + runs-on: ubuntu-latest + permissions: + contents: write # Required to create the release and tag + outputs: + VERSION: ${{ steps.new-version.outputs.NEW_VERSION }} + SHOULD_RELEASE: ${{ steps.release-notes.outputs.SHOULD_RELEASE }} + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + fetch-depth: 0 # Required to diff the lab icons against the previous tag + + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Get latest tag + id: latest-tag + run: | + LATEST_TAG=$(git tag --list '@lucide/lab@*' --sort=-v:refname | head -n 1) + + if [ -z "$LATEST_TAG" ]; then + echo "::error::No @lucide/lab@* tag found to release from." + exit 1 + fi + + echo "Latest tag: $LATEST_TAG" + echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_OUTPUT + + - name: Create new version + id: new-version + run: | + NEW_VERSION=$(pnpm semver "${LATEST_TAG#@lucide/lab@}" -i "$RELEASE_TYPE") + + echo "New version: $NEW_VERSION" + echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT + env: + LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} + RELEASE_TYPE: ${{ inputs.release-type || 'minor' }} + + - name: Generate release notes + id: release-notes + run: | + NEW_TAG="@lucide/lab@$NEW_VERSION" + + ADDED=$(git diff --name-only --diff-filter=A "$LATEST_TAG" HEAD -- 'lab/*.svg' \ + | xargs -r -n1 basename | sed 's/\.svg$//' | sort) + REMOVED=$(git diff --name-only --diff-filter=D "$LATEST_TAG" HEAD -- 'lab/*.svg' \ + | xargs -r -n1 basename | sed 's/\.svg$//' | sort) + + if [ -z "$ADDED" ] && [ "$EVENT_NAME" != 'workflow_dispatch' ]; then + echo "::notice::No icons were added to ./lab since $LATEST_TAG, skipping release." + echo "SHOULD_RELEASE=false" >> $GITHUB_OUTPUT + exit 0 + fi + + { + if [ -n "$ADDED" ]; then + printf '## New icons\n\n' + printf '%s\n' "$ADDED" | sed 's|.*|- `&`|' + printf '\n' + fi + + if [ -n "$REMOVED" ]; then + printf '## Removed icons\n\nThese graduated to the core icon set.\n\n' + printf '%s\n' "$REMOVED" | sed 's|.*|- `&`|' + printf '\n' + fi + + printf '**Full changelog**: https://github.com/lucide-icons/lucide/compare/%s...%s\n' "$LATEST_TAG" "$NEW_TAG" + } > lab-release-notes.md + + cat lab-release-notes.md + echo "SHOULD_RELEASE=true" >> $GITHUB_OUTPUT + env: + LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} + NEW_VERSION: ${{ steps.new-version.outputs.NEW_VERSION }} + EVENT_NAME: ${{ github.event_name }} + + - name: Create Release + if: steps.release-notes.outputs.SHOULD_RELEASE == 'true' + uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 + with: + tag_name: '@lucide/lab@${{ steps.new-version.outputs.NEW_VERSION }}' + name: '@lucide/lab@${{ steps.new-version.outputs.NEW_VERSION }}' + body_path: lab-release-notes.md + make_latest: 'false' # Never displace the core icon release as "Latest" + + publish: + if: github.repository == 'lucide-icons/lucide' && needs.create-release.outputs.SHOULD_RELEASE == 'true' + runs-on: ubuntu-latest + needs: create-release + permissions: + id-token: write # Required for OIDC (npm provenance) + contents: read + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Set new version + run: pnpm version ${{ needs.create-release.outputs.VERSION }} --filter @lucide/lab --fail-if-no-match --no-git-tag-version + + - name: Build + run: pnpm --filter @lucide/lab build + + - name: Publish + run: pnpm --filter @lucide/lab publish --access public --no-git-checks --ignore-scripts --tag latest + env: + NPM_CONFIG_PROVENANCE: true diff --git a/packages/lab/package.json b/packages/lab/package.json index 0a69a9d0f..86740c284 100644 --- a/packages/lab/package.json +++ b/packages/lab/package.json @@ -36,8 +36,7 @@ "build:icons": "build-icons --input=../../lab --output=./src --templateSrc=./scripts/exportTemplate.mts --iconFileExtension=.ts --exportModuleNameCasing=camel --renderUniqueKey --exportFileName=index.ts", "build:lib": "node ./scripts/buildLib.mts", "build:bundle": "rollup -c rollup.config.mjs", - "clean": "rm -f src/icons/*.ts && rm -rf dist && rm -rf icons && rm -f icon-nodes.json", - "version": "pnpm version --git-tag-version=false" + "clean": "rm -f src/icons/*.ts && rm -rf dist && rm -rf icons && rm -f icon-nodes.json" }, "devDependencies": { "@lucide/build-icons": "workspace:*", From 7f30808e308ec09f70bc33ca080130b4f90333e9 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Fri, 4 Sep 2026 12:06:01 +0200 Subject: [PATCH 024/157] Updated icons/trash.svg (#3141) --- icons/trash-2.json | 20 -------------------- icons/trash-2.svg | 17 ----------------- icons/trash.json | 7 +++++++ icons/trash.svg | 2 ++ 4 files changed, 9 insertions(+), 37 deletions(-) delete mode 100644 icons/trash-2.json delete mode 100644 icons/trash-2.svg diff --git a/icons/trash-2.json b/icons/trash-2.json deleted file mode 100644 index c3c518011..000000000 --- a/icons/trash-2.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "../icon.schema.json", - "contributors": [ - "colebemis", - "csandman", - "ericfennis", - "karsa-mistmere" - ], - "use-cases": [], - "tags": [ - "garbage", - "delete", - "remove", - "bin" - ], - "categories": [ - "files", - "mail" - ] -} diff --git a/icons/trash-2.svg b/icons/trash-2.svg deleted file mode 100644 index e8cb0edf3..000000000 --- a/icons/trash-2.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/icons/trash.json b/icons/trash.json index 83c6bfbc9..ad069cd50 100644 --- a/icons/trash.json +++ b/icons/trash.json @@ -26,5 +26,12 @@ "categories": [ "files", "mail" + ], + "aliases": [ + { + "name": "trash-2", + "deprecated": true, + "deprecationReason": "alias.duplicate" + } ] } diff --git a/icons/trash.svg b/icons/trash.svg index 690270a5f..e8cb0edf3 100644 --- a/icons/trash.svg +++ b/icons/trash.svg @@ -9,6 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > + + From bca7e75a816dcf1e75e8feb5a3198a68cbb8a052 Mon Sep 17 00:00:00 2001 From: Karsa Date: Fri, 4 Sep 2026 12:07:34 +0200 Subject: [PATCH 025/157] feat(icons): changed `leaf` icon (#4801) --- icons/leaf.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icons/leaf.svg b/icons/leaf.svg index f322ef022..8012589aa 100644 --- a/icons/leaf.svg +++ b/icons/leaf.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + From 713b1fcd2512f6e6864fcd67d72dbba4cbb8a550 Mon Sep 17 00:00:00 2001 From: Karsa Date: Fri, 4 Sep 2026 12:24:52 +0200 Subject: [PATCH 026/157] feat(docs): added better contribution guide (#4746) * Add metadata information * improve contribution * feat(docs): added new contribution guide * feat(docs): minor linting fix * feat(docs): update dead link * feat(docs): change layout, some stylistic change, et cetera * feat(docs): alter metadata example layout * feat(docs): update titles, split use case & tag guide * feat(docs): finetune some design guide images & make * feat(docs): finetune some design guide images & add icons to use case guide * feat(docs): added ux writing instructions & proofread markdowns to match these guidelines * feat(docs): updated design language / specification descriptions to better distinguish what is what * feat(docs): updated design language / specification descriptions to better distinguish what is what * feat(docs): changed some languages again * fix(icons): add design principle do/dont about diagonal lines * fix(icons): decrease blurriness of ideal pixel perfection pixel preview * fix(icons): remove color from pixel perfection previews * fix(icons): remove color from pixel perfection previews * fix(icons): reword symmerical icon rule * fix(icons): fix calendar design in density rule image * fix(icons): slightly adjust centered stroke rule text * Rename 'useCases' property to 'use-cases' Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update allowed SVG elements in code conventions Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/instructions/metadata.instructions.md | 10 + .../instructions/ux-writing.instructions.md | 587 ++++++++++++++++++ .gitignore | 2 +- docs/.vitepress/config.ts | 4 +- docs/.vitepress/markdown/example.ts | 204 ++++++ docs/.vitepress/sidebar/resources.ts | 78 ++- docs/.vitepress/theme/style.css | 137 ++++ docs/community.md | 2 +- docs/contribute/affinity-designer-guide.md | 18 - docs/contribute/figma-guide.md | 51 -- docs/contribute/icon-design-guide.md | 199 ------ .../icons/affinity-designer-guide.md | 19 + docs/contribute/icons/code-conventions.md | 91 +++ docs/contribute/icons/design-principles.md | 368 +++++++++++ docs/contribute/icons/figma-guide.md | 60 ++ docs/contribute/icons/illustrator-guide.md | 27 + docs/contribute/icons/index.md | 35 ++ docs/contribute/icons/inkscape-guide.md | 42 ++ .../icons/metadata-conventions/index.md | 169 +++++ .../icons/metadata-conventions/tag-guide.md | 131 ++++ .../metadata-conventions/use-case-guide.md | 142 +++++ docs/contribute/icons/naming-conventions.md | 238 +++++++ docs/contribute/icons/specification.md | 95 +++ docs/contribute/illustrator-guide.md | 31 - docs/contribute/inkscape-guide.md | 41 -- .../guide/angular/advanced/with-lucide-lab.md | 2 +- docs/images/1px-border-radius.svg | 167 +++-- docs/images/1px-element-spacing.svg | 69 ++ docs/images/1px-inner-gap.svg | 5 + docs/images/1px-inner-spacing.svg | 86 +++ docs/images/1px-padding-violation.svg | 67 ++ docs/images/1px-padding.svg | 124 ++-- docs/images/24px-24px-violation.svg | 9 + docs/images/24px-24px.svg | 76 +-- docs/images/2px-border-radius.svg | 129 ++-- .../images/2px-element-spacing-abrupt-cut.svg | 76 ++- docs/images/2px-element-spacing-connected.svg | 68 +- docs/images/2px-element-spacing.svg | 141 ++--- docs/images/2px-inner-gap.svg | 5 + docs/images/2px-inner-spacing.svg | 86 +++ docs/images/2px-stroke-violation.svg | 60 ++ docs/images/2px-stroke.svg | 133 ++-- docs/images/border-radius-90deg.svg | 65 ++ docs/images/border-radius-arbitrary.svg | 63 ++ docs/images/border-radius-correct.svg | 73 +++ .../border-radius-line-join-violation.svg | 65 ++ docs/images/border-radius-line-join.svg | 63 ++ docs/images/border-radius-violation.svg | 61 ++ docs/images/centered-strokes-violation.svg | 89 +++ docs/images/centered-strokes.svg | 143 ++--- docs/images/curvature-smooth.svg | 122 ++-- docs/images/curvature-uneven.svg | 148 +++-- docs/images/density-optimal.svg | 21 + docs/images/density-too-dense.svg | 29 + docs/images/established-shapes-base-do.svg | 14 + docs/images/established-shapes-base-dont.svg | 14 + .../established-shapes-consistency-do.svg | 14 + .../established-shapes-consistency-dont.svg | 13 + docs/images/established-shapes-sub-do.svg | 11 + docs/images/established-shapes-sub-dont.svg | 12 + docs/images/pixel-perfection-bad.svg | 127 ++-- docs/images/pixel-perfection-diagonals-do.svg | 227 +++++++ .../pixel-perfection-diagonals-dont.svg | 234 +++++++ docs/images/pixel-perfection-ideal.svg | 119 ++-- .../images/pixel-perfection-subelement-do.svg | 67 ++ .../pixel-perfection-subelement-dont.svg | 73 +++ docs/images/round-caps-violation.svg | 70 +++ docs/images/round-caps.svg | 139 ++--- docs/images/round-joints-violation.svg | 73 +++ docs/images/round-joints.svg | 139 ++--- docs/images/visual-weight-consistent.svg | 12 + docs/images/visual-weight-uneven.svg | 20 + docs/images/visually-centered-bad.svg | 70 --- docs/images/visually-centered-do.svg | 57 ++ docs/images/visually-centered-dont.svg | 57 ++ .../visually-centered-symmetrical-do.svg | 58 ++ .../visually-centered-symmetrical-dont.svg | 57 ++ docs/images/visually-centered.svg | 69 -- docs/vercel.json | 25 + package.json | 1 + 80 files changed, 5398 insertions(+), 1400 deletions(-) create mode 100644 .github/instructions/ux-writing.instructions.md create mode 100644 docs/.vitepress/markdown/example.ts delete mode 100644 docs/contribute/affinity-designer-guide.md delete mode 100644 docs/contribute/figma-guide.md delete mode 100644 docs/contribute/icon-design-guide.md create mode 100644 docs/contribute/icons/affinity-designer-guide.md create mode 100644 docs/contribute/icons/code-conventions.md create mode 100644 docs/contribute/icons/design-principles.md create mode 100644 docs/contribute/icons/figma-guide.md create mode 100644 docs/contribute/icons/illustrator-guide.md create mode 100644 docs/contribute/icons/index.md create mode 100644 docs/contribute/icons/inkscape-guide.md create mode 100644 docs/contribute/icons/metadata-conventions/index.md create mode 100644 docs/contribute/icons/metadata-conventions/tag-guide.md create mode 100644 docs/contribute/icons/metadata-conventions/use-case-guide.md create mode 100644 docs/contribute/icons/naming-conventions.md create mode 100644 docs/contribute/icons/specification.md delete mode 100644 docs/contribute/illustrator-guide.md delete mode 100644 docs/contribute/inkscape-guide.md create mode 100644 docs/images/1px-element-spacing.svg create mode 100644 docs/images/1px-inner-gap.svg create mode 100644 docs/images/1px-inner-spacing.svg create mode 100644 docs/images/1px-padding-violation.svg create mode 100644 docs/images/24px-24px-violation.svg create mode 100644 docs/images/2px-inner-gap.svg create mode 100644 docs/images/2px-inner-spacing.svg create mode 100644 docs/images/2px-stroke-violation.svg create mode 100644 docs/images/border-radius-90deg.svg create mode 100644 docs/images/border-radius-arbitrary.svg create mode 100644 docs/images/border-radius-correct.svg create mode 100644 docs/images/border-radius-line-join-violation.svg create mode 100644 docs/images/border-radius-line-join.svg create mode 100644 docs/images/border-radius-violation.svg create mode 100644 docs/images/centered-strokes-violation.svg create mode 100644 docs/images/density-optimal.svg create mode 100644 docs/images/density-too-dense.svg create mode 100644 docs/images/established-shapes-base-do.svg create mode 100644 docs/images/established-shapes-base-dont.svg create mode 100644 docs/images/established-shapes-consistency-do.svg create mode 100644 docs/images/established-shapes-consistency-dont.svg create mode 100644 docs/images/established-shapes-sub-do.svg create mode 100644 docs/images/established-shapes-sub-dont.svg create mode 100644 docs/images/pixel-perfection-diagonals-do.svg create mode 100644 docs/images/pixel-perfection-diagonals-dont.svg create mode 100644 docs/images/pixel-perfection-subelement-do.svg create mode 100644 docs/images/pixel-perfection-subelement-dont.svg create mode 100644 docs/images/round-caps-violation.svg create mode 100644 docs/images/round-joints-violation.svg create mode 100644 docs/images/visual-weight-consistent.svg create mode 100644 docs/images/visual-weight-uneven.svg delete mode 100644 docs/images/visually-centered-bad.svg create mode 100644 docs/images/visually-centered-do.svg create mode 100644 docs/images/visually-centered-dont.svg create mode 100644 docs/images/visually-centered-symmetrical-do.svg create mode 100644 docs/images/visually-centered-symmetrical-dont.svg delete mode 100644 docs/images/visually-centered.svg diff --git a/.github/instructions/metadata.instructions.md b/.github/instructions/metadata.instructions.md index dbde95726..9dc33d8b6 100644 --- a/.github/instructions/metadata.instructions.md +++ b/.github/instructions/metadata.instructions.md @@ -57,6 +57,16 @@ When a request covers several icons at once, assign each use-case only to the ic Related icons should get **variant-specific** wording, not one shared blurb. `battery-low` → "Indicating a low battery charge level"; `battery-full` → "…full…". `square-arrow-right-enter` → sign in / join; `-exit` → sign out / export. Resist copying the same line across a family. +### Deriving from source material + +When mining descriptions, comments, or linked issues: + +- Prefer the **stated purpose** over the backstory. Extract the function, discard the anecdote. +- If a source lists genuinely distinct uses, keep them as separate entries; if it repeats one idea five ways, collapse to one. +- Merge an intro line with its bullets ("To represent:" + "pottery" → "Representing pottery"). +- If the only signal is noise (a name restatement, a link, "thanks!"), leave the icon without a use-case rather than inventing one. +- Never fabricate a use-case that isn't supported by the icon's meaning or the source. + ## Examples Good: diff --git a/.github/instructions/ux-writing.instructions.md b/.github/instructions/ux-writing.instructions.md new file mode 100644 index 000000000..0e76c8b6b --- /dev/null +++ b/.github/instructions/ux-writing.instructions.md @@ -0,0 +1,587 @@ +--- +applyTo: "docs/*.md" +--- +# UX writing guidelines + +Follow these guidelines when writing or editing Lucide documentation, especially Markdown files. + +Write for people who are trying to understand a concept, follow a specification, or complete a task. Prioritize clarity, precision, and scannability over personality or decorative prose. + +## Be direct and concise + +State the important information first. Remove words that do not add meaning. + +Prefer short sentences and paragraphs, but do not sacrifice precision just to make text shorter. + +**Do:** + +> Icons must use a 24 × 24 pixel canvas. + +**Don't:** + +> When creating a new icon, you should make sure that the canvas you're working with has dimensions of 24 × 24 pixels. + +Avoid unnecessary introductions such as: + +- "It's important to note that…" +- "Keep in mind that…" +- "As you can see…" +- "In order to…" +- "It should be noted that…" + +State the information directly instead. + +## Put the rule before the explanation + +When documenting a requirement or recommendation, state it before explaining why it exists. + +**Do:** + +> Keep at least 1 pixel of space between unrelated elements. This prevents shapes from visually merging at small sizes. + +**Don't:** + +> Because shapes can visually merge at small sizes, it's important to make sure that unrelated elements have enough space between them. + +This makes documentation easier to scan and makes normative requirements easier to identify. + +## Explain the reason when it adds value + +Explain *why* a rule exists when the reasoning helps contributors apply it to situations that are not explicitly documented. + +Do not merely restate the rule. + +**Do:** + +> Avoid simulated fills. They don't scale consistently with the rest of the icon set. + +**Don't:** + +> Avoid simulated fills because simulated fills should not be used. + +Reasoning is particularly useful for design rules where contributors may need to evaluate unusual cases. + +## Use scannable structure + +Assume readers will scan the page before reading it in detail. + +Use: + +- descriptive headings +- short paragraphs +- lists for sets of related items +- examples for rules that benefit from demonstration +- **bold** for important terms or short emphasis +- code formatting for filenames, properties, commands, values, and identifiers + +Avoid long uninterrupted blocks of text. + +Headings should communicate the subject or rule without requiring the surrounding text for context. + +**Do:** + +> ## Keep 1 pixel of safe space + +**Don't:** + +> ## Spacing + +## Use sentence case + +Use sentence case for: + +- page titles +- headings +- table headings +- labels +- example captions + +Capitalize proper nouns and branded terms normally. + +**Do:** + +> ## Use consistent corner radii + +**Don't:** + +> ## Use Consistent Corner Radii + +## Address the reader directly + +Use **you** and **your** when referring to something the reader does. + +**Do:** + +> If your icon contains overlapping shapes, simplify the hidden geometry. + +Avoid referring to the reader as "the user," "the contributor," or other third-person terms when direct language is more natural. + +However, prefer an imperative when the subject is obvious. + +**Prefer:** + +> Keep related elements visually grouped. + +**Over:** + +> You should keep related elements visually grouped. + +## Use "we" only when it means the Lucide project or maintainers + +First-person plural is acceptable when describing an intentional project decision, convention, or policy. + +**Do:** + +> We use `kebab-case` for icon names. + +> We generally avoid adding brand logos to Lucide. + +Do not use "we" merely to make documentation conversational. + +**Prefer:** + +> Icons use a 2 pixel stroke. + +**Over:** + +> We use a 2 pixel stroke for our icons. + +## Use normative language consistently + +Use specific language to communicate how strictly a rule applies. + +- **must** — required; violating this is not acceptable +- **must not** — prohibited +- **should** — recommended; exceptions may be appropriate +- **should not** — discouraged; exceptions may be appropriate +- **can** — possible or permitted +- **may** — optional or dependent on context + +Do not use **should** when something is actually required. + +**Do:** + +> Icons must use a 24 × 24 pixel canvas. + +**Don't:** + +> Icons should use a 24 × 24 pixel canvas. + +Avoid vague substitutes such as "ideally," "normally," or "preferably" when a more precise normative term applies. + +## Prefer active voice + +Use active voice unless passive voice makes the subject clearer or avoids unnecessary repetition. + +**Do:** + +> Align nodes to the pixel grid. + +**Don't:** + +> Nodes should be aligned to the pixel grid. + +Passive voice is acceptable when the actor is irrelevant. + +> Deprecated icons are removed in major releases. + +## Use positive instructions when possible + +Tell readers what to do rather than only what not to do. + +**Do:** + +> Use a single continuous path when the elements form one continuous shape. + +**Less useful:** + +> Don't split continuous shapes into unnecessary paths. + +Use negative instructions when the prohibition itself is important. + +> Don't use simulated fills. + +## Be precise about consequences + +When explaining why something should or should not be done, describe the actual consequence rather than using vague warnings. + +**Do:** + +> Keep unrelated elements at least 2 pixels apart. Smaller gaps can disappear when the icon is rendered at small sizes. + +**Don't:** + +> Be careful when placing elements too close together. + +Avoid language that exaggerates consequences or attempts to influence a contributor's decision emotionally. + +## Prefer concrete language + +Use specific terms instead of vague references. + +**Do:** + +> The two endpoints must remain inside the 1 pixel safe zone. + +**Don't:** + +> These should stay within the appropriate area. + +Avoid ambiguous references such as: + +- this +- that +- it +- things +- stuff +- appropriate +- proper +- correct + +when the intended subject can be named directly. + +## Introduce terminology before relying on it + +Define Lucide-specific or technical terms when readers may not already know them. + +Once defined, use the same term consistently. + +**Do:** + +> The **safe zone** is the 1 pixel area between the icon artwork and the canvas boundary. + +Do not alternate between different terms for the same concept unless the distinction is intentional. + +For example, don't alternate between "safe zone," "padding," and "margin" if they refer to the same rule. + +## Use abbreviations sparingly + +Spell out uncommon abbreviations on first use. + +> Scalable Vector Graphics (SVG) + +Common technical abbreviations such as HTML, CSS, SVG, API, and URL do not need to be expanded when the intended audience can reasonably be expected to know them. + +Avoid Latin abbreviations such as: + +- e.g. +- i.e. +- etc. + +Prefer: + +- for example +- that is +- and so on + +## Use examples deliberately + +Use examples when they clarify how to apply a rule. + +Keep examples focused on the rule being demonstrated. Avoid introducing unrelated differences that make the comparison harder to understand. + +When contrasting examples, use **Do** and **Don't** consistently. + +**Do:** + +> Use one path for a continuous outline. + +**Don't:** + +> Split a continuous outline into several overlapping paths. + +The explanatory text should describe the principle, not merely narrate what is visible in the example. + +## Use links descriptively + +Link text should describe the destination or concept. + +**Do:** + +> See the [Icon Design Specification](./specification) for exact dimensions and spacing requirements. + +**Don't:** + +> For more information, [click here](./specification). + +Avoid generic link text such as: + +- click here +- here +- this page +- learn more + +when a descriptive label is possible. + +## Avoid unnecessary repetition + +Do not repeat information already established by a heading, example, or immediately preceding sentence. + +**Prefer:** + +> ## Keep 1 pixel of safe space +> +> Keep all artwork within the 22 × 22 pixel live area. + +**Over:** + +> ## Keep 1 pixel of safe space +> +> When designing an icon, you should keep 1 pixel of safe space around the icon. + +Cross-reference another section instead of duplicating detailed rules that already have a canonical explanation. + +## Use contractions in prose + +Use natural contractions such as: + +- don't +- can't +- isn't +- it's +- you'll + +They make explanatory prose less formal and easier to scan. + +Use uncontracted forms when deliberate emphasis is useful. + +> Do not change existing icon geometry solely to reduce the number of SVG nodes. + +Normative statements using **must not** should not be contracted. + +## Use the serial comma + +Use the serial (Oxford) comma in lists of three or more items. + +**Do:** + +> Check the icon's size, stroke width, and spacing. + +**Don't:** + +> Check the icon's size, stroke width and spacing. + +## Use punctuation normally in prose + +Use periods for complete sentences. + +Periods may be omitted from: + +- headings +- short labels +- short list items that are not complete sentences +- captions consisting only of a short phrase + +Be consistent within a list. + +If list items are complete sentences, end them with periods. If they are fragments, generally omit periods. + +## Skip colons in headings + +Do not end headings with colons. + +**Do:** + +> ## Naming conventions + +**Don't:** + +> ## Naming conventions: + +Use a colon normally when introducing a list or explanation in body text. + +## Use exclamation points sparingly + +Avoid exclamation points in technical documentation unless the context genuinely calls for excitement or celebration. + +**Prefer:** + +> Your first icon is ready. + +**Over:** + +> Your first icon is ready! + +Do not use exclamation points to make instructions sound friendlier. + +## Use ellipses only when they have meaning + +Use an ellipsis (`…`) to represent omitted content or an intentionally incomplete statement. + +Do not use ellipses decoratively or to make prose sound conversational. + +When documenting literal UI text, preserve the punctuation used by the interface. + +## Use parentheses for definitions and compact clarification + +Use parentheses when they make a definition, abbreviation, or short clarification easier to understand. + +> Scalable Vector Graphics (SVG) + +Avoid using parentheses for long side notes. Rewrite important information as part of the sentence or as a separate sentence. + +## Prefer "and" over ampersands + +Use **and** in normal prose. + +**Do:** + +> Naming and metadata + +**Avoid:** + +> Naming & metadata + +Use an ampersand only when it is part of an official name, literal UI text, code, or another established term. + +## Avoid em dashes + +Prefer commas, periods, colons, or parentheses when they produce a simpler sentence. + +**Prefer:** + +> This rule has one exception: existing legacy icons. + +**Avoid:** + +> This rule has one exception — existing legacy icons. + +Use an en dash (`–`) without surrounding spaces for ranges. + +> 1–3 pixels + +> A–Z + +Do not substitute a hyphen for an en dash in prose ranges unless required by a technical syntax. + +## Use hyphens correctly + +Hyphenate compound modifiers when necessary for clarity. + +> 24 × 24 pixel canvas + +> 2-pixel-wide gap + +> pixel-aligned element + +Do not hyphenate a phrase when it functions as a verb. + +> Sign off on the design. + +> Complete the sign-off. + +Do not add hyphens mechanically when the meaning is already clear. + +## Use code formatting consistently + +Use backticks for literal technical values and identifiers, including: + +- filenames and paths +- commands +- package names +- properties and attributes +- icon names +- code values +- SVG elements and attributes + +**Do:** + +> Add `camera-off` as an alias. + +> Set `stroke-width` to `2`. + +> Edit `icons/camera.svg`. + +Do not use code formatting merely for emphasis. + +## Use bold for semantic emphasis + +Use **bold** sparingly to highlight a term or distinction that helps readers scan the page. + +Do not bold entire sentences or paragraphs. + +Prefer bold over italics for general emphasis. + +Use *italics* only when conventional, such as when referring to a term as a term or when a specific distinction benefits from it. + +## Don't use all caps for emphasis + +Do not use blocks of uppercase text for emphasis. + +**Don't:** + +> NEVER place nodes outside the canvas. + +**Do:** + +> **Never** place nodes outside the canvas. + +Preserve capitalization when documenting literal identifiers or established technical terms. + +## Keep lists parallel + +Items in the same list should use the same grammatical structure. + +**Do:** + +- Use a 24 × 24 pixel canvas +- Keep 1 pixel of safe space +- Use a 2 pixel stroke +- Align nodes to the pixel grid + +**Don't:** + +- Use a 24 × 24 pixel canvas +- Safe space should be 1 pixel +- A 2 pixel stroke +- Nodes are aligned to the pixel grid + +Parallel structure makes rules easier to scan and compare. + +## Avoid unnecessary filler and enthusiasm + +Lucide documentation should sound helpful and confident, not promotional. + +Avoid filler such as: + +- "Simply…" +- "Just…" +- "Obviously…" +- "Of course…" +- "Easy…" +- "Luckily…" +- "Don't worry…" + +These words can be inaccurate or dismissive when the task is not simple for the reader. + +Also avoid marketing language such as: + +- "powerful" +- "seamless" +- "effortless" +- "amazing" +- "best-in-class" + +unless the word communicates a specific, verifiable distinction. + +## Prefer timeless documentation + +Avoid wording tied unnecessarily to the current state of development. + +**Prefer:** + +> Lucide supports custom icon aliases. + +**Avoid:** + +> Lucide now supports custom icon aliases. + +Use time-sensitive language only when the timing itself matters, such as migration notes, deprecations, or release documentation. + +## Preserve established Lucide terminology + +When editing existing documentation, preserve established Lucide terminology and naming conventions unless there is a clear reason to change them. + +Do not invent synonyms merely to avoid repetition. Consistency is more important than stylistic variety in technical documentation. + +When terminology differs between the Lucide codebase, API, UI, and documentation, prefer the term used by the relevant canonical specification. diff --git a/.gitignore b/.gitignore index 0ad3cb108..67343f5ec 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ .next .obsidian .now -.idea +.cache .env node_modules dist diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 86ec55b0b..5ca18f1a2 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -4,6 +4,7 @@ import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-i import sidebar from './sidebar'; import snackPlayer from './markdown/snackPlayer'; import sandpackPlugin from './markdown/sandpack'; +import examplePlugin from './markdown/example'; import { readFile } from 'node:fs/promises'; import { resourcesSidebar } from './sidebar/resources'; import llmstxt from 'vitepress-plugin-llms'; @@ -31,6 +32,7 @@ export default defineConfig({ config(md) { md.use(groupIconMdPlugin); md.use(snackPlayer); + md.use(examplePlugin); md.use(sandpackPlugin, { defaultFiles: { '/styles.css': { @@ -96,7 +98,7 @@ export default defineConfig({ text: 'Resources', items: [ ...resourcesSidebar[0].items, - { text: 'Design icons', link: '/contribute/icon-design-guide' }, + { text: 'Contributing icons', link: '/contribute/icons/' }, ], }, { text: 'Packages', link: '/packages' }, diff --git a/docs/.vitepress/markdown/example.ts b/docs/.vitepress/markdown/example.ts new file mode 100644 index 000000000..a5f3c18ab --- /dev/null +++ b/docs/.vitepress/markdown/example.ts @@ -0,0 +1,204 @@ +import { readFileSync } from 'node:fs'; +import { dirname, isAbsolute, resolve } from 'node:path'; +import type MarkdownIt from 'markdown-it'; +import type { RenderRule } from 'markdown-it/lib/renderer.mjs'; +import container from 'markdown-it-container'; + +type ContainerArgs = [typeof container, string, { render: RenderRule }]; + +const parseInfo = (info: string, marker: string) => info.trim().slice(marker.length).trim(); + +const stripWrappingQuotes = (value: string) => { + const quote = value[0]; + + if ((quote === '"' || quote === "'") && value.at(-1) === quote) { + return value.slice(1, -1); + } + + return value; +}; + +const isRawSvgUrl = (url: string) => { + const [filePath, query = ''] = url.split('?'); + const params = new URLSearchParams(query); + + return filePath.endsWith('.svg') && params.get('raw') === 'true'; +}; + +const isImageUrl = (value: string) => { + const [filePath] = value.split('?'); + + return /\.(avif|gif|jpe?g|png|svg|webp)$/i.test(filePath); +}; + +const resolveMarkdownPath = (env: Record) => + (env.path as string | undefined) ?? + (env.file as string | undefined) ?? + (env.realPath as string | undefined); + +const renderImage = ( + url: string, + env: Record, + escapeAttr: (value: string) => string, +) => { + if (!isRawSvgUrl(url)) { + return ``; + } + + const [filePath] = url.split('?'); + const markdownPath = resolveMarkdownPath(env); + const resolvedPath = isAbsolute(filePath) + ? resolve(process.cwd(), `.${filePath}`) + : resolve(markdownPath ? dirname(markdownPath) : process.cwd(), filePath); + const svg = readFileSync(resolvedPath, 'utf8'); + const replacedSvg = svg + .replaceAll(/(#000(000)?|black)/g, 'currentColor') + .replaceAll(' stroke="#D8D8D9"', 'style="stroke: currentColor; stroke-opacity: .25;"'); + + return `
${replacedSvg}
`; +}; + +const renderPreview = ( + value: string, + env: Record, + escapeHtml: (value: string) => string, + renderInline: (value: string) => string, +) => { + if (isImageUrl(value)) { + return renderImage(value, env, escapeHtml); + } + + return `
${renderInline(value)}
`; +}; + +const hasTopLevelContent = (tokens: Parameters[0], index: number) => { + let guidanceDepth = 0; + + for (let i = index + 1; i < tokens.length; i += 1) { + const token = tokens[i]; + + if (token.type === 'container_example_close') { + return false; + } + + if (token.type === 'container_do_open' || token.type === 'container_dont_open') { + guidanceDepth += 1; + continue; + } + + if (token.type === 'container_do_close' || token.type === 'container_dont_close') { + guidanceDepth -= 1; + continue; + } + + if (guidanceDepth === 0) { + return true; + } + } + + return false; +}; + +const hasGuidance = (tokens: Parameters[0], index: number) => { + for (let i = index + 1; i < tokens.length; i += 1) { + const token = tokens[i]; + + if (token.type === 'container_example_close') { + return false; + } + + if (token.type === 'container_do_open' || token.type === 'container_dont_open') { + return true; + } + } + + return false; +}; + +const isFirstGuidance = (tokens: Parameters[0], index: number) => { + for (let i = index - 1; i >= 0; i -= 1) { + const token = tokens[i]; + + if (token.type === 'container_example_open') { + return true; + } + + if (token.type === 'container_do_open' || token.type === 'container_dont_open') { + return false; + } + } + + return true; +}; + +const getExampleOpenIndex = (tokens: Parameters[0], index: number) => { + for (let i = index; i >= 0; i -= 1) { + if (tokens[i].type === 'container_example_open') { + return i; + } + } + + return index; +}; + +export default function examplePlugin(md: MarkdownIt) { + const escapeHtml = md.utils.escapeHtml; + + const createExampleContainer = (): ContainerArgs => [ + container, + 'example', + { + render(tokens, idx) { + const token = tokens[idx]; + + if (token.nesting === 1) { + const hasContent = hasTopLevelContent(tokens, idx); + const guidanceOnlyClass = hasContent ? '' : ' example-block--guidance-only'; + const contentOpen = hasContent ? '
\n' : ''; + + return `
\n${contentOpen}`; + } + + const exampleOpenIndex = getExampleOpenIndex(tokens, idx); + const contentClose = + hasTopLevelContent(tokens, exampleOpenIndex) && !hasGuidance(tokens, exampleOpenIndex) + ? '
\n' + : ''; + + return `${contentClose}\n`; + }, + }, + ]; + + const createGuidanceContainer = (type: 'do' | 'dont'): ContainerArgs => [ + container, + type, + { + render(tokens, idx, _options, env) { + const token = tokens[idx]; + + if (token.nesting === 1) { + const exampleOpenIndex = getExampleOpenIndex(tokens, idx); + const preview = stripWrappingQuotes(parseInfo(token.info, type)); + const media = renderPreview(preview, env, escapeHtml, md.renderInline.bind(md)); + const contentClose = + hasTopLevelContent(tokens, exampleOpenIndex) && isFirstGuidance(tokens, idx) + ? '\n' + : ''; + const label = + type === 'do' + ? ` Do` + : ` Don't`; + + return `${contentClose}
${media}
${label}
\n`; + } + + return '
\n'; + }, + }, + ]; + + md.use(...createExampleContainer()); + md.use(...createGuidanceContainer('do')); + md.use(...createGuidanceContainer('dont')); +} diff --git a/docs/.vitepress/sidebar/resources.ts b/docs/.vitepress/sidebar/resources.ts index 649815478..6e0530ec9 100644 --- a/docs/.vitepress/sidebar/resources.ts +++ b/docs/.vitepress/sidebar/resources.ts @@ -11,41 +11,91 @@ export const resourcesSidebar = [ link: '/community', }, { - text: 'Code of Conduct', + text: 'Code of conduct', link: '/code-of-conduct', }, { text: 'Brand logo statement', link: '/brand-logo-statement', }, + ], + }, + { + text: 'Contribute', + items: [ { - text: 'Contributing', - link: '/contribute', + text: 'Contribution guide', + link: '/contribute/', }, ], }, { - text: 'Designing icons', + text: 'Contributing icons', items: [ { - text: 'Icon Design Principles', - link: '/contribute/icon-design-guide', + text: 'Getting started', + link: '/contribute/icons/', }, { - text: 'Designing in Illustrator', - link: '/contribute/illustrator-guide', + text: 'Design language', + link: '/contribute/icons/design-principles', + desc: 'Learn the visual principles that shape Lucide icons with side-by-side examples.', }, { - text: 'Designing in Inkscape', - link: '/contribute/inkscape-guide', + text: 'Design specification', + link: '/contribute/icons/specification', + desc: 'Review the technical requirements every Lucide icon must meet.', }, { - text: 'Designing in Figma', - link: '/contribute/figma-guide', + text: 'Naming conventions', + link: '/contribute/icons/naming-conventions', + desc: 'Learn how to choose clear, consistent, and predictable names for Lucide icons.', }, { - text: 'Designing in Affinity Designer', - link: '/contribute/affinity-designer-guide', + text: 'Metadata conventions', + link: '/contribute/icons/metadata-conventions', + desc: 'Learn how to write use cases, tags, categories, aliases, and other icon metadata.', + items: [ + { + text: 'Use case guide', + link: '/contribute/icons/metadata-conventions/use-case-guide', + desc: '', + }, + { + text: 'Tag guide', + link: '/contribute/icons/metadata-conventions/tag-guide', + desc: '', + }, + ], + }, + { + text: 'SVG conventions', + link: '/contribute/icons/code-conventions', + desc: 'Learn how to structure and write Lucide SVG files.', + }, + { + text: 'Design software guides', + collapsed: false, + desc: 'Learn how to design and export Lucide icons with common vector tools.', + items: [ + { + text: 'Adobe Illustrator', + link: '/contribute/icons/illustrator-guide', + desc: '', + }, + { + text: 'Inkscape', + link: '/contribute/icons/inkscape-guide', + }, + { + text: 'Figma', + link: '/contribute/icons/figma-guide', + }, + { + text: 'Affinity Designer', + link: '/contribute/icons/affinity-designer-guide', + }, + ], }, ], }, diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css index 42dc8c796..f67aed77e 100644 --- a/docs/.vitepress/theme/style.css +++ b/docs/.vitepress/theme/style.css @@ -183,3 +183,140 @@ html { background: transparent; border: none; } + +.custom-block.success { + border-color: transparent; + color: var(--vp-c-text-1); + background-color: var(--vp-c-success-soft); +} +/* Example guidance blocks */ +.example-block { + margin: 32px 0; +} + +.example-block__title { + margin: 0 0 12px; + font-size: 20px; + line-height: 1.4; +} + +.example-block > :first-child { + margin-top: 0; +} + +.example-block > :last-child { + margin-bottom: 0; +} + +.example-block__content > :first-child { + margin-top: 0; +} + +.example-block__content > :last-child { + margin-bottom: 0; +} + +.example-guidance__image { + display: block; + width: 100%; + height: auto; + background-color: var(--vp-c-bg-soft); + border-bottom: 4px solid var(--vp-c-divider); + border-top-left-radius: 16px; + border-top-right-radius: 16px; + overflow: hidden; +} + +.example-guidance__image--raw svg { + display: block; + width: 100%; + height: auto; +} + +.example-guidance__text { + display: flex; + flex-direction: column; + gap: 8px; + align-items: center; + justify-content: center; + min-height: 160px; + padding: 24px; + background-color: var(--vp-c-bg-alt); + border-bottom: 1px solid var(--vp-c-divider); + border-top-left-radius: 16px; + border-top-right-radius: 16px; + color: var(--vp-c-text-1); + font-size: 20px; + line-height: 1.4; + text-align: center; + text-wrap: balance; +} + +.example-guidance__text svg.lucide { + flex-shrink: 0; + display: inline-block; + vertical-align: -6px; +} + +.example-guidance__caption { + color: var(--vp-c-text-1); +} + +.example-guidance__caption > p { + margin: 0; + padding: 0 16px 16px; +} + +.example-guidance__label { + display: flex; + gap: 8px; + padding: 12px; + margin: 0 0 16px; + background-color: var(--example-guidance-label-bg); + color: var(--vp-c-neutral-inverse); + border-bottom-left-radius: 16px; + border-bottom-right-radius: 16px; +} + +.example-guidance--do { + --example-guidance-label-bg: var(--vp-c-success-1); +} + +.example-guidance--dont { + --example-guidance-label-bg: var(--vp-c-danger-1); +} + +@media (min-width: 640px) { + .example-block { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 24px; + } + + .example-block__content { + grid-column: 1 / -1; + } + + .example-guidance { + margin: 0; + } +} + +@media (min-width: 960px) { + .example-block { + grid-template-columns: minmax(0, 0.9fr) repeat(2, minmax(0, 1fr)); + } + + .example-block--guidance-only { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .example-block__content { + grid-column: 1; + } + + .example-guidance { + grid-column: auto; + grid-row: auto; + } +} diff --git a/docs/community.md b/docs/community.md index 7054935e4..c3f035a87 100644 --- a/docs/community.md +++ b/docs/community.md @@ -29,7 +29,7 @@ Contribution in form of code or new icons is always welcome, but you can also he ### Design New Icons -If you have design skills, consider contributing new icons to the Lucide library. Check out our [icon design guide](/contribute/icon-design-guide.md) for tips and guidelines on creating icons that fit the Lucide style. +If you have design skills, consider contributing new icons to the Lucide library. Check out our [icon design guide](/contribute/icons/design-principles.md) for tips and guidelines on creating icons that fit the Lucide style. ### Contribute Code diff --git a/docs/contribute/affinity-designer-guide.md b/docs/contribute/affinity-designer-guide.md deleted file mode 100644 index 6d17d8ef5..000000000 --- a/docs/contribute/affinity-designer-guide.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Affinity Designer Template Guide ---- - -# Affinity Designer Template Guide - -This guide describes how to use the Affinity Designer template for Lucide. - -## General Workflow - ->Attention: By default, Affinity Designer sets the unit for stroke to points. Make sure that it is set to pixel. To do this, open `Preferences > User Interface`. Under `Decimal Places for Unit Types`, uncheck `Show Lines in points`. - -1. Download and open the [Affinity Designer template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/affinity_designer.aftemplate). -2. Follow the [Icon Design Principles](icon-design-guide.md) while you use the template (to ensure integrity with the Lucide icon pack). -3. Export the file as SVG (`File > Export`). Make sure that _Rastering_ is set to _Nothing_, _Export text as curves_ is checked (hopefully, you won't need this), _Use hex colors_ is checked, and _Flatten transforms_ is checked. - - ![SVG export options in Affinity Designer](../images/affinity-designer-export-options.png?raw=true) -4. Optimize the exported SVG file further with [SVGOMG](https://jakearchibald.github.io/svgomg/) or [`svgo`](https://github.com/svg/svgo) (using `svgo --multipass exported_icon.svg`). diff --git a/docs/contribute/figma-guide.md b/docs/contribute/figma-guide.md deleted file mode 100644 index 9ce1cc4fd..000000000 --- a/docs/contribute/figma-guide.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Figma Template Guide ---- - -# Figma Template Guide - -This guide shows the steps to setup Figma for creating icons that conform to the Featherity design guidelines. - -## Setting Up The Frame -When you create a new document in Figma, the document. Each individual icon you want to create, has to be created in a separate frame. - -To do this, create a frame of 24x24 pixels. - -1. Click the frame button (or press `F`) -2. Draw a 24x24 frame (or edit it afterwards from the design window) - -In this newly created frame, you will create your icon. If you want, you can change the name of your frame to the name of the icon you are going to create. Then it will be exported as `FRAME-NAME.svg`. - -## Create Your icon -To design your icon in the style of Feather Icons, you need to adjust a few settings in Figma. - -Draw in your new frame with the pen tool. You can open it with the window at the top, or with the shortcut `P`. Once you click in your frame, you can adjust the settings for the pen tool in the design-window on the right. - -Set the following: -1. Vector - 1. Corner radius: 2px -2. Stroke - 1. Stroke width: 2px - 2. Stroke alignment: center - -![Figma Stroke Options](../images/figma-stroke-options.png) - -## Export Or Copy Your Icon -Once you have completed your icon, you can export it. - -1. Select the frame -2. Open the *Export* tab on the right -3. Set the file type as SVG -4. Press export - -Or you can also copy its source as SVG. - -1. Select the frame -2. Right click it -3. Click on *Copy/Paste as* -4. Click on *Copy as SVG* - -That's it. You just made your first icon. Congratulations! - -## Figma Tips -1. The [Icon Design Guidelines](icon-design-guide.md) dictate that you keep 2px spacing between detached elements. In Figma, you can easily check this with: `⌥` Option (MacOS) or `Alt` (Windows). diff --git a/docs/contribute/icon-design-guide.md b/docs/contribute/icon-design-guide.md deleted file mode 100644 index baf8069bb..000000000 --- a/docs/contribute/icon-design-guide.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -description: Guidelines and best practices for designing icons for the Lucide icon library. ---- -# Icon Design Guide - -Guidelines and best practices for designing icons for the Lucide icon library. - -## Icon Design Principles - -Here are rules that should be followed to keep quality and consistency when making icons for Lucide. - -### 1. Icons must be designed on a **24 by 24 pixels** canvas. - -![24px-24px](../images/24px-24px.svg?raw=true "24px-24px") - -### 2. Icons must have at least **1 pixel padding** within the canvas. - -![1px-padding](../images/1px-padding.svg?raw=true "1px-padding") - -### 3. Icons must have a **stroke width of 2 pixels**. - -![2px-stroke](../images/2px-stroke.svg?raw=true "2px-stroke") - -### 4. Icons must use **round joins**. - -![round-joints](../images/round-joints.svg?raw=true "round-joints") - -### 5. Icons must use **round caps**. - -![round-caps](../images/round-caps.svg?raw=true "round-caps") - -### 6. Icons must use **centered strokes**. - -![centered-strokes](../images/centered-strokes.svg?raw=true "centered-strokes") - -### 7. Shapes (such as rectangles) must have a **border radius of** - -#### A. **2 pixels** if they are at least 8 pixels in size - -![2px-border-radius](../images/2px-border-radius.svg?raw=true "2px-border-radius") - -#### B. **1 pixel** if they are smaller than 8 pixels in size - -![1px-border-radius](../images/1px-border-radius.svg?raw=true "1px-border-radius") - -### 8. Distinct elements must have **2 pixels of spacing between each other** - -![2px-element-spacing](../images/2px-element-spacing.svg?raw=true '2px-element-spacing') - -![2px-element-spacing-connected](../images/2px-element-spacing-connected.svg?raw=true '2px-element-spacing-connected') - -![2px-element-spacing-abrupt-cut](../images/2px-element-spacing-abrupt-cut.svg?raw=true '2px-element-spacing-abrupt-cut') - -### 9. Icons should have a similar optical volume to `circle` and `square`. - -![optical-volume-ideal](../images/optical-volume-ideal.svg?raw=true "optical-volume-ideal") - -![optical-volume-low](../images/optical-volume-low.svg?raw=true "optical-volume-low") - -![optical-volume-high](../images/optical-volume-high.svg?raw=true "optical-volume-high") - -**Tip:** place your icon next to the circle or square icon and blur them both; your icon should not feel much darker than the base shape. - -### 10. Icons should be visually centered by their center of gravity. - -![visually-centered](../images/visually-centered.svg?raw=true "visually-centered") - -![visually-centered-bad](../images/visually-centered-bad.svg?raw=true "visually-centered-bad") - -**Tip:** place your icon both above/below and next to the square or circle icon and check if it feels off center. Symmetrical icons should always be aligned to the center. - -### 11. Icons should have similar visual density and level of detail. - -![density-ideal](../images/density-ideal.svg?raw=true "density-ideal") - -![density-high](../images/density-high.svg?raw=true "density-high") - -**Tip:** try to make abstractions to dense elements. Blur your icon, and when blurred it should not feel overly dark. - -### 12. Continuous curves should join smoothly. - -![curvature-smooth](../images/curvature-smooth.svg?raw=true "curvature-smooth") - -![curvature-uneven](../images/curvature-uneven.svg?raw=true "curvature-uneven") - -**Tip:** make sure to use arcs or quadratic curves. When using cubic curves control points should have mirrored angles for smooth curves. - -### 13. Icons should aim to be pixel perfect so that they will be sharp on low DPI displays. - -![pixel-perfection-ideal](../images/pixel-perfection-ideal.svg?raw=true "pixel-perfection-ideal") - -![pixel-perfection-bad](../images/pixel-perfection-bad.svg?raw=true "pixel-perfection-bad") - -**Tip:** whenever possible align elements and arc centers to the grid. - -### 14. Icons should share common shapes - -You should try to create consistent groups and variants, reuse and try to create uniformity. -Consistency inside groups and variants has a lower priority than the rules above. - -**Example:** All `-off` icons should look the same unless it for example violates the optical volume rule. - -**Tip:** Try to not move the base shape to enable better use in a toggle context. - -## Naming conventions - -1. Icon names use lower kebab case.\ - For example: `arrow-up` instead of `Arrow Up`. - -2. Icon names use International English names, as opposed to local variants.\ - For example: `color` instead of `colour`. - -3. Icons should be named for what they depict rather than their use case or what they represent.\ - For example: `floppy-disk` instead of `save` and `circle-slash` rather than `ban`. - -4. Icons that are part of a group are named `-`.\ - For example: `badge-plus` is based on `badge`. - -5. Icon names for alternate icons should represent what makes the alternate unique instead of being numbered.\ - For example: `send-horizontal` instead of `send-2`. - -6. Names containing numerals are not allowed, unless the number itself is represented in the icon.\ - For example: `arrow-down-0-to-1` contains both numerals. - -7. Icons depicting multiple elements (e.g. a person and a circle) of different sizes must list these elements in decreasing order of size.\ - For example: if the circle is bigger, it should be `circle-person`, if the person is bigger, it should be `person-circle`. - -8. Icons depicting multiple elements of roughly equal sizes (e.g. a `ruler` and a `pencil`) must list these elements front to back in case one element is in front of the other, otherwise in English reading order (top to bottom, left to right).\ - For example: if the `pencil` is either in front of, above or left of `ruler`, it should be `pencil-ruler`, otherwise, it should be `ruler-pencil`. - -9. Icons depicting some sort of variation of an element must use the `[element]-[modifier]` naming scheme, with modifiers being applied to each element respectively.\ - For example: a dashed circle must be named `circle-dashed`, not `dashed-circle`, and in coordination with the previous guidelines, a dashed circle containing a broken heart would be named `circle-dashed-heart-broken`, due to the heart being smaller than the circle. - -## Code Conventions - -Before an icon is added to the library, we like to have readable and optimized SVG code. - -### Global Attributes - -For each icon these attributes are applied, corresponding to the above rules. - -```xml - - - -``` - -### Minify paths - -The code of paths can sometimes get quite large. To reduce file size we like to minify the code. -We recommend to use [Lucide Studio](https://studio.lucide.dev/?utm_source=lucide.dev&utm_medium=design-guide) to tidy paths to 3 points of precision. - -### Allowed elements - -SVG files may only contain simple path and shape elements, which may not have any attributes other than sizing and spacing.\ -In practice only the following elements and attributes are allowed: -* `` -* `` -* `` -* `` -* `` -* `` -* `` - -This also means that no transforms, filters, fills or explicit strokes are allowed. - -Never use [``](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use). While it may sometimes seem like a good way to optimize file size, there's no way to ensure that the referenced element IDs will be unique once the SVGs are embedded in HTML documents. - -## JSON metadata descriptor - -Each icon added must also come with a matching JSON file listing tags and categories for the icon. -Please use the following template: - -```json -{ - "$schema": "../icon.schema.json", - "contributors": [ - "github-username", - "another-github-username" - ], - "tags": [ - "foo", - "bar" - ], - "categories": [ - "devices" - ] -} -``` diff --git a/docs/contribute/icons/affinity-designer-guide.md b/docs/contribute/icons/affinity-designer-guide.md new file mode 100644 index 000000000..78aafc1c0 --- /dev/null +++ b/docs/contribute/icons/affinity-designer-guide.md @@ -0,0 +1,19 @@ +--- +description: Learn how to use the Affinity Designer template for Lucide. +--- + +# Affinity Designer template guide + +This guide explains how to use the Affinity Designer template for Lucide. + +## Workflow + +> Affinity Designer uses points for strokes by default. Change strokes to pixels before drawing. Open `Preferences > User Interface`, then under `Decimal Places for Unit Types`, uncheck `Show Lines in points`. + +1. Download and open the [Affinity Designer template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/affinity_designer.aftemplate). +2. Follow the [design language](design-principles.md) while designing your icon. +3. Export the file as SVG with `File > Export`. Set rasterization to _Nothing_, check _Export text as curves_, check _Use hex colors_, and check _Flatten transforms_. + + ![SVG export options in Affinity Designer](../../images/affinity-designer-export-options.png?raw=true) + +4. Optimize the exported SVG with [Lucide Studio](https://studio.lucide.dev/). diff --git a/docs/contribute/icons/code-conventions.md b/docs/contribute/icons/code-conventions.md new file mode 100644 index 000000000..66f95afa7 --- /dev/null +++ b/docs/contribute/icons/code-conventions.md @@ -0,0 +1,91 @@ +--- +description: Learn about allowed SVG elements and attributes, optimization, and other code conventions. +--- + +# SVG conventions + +Before you add an icon to Lucide, make sure its SVG is readable and optimized. + +## Global attributes + +Each icon uses these root SVG attributes: + +```xml + + + +``` + +## Minify paths + +Path data can get large. Minify it to keep SVG files small. + +Use [Lucide Studio](https://studio.lucide.dev/?utm_source=lucide.dev&utm_medium=design-guide) to tidy paths to 3 decimal places. + +## Allowed elements + +SVG files may only contain simple path and shape elements. These elements may only use sizing and position attributes. + +Only these elements and attributes are allowed: + +- `` +- `` +- `` +- `` +- `` +- `` +- `` + +Do not use transforms, filters, fills, or explicit stroke colors. + +Never use [``](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use). It can reduce file size, but referenced IDs may conflict when SVGs are embedded in HTML. + +## Metadata file + +Each icon must also have a matching JSON file with contributors, use cases, tags, and categories. + +See [metadata conventions](./metadata-conventions/) for details. + +## Validation + +Before submitting SVG changes, format and validate the icon files: + +```sh +pnpm run lint:icons +``` + +You can automatically format SVG files with Prettier: + +```sh +pnpm run lint:icons-fix +``` + +To check icon names, categories, metadata, and SVG structure together, run: + +```sh +pnpm run lint:icons:all +``` + +## Checklist + +Before opening a pull request, confirm that: + +- The SVG uses the standard `24 × 24` viewBox. +- The SVG uses `fill="none"` and `stroke="currentColor"`. +- Stroke width, line caps, and line joins match the Lucide defaults. +- Paths are tidy and use appropriate numeric precision. +- The SVG uses only allowed elements and attributes. +- The SVG does not use transforms, filters, fills, explicit strokes, or ``. +- The icon has a matching JSON metadata file. +- `pnpm run lint:icons` passes. +- `pnpm run lint:json:icons` passes. diff --git a/docs/contribute/icons/design-principles.md b/docs/contribute/icons/design-principles.md new file mode 100644 index 000000000..0469a1a97 --- /dev/null +++ b/docs/contribute/icons/design-principles.md @@ -0,0 +1,368 @@ +--- +description: Learn the visual principles that make Lucide icons consistent and recognizable. +--- + +# Lucide design language + +Lucide is a consistent icon set, not a collection of unrelated icons. Every icon should feel like it belongs with the rest of the library. + +This guide explains the visual rules behind Lucide icons and how to use them when designing new icons. + +For the full rule list, see the [icon design specification](./specification) + +## 1. Use a 24 × 24-pixel canvas + +Icons **must** be designed on a 24 × 24-pixel canvas. + +:::: example +::: do ../../images/24px-24px.svg?raw=true +Use a **24 × 24 pixel** canvas. +::: +::: dont ../../images/24px-24px-violation.svg?raw=true +Don't use a canvas that is larger, smaller, or not square. +::: +:::: + +## 2. Keep a 1-pixel safe zone + +Icons **must** have at least 1 pixel of padding between their strokes and the edge of the canvas. + +:::: example +::: do ../../images/1px-padding.svg?raw=true +Keep at least **1 pixel of padding** around the icon. +::: +::: dont ../../images/1px-padding-violation.svg?raw=true +Don't place strokes at the edge of the canvas. They may get clipped. +::: +:::: + +## 3. Use 2-pixel strokes + +Strokes **must** be 2 pixels wide. + +:::: example +::: do ../../images/2px-stroke.svg?raw=true +Use a **2-pixel stroke width**. +::: +::: dont ../../images/2px-stroke-violation.svg?raw=true +Don't use **thicker or thinner** strokes, or **mix stroke widths**. +::: +:::: + +## 4. Use round line joins + +Strokes **must** use round line joins. + +:::: example +::: do ../../images/round-joints.svg?raw=true +Use **round line joins**. +::: +::: dont ../../images/round-joints-violation.svg?raw=true +Don't use **miter or bevel** line joins. +::: +:::: + +::: tip +Round joins do not replace corner rounding. Most sharp corners still need a radius. +::: + +## 5. Use round line caps + +Open paths **must** use round line caps. + +:::: example +::: do ../../images/round-caps.svg?raw=true +Use **round line caps** on open paths. +::: +::: dont ../../images/round-caps-violation.svg?raw=true +Don't use **butt or square** line caps. +::: +:::: + +## 6. Use centered strokes + +Strokes **must** be centered on their paths. + +:::: example +::: do ../../images/centered-strokes.svg?raw=true +Keep strokes **centered** on their paths. +::: +::: dont ../../images/centered-strokes-violation.svg?raw=true +Don't use **inside or outside** strokes. They change how line joins appear, creating sharp inner corners. +::: +:::: + +## 7. Use consistent corner radii + +Almost every sharp corner **should** be rounded. + +:::: example +::: do ../../images/border-radius-correct.svg?raw=true +Use **rounded corners**. +::: +::: dont ../../images/border-radius-violation.svg?raw=true +Don't use **sharp corners**. +::: +:::: + +Corner radius depends on the size of the element and the angle. For 90° angles: + +:::: example +::: do ../../images/2px-border-radius.svg?raw=true +Use a **2-pixel corner radius** for shapes that are at least 8 pixels wide or tall. +::: +::: do ../../images/1px-border-radius.svg?raw=true +Use a **1-pixel corner radius** for shapes smaller than 8 pixels. +::: +:::: + +There are exceptions: + +:::: example +::: do ../../images/border-radius-90deg.svg?raw=true +Diagonal lines that meet at a right angle usually need a **2.41 pixel** radius (1+√2) to stay aligned to the grid. +::: +::: do ../../images/border-radius-arbitrary.svg?raw=true +Even **very sharp corners** usually need a small amount of rounding. The exact amount depends on the shape. +::: +:::: + +Avoid rounding corners **where multiple lines meet**. + +:::: example +::: do ../../images/border-radius-line-join.svg?raw=true +Keep corners sharp where multiple lines meet so the icon scales well. +::: +::: dont ../../images/border-radius-line-join-violation.svg?raw=true +Don't round corners where more than two lines meet. This can make the icon scale poorly. +::: +:::: + +## 8. Keep at least 2 pixels between elements + +Distinct elements **must** have at least 2 pixels of visual spacing between them. + +:::: example +::: do ../../images/2px-element-spacing.svg?raw=true +Keep **2 pixels of spacing** between distinct elements. +::: +::: dont ../../images/1px-element-spacing.svg?raw=true +Don't use gaps smaller than **2 pixels** between distinct elements. +::: +:::: + +This also applies inside shapes. Most inner gaps **should** be at least 2 pixels wide. + +:::: example +::: do ../../images/2px-inner-spacing.svg?raw=true +Keep at least **2 pixels of spacing** inside shapes. +::: +::: dont ../../images/1px-inner-spacing.svg?raw=true +Don't use inner gaps smaller than **2 pixels**. +::: +:::: + +You can test this by placing a **2-pixel-wide circle** inside your shape. + +:::: example +::: do ../../images/2px-inner-gap.svg?raw=true +If a 2-pixel-wide circle fits **without overlapping**, the gap is **wide enough**. +::: +::: dont ../../images/1px-inner-gap.svg?raw=true +If the circle **overlaps** the shape, the gap should be **wider**. +::: +:::: + +The 2 pixel spacing also applies when elements visually connect or intersect. + +:::: example +::: dont ../../images/2px-element-spacing-connected.svg?raw=true +Don't connect elements without keeping **2 pixels of spacing**. +::: +::: dont ../../images/2px-element-spacing-abrupt-cut.svg?raw=true +Don't use **abrupt cuts** where one element meets another. +::: +:::: + +## 9. Aim for consistent visual weight + +Icons should have a similar visual weight when viewed alongside each other. + +:::: example + +::: do ../../images/visual-weight-consistent.svg?raw=true +Match the visual weight of `circle` and `square`. +::: + +::: dont ../../images/visual-weight-uneven.svg?raw=true +The first icon is **too large**. The last one is **too small**. +::: + +:::: + +::: tip +The amount and placement of strokes affect how heavy an icon looks. An icon with many close strokes can look heavier than a simpler icon, even with the same stroke width. + +Place your icon next to `circle` or `square`, then blur both icons. Your icon should not look much lighter or darker than the reference icon. +::: + +## 10. Balance icons visually + +Icons should look centered and balanced within the canvas. + +:::: example +::: do ../../images/visually-centered-do.svg?raw=true +Keep your icons visually centered. +::: +::: dont ../../images/visually-centered-dont.svg?raw=true +This icon feels shifted toward the top left. +::: +:::: + +:::: example +::: do ../../images/visually-centered-symmetrical-do.svg?raw=true +Symmetrical icons should remain geometrically centered. +::: +::: dont ../../images/visually-centered-symmetrical-dont.svg?raw=true +Don't place symmetrical icons off-center for no good reason. +::: +:::: + +::: tip +Geometric centering does not always look centered. Asymmetrical shapes may need a small adjustment. + +Compare your icon with `circle` or `square` side by side and stacked vertically. If it looks shifted, adjust it. +::: + +## 11. Keep density low + +Lucide icons should have a similar level of detail. + +:::: example +::: do ../../images/density-optimal.svg?raw=true +Simplify complex subjects, but keep the features that make them recognizable. +::: +::: dont ../../images/density-too-dense.svg?raw=true +Don't add extra details that make the design feel crowded. +::: +:::: + +::: tip + +Dense areas and close strokes can make an icon look heavier than nearby icons. + +View the icon at its intended size and blur it. Areas that turn dark may have too much detail. + +::: + +## 12. Use smooth, simple curves + +Curves should be smooth and as simple as the shape allows. + +:::: example +::: do ../../images/curvature-smooth.svg?raw=true +Prefer **simple arcs** and **quadratic curves** where possible. +::: +::: dont ../../images/curvature-uneven.svg?raw=true +Don't use **uneven or unnecessarily complex** curves. +::: +:::: + +::: tip +When you need cubic Bézier curves, align their control points to avoid visible bumps. + +Avoid extra control points. They make shapes harder to edit and can create small flaws. +::: + +## 13. Design for the pixel grid + +Lucide icons should look sharp at small sizes, including on low-density displays. + +:::: example +::: do ../../images/pixel-perfection-ideal.svg?raw=true +Align coordinates, arc centers, and other geometric elements to the pixel grid when possible. +::: +::: dont ../../images/pixel-perfection-bad.svg?raw=true +Don't place geometry off the pixel grid without a visual reason. +::: +:::: + +:::: example +::: do ../../images/pixel-perfection-subelement-do.svg?raw=true +Also **align subelements** to the pixel grid. +::: +::: dont ../../images/pixel-perfection-subelement-dont.svg?raw=true +Don't place subelements off-grid. They may become blurry on low-density displays. +::: +:::: + +:::: example +::: do ../../images/pixel-perfection-diagonals-do.svg?raw=true +In general try to **align every diagonal line** to the pixel grid. +::: +::: dont ../../images/pixel-perfection-diagonals-dont.svg?raw=true +Avoid placing diagonal lines off-grid. They will appear blurry and optically wider on low-density displays. +::: +:::: + +::: tip +Pixel alignment should support the icon. Do not let it harm shape recognition, smooth curves, or visual balance. +::: + +## 14. Reuse established shapes + +When creating a variant, keep the base icon geometry unless the new idea needs a change. + +:::: example +::: do ../../images/established-shapes-base-do.svg?raw=true +Reuse existing base icons **exactly as they appear**. +::: +::: dont ../../images/established-shapes-base-dont.svg?raw=true +Don't change the **geometry, placement, or orientation** of base shapes. +::: +:::: + +Related icons should share shapes and visual patterns when possible. + +:::: example +::: do ../../images/established-shapes-sub-do.svg?raw=true +Reuse elements from existing icons **without change**. +::: +::: dont ../../images/established-shapes-sub-dont.svg?raw=true +Don't redesign **existing elements**. +::: +:::: + +Common modifiers and elements should look consistent across the library. + +:::: example +::: do ../../images/established-shapes-consistency-do.svg?raw=true +Keep add-ons consistent in **placement and size**. +::: +::: dont ../../images/established-shapes-consistency-dont.svg?raw=true +Don't use **irregular placement or size** compared to existing icons. +::: +:::: + +::: tip +Preserving the base shape makes related icons work better when users switch between them. + +Consistency with an existing icon should not override clarity, balance, or readability. Adjust the shape when needed. +::: + +## Summary + +When designing a Lucide icon: + +1. **Use a 24 × 24 pixel canvas** with at least **1 pixel of safe zone**. +2. **Use 2 pixel centered strokes** with **round caps and joins**. +3. **Round sharp corners** using consistent radii appropriate for their size and geometry. +4. **Keep at least 2 pixels of spacing** between distinct elements and, where possible, inside shapes. +5. **Match the visual weight** of `circle` and `square`. +6. **Center icons visually**, accounting for visual weight. +7. **Keep visual density low** and remove unnecessary detail. +8. **Use smooth, simple curves** without unnecessary control points. +9. **Align geometry to the pixel grid** where possible. +10. **Reuse established shapes** from existing Lucide icons. + +When these guidelines conflict, prioritize **clarity, visual balance, and consistency** with the rest of Lucide. diff --git a/docs/contribute/icons/figma-guide.md b/docs/contribute/icons/figma-guide.md new file mode 100644 index 000000000..7b8d3a884 --- /dev/null +++ b/docs/contribute/icons/figma-guide.md @@ -0,0 +1,60 @@ +--- +description: Learn how to create Lucide icons in Figma. +--- + +# Figma template guide + +This guide shows how to set up Figma for Lucide icons. + +## Set up the frame + +Create each icon in its own frame. + +Use a `24 × 24` pixel frame. + +1. Click the frame button, or press `F`. +2. Draw a `24 × 24` frame, or set the size in the right sidebar. + +Design the icon inside this frame. Name the frame after the icon so Figma exports it as `frame-name.svg`. + +## Create your icon + +Set up the stroke before drawing. + +Draw in the frame with the pen tool. Open it from the toolbar or press `P`. After you start drawing, adjust the vector settings in the right sidebar. + +Set the following: + +1. Vector + 1. Corner radius: 2px +2. Stroke + 1. Stroke width: 2px + 2. Stroke alignment: center + +![Figma stroke options](../../images/figma-stroke-options.png) + +## Export or copy your icon + +When your icon is ready, export it. + +1. Select the frame. +2. Open the _Export_ section in the right sidebar. +3. Set the file type to SVG. +4. Click _Export_. + +You can also copy the SVG source. + +1. Select the frame. +2. Right-click it. +3. Choose _Copy/Paste as_. +4. Choose _Copy as SVG_. + +You now have an SVG to prepare for contribution. + +## Optimize your icon + +You can optimize the exported SVG with [Lucide Studio](https://studio.lucide.dev/). + +## Check spacing in Figma + +The [design language](design-principles.md) requires at least 2 pixels of spacing between separate elements. In Figma, hold `Option` on macOS or `Alt` on Windows to check spacing. diff --git a/docs/contribute/icons/illustrator-guide.md b/docs/contribute/icons/illustrator-guide.md new file mode 100644 index 000000000..7f6b04ed5 --- /dev/null +++ b/docs/contribute/icons/illustrator-guide.md @@ -0,0 +1,27 @@ +--- +description: Learn how to use the Adobe Illustrator template for Lucide. +--- + +# Adobe Illustrator template guide + +This guide explains how to use the Adobe Illustrator template for Lucide. + +> Templates can fall out of date. Check the [design language](design-principles.md) before you start. + +## Workflow + +The Illustrator template follows the [design language](design-principles.md). + +1. Download and open the [Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai). + +2. Remove the content from the example logo layer (`Draw`) and start drawing. + +3. Check that your icon follows the [design language](design-principles.md). + +4. Before export, remove unnecessary layers, especially `Padding` and `Grid`. + +5. Export the file with `Export > Export As...`, then save it as SVG. Use these SVG options: + + ![SVG export options in Illustrator](../../images/illustrator-svg-options.png?raw=true 'SVG export options in Illustrator') + +6. Optimize your SVG with [Lucide Studio](https://studio.lucide.dev/) diff --git a/docs/contribute/icons/index.md b/docs/contribute/icons/index.md new file mode 100644 index 000000000..0f5fb6624 --- /dev/null +++ b/docs/contribute/icons/index.md @@ -0,0 +1,35 @@ +--- +description: Guidelines and instructions for contributing icons to Lucide +--- + + + +# Designing icons for Lucide + +Every icon should feel like it belongs with the rest of Lucide. + +This guide explains how to design and prepare icons for Lucide. + +## What this guide covers + + + + + +## Use your preferred design tool + +You can design Lucide icons with any vector editor that can export SVG. + +Use these step-by-step guides for common tools: + + + + + +These guides explain how to set up your document, follow the Lucide rules, and export a usable SVG. + +Regardless of which tool you use, the same design and SVG requirements apply. diff --git a/docs/contribute/icons/inkscape-guide.md b/docs/contribute/icons/inkscape-guide.md new file mode 100644 index 000000000..95f46fc4a --- /dev/null +++ b/docs/contribute/icons/inkscape-guide.md @@ -0,0 +1,42 @@ +--- +description: Learn how to create Lucide icons in Inkscape. +--- + +# Inkscape setup guide + +This guide shows how to set up Inkscape for Lucide icons. + +## Set up the canvas + +Inkscape creates new documents with a default canvas size. Change it to `24 × 24` pixels: + +1. Open the Document Properties dialog with `File > Document Properties`. +2. On the _Page Size_ tab, under _Custom Size_, set units to `px` and set width and height to `24`. + ![Setting page size](../../images/page-size.png?raw=true 'Setting page size') +3. On the _Grid_ tab, select `Rectangular Grid` and click _New Grid_. + ![Setting grid properties](../../images/grid-1.png?raw=true 'Setting grid properties') +4. Set grid units to `px`, then set `Spacing X` and `Spacing Y` to `1`. + ![Setting grid properties](../../images/grid-2.png?raw=true 'Setting grid properties') +5. Close the Document Properties dialog. +6. To center the canvas in the viewport, select `View > Zoom > Drawing`. + +## Set up paths + +1. Create a path or shape. +2. With the path selected, press `Ctrl+Shift+F` to open the Stroke and Fill panel. + ![Stroke style properties](../../images/strokes.png?raw=true 'Setting grid properties') +3. On the _Stroke Style_ tab: + - Set stroke width to `2px`. + - Select the rounded join type. + - Select the rounded cap type. +4. For rectangles, select the rectangle and set `Rx` and `Ry` to `2px` in the toolbar. + ![Rectangle radius properties](../../images/corner-radius.png?raw=true 'Rectangle radius properties') + +## Save a file + +1. When you are ready, click _Save As_ and choose _Optimized SVG_ as the file type. + ![Save as](../../images/save-as.png?raw=true 'Save as') + +## Optimize your icon + +As a final step, optimize your SVG with [Lucide Studio](https://studio.lucide.dev/). diff --git a/docs/contribute/icons/metadata-conventions/index.md b/docs/contribute/icons/metadata-conventions/index.md new file mode 100644 index 000000000..ecab18d72 --- /dev/null +++ b/docs/contribute/icons/metadata-conventions/index.md @@ -0,0 +1,169 @@ +--- +description: Learn how to write clear and consistent metadata for Lucide icons. +--- + + + +# Metadata conventions + +Every Lucide icon has a matching JSON metadata file. Metadata credits contributors, groups icons, improves search, and explains where an icon is useful. + +Use this guide when you add a new icon or review existing metadata. + +## Metadata file location + +Each icon metadata file must live next to its SVG file in the `icons` directory. + +The JSON file must use the same base name as the SVG file: + +- `home.svg` -> `home.json` +- `arrow-up.svg` -> `arrow-up.json` +- `square-parking.svg` -> `square-parking.json` + +All icon metadata files must pass `icon.schema.json`. + +## Required fields + +Every icon metadata file must include: + +- `$schema` +- `contributors` +- `use-cases` +- `tags` +- `categories` + +A minimal metadata file looks like this: + +```json +{ + "$schema": "../icon.schema.json", + "contributors": ["github-username", "another-github-username"], + "use-cases": ["Representing example items in an interface"], + "tags": ["foo", "bar"], + "categories": ["devices"] +} +``` + +## Contributors + +The `contributors` field lists GitHub usernames for people who created or meaningfully changed the icon. + +### Contributor rules + +1. If you create a new icon based on existing ones, add all contributors from all base icons. +2. Add a username when someone made a significant change to the icon design. +3. Do not add people for minor review comments, metadata-only edits, or unrelated discussion. + +## Use cases + +The `use-cases` field explains where and why someone would use the icon in an interface. + +Use cases should be short phrases, not full sentences. Start with an `-ing` verb, such as: + +- Representing [concept] +- Indicating [state] +- Marking [item] +- Showing [information] +- Toggling [setting] + +### Use case rules + +- Keep each use case focused on one idea +- Keep entries concise and specific +- Write from the interface's perspective +- Describe real usage, not the icon name or appearance +- Add context when it clarifies meaning +- Do not end with punctuation +- Do not add Markdown or emoji +- Do not add implementation details or pull request references + + + + + +## Tags + +The `tags` field is a list of search terms for the icon. + +Tags should describe concepts, synonyms, related terms, and common contexts. + +Check existing tags before adding new ones. This keeps search consistent and avoids duplicates. + +### Tag rules + +- Use lowercase tags. +- Prefer single words where possible. +- Multi-word tags are allowed when they are clearer, such as `magnifying glass`. +- Do not include the icon name as a tag. +- Do not add generic tags like `icon`. +- Do not add unrelated concepts just to increase search coverage. + +For example, `mail-search` can use tags like `email`, `message`, `letter`, `find`, and `filter`, but not `mail`, `search` or `mail search`. + + + + + +## Categories + +The `categories` field groups icons by broad use. + +Categories must come from the allowed category list in `icon.schema.json`. + +Choose categories based on what the icon represents and where people use it. Check similar icons first. + +### Category rules + +- Use only categories allowed by `icon.schema.json`. +- Use lowercase category names. +- Do not invent new categories in icon metadata. +- Choose relevant categories only. + +## Variants and related icons + +Related icons should have related metadata, but do not copy use cases blindly. + +Write metadata for the specific variant: + +- `battery-low` -> `Indicating a low battery charge level` +- `battery-full` -> `Indicating a full battery charge level` +- `square-arrow-right-enter` -> sign in, enter, or join contexts +- `square-arrow-right-exit` -> sign out, exit, or export contexts + +When a request covers several icons, assign each use case only to the icon it describes. Do not copy metadata to icons it does not describe. + +## Aliases + +Some icons can include an optional `aliases` field for alternate names. + +Only add aliases when an icon has been renamed from a non-compliant name. + +## Validation + +Before submitting metadata changes, validate the icon JSON files: + +```sh +pnpm run lint:json:icons +``` + +You can also format changed files with Prettier: + +```sh +pnpm exec prettier "icons/*.json" --check +``` + +## Checklist + +Before opening a pull request, confirm that: + +- The JSON file name matches the SVG file name. +- The file includes all required fields. +- Contributors are GitHub usernames. +- Use cases describe real interface usage. +- Tags are lowercase and useful for search. +- Categories are allowed by `icon.schema.json`. +- Metadata is specific to the icon and its variants. +- `pnpm run lint:json:icons` passes. diff --git a/docs/contribute/icons/metadata-conventions/tag-guide.md b/docs/contribute/icons/metadata-conventions/tag-guide.md new file mode 100644 index 000000000..1bd5186da --- /dev/null +++ b/docs/contribute/icons/metadata-conventions/tag-guide.md @@ -0,0 +1,131 @@ +--- +description: Learn the best practices for writing tags for Lucide icons. +--- + + + +# Tag guide + +This guide shows how to write useful search tags for Lucide icons. + +Tags help people find icons by concept, synonym, context, or common wording. + +## Use lowercase tags + +Tags should always be lowercase. + +:::: example +::: do email +Lowercase tags **match the style** used across the icon library. +::: +::: dont Email +Capitalized tags create **inconsistent metadata** without improving search. +::: +:::: + +## Prefer short tags + +Use one clear word when it is enough. Use multi-word tags when the phrase is clearer. + +:::: example +::: do search +This is **short, common, and easy to find**. +::: +::: dont searching through files & folders +This reads like a **use case**, not a tag. +::: +:::: + +## Use multi-word tags when needed + +Some ideas are only clear as a phrase. But keep those phrases short. + +:::: example +::: do blood type +The phrase is **clearer** than either word on its own. +::: +::: dont blood type medical label +This combines **several search concepts** into one long tag. +::: +:::: + +## Add synonyms and common wording + +Tags can include words people are likely to search for, even if they are not in the icon name. + +:::: example +::: do email +This helps users find `mail` icons using a **common synonym**. +::: +::: dont electronic postal message delivery +This is unlikely search wording and **adds noise**. +::: +:::: + +## Do not repeat the icon name + +The icon name is already searchable. Tags should add other ways to find it. + +:::: example +::: do message filter +This adds a **related concept** for `mail-search` without duplicating the name. +::: +::: dont mail search +This **repeats the icon name** and does not improve discovery. +::: +:::: + +## Avoid generic tags + +Tags should describe the icon, not say that it is an icon. + +:::: example +::: do event +This points to a **specific idea** users might search for. +::: +::: dont icon +**Every entry is an icon**, so this tag does not help anyone find the right one. +::: +:::: + +## Keep tags relevant + +Do not add loose terms just to make an icon appear in more searches. + +:::: example +::: do emergency room +This is **relevant** for an icon that marks emergency room locations. +::: +::: dont doctor nurse pharmacy +These terms may be **nearby concepts**, but they do not all describe the same icon. +::: +:::: + +## Match the specific variant + +Related icons can share family terms, but variant tags should describe what is different. + +:::: example +::: do depleted +This distinguishes `battery-low` from **other battery icons**. +::: +::: dont charged +This describes `battery-full` better than `battery-low`. +::: +:::: + +## Use existing tags as a reference + +Check similar icons before adding new tags. Reusing existing terms keeps search predictable. + +:::: example +::: do typography +This matches existing text-formatting icons and keeps **related icons** together in search. +::: +::: dont fontography +Inventing a new term makes the icon harder to find and less consistent with related metadata. +::: +:::: diff --git a/docs/contribute/icons/metadata-conventions/use-case-guide.md b/docs/contribute/icons/metadata-conventions/use-case-guide.md new file mode 100644 index 000000000..0f4780a81 --- /dev/null +++ b/docs/contribute/icons/metadata-conventions/use-case-guide.md @@ -0,0 +1,142 @@ +--- +description: Learn the best practices for writing use cases for Lucide icons. +--- + + + +# Use case guide + +This guide shows how to write clear use cases for Lucide icons. + +## Write from the interface's perspective + +Describe what the interface tells the user. Do not write from the contributor's point of view. + +:::: example +::: do Indicating a device is offline or unreachable +This describes the **role the icon plays in an interface**. +::: +::: dont I need an icon for my offline device screen +This explains the **contributor's situation**, not the icon's purpose. +::: +:::: + +## Describe real usage, not the icon name + +A use case should explain what the icon means in context. Do not repeat the icon name or only describe the drawing. + +:::: example +::: do Representing processors, chips, or embedded hardware +This explains `microchip` **without repeating the name**. +::: +::: dont it's a microchip icon +This **duplicates the icon name** and does not explain where the icon would be used. +::: +:::: + +## Add context when it clarifies meaning + +Some icons have broad meanings. Add context when it makes the use case clearer. + +:::: example +::: do Applying a level-2 heading in text editors +The phrase explains both the **action and the product area**. +::: +::: dont Applying a heading +This is less useful because it **omits the level and context**. +::: +:::: + +## Keep each use case focused + +Each entry should cover one clear idea. Split different meanings into separate entries. + +:::: example +::: do Marking parking locations on maps +This is **short, clear, and focused** on one interface function. +::: +::: dont Marking parking, transport, maps, cars, garages, and places +This reads like a **tag list** and **mixes several ideas**. +::: +:::: + +## Write variant-specific use cases + +For related icons, describe what makes each variant different. + +:::: example +::: do Indicating a low battery charge level +This is specific to `battery-low` and **sets it apart** from other battery icons. +::: +::: dont Representing battery status +This is **too generic** and could apply to **every battery variant**. +::: +:::: + +## Avoid pull request references + +Use cases should make sense after the pull request is merged. + +:::: example +::: do Signifying a deal, agreement, or partnership +This keeps the **useful meaning** without depending on **outside context**. +::: +::: dont Same as above in #1234 +This **depends on a discussion** readers **may never see**. +::: +:::: + +## Keep entries concise + +Use cases should usually be 4 to 12 words. Prefer a short phrase over a long explanation. + +:::: example +::: do Searching files by name or content +This is **short enough** to scan and **specific enough** to understand. +::: +::: dont This icon can be used when users want to search through all of their files and folders to find something +This is **too long** and reads like **product copy instead of metadata**. +::: +:::: + +## Do not end with punctuation + +Use cases are metadata phrases, not full sentences. + +:::: example +::: do Confirming a successful payment +This matches the **phrase style** used across icon metadata. +::: +::: dont Confirming a successful payment. +The period adds **unnecessary punctuation** and makes entries inconsistent. +::: +:::: + +## Avoid markdown and emoji + +Use plain text only. Formatting belongs in documentation, not metadata values. + +:::: example +::: do Warning users about a destructive action +This works in search, generated pages, and other places that use metadata. +::: +::: dont **Warning** users about a destructive action ⚠� +Markdown and emoji can **show up in generated UI** and make metadata **harder to reuse**. +::: +:::: + +## Avoid implementation details + +Use cases should describe meaning, not how the SVG was made. + +:::: example +::: do Representing cropped or trimmed content +This explains the icon's **interface meaning**. +::: +::: dont Showing a rectangle with two path cuts and adjusted Bezier handles +This describes **construction details** that do not help people find or understand the icon. +::: +:::: diff --git a/docs/contribute/icons/naming-conventions.md b/docs/contribute/icons/naming-conventions.md new file mode 100644 index 000000000..49aac9983 --- /dev/null +++ b/docs/contribute/icons/naming-conventions.md @@ -0,0 +1,238 @@ +--- +description: Learn how to choose clear and consistent names for Lucide icons. +--- + + + +# Naming conventions + +Learn how to choose clear, consistent names for Lucide icons. + +This page covers word order, modifiers, variants, related icons, and other rules that keep icon names predictable. + +Use this when naming a new icon or reviewing a proposed name. + +## 1. Use lowercase kebab-case + +Icon names **must** use lowercase kebab-case. + +:::: example +::: do `arrow-up-0-1` +Use lowercase kebab-case. +::: +::: dont `Arrow Up 0-1` or `arrowUp01` +Avoid other naming schemes. +::: +:::: + +## 2. Use American English + +Icon names **must** use American English, not local variants. + +:::: example +::: do `color`, `maximize`, `center` +::: +::: dont `colour`, `maximise`, `centre` +::: +:::: + +## 3. Name icons for what they depict + +Icon names **must** describe what the icon shows, not how someone might use it. + +:::: example +::: do `floppy-disk` +The icon **shows** a floppy disk. +::: +::: dont `save` +Save is a use case. +::: +:::: + +:::: example +::: do `circle-slash` +The icon **shows** a circle with a slash across it. +::: +::: dont `ban` +Ban is an action. +::: +:::: + +::: tip +An icon can mean different things in different products. Naming icons by appearance keeps names clear and independent from use cases. +::: + +## 4. Name related icons consistently + +Icons that belong to the same group **must** use the `-` naming scheme. + +The group name comes first. The variant comes after it. + +:::: example +::: do + `badge-plus` & `badge-check` +`badge` is the group. +::: +::: dont + `plus-badge` & `check-badge` +`plus` and `check` are not the group. +::: +:::: + +## 5. Describe alternate icons + +Alternate versions of an icon **must** be named for what makes them visually different. Do **not** use numbers just to separate one version from another. + +:::: example +::: do `send-horizontal` +The icon depicts a horizontal "send" symbol. +::: +::: dont `send-2` or `send-alt` +"send number 2" and "alternative send" are not clear names. +::: +:::: + +## 6. Only use numerals when depicted + +Icon names **must not** include numbers unless the icon shows the number. + +:::: example +::: do `arrow-down-0-1` +The arrow points from 0 to 1. +::: +::: dont `send-2` +The icon does not show the number 2. +::: +:::: + +:::: example +::: do `clock-3` +The hands point to 3 o'clock. +::: +::: dont `user-3` +The icon does not show the number 3. +::: +:::: + +Do not use numbers to separate similar icons. + +## 7. Order elements by size + +When an icon shows multiple elements of different sizes, order their names from largest to smallest. + +For an icon containing a circle and a person: + +:::: example +::: do `moon-star` +The `moon` is larger than the `star`. +::: +::: dont `person-circle` +The `person` is **not** larger than the `circle`. +::: +:::: + +## 8. Order equally sized elements by position + +When an icon depicts multiple elements of roughly equal size, their names **must** be ordered according to their visual position. + +If elements overlap, name them from front to back. + +If they do not overlap, name them in English reading order: top to bottom, then left to right. + +:::: example +::: do `pencil-ruler` +The `pencil` is **in front** of the `ruler`, so it comes first. +::: +::: do `ruler-dimension-line` +The ruler is below the dimension line, but it is **larger**, so it comes first. +::: +:::: + +:::: example +::: do `sun-snow` +The `sun` is **left of** the `snowflake`, so it comes first. +::: +::: dont `ruler-pencil` +The `ruler` is **below** the `pencil`, so `pencil-ruler` is the correct name. +::: +:::: + +## 9. Place modifiers after the element they describe + +Modifiers **must** come after the element they describe: `-`. + +:::: example +::: do `heart-broken` +The icon shows a heart that is **cracked**. +::: +::: dont `broken-bone` +The icon shows a bone that is **broken**, so name it `bone-broken`. +::: +:::: + +When an icon has multiple modified elements, each modifier **must** follow the element it describes. + +:::: example +::: do `circle-fading-arrow-up` +The icon shows a **fading** circle with an arrow pointing **up** inside it. + +`circle` comes first because it is larger than `arrow`. `fading` follows `circle` because it modifies the circle. `up` follows `arrow` because it modifies the arrow. +::: +::: dont `notepad-text-dashed` +This icon shows a dashed notepad with text inside, so name it `notepad-dashed-text`. + +`notepad` comes first because it is larger than `text`. `dashed` follows `notepad` because it modifies the notepad. `text` follows both because `dashed` does not modify `text`. +::: +:::: + +## Summary + +When naming an icon: + +1. **Describe what you see**, not what the icon could mean. +2. **Use American English** and **lowercase kebab-case**. +3. **Keep related icons together** with `-`. +4. **Describe what makes an alternate unique** instead of numbering it. +5. **Only use numerals when they are depicted** in the icon. +6. **Order elements from largest to smallest**. +7. If elements are roughly the same size, order them **front to back**, or otherwise in **English reading order**. +8. **Place modifiers after the element they describe**: `-`. diff --git a/docs/contribute/icons/specification.md b/docs/contribute/icons/specification.md new file mode 100644 index 000000000..ea9d1d07d --- /dev/null +++ b/docs/contribute/icons/specification.md @@ -0,0 +1,95 @@ +--- +description: Rules Lucide icons must follow. +--- + +# Icon design specification + +This page lists the rules Lucide icons must follow. + +For examples and guidance, see the [Lucide design language](./design-principles). + +## Requirement levels + +These terms show how strictly each rule applies: + +- **Must** and **must not** mark required rules. +- **Should** and **should not** mark rules that can flex when needed to make a better icon. + +Any exception should be intentional and fit the [Lucide design language](./design-principles). + +## Canvas + +1. Icons **must** use a 24 × 24-pixel canvas. +2. The canvas **must** be square. +3. Icon strokes **must** remain at least 1 pixel from the edge of the canvas. + +## Strokes + +1. Strokes **must** be 2 pixels wide. +2. Strokes **must** use round line joins. +3. Open paths **must** use round line caps. +4. Strokes **must** be centered on their paths. + +## Corners + +1. Sharp corners **should** be rounded unless the geometry of the icon requires otherwise. +2. Elements at least 8 pixels wide or tall **should** use a 2-pixel corner radius for 90° corners. +3. Elements smaller than 8 pixels **should** use a 1-pixel corner radius for 90° corners. +4. Diagonal lines meeting at a 90° angle **should** use a radius that preserves pixel-grid alignment. This radius is typically approximately 2.41 pixels. +5. Acute corners **should** use an appropriate amount of rounding based on their geometry. +6. Corners where multiple lines meet **should** remain sharp when rounding would cause the icon to render inconsistently at different sizes. + +## Spacing + +1. Distinct elements **must** have at least 2 pixels of visual separation. +2. Gaps between distinct elements **must not** be smaller than 2 pixels. +3. Inner gaps **should** be at least 2 pixels wide. +4. Spacing **should** remain visually consistent where elements connect or intersect. +5. Elements **should not** terminate with an abrupt cut where another element visually continues or intersects them. + +## Visual weight + +1. Icons **should** have a visual weight similar to the `circle` and `square` icons. +2. Icons **should not** appear substantially larger, smaller, heavier, or lighter than comparable Lucide icons. + +## Alignment and balance + +1. Icons **should** be visually centered within the canvas. +2. Asymmetrical icons **may** be moved slightly off center so they look visually centered. +3. Symmetrical icons **should** be geometrically centered. + +## Visual density + +1. Icons **should** have a level of detail similar to other Lucide icons. +2. Details **should** be simplified when they cause an icon to appear substantially denser than comparable icons. +3. Details that are not necessary for recognition **should** be omitted. + +## Curves + +1. Continuous curves **should** have smooth curvature. +2. Curves **should not** contain unintended or abrupt changes in curvature. +3. Arcs and quadratic Bézier curves **should** be preferred where they can accurately represent the intended geometry. +4. Cubic Bézier curves **may** be used where necessary. +5. Control points of adjoining cubic Bézier curves **should** be aligned where required to maintain continuous curvature. +6. Curves **should not** contain unnecessary control points. + +## Pixel alignment + +1. Coordinates **should** align to the pixel grid where possible. +2. Centers of arcs and other geometric elements **should** align to the pixel grid where possible. +3. Off-grid geometry **may** be used when required for visual balance, recognizable geometry, or smooth curvature. +4. Pixel alignment **should not** take precedence over the visual quality of the icon. + +## Shared geometry + +1. Variants of an existing icon **should** preserve the geometry, placement, and orientation of the base icon. +2. Elements that already exist in other Lucide icons **should** reuse established geometry where applicable. +3. Related icons **should** use consistent representations of shared elements. +4. Common modifiers and add-ons **should** use consistent geometry, size, and placement across related icons. +5. Existing geometry **may** be modified when necessary to satisfy other Lucide design language rules. + +## Priority of requirements + +When two non-required rules conflict, choose visual clarity and consistency with the Lucide design language. + +Rules marked **must** or **must not** can only be broken when the project defines an explicit exception. diff --git a/docs/contribute/illustrator-guide.md b/docs/contribute/illustrator-guide.md deleted file mode 100644 index 2350c69fc..000000000 --- a/docs/contribute/illustrator-guide.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Illustrator Template Guide ---- - -# Illustrator Template Guide - -This Guide explains how to properly use the Adobe Illustrator Template for Lucide. - ->Attention: Even though it is unlikely the template can be outdated or not 100% correct. Please check the Icon Design Guide before you start working with the template to ensure integrity with the Lucide icon pack. - -## General Workflow - -The Illustrator template is created following guidelines from the [Icon Design Guide](icon-design-guide.md). - -**Workflow:** - -1. Download and open the [Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai). - -2. You can now remove the content from the example logo layer ("Draw") and start creating. - -3. Verify that you follow the [Icon Design Guidelines](icon-design-guide.md). - -4. Before you export the file as an SVG make sure to check that you followed the guidelines and remove all unnecessary layers (especially "Padding" and "Grid"). - -5. Export the file with the export menu under: `Export > Export As..` then save the file as SVG. Select the following options in the SVG Options dialog: - -![SVG export options in Illustrator](../images/illustrator-svg-options.png?raw=true "Setting Page Size") - -After that, double check that the [code conventions and SVG global attributes](icon-design-guide.md#code-conventions) are correct. - -7. Minify paths with [SVGOMG](https://jakearchibald.github.io/svgomg/). diff --git a/docs/contribute/inkscape-guide.md b/docs/contribute/inkscape-guide.md deleted file mode 100644 index 666eb9a17..000000000 --- a/docs/contribute/inkscape-guide.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Icon Design Guide ---- - -# Inkscape Setup Guide - -This guide shows the steps to setup Inkscape for creating icons that conform to the Lucide design -guidelines. - -## Setting up The Canvas - -When opening a new document, Inkscape will create a canvas of a default size. To change the size to 24x24: - -1. Open the Document Properties dialog (File -> Document Properties). -2. On the “Page Size� tab, under “Custom Size� set the Units to `px` and set both Height and Width to 24. -![Setting Page Size](../images/page-size.png?raw=true "Setting Page Size") -3. On the “Grid� tab, select `Rectangular Grid` and click “New Grid�. -![Setting Grid Properties](../images/grid-1.png?raw=true "Setting Grid Properties") -4. Set the Grid Units to `px` and set Spacing X and Spacing Y both to 1. -![Setting Grid Properties](../images/grid-2.png?raw=true "Setting Grid Properties") -5. Close the Document Properties dialog. -6. To center the canvas in the viewport, select View -> Zoom -> Drawing. - -## Setting up The Paths - -1. Create a path or shape. -2. With the path selected, open the Stroke and Fill panel by pressing `Ctrl+Shift+F` on your keyboard. -![Stroke Style Properties](../images/strokes.png?raw=true "Setting Grid Properties") -3. On the “Stroke Style� tab: - * Set Stroke Width to `2px`. - * Select the rounded join type. - * Select the rounded cap type. -4. If the shape is a rectangle, select the rectangle and in the top of the screen below the menu bar, set `Rx` and `Ry` to `2px`. -![Rectangle Radius Properties](../images/corner-radius.png?raw=true "Rectangle Radius Properties") - -## Saving A File - -1. When ready to save the file, click Save As and select “Optimized SVG� as the file type. -![Save As](../images/save-as.png?raw=true "Save as") -2. After clicking Save, to conform with the other icons in the package, set Pretty Printing to use spaces and set the indentation depth to 2. -![Optimize](../images/optimize-settings.png?raw=true "Optimize") diff --git a/docs/guide/angular/advanced/with-lucide-lab.md b/docs/guide/angular/advanced/with-lucide-lab.md index c5b612002..78a36c681 100644 --- a/docs/guide/angular/advanced/with-lucide-lab.md +++ b/docs/guide/angular/advanced/with-lucide-lab.md @@ -13,7 +13,7 @@ import Sandpack from '~/.vitepress/theme/components/editors/SandpackAngular.vue' While they aren't provided as standalone components, they can be still be passed to the `LucideIcon` component the same way as official icons: ::: info Limitation -Only custom icons that follow Lucide's [code conventions](../../../contribute/icon-design-guide.md#code-conventions) are supported. +Only custom icons that follow Lucide's [code conventions](../../../contribute/icons/code-conventions.md#code-conventions) are supported. ::: ### Directly as LucideIconData diff --git a/docs/images/1px-border-radius.svg b/docs/images/1px-border-radius.svg index c9dc80e3b..273a5386d 100644 --- a/docs/images/1px-border-radius.svg +++ b/docs/images/1px-border-radius.svg @@ -1,92 +1,85 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + diff --git a/docs/images/1px-element-spacing.svg b/docs/images/1px-element-spacing.svg new file mode 100644 index 000000000..6a5a976f0 --- /dev/null +++ b/docs/images/1px-element-spacing.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/1px-inner-gap.svg b/docs/images/1px-inner-gap.svg new file mode 100644 index 000000000..f1ee88b60 --- /dev/null +++ b/docs/images/1px-inner-gap.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/images/1px-inner-spacing.svg b/docs/images/1px-inner-spacing.svg new file mode 100644 index 000000000..4863e30db --- /dev/null +++ b/docs/images/1px-inner-spacing.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/1px-padding-violation.svg b/docs/images/1px-padding-violation.svg new file mode 100644 index 000000000..d9538fac6 --- /dev/null +++ b/docs/images/1px-padding-violation.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/1px-padding.svg b/docs/images/1px-padding.svg index 2f95201c6..313a8c5a3 100644 --- a/docs/images/1px-padding.svg +++ b/docs/images/1px-padding.svg @@ -1,67 +1,61 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + diff --git a/docs/images/24px-24px-violation.svg b/docs/images/24px-24px-violation.svg new file mode 100644 index 000000000..cfd8b0aab --- /dev/null +++ b/docs/images/24px-24px-violation.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/images/24px-24px.svg b/docs/images/24px-24px.svg index 5ed0597b5..549204db1 100644 --- a/docs/images/24px-24px.svg +++ b/docs/images/24px-24px.svg @@ -1,74 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/docs/images/2px-border-radius.svg b/docs/images/2px-border-radius.svg index 72a1ffb90..9105ebfa3 100644 --- a/docs/images/2px-border-radius.svg +++ b/docs/images/2px-border-radius.svg @@ -1,72 +1,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + diff --git a/docs/images/2px-element-spacing-abrupt-cut.svg b/docs/images/2px-element-spacing-abrupt-cut.svg index f04e2d326..183e66bc0 100644 --- a/docs/images/2px-element-spacing-abrupt-cut.svg +++ b/docs/images/2px-element-spacing-abrupt-cut.svg @@ -1 +1,75 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/2px-element-spacing-connected.svg b/docs/images/2px-element-spacing-connected.svg index 45c60ac26..a12017164 100644 --- a/docs/images/2px-element-spacing-connected.svg +++ b/docs/images/2px-element-spacing-connected.svg @@ -1 +1,67 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/2px-element-spacing.svg b/docs/images/2px-element-spacing.svg index 1666b93f1..20852a263 100644 --- a/docs/images/2px-element-spacing.svg +++ b/docs/images/2px-element-spacing.svg @@ -1,76 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/2px-inner-gap.svg b/docs/images/2px-inner-gap.svg new file mode 100644 index 000000000..f83b17fda --- /dev/null +++ b/docs/images/2px-inner-gap.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/images/2px-inner-spacing.svg b/docs/images/2px-inner-spacing.svg new file mode 100644 index 000000000..ca418d7c9 --- /dev/null +++ b/docs/images/2px-inner-spacing.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/2px-stroke-violation.svg b/docs/images/2px-stroke-violation.svg new file mode 100644 index 000000000..7e2d935e3 --- /dev/null +++ b/docs/images/2px-stroke-violation.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/2px-stroke.svg b/docs/images/2px-stroke.svg index eaa09caba..966b2aced 100644 --- a/docs/images/2px-stroke.svg +++ b/docs/images/2px-stroke.svg @@ -1,71 +1,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/docs/images/border-radius-90deg.svg b/docs/images/border-radius-90deg.svg new file mode 100644 index 000000000..9369df245 --- /dev/null +++ b/docs/images/border-radius-90deg.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/border-radius-arbitrary.svg b/docs/images/border-radius-arbitrary.svg new file mode 100644 index 000000000..f42485646 --- /dev/null +++ b/docs/images/border-radius-arbitrary.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/border-radius-correct.svg b/docs/images/border-radius-correct.svg new file mode 100644 index 000000000..069a31a3a --- /dev/null +++ b/docs/images/border-radius-correct.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/border-radius-line-join-violation.svg b/docs/images/border-radius-line-join-violation.svg new file mode 100644 index 000000000..7c1a6dc3d --- /dev/null +++ b/docs/images/border-radius-line-join-violation.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/border-radius-line-join.svg b/docs/images/border-radius-line-join.svg new file mode 100644 index 000000000..86a960ebe --- /dev/null +++ b/docs/images/border-radius-line-join.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/border-radius-violation.svg b/docs/images/border-radius-violation.svg new file mode 100644 index 000000000..71a8b70e8 --- /dev/null +++ b/docs/images/border-radius-violation.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/centered-strokes-violation.svg b/docs/images/centered-strokes-violation.svg new file mode 100644 index 000000000..8975f9f98 --- /dev/null +++ b/docs/images/centered-strokes-violation.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/centered-strokes.svg b/docs/images/centered-strokes.svg index 452262261..10737a906 100644 --- a/docs/images/centered-strokes.svg +++ b/docs/images/centered-strokes.svg @@ -1,78 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/curvature-smooth.svg b/docs/images/curvature-smooth.svg index b4d977e49..ee39cb389 100644 --- a/docs/images/curvature-smooth.svg +++ b/docs/images/curvature-smooth.svg @@ -1,71 +1,61 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + diff --git a/docs/images/curvature-uneven.svg b/docs/images/curvature-uneven.svg index 0a1e0866b..d54e74dd9 100644 --- a/docs/images/curvature-uneven.svg +++ b/docs/images/curvature-uneven.svg @@ -1,68 +1,90 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + diff --git a/docs/images/density-optimal.svg b/docs/images/density-optimal.svg new file mode 100644 index 000000000..0dfe69e14 --- /dev/null +++ b/docs/images/density-optimal.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/density-too-dense.svg b/docs/images/density-too-dense.svg new file mode 100644 index 000000000..5e98a70e0 --- /dev/null +++ b/docs/images/density-too-dense.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/established-shapes-base-do.svg b/docs/images/established-shapes-base-do.svg new file mode 100644 index 000000000..acdf7036c --- /dev/null +++ b/docs/images/established-shapes-base-do.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/images/established-shapes-base-dont.svg b/docs/images/established-shapes-base-dont.svg new file mode 100644 index 000000000..1aca9b55e --- /dev/null +++ b/docs/images/established-shapes-base-dont.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/images/established-shapes-consistency-do.svg b/docs/images/established-shapes-consistency-do.svg new file mode 100644 index 000000000..20d3d2521 --- /dev/null +++ b/docs/images/established-shapes-consistency-do.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/images/established-shapes-consistency-dont.svg b/docs/images/established-shapes-consistency-dont.svg new file mode 100644 index 000000000..7082dc666 --- /dev/null +++ b/docs/images/established-shapes-consistency-dont.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/images/established-shapes-sub-do.svg b/docs/images/established-shapes-sub-do.svg new file mode 100644 index 000000000..a934d3295 --- /dev/null +++ b/docs/images/established-shapes-sub-do.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/images/established-shapes-sub-dont.svg b/docs/images/established-shapes-sub-dont.svg new file mode 100644 index 000000000..e3234bf42 --- /dev/null +++ b/docs/images/established-shapes-sub-dont.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/images/pixel-perfection-bad.svg b/docs/images/pixel-perfection-bad.svg index efb35aece..bdd6d68a6 100644 --- a/docs/images/pixel-perfection-bad.svg +++ b/docs/images/pixel-perfection-bad.svg @@ -1,67 +1,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - - + + + + - - + + + + + + + diff --git a/docs/images/pixel-perfection-diagonals-do.svg b/docs/images/pixel-perfection-diagonals-do.svg new file mode 100644 index 000000000..538436ea1 --- /dev/null +++ b/docs/images/pixel-perfection-diagonals-do.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/pixel-perfection-diagonals-dont.svg b/docs/images/pixel-perfection-diagonals-dont.svg new file mode 100644 index 000000000..230b44575 --- /dev/null +++ b/docs/images/pixel-perfection-diagonals-dont.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/pixel-perfection-ideal.svg b/docs/images/pixel-perfection-ideal.svg index 7a1271955..40c26c3f4 100644 --- a/docs/images/pixel-perfection-ideal.svg +++ b/docs/images/pixel-perfection-ideal.svg @@ -1,62 +1,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + diff --git a/docs/images/pixel-perfection-subelement-do.svg b/docs/images/pixel-perfection-subelement-do.svg new file mode 100644 index 000000000..62335edf7 --- /dev/null +++ b/docs/images/pixel-perfection-subelement-do.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/pixel-perfection-subelement-dont.svg b/docs/images/pixel-perfection-subelement-dont.svg new file mode 100644 index 000000000..9aebb8c21 --- /dev/null +++ b/docs/images/pixel-perfection-subelement-dont.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/round-caps-violation.svg b/docs/images/round-caps-violation.svg new file mode 100644 index 000000000..03a4fe65e --- /dev/null +++ b/docs/images/round-caps-violation.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/round-caps.svg b/docs/images/round-caps.svg index d4affc793..c41269b2e 100644 --- a/docs/images/round-caps.svg +++ b/docs/images/round-caps.svg @@ -1,74 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/round-joints-violation.svg b/docs/images/round-joints-violation.svg new file mode 100644 index 000000000..7964757da --- /dev/null +++ b/docs/images/round-joints-violation.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/round-joints.svg b/docs/images/round-joints.svg index 72b7174a1..cbac76bce 100644 --- a/docs/images/round-joints.svg +++ b/docs/images/round-joints.svg @@ -1,72 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/visual-weight-consistent.svg b/docs/images/visual-weight-consistent.svg new file mode 100644 index 000000000..d0a32544d --- /dev/null +++ b/docs/images/visual-weight-consistent.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/images/visual-weight-uneven.svg b/docs/images/visual-weight-uneven.svg new file mode 100644 index 000000000..668bcba7a --- /dev/null +++ b/docs/images/visual-weight-uneven.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/visually-centered-bad.svg b/docs/images/visually-centered-bad.svg deleted file mode 100644 index 6ed8757ba..000000000 --- a/docs/images/visually-centered-bad.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/visually-centered-do.svg b/docs/images/visually-centered-do.svg new file mode 100644 index 000000000..e36a51638 --- /dev/null +++ b/docs/images/visually-centered-do.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/visually-centered-dont.svg b/docs/images/visually-centered-dont.svg new file mode 100644 index 000000000..fcd350033 --- /dev/null +++ b/docs/images/visually-centered-dont.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/visually-centered-symmetrical-do.svg b/docs/images/visually-centered-symmetrical-do.svg new file mode 100644 index 000000000..71e77d3fd --- /dev/null +++ b/docs/images/visually-centered-symmetrical-do.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/visually-centered-symmetrical-dont.svg b/docs/images/visually-centered-symmetrical-dont.svg new file mode 100644 index 000000000..882fbdd63 --- /dev/null +++ b/docs/images/visually-centered-symmetrical-dont.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/visually-centered.svg b/docs/images/visually-centered.svg deleted file mode 100644 index c0e235307..000000000 --- a/docs/images/visually-centered.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/vercel.json b/docs/vercel.json index 0160d6dbd..623d457e6 100644 --- a/docs/vercel.json +++ b/docs/vercel.json @@ -106,6 +106,31 @@ "source": "/contributing", "destination": "/contribute", "permanent": true + }, + { + "source": "/contribute/icon-design-guide", + "destination": "/contribute/icons/design-principles", + "permanent": true + }, + { + "source": "/contribute/illustrator-guide", + "destination": "/contribute/icons/illustrator-guide", + "permanent": true + }, + { + "source": "/contribute/inkscape-guide", + "destination": "/contribute/icons/inkscape-guide", + "permanent": true + }, + { + "source": "/contribute/figma-guide", + "destination": "/contribute/icons/figma-guide", + "permanent": true + }, + { + "source": "/contribute/affinity-designer-guide", + "destination": "/contribute/icons/affinity-designer-guide", + "permanent": true } ], "headers": [ diff --git a/package.json b/package.json index d6b43617b..f5d71083d 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "lint:json:icons": "ajv --spec=draft2020 -s icon.schema.json -d 'icons/*.json' > /dev/null", "lint:json:categories": "ajv --spec=draft2020 -s category.schema.json -d 'categories/*.json' > /dev/null", "lint:json": "pnpm run lint:json:icons && pnpm run lint:json:categories", + "lint:icons:all": "pnpm run lint:icons && pnpm run lint:json:icons", "lint": "pnpm lint:es && pnpm lint:format && pnpm lint:json && pnpm lint:icons", "format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write", "prepare": "husky install", From f96d09cf3a9fe67ca965ce0e7cb5aabceaea3f13 Mon Sep 17 00:00:00 2001 From: Karsa Date: Fri, 4 Sep 2026 13:52:41 +0200 Subject: [PATCH 027/157] fix(site): fix HomeHeroIconsCard.data.ts (trash-2 no longer exists) (#4805) --- docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts b/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts index d38d69867..7563d4244 100644 --- a/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts +++ b/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts @@ -53,7 +53,7 @@ const pickIcons = [ 'terminal', 'thermometer', 'thumbs-up', - 'trash-2', + 'trash', 'umbrella', 'watch', 'sparkles', From a87bc9b15bdfa88a231ac03d375984e96c047e1d Mon Sep 17 00:00:00 2001 From: Karsa Date: Fri, 4 Sep 2026 14:04:24 +0200 Subject: [PATCH 028/157] fix(icons): deprecated swiss franc icons (#4799) * fix(icons): deprecated swiss franc icons & refined icon deprecation reasons * Update tools/build-icons/utils/deprecationReasonTemplate.ts Co-authored-by: Jakob Guddas * fix(icons): replace icon.obsolete => icon.use-case --------- Co-authored-by: Jakob Guddas --- icon.schema.json | 2 +- icons/badge-swiss-franc.json | 2 ++ icons/receipt-swiss-franc.json | 2 ++ icons/swiss-franc.json | 2 ++ lab/swiss-franc-circle.json | 2 ++ lab/swiss-franc-square.json | 2 ++ tools/build-icons/types.ts | 2 +- tools/build-icons/utils/deprecationReasonTemplate.ts | 4 ++++ 8 files changed, 16 insertions(+), 2 deletions(-) diff --git a/icon.schema.json b/icon.schema.json index 4bf4a0714..38ea133f7 100644 --- a/icon.schema.json +++ b/icon.schema.json @@ -141,7 +141,7 @@ "$defs": { "iconDeprecationReasons": { "type": "string", - "enum": ["icon.renamed"] + "enum": ["icon.design", "icon.use-case"] }, "aliasDeprecationReasons": { "type": "string", diff --git a/icons/badge-swiss-franc.json b/icons/badge-swiss-franc.json index e3df7c78f..8cae15f70 100644 --- a/icons/badge-swiss-franc.json +++ b/icons/badge-swiss-franc.json @@ -3,6 +3,8 @@ "contributors": [ "danielbayley" ], + "deprecated": true, + "deprecationReason": "icon.use-case", "use-cases": [], "tags": [ "discount", diff --git a/icons/receipt-swiss-franc.json b/icons/receipt-swiss-franc.json index fc4aaf7cc..3cb6a0305 100644 --- a/icons/receipt-swiss-franc.json +++ b/icons/receipt-swiss-franc.json @@ -4,6 +4,8 @@ "danielbayley", "karsa-mistmere" ], + "deprecated": true, + "deprecationReason": "icon.use-case", "use-cases": [], "tags": [ "bill", diff --git a/icons/swiss-franc.json b/icons/swiss-franc.json index caf59cb32..1313f7936 100644 --- a/icons/swiss-franc.json +++ b/icons/swiss-franc.json @@ -4,6 +4,8 @@ "ericfennis", "mittalyashu" ], + "deprecated": true, + "deprecationReason": "icon.use-case", "use-cases": [], "tags": [ "currency", diff --git a/lab/swiss-franc-circle.json b/lab/swiss-franc-circle.json index ea7e5e0a0..24383c81d 100644 --- a/lab/swiss-franc-circle.json +++ b/lab/swiss-franc-circle.json @@ -3,6 +3,8 @@ "contributors": [ "danielbayley" ], + "deprecated": true, + "deprecationReason": "icon.use-case", "tags": [ "monetization", "marketing", diff --git a/lab/swiss-franc-square.json b/lab/swiss-franc-square.json index 43d553d29..7c6b21fde 100644 --- a/lab/swiss-franc-square.json +++ b/lab/swiss-franc-square.json @@ -3,6 +3,8 @@ "contributors": [ "danielbayley" ], + "deprecated": true, + "deprecationReason": "icon.use-case", "tags": [ "monetization", "marketing", diff --git a/tools/build-icons/types.ts b/tools/build-icons/types.ts index a305e7a39..4ba3eee5b 100644 --- a/tools/build-icons/types.ts +++ b/tools/build-icons/types.ts @@ -32,7 +32,7 @@ export type AliasDeprecation = { deprecationReason: AliasDeprecationReason; }; -export type IconDeprecationReason = 'icon.renamed' | ''; +export type IconDeprecationReason = 'icon.design' | 'icon.use-case' | ''; export type IconMetadataBase = { categories: string[]; diff --git a/tools/build-icons/utils/deprecationReasonTemplate.ts b/tools/build-icons/utils/deprecationReasonTemplate.ts index 9386570a9..06f6fd729 100644 --- a/tools/build-icons/utils/deprecationReasonTemplate.ts +++ b/tools/build-icons/utils/deprecationReasonTemplate.ts @@ -16,6 +16,10 @@ export default function deprecationReasonTemplate( return `The icon was combined with another icon that shares the same use case, use {@link ${componentName}} instead.`; case 'alias.name': return `The name of this icon was changed because it didn't meet our guidelines anymore, use {@link ${componentName}} instead.`; + case 'icon.design': + return `Removed because the icon didn't meet our design guidelines.`; + case 'icon.use-case': + return `Removed because the depicted concept became obsolete and no longer had relevant use cases.`; default: throw new Error(`Unknown deprecation reason: ${deprecationReason}`); } From 4dc5b7ebaed733642fae0382238d71a147fb5c7d Mon Sep 17 00:00:00 2001 From: Samuel Alake <58840187+samuelalake@users.noreply.github.com> Date: Fri, 4 Sep 2026 05:05:55 -0700 Subject: [PATCH 029/157] feat(icons): add gap-horizontal and gap-vertical (#4544) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(icons): add gap-horizontal and gap-vertical Adds two icons for the gap between items in a layout: facing brackets with the gap itself marked between them. The brackets are the container edges and the dot marks the space, which is what distinguishes these from the align-* family — those show the items and a guideline, these show only the space. Rails span 2-22, matching align-horizontal-space-between's M3 2v20. The dot uses the "M12 12h.01" zero-length path, the same idiom dice-*, badge-percent and ~130 other icons use for a 2px dot. * feat(icons): add gap-horizontal and gap-vertical Adds two icons for the gap between items in a layout: two facing brackets with a dashed line marking the space between them. Redesigned from the earlier dot version per review on #4544. This uses the square-centerline-dashed-horizontal / -vertical construction with the bracket ends flipped inward, so the brackets read as the two item edges and the dashed line as the gap. Avoids the small-circle dot that the earlier version relied on. Co-Authored-By: Karsa <17746067+karsa-mistmere@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: Karsa <17746067+karsa-mistmere@users.noreply.github.com> Co-authored-by: Karsa Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- icons/gap-horizontal.json | 31 +++++++++++++++++++++++++++++++ icons/gap-horizontal.svg | 18 ++++++++++++++++++ icons/gap-vertical.json | 32 ++++++++++++++++++++++++++++++++ icons/gap-vertical.svg | 18 ++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 icons/gap-horizontal.json create mode 100644 icons/gap-horizontal.svg create mode 100644 icons/gap-vertical.json create mode 100644 icons/gap-vertical.svg diff --git a/icons/gap-horizontal.json b/icons/gap-horizontal.json new file mode 100644 index 000000000..4d61cbff8 --- /dev/null +++ b/icons/gap-horizontal.json @@ -0,0 +1,31 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "samuelalake", + "karsa-mistmere" + ], + "use-cases": [ + "indicating horizontal gap setting in a design inspector", + "representing the column-gap control in grid or flex panels", + "adjusting horizontal spacing between components in a page builder", + "visualizing a spacing token in a design system or theme editor" + ], + "tags": [ + "gap", + "spacing", + "space", + "between", + "padding", + "margin", + "horizontal", + "auto layout", + "layout", + "distance", + "frame", + "distribute" + ], + "categories": [ + "design", + "layout" + ] +} diff --git a/icons/gap-horizontal.svg b/icons/gap-horizontal.svg new file mode 100644 index 000000000..d0eefc424 --- /dev/null +++ b/icons/gap-horizontal.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/icons/gap-vertical.json b/icons/gap-vertical.json new file mode 100644 index 000000000..54b282e54 --- /dev/null +++ b/icons/gap-vertical.json @@ -0,0 +1,32 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "samuelalake", + "karsa-mistmere" + ], + "use-cases": [ + "displaying vertical spacing between stacked elements in a design inspector", + "representing the row-gap control in a css grid or flex panel", + "adjusting vertical gutter in a page builder or layout editor", + "visualizing space between rows in an auto-layout stack", + "indicating configurable vertical spacing in a ui component library" + ], + "tags": [ + "gap", + "spacing", + "space", + "between", + "padding", + "margin", + "vertical", + "auto layout", + "layout", + "distance", + "frame", + "distribute" + ], + "categories": [ + "design", + "layout" + ] +} diff --git a/icons/gap-vertical.svg b/icons/gap-vertical.svg new file mode 100644 index 000000000..78d81e097 --- /dev/null +++ b/icons/gap-vertical.svg @@ -0,0 +1,18 @@ + + + + + + + + From 90567c4ce0535c5a81d472f7006863686486d4ff Mon Sep 17 00:00:00 2001 From: Liang Xu <755674130@qq.com> Date: Fri, 4 Sep 2026 20:38:21 +0800 Subject: [PATCH 030/157] feat(icons): added `trash-off` icon (#4788) * feat(icons): added `trash-2-off` icon Fixes #4750 Signed-off-by: Liang Xu * fix(icons): update trash-2-off design and align metadata with trash-2 - Update SVG paths to eliminate gap and overlap violations - Add full list of contributors from trash/trash-2 - Sync tags and categories with trash-2 and provide use-cases - Clean up unrelated angular cache files Signed-off-by: Liang Xu * refactor(icons): rename to trash-off, align use-cases and revert unrelated files - Rename trash-2-off to trash-off - Align use-cases with contributor guide recommendations - Revert unintended changes to packages/angular cache files Signed-off-by: Liang Xu --------- Signed-off-by: Liang Xu Co-authored-by: Liang Xu Co-authored-by: Karsa --- icons/trash-off.json | 42 ++++++++++++++++++++++++++++++++++++++++++ icons/trash-off.svg | 20 ++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 icons/trash-off.json create mode 100644 icons/trash-off.svg diff --git a/icons/trash-off.json b/icons/trash-off.json new file mode 100644 index 000000000..d6c35fbac --- /dev/null +++ b/icons/trash-off.json @@ -0,0 +1,42 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "karsa-mistmere", + "drewcobleRH" + ], + "use-cases": [ + "Indicating a disabled delete action", + "Showing removal is unavailable or restricted", + "Preventing item deletion in locked states", + "Marking trash bins as full or out of service" + ], + "tags": [ + "empty", + "deletion", + "cleanup", + "junk", + "clear", + "garbage", + "delete", + "remove", + "bin", + "trash", + "waste", + "recycle", + "discard", + "rubbish", + "disabled", + "off", + "prevent", + "locked", + "unavailable", + "protected" + ], + "categories": [ + "files", + "mail" + ] +} diff --git a/icons/trash-off.svg b/icons/trash-off.svg new file mode 100644 index 000000000..d956d02d3 --- /dev/null +++ b/icons/trash-off.svg @@ -0,0 +1,20 @@ + + + + + + + + + + From 65271a11e72768844d568a11706c191e5231ad82 Mon Sep 17 00:00:00 2001 From: Karsa Date: Fri, 4 Sep 2026 15:04:53 +0200 Subject: [PATCH 031/157] feat(icons): added `circle-dashed-check` icon (#4796) * Added icons/circle-dashed-check.svg * Added icons/circle-dashed-check.json --- icons/circle-dashed-check.json | 38 ++++++++++++++++++++++++++++++++++ icons/circle-dashed-check.svg | 21 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 icons/circle-dashed-check.json create mode 100644 icons/circle-dashed-check.svg diff --git a/icons/circle-dashed-check.json b/icons/circle-dashed-check.json new file mode 100644 index 000000000..8966551fb --- /dev/null +++ b/icons/circle-dashed-check.json @@ -0,0 +1,38 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "danielbayley", + "jguddas", + "karsa-mistmere" + ], + "use-cases": [ + "Indicating approved items with pending changes", + "Showing published schedules with unpublished updates", + "Marking requests that require re-approval", + "Confirming completion with revisions still pending" + ], + "tags": [ + "approved", + "pending", + "changes", + "revision", + "reapproval", + "published", + "schedule", + "assignment", + "request", + "review", + "progress", + "issue", + "draft", + "code", + "coding", + "version control" + ], + "categories": [ + "shapes", + "development", + "notifications" + ] +} diff --git a/icons/circle-dashed-check.svg b/icons/circle-dashed-check.svg new file mode 100644 index 000000000..38aa8695b --- /dev/null +++ b/icons/circle-dashed-check.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + From 83ba4986c812f5c3839d343656685678db161158 Mon Sep 17 00:00:00 2001 From: Ricardo Gonzalez Date: Fri, 4 Sep 2026 14:06:43 +0100 Subject: [PATCH 032/157] feat(icons): added `equal-approximately-not` icon (#4802) * feat(icons): added `equal-approximately-not` icon (closes #4800). * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update icons/equal-approximately-not.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/equal-approximately-not.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/equal-approximately-not.json Co-authored-by: Karsa * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Karsa --- icons/equal-approximately-not.json | 35 ++++++++++++++++++++++++++++++ icons/equal-approximately-not.svg | 15 +++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 icons/equal-approximately-not.json create mode 100644 icons/equal-approximately-not.svg diff --git a/icons/equal-approximately-not.json b/icons/equal-approximately-not.json new file mode 100644 index 000000000..850b7c76f --- /dev/null +++ b/icons/equal-approximately-not.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ksk3110", + "ryck" + ], + "use-cases": [ + "Representing the ≇ operator in formula editors", + "Flagging values outside tolerance in diff tools", + "Indicating failed approximate-equality assertions in test runners", + "Marking measurements outside acceptable variance" + ], + "tags": [ + "calculate", + "math", + "operator", + "not", + "approximately", + "unequal", + "code", + "≇", + "tolerance", + "threshold", + "mismatch", + "comparison", + "assertion", + "variance" + ], + "categories": [ + "math", + "development", + "charts", + "science" + ] +} diff --git a/icons/equal-approximately-not.svg b/icons/equal-approximately-not.svg new file mode 100644 index 000000000..c18346b35 --- /dev/null +++ b/icons/equal-approximately-not.svg @@ -0,0 +1,15 @@ + + + + + From 93a1d72465a714b8afde06e03d87416bb65460fb Mon Sep 17 00:00:00 2001 From: Swastik Sharma <153355864+swastik7805@users.noreply.github.com> Date: Fri, 4 Sep 2026 18:37:48 +0530 Subject: [PATCH 033/157] feat(icons): added dome icons (#4261) * feat(icons): add dome and dome-2 icon * Update icons/dome.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/dome-2.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * chore(icons): updare contributors for dome icons * refactor(icons): remove dome-2 and keep the best design as dome * chore(icons): update categories for dome icon * feat(icons/dome): replaced design with compliant and linted version * Update dome.json * Update dome.json --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Eric Fennis Co-authored-by: Karsa --- icons/dome.json | 40 ++++++++++++++++++++++++++++++++++++++++ icons/dome.svg | 18 ++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 icons/dome.json create mode 100644 icons/dome.svg diff --git a/icons/dome.json b/icons/dome.json new file mode 100644 index 000000000..941b1689b --- /dev/null +++ b/icons/dome.json @@ -0,0 +1,40 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "swastik7805", + "rrod497", + "karsa-mistmere" + ], + "use-cases": [ + "Marking domed monuments on historical maps", + "Identifying museums, observatories, or heritage sites", + "Representing domed Christian churches in architecture apps", + "Showing Byzantine or Orthodox landmarks on maps" + ], + "tags": [ + "roof", + "cupola", + "rotunda", + "shelter", + "building", + "architecture", + "structure", + "church", + "christian", + "orthodox", + "byzantine", + "cathedral", + "basilica", + "chapel", + "monument", + "landmark", + "museum", + "observatory", + "heritage" + ], + "categories": [ + "buildings", + "navigation", + "travel" + ] +} diff --git a/icons/dome.svg b/icons/dome.svg new file mode 100644 index 000000000..5ee1f7446 --- /dev/null +++ b/icons/dome.svg @@ -0,0 +1,18 @@ + + + + + + + + From 07a2c792effc1eb9437fdd5f164a34d0139624ec Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 4 Sep 2026 16:26:02 +0200 Subject: [PATCH 034/157] chore(lucide-react): Add Lucide React integration tests (#4804) * Add Lucide React integration tests * Apply batched suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Remove redundant icon comparison test Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * test(lucide-react): fix browser locator markup assertions --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/workflows/lucide-react.yml | 22 + .gitignore | 5 + .prettierignore | 7 + integrations/lucide-react/README.md | 18 + .../lucide-react/nextjs/app/IconShowcase.tsx | 34 + .../lucide-react/nextjs/app/layout.tsx | 9 + integrations/lucide-react/nextjs/app/page.tsx | 5 + .../lucide-react/nextjs/next-env.d.ts | 7 + integrations/lucide-react/nextjs/package.json | 28 + .../nextjs/tests/icons.browser.spec.tsx | 38 + .../lucide-react/nextjs/tsconfig.json | 28 + .../lucide-react/nextjs/vitest.config.ts | 15 + .../react-router/app/IconShowcase.tsx | 32 + .../lucide-react/react-router/app/root.tsx | 27 + .../lucide-react/react-router/app/routes.ts | 6 + .../react-router/app/routes/about.tsx | 11 + .../react-router/app/routes/home.tsx | 11 + .../lucide-react/react-router/package.json | 33 + .../react-router/react-router.config.ts | 5 + .../react-router/tests/icons.browser.spec.tsx | 52 + .../lucide-react/react-router/tsconfig.json | 18 + .../lucide-react/react-router/vite.config.ts | 6 + .../react-router/vitest.config.ts | 15 + .../lucide-react/tanstack-router/index.html | 18 + .../lucide-react/tanstack-router/package.json | 29 + .../tanstack-router/src/IconShowcase.tsx | 32 + .../lucide-react/tanstack-router/src/main.tsx | 10 + .../tanstack-router/src/routeTree.gen.ts | 77 + .../tanstack-router/src/router.tsx | 10 + .../tanstack-router/src/routes/__root.tsx | 5 + .../tanstack-router/src/routes/about.tsx | 15 + .../tanstack-router/src/routes/index.tsx | 15 + .../tests/icons.browser.spec.tsx | 46 + .../tanstack-router/tsconfig.json | 21 + .../tanstack-router/vite.config.ts | 13 + .../tanstack-router/vitest.config.ts | 17 + .../lucide-react/tanstack-start/package.json | 30 + .../tanstack-start/src/IconShowcase.tsx | 32 + .../tanstack-start/src/routeTree.gen.ts | 86 + .../tanstack-start/src/router.tsx | 15 + .../tanstack-start/src/routes/__root.tsx | 35 + .../tanstack-start/src/routes/about.tsx | 15 + .../tanstack-start/src/routes/index.tsx | 15 + .../tests/icons.browser.spec.tsx | 38 + .../lucide-react/tanstack-start/tsconfig.json | 17 + .../tanstack-start/vite.config.ts | 7 + .../tanstack-start/vitest.config.ts | 15 + integrations/lucide-react/vite/index.html | 18 + integrations/lucide-react/vite/package.json | 28 + integrations/lucide-react/vite/src/App.tsx | 5 + .../lucide-react/vite/src/IconShowcase.tsx | 32 + integrations/lucide-react/vite/src/main.tsx | 9 + .../vite/tests/icons.browser.spec.tsx | 38 + integrations/lucide-react/vite/tsconfig.json | 21 + integrations/lucide-react/vite/vite.config.ts | 15 + package.json | 1 + pnpm-lock.yaml | 1948 +++++++++++++++-- pnpm-workspace.yaml | 1 + 58 files changed, 2978 insertions(+), 183 deletions(-) create mode 100644 integrations/lucide-react/README.md create mode 100644 integrations/lucide-react/nextjs/app/IconShowcase.tsx create mode 100644 integrations/lucide-react/nextjs/app/layout.tsx create mode 100644 integrations/lucide-react/nextjs/app/page.tsx create mode 100644 integrations/lucide-react/nextjs/next-env.d.ts create mode 100644 integrations/lucide-react/nextjs/package.json create mode 100644 integrations/lucide-react/nextjs/tests/icons.browser.spec.tsx create mode 100644 integrations/lucide-react/nextjs/tsconfig.json create mode 100644 integrations/lucide-react/nextjs/vitest.config.ts create mode 100644 integrations/lucide-react/react-router/app/IconShowcase.tsx create mode 100644 integrations/lucide-react/react-router/app/root.tsx create mode 100644 integrations/lucide-react/react-router/app/routes.ts create mode 100644 integrations/lucide-react/react-router/app/routes/about.tsx create mode 100644 integrations/lucide-react/react-router/app/routes/home.tsx create mode 100644 integrations/lucide-react/react-router/package.json create mode 100644 integrations/lucide-react/react-router/react-router.config.ts create mode 100644 integrations/lucide-react/react-router/tests/icons.browser.spec.tsx create mode 100644 integrations/lucide-react/react-router/tsconfig.json create mode 100644 integrations/lucide-react/react-router/vite.config.ts create mode 100644 integrations/lucide-react/react-router/vitest.config.ts create mode 100644 integrations/lucide-react/tanstack-router/index.html create mode 100644 integrations/lucide-react/tanstack-router/package.json create mode 100644 integrations/lucide-react/tanstack-router/src/IconShowcase.tsx create mode 100644 integrations/lucide-react/tanstack-router/src/main.tsx create mode 100644 integrations/lucide-react/tanstack-router/src/routeTree.gen.ts create mode 100644 integrations/lucide-react/tanstack-router/src/router.tsx create mode 100644 integrations/lucide-react/tanstack-router/src/routes/__root.tsx create mode 100644 integrations/lucide-react/tanstack-router/src/routes/about.tsx create mode 100644 integrations/lucide-react/tanstack-router/src/routes/index.tsx create mode 100644 integrations/lucide-react/tanstack-router/tests/icons.browser.spec.tsx create mode 100644 integrations/lucide-react/tanstack-router/tsconfig.json create mode 100644 integrations/lucide-react/tanstack-router/vite.config.ts create mode 100644 integrations/lucide-react/tanstack-router/vitest.config.ts create mode 100644 integrations/lucide-react/tanstack-start/package.json create mode 100644 integrations/lucide-react/tanstack-start/src/IconShowcase.tsx create mode 100644 integrations/lucide-react/tanstack-start/src/routeTree.gen.ts create mode 100644 integrations/lucide-react/tanstack-start/src/router.tsx create mode 100644 integrations/lucide-react/tanstack-start/src/routes/__root.tsx create mode 100644 integrations/lucide-react/tanstack-start/src/routes/about.tsx create mode 100644 integrations/lucide-react/tanstack-start/src/routes/index.tsx create mode 100644 integrations/lucide-react/tanstack-start/tests/icons.browser.spec.tsx create mode 100644 integrations/lucide-react/tanstack-start/tsconfig.json create mode 100644 integrations/lucide-react/tanstack-start/vite.config.ts create mode 100644 integrations/lucide-react/tanstack-start/vitest.config.ts create mode 100644 integrations/lucide-react/vite/index.html create mode 100644 integrations/lucide-react/vite/package.json create mode 100644 integrations/lucide-react/vite/src/App.tsx create mode 100644 integrations/lucide-react/vite/src/IconShowcase.tsx create mode 100644 integrations/lucide-react/vite/src/main.tsx create mode 100644 integrations/lucide-react/vite/tests/icons.browser.spec.tsx create mode 100644 integrations/lucide-react/vite/tsconfig.json create mode 100644 integrations/lucide-react/vite/vite.config.ts diff --git a/.github/workflows/lucide-react.yml b/.github/workflows/lucide-react.yml index 7d00a1ba5..3e8676365 100644 --- a/.github/workflows/lucide-react.yml +++ b/.github/workflows/lucide-react.yml @@ -7,10 +7,13 @@ on: pull_request: paths: - packages/lucide-react/** + - integrations/lucide-react/** - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - scripts/generateNextJSAliases.mjs + - package.json + - pnpm-workspace.yaml - pnpm-lock.yaml permissions: @@ -48,3 +51,22 @@ jobs: - name: Test run: pnpm --filter lucide-react test + + integration: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Chromium + run: pnpm --filter @lucide/integration-react-vite exec playwright install --with-deps chromium + + - name: Run integration checks + run: pnpm test:integrations:react diff --git a/.gitignore b/.gitignore index 67343f5ec..cf6cb25aa 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ .cache .env node_modules +.pnpm-store dist build sandbox @@ -13,6 +14,10 @@ stash coverage stats *.log +*.tsbuildinfo +integrations/**/.react-router +integrations/**/.vitest-attachments +integrations/**/__screenshots__ outlined lucide-font packages/**/src/icons/*.js diff --git a/.prettierignore b/.prettierignore index 435726b81..e821afcfd 100644 --- a/.prettierignore +++ b/.prettierignore @@ -19,6 +19,13 @@ packages/lucide-static/icon-nodes.json packages/lucide-static/font packages/svelte/.svelte-kit +# integration test artifacts and generated routes +integrations/**/.react-router +integrations/**/next-env.d.ts +integrations/**/routeTree.gen.ts +integrations/**/.vitest-attachments +integrations/**/__screenshots__ + # lucide-svelte packages/svelte/src/icons/*.svelte packages/svelte/.svelte-kit diff --git a/integrations/lucide-react/README.md b/integrations/lucide-react/README.md new file mode 100644 index 000000000..f6fa56e8a --- /dev/null +++ b/integrations/lucide-react/README.md @@ -0,0 +1,18 @@ +# Lucide React integrations + +These fixtures exercise the built `lucide-react` package in real consumer frameworks. + +Every fixture runs three checks: + +- a framework production build; +- TypeScript with `noEmit`; +- Vitest Browser Mode in Chromium. + +From the repository root, install Chromium once and run the complete suite: + +```sh +pnpm --filter @lucide/integration-react-vite exec playwright install chromium +pnpm test:integrations:react +``` + +The fixtures depend on `lucide-react` through `workspace:*`, but import only its public package entry points. The root command builds `lucide-react` before running any consumer checks. diff --git a/integrations/lucide-react/nextjs/app/IconShowcase.tsx b/integrations/lucide-react/nextjs/app/IconShowcase.tsx new file mode 100644 index 000000000..c22829e11 --- /dev/null +++ b/integrations/lucide-react/nextjs/app/IconShowcase.tsx @@ -0,0 +1,34 @@ +'use client'; + +import { Camera, Droplet, Edit2, House, LucideProvider, Pen } from 'lucide-react'; +import { DynamicIcon } from 'lucide-react/dynamic'; + +export default function IconShowcase() { + return ( +
+ + + + + + + + +
+ ); +} diff --git a/integrations/lucide-react/nextjs/app/layout.tsx b/integrations/lucide-react/nextjs/app/layout.tsx new file mode 100644 index 000000000..bb6b7ea87 --- /dev/null +++ b/integrations/lucide-react/nextjs/app/layout.tsx @@ -0,0 +1,9 @@ +import type { ReactNode } from 'react'; + +export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) { + return ( + +
{children} + + ); +} diff --git a/integrations/lucide-react/nextjs/app/page.tsx b/integrations/lucide-react/nextjs/app/page.tsx new file mode 100644 index 000000000..5d204e163 --- /dev/null +++ b/integrations/lucide-react/nextjs/app/page.tsx @@ -0,0 +1,5 @@ +import IconShowcase from './IconShowcase'; + +export default function Page() { + return ; +} diff --git a/integrations/lucide-react/nextjs/next-env.d.ts b/integrations/lucide-react/nextjs/next-env.d.ts new file mode 100644 index 000000000..ce4e94a6b --- /dev/null +++ b/integrations/lucide-react/nextjs/next-env.d.ts @@ -0,0 +1,7 @@ +/// +/// +import "./.next/types/routes.d.ts"; +import "./.next/types/root-params.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/integrations/lucide-react/nextjs/package.json b/integrations/lucide-react/nextjs/package.json new file mode 100644 index 000000000..757b6c8c0 --- /dev/null +++ b/integrations/lucide-react/nextjs/package.json @@ -0,0 +1,28 @@ +{ + "name": "@lucide/integration-react-nextjs", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "next build", + "typecheck": "next typegen && tsc --noEmit", + "test:browser": "vitest run", + "check": "pnpm build && pnpm typecheck && pnpm test:browser" + }, + "dependencies": { + "lucide-react": "workspace:*", + "next": "16.3.4", + "react": "19.2.8", + "react-dom": "19.2.8" + }, + "devDependencies": { + "@types/react": "19.2.18", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^4.7.0", + "@vitest/browser-playwright": "4.1.10", + "typescript": "^6.0.3", + "vite": "^7.3.6", + "vitest": "4.1.10", + "vitest-browser-react": "2.2.0" + } +} diff --git a/integrations/lucide-react/nextjs/tests/icons.browser.spec.tsx b/integrations/lucide-react/nextjs/tests/icons.browser.spec.tsx new file mode 100644 index 000000000..1a3b946ed --- /dev/null +++ b/integrations/lucide-react/nextjs/tests/icons.browser.spec.tsx @@ -0,0 +1,38 @@ +import { expect, test } from 'vitest'; +import { render } from 'vitest-browser-react'; +import Page from '../app/page'; + +test('renders Lucide public APIs in a real browser', async () => { + const screen = await render(); + + const staticIcon = screen.getByTestId('static-icon'); + await expect.element(staticIcon).toBeVisible(); + await expect.element(staticIcon).toHaveAttribute('width', '24'); + await expect.element(staticIcon).toHaveAttribute('height', '24'); + await expect.element(staticIcon).toHaveAttribute('viewBox', '0 0 24 24'); + await expect.element(staticIcon).toHaveAttribute('aria-hidden', 'true'); + + const customIcon = screen.getByTestId('custom-icon'); + await expect.element(customIcon).toBeVisible(); + await expect.element(customIcon).toHaveAttribute('width', '48'); + await expect.element(customIcon).toHaveAttribute('height', '48'); + await expect.element(customIcon).toHaveAttribute('stroke', 'red'); + await expect.element(customIcon).toHaveAttribute('stroke-width', '2'); + await expect.element(customIcon).toHaveClass('consumer-icon'); + + const providerIcon = screen.getByTestId('provider-icon'); + await expect.element(providerIcon).toHaveAttribute('width', '32'); + await expect.element(providerIcon).toHaveAttribute('stroke', 'purple'); + await expect.element(providerIcon).toHaveAttribute('stroke-width', '3'); + + const aliasIcon = screen.getByTestId('alias-icon'); + const canonicalIcon = screen.getByTestId('canonical-icon'); + await expect.element(aliasIcon).toBeVisible(); + await expect.element(canonicalIcon).toBeVisible(); + expect(aliasIcon.element().innerHTML).toBe(canonicalIcon.element().innerHTML); + + const dynamicIcon = screen.getByTestId('dynamic-icon'); + await expect.element(dynamicIcon).toBeVisible(); + await expect.element(dynamicIcon).toHaveAttribute('aria-label', 'Dynamic circle'); + await expect.element(dynamicIcon).not.toHaveAttribute('aria-hidden'); +}); diff --git a/integrations/lucide-react/nextjs/tsconfig.json b/integrations/lucide-react/nextjs/tsconfig.json new file mode 100644 index 000000000..67e9156f8 --- /dev/null +++ b/integrations/lucide-react/nextjs/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [{ "name": "next" }], + "types": ["vitest/globals"], + }, + "include": [ + "next-env.d.ts", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.ts", + "**/*.tsx", + "**/*.mts", + ], + "exclude": ["node_modules"], +} diff --git a/integrations/lucide-react/nextjs/vitest.config.ts b/integrations/lucide-react/nextjs/vitest.config.ts new file mode 100644 index 000000000..f30d4b90d --- /dev/null +++ b/integrations/lucide-react/nextjs/vitest.config.ts @@ -0,0 +1,15 @@ +import react from '@vitejs/plugin-react'; +import { playwright } from '@vitest/browser-playwright'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [react()], + test: { + browser: { + enabled: true, + headless: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + }, + }, +}); diff --git a/integrations/lucide-react/react-router/app/IconShowcase.tsx b/integrations/lucide-react/react-router/app/IconShowcase.tsx new file mode 100644 index 000000000..f9b1da045 --- /dev/null +++ b/integrations/lucide-react/react-router/app/IconShowcase.tsx @@ -0,0 +1,32 @@ +import { Camera, Droplet, Edit2, House, LucideProvider, Pen } from 'lucide-react'; +import { DynamicIcon } from 'lucide-react/dynamic'; + +export default function IconShowcase() { + return ( +
+ + + + + + + + +
+ ); +} diff --git a/integrations/lucide-react/react-router/app/root.tsx b/integrations/lucide-react/react-router/app/root.tsx new file mode 100644 index 000000000..2fdee3767 --- /dev/null +++ b/integrations/lucide-react/react-router/app/root.tsx @@ -0,0 +1,27 @@ +import type { ReactNode } from 'react'; +import { Links, Meta, Outlet, Scripts, ScrollRestoration } from 'react-router'; + +export function Layout({ children }: Readonly<{ children: ReactNode }>) { + return ( + + + + + + + + + {children} + + + + + ); +} + +export default function App() { + return ; +} diff --git a/integrations/lucide-react/react-router/app/routes.ts b/integrations/lucide-react/react-router/app/routes.ts new file mode 100644 index 000000000..ae841a80e --- /dev/null +++ b/integrations/lucide-react/react-router/app/routes.ts @@ -0,0 +1,6 @@ +import { index, route, type RouteConfig } from '@react-router/dev/routes'; + +export default [ + index('./routes/home.tsx'), + route('about', './routes/about.tsx'), +] satisfies RouteConfig; diff --git a/integrations/lucide-react/react-router/app/routes/about.tsx b/integrations/lucide-react/react-router/app/routes/about.tsx new file mode 100644 index 000000000..6cf9425e9 --- /dev/null +++ b/integrations/lucide-react/react-router/app/routes/about.tsx @@ -0,0 +1,11 @@ +import { ArrowLeft } from 'lucide-react'; +import { Link } from 'react-router'; + +export default function About() { + return ( +
+ + Home +
+ ); +} diff --git a/integrations/lucide-react/react-router/app/routes/home.tsx b/integrations/lucide-react/react-router/app/routes/home.tsx new file mode 100644 index 000000000..979950453 --- /dev/null +++ b/integrations/lucide-react/react-router/app/routes/home.tsx @@ -0,0 +1,11 @@ +import { Link } from 'react-router'; +import IconShowcase from '../IconShowcase'; + +export default function Home() { + return ( + <> + + About + + ); +} diff --git a/integrations/lucide-react/react-router/package.json b/integrations/lucide-react/react-router/package.json new file mode 100644 index 000000000..32ec4a83e --- /dev/null +++ b/integrations/lucide-react/react-router/package.json @@ -0,0 +1,33 @@ +{ + "name": "@lucide/integration-react-react-router", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "react-router build", + "typecheck": "react-router typegen && tsc --noEmit", + "test:browser": "vitest run", + "check": "pnpm build && pnpm typecheck && pnpm test:browser" + }, + "dependencies": { + "@react-router/node": "8.3.1", + "@react-router/serve": "8.3.1", + "isbot": "5.2.2", + "lucide-react": "workspace:*", + "react": "19.2.8", + "react-dom": "19.2.8", + "react-router": "8.3.1" + }, + "devDependencies": { + "@react-router/dev": "8.3.1", + "@types/node": "^26.1.1", + "@types/react": "19.2.18", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^4.7.0", + "@vitest/browser-playwright": "4.1.10", + "typescript": "^6.0.3", + "vite": "^7.3.6", + "vitest": "4.1.10", + "vitest-browser-react": "2.2.0" + } +} diff --git a/integrations/lucide-react/react-router/react-router.config.ts b/integrations/lucide-react/react-router/react-router.config.ts new file mode 100644 index 000000000..51e896777 --- /dev/null +++ b/integrations/lucide-react/react-router/react-router.config.ts @@ -0,0 +1,5 @@ +import type { Config } from '@react-router/dev/config'; + +export default { + ssr: true, +} satisfies Config; diff --git a/integrations/lucide-react/react-router/tests/icons.browser.spec.tsx b/integrations/lucide-react/react-router/tests/icons.browser.spec.tsx new file mode 100644 index 000000000..bbddd9236 --- /dev/null +++ b/integrations/lucide-react/react-router/tests/icons.browser.spec.tsx @@ -0,0 +1,52 @@ +import { expect, test } from 'vitest'; +import { render } from 'vitest-browser-react'; +import { MemoryRouter, Route, Routes } from 'react-router'; +import About from '../app/routes/about'; +import Home from '../app/routes/home'; + +test('renders Lucide public APIs and survives router navigation', async () => { + const screen = await render( + + + } + path="/" + /> + } + path="/about" + /> + + , + ); + + const staticIcon = screen.getByTestId('static-icon'); + await expect.element(staticIcon).toBeVisible(); + await expect.element(staticIcon).toHaveAttribute('width', '24'); + await expect.element(staticIcon).toHaveAttribute('height', '24'); + await expect.element(staticIcon).toHaveAttribute('viewBox', '0 0 24 24'); + await expect.element(staticIcon).toHaveAttribute('aria-hidden', 'true'); + + const customIcon = screen.getByTestId('custom-icon'); + await expect.element(customIcon).toBeVisible(); + await expect.element(customIcon).toHaveAttribute('width', '48'); + const aliasIcon = screen.getByTestId('alias-icon'); + const canonicalIcon = screen.getByTestId('canonical-icon'); + await expect.element(aliasIcon).toBeVisible(); + await expect.element(canonicalIcon).toBeVisible(); + expect(aliasIcon.element().innerHTML).toBe(canonicalIcon.element().innerHTML); + await expect.element(customIcon).toHaveClass('consumer-icon'); + + const providerIcon = screen.getByTestId('provider-icon'); + await expect.element(providerIcon).toHaveAttribute('width', '32'); + await expect.element(providerIcon).toHaveAttribute('stroke', 'purple'); + await expect.element(providerIcon).toHaveAttribute('stroke-width', '3'); + + const dynamicIcon = screen.getByTestId('dynamic-icon'); + await expect.element(dynamicIcon).toBeVisible(); + await expect.element(dynamicIcon).toHaveAttribute('aria-label', 'Dynamic circle'); + await expect.element(dynamicIcon).not.toHaveAttribute('aria-hidden'); + + await screen.getByRole('link', { name: 'About' }).click(); + await expect.element(screen.getByTestId('route-icon')).toBeVisible(); +}); diff --git a/integrations/lucide-react/react-router/tsconfig.json b/integrations/lucide-react/react-router/tsconfig.json new file mode 100644 index 000000000..395c862f2 --- /dev/null +++ b/integrations/lucide-react/react-router/tsconfig.json @@ -0,0 +1,18 @@ +{ + "include": ["**/*", ".react-router/types/**/*"], + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["node", "vite/client", "vitest/globals"], + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "rootDirs": [".", "./.react-router/types"], + "verbatimModuleSyntax": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + }, +} diff --git a/integrations/lucide-react/react-router/vite.config.ts b/integrations/lucide-react/react-router/vite.config.ts new file mode 100644 index 000000000..68ba30d69 --- /dev/null +++ b/integrations/lucide-react/react-router/vite.config.ts @@ -0,0 +1,6 @@ +import { reactRouter } from '@react-router/dev/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [reactRouter()], +}); diff --git a/integrations/lucide-react/react-router/vitest.config.ts b/integrations/lucide-react/react-router/vitest.config.ts new file mode 100644 index 000000000..f30d4b90d --- /dev/null +++ b/integrations/lucide-react/react-router/vitest.config.ts @@ -0,0 +1,15 @@ +import react from '@vitejs/plugin-react'; +import { playwright } from '@vitest/browser-playwright'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [react()], + test: { + browser: { + enabled: true, + headless: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + }, + }, +}); diff --git a/integrations/lucide-react/tanstack-router/index.html b/integrations/lucide-react/tanstack-router/index.html new file mode 100644 index 000000000..84e6a0a0a --- /dev/null +++ b/integrations/lucide-react/tanstack-router/index.html @@ -0,0 +1,18 @@ + + + + + + Lucide React TanStack Router integration + + +
+ + + diff --git a/integrations/lucide-react/tanstack-router/package.json b/integrations/lucide-react/tanstack-router/package.json new file mode 100644 index 000000000..235f569bd --- /dev/null +++ b/integrations/lucide-react/tanstack-router/package.json @@ -0,0 +1,29 @@ +{ + "name": "@lucide/integration-react-tanstack-router", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "vite build", + "typecheck": "tsc --noEmit", + "test:browser": "vitest run", + "check": "pnpm build && pnpm typecheck && pnpm test:browser" + }, + "dependencies": { + "@tanstack/react-router": "1.170.32", + "lucide-react": "workspace:*", + "react": "19.2.8", + "react-dom": "19.2.8" + }, + "devDependencies": { + "@tanstack/router-plugin": "1.168.35", + "@types/react": "19.2.18", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^4.7.0", + "@vitest/browser-playwright": "4.1.10", + "typescript": "^6.0.3", + "vite": "^7.3.6", + "vitest": "4.1.10", + "vitest-browser-react": "2.2.0" + } +} diff --git a/integrations/lucide-react/tanstack-router/src/IconShowcase.tsx b/integrations/lucide-react/tanstack-router/src/IconShowcase.tsx new file mode 100644 index 000000000..f9b1da045 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/IconShowcase.tsx @@ -0,0 +1,32 @@ +import { Camera, Droplet, Edit2, House, LucideProvider, Pen } from 'lucide-react'; +import { DynamicIcon } from 'lucide-react/dynamic'; + +export default function IconShowcase() { + return ( +
+ + + + + + + + +
+ ); +} diff --git a/integrations/lucide-react/tanstack-router/src/main.tsx b/integrations/lucide-react/tanstack-router/src/main.tsx new file mode 100644 index 000000000..131b80238 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import { RouterProvider } from '@tanstack/react-router'; +import { router } from './router'; + +createRoot(document.getElementById('root')!).render( + + + , +); diff --git a/integrations/lucide-react/tanstack-router/src/routeTree.gen.ts b/integrations/lucide-react/tanstack-router/src/routeTree.gen.ts new file mode 100644 index 000000000..12bc916ae --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/routeTree.gen.ts @@ -0,0 +1,77 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as IndexRouteImport } from './routes/index' +import { Route as AboutRouteImport } from './routes/about' + +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) +const AboutRoute = AboutRouteImport.update({ + id: '/about', + path: '/about', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute + '/about': typeof AboutRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/about' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/about' + id: '__root__' | '/' | '/about' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AboutRoute: typeof AboutRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + '/about': { + id: '/about' + path: '/about' + fullPath: '/about' + preLoaderRoute: typeof AboutRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AboutRoute: AboutRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() diff --git a/integrations/lucide-react/tanstack-router/src/router.tsx b/integrations/lucide-react/tanstack-router/src/router.tsx new file mode 100644 index 000000000..c1b56e93e --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/router.tsx @@ -0,0 +1,10 @@ +import { createRouter } from '@tanstack/react-router'; +import { routeTree } from './routeTree.gen'; + +export const router = createRouter({ routeTree }); + +declare module '@tanstack/react-router' { + interface Register { + router: typeof router; + } +} diff --git a/integrations/lucide-react/tanstack-router/src/routes/__root.tsx b/integrations/lucide-react/tanstack-router/src/routes/__root.tsx new file mode 100644 index 000000000..863a18b92 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/routes/__root.tsx @@ -0,0 +1,5 @@ +import { Outlet, createRootRoute } from '@tanstack/react-router'; + +export const Route = createRootRoute({ + component: () => , +}); diff --git a/integrations/lucide-react/tanstack-router/src/routes/about.tsx b/integrations/lucide-react/tanstack-router/src/routes/about.tsx new file mode 100644 index 000000000..d7ed14255 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/routes/about.tsx @@ -0,0 +1,15 @@ +import { Link, createFileRoute } from '@tanstack/react-router'; +import { ArrowLeft } from 'lucide-react'; + +export const Route = createFileRoute('/about')({ + component: About, +}); + +function About() { + return ( +
+ + Home +
+ ); +} diff --git a/integrations/lucide-react/tanstack-router/src/routes/index.tsx b/integrations/lucide-react/tanstack-router/src/routes/index.tsx new file mode 100644 index 000000000..db58dd3ae --- /dev/null +++ b/integrations/lucide-react/tanstack-router/src/routes/index.tsx @@ -0,0 +1,15 @@ +import { Link, createFileRoute } from '@tanstack/react-router'; +import IconShowcase from '../IconShowcase'; + +export const Route = createFileRoute('/')({ + component: Home, +}); + +function Home() { + return ( + <> + + About + + ); +} diff --git a/integrations/lucide-react/tanstack-router/tests/icons.browser.spec.tsx b/integrations/lucide-react/tanstack-router/tests/icons.browser.spec.tsx new file mode 100644 index 000000000..285afb697 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/tests/icons.browser.spec.tsx @@ -0,0 +1,46 @@ +import { createMemoryHistory, createRouter, RouterProvider } from '@tanstack/react-router'; +import { expect, test } from 'vitest'; +import { render } from 'vitest-browser-react'; +import { routeTree } from '../src/routeTree.gen'; + +test('renders Lucide public APIs and survives router navigation', async () => { + const router = createRouter({ + history: createMemoryHistory({ initialEntries: ['/'] }), + routeTree, + }); + const screen = await render(); + + const staticIcon = screen.getByTestId('static-icon'); + await expect.element(staticIcon).toBeVisible(); + await expect.element(staticIcon).toHaveAttribute('width', '24'); + await expect.element(staticIcon).toHaveAttribute('height', '24'); + await expect.element(staticIcon).toHaveAttribute('viewBox', '0 0 24 24'); + await expect.element(staticIcon).toHaveAttribute('aria-hidden', 'true'); + + const customIcon = screen.getByTestId('custom-icon'); + await expect.element(customIcon).toBeVisible(); + await expect.element(customIcon).toHaveAttribute('width', '48'); + await expect.element(customIcon).toHaveAttribute('height', '48'); + await expect.element(customIcon).toHaveAttribute('stroke', 'red'); + await expect.element(customIcon).toHaveAttribute('stroke-width', '2'); + await expect.element(customIcon).toHaveClass('consumer-icon'); + + const providerIcon = screen.getByTestId('provider-icon'); + await expect.element(providerIcon).toHaveAttribute('width', '32'); + await expect.element(providerIcon).toHaveAttribute('stroke', 'purple'); + await expect.element(providerIcon).toHaveAttribute('stroke-width', '3'); + + const aliasIcon = screen.getByTestId('alias-icon'); + const canonicalIcon = screen.getByTestId('canonical-icon'); + await expect.element(aliasIcon).toBeVisible(); + await expect.element(canonicalIcon).toBeVisible(); + expect(aliasIcon.element().innerHTML).toBe(canonicalIcon.element().innerHTML); + + const dynamicIcon = screen.getByTestId('dynamic-icon'); + await expect.element(dynamicIcon).toBeVisible(); + await expect.element(dynamicIcon).toHaveAttribute('aria-label', 'Dynamic circle'); + await expect.element(dynamicIcon).not.toHaveAttribute('aria-hidden'); + + await screen.getByRole('link', { name: 'About' }).click(); + await expect.element(screen.getByTestId('route-icon')).toBeVisible(); +}); diff --git a/integrations/lucide-react/tanstack-router/tsconfig.json b/integrations/lucide-react/tanstack-router/tsconfig.json new file mode 100644 index 000000000..9aaa72b55 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "types": ["vite/client", "vitest/globals"], + }, + "include": ["src", "tests", "vite.config.ts", "vitest.config.ts"], +} diff --git a/integrations/lucide-react/tanstack-router/vite.config.ts b/integrations/lucide-react/tanstack-router/vite.config.ts new file mode 100644 index 000000000..34e94dc44 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/vite.config.ts @@ -0,0 +1,13 @@ +import react from '@vitejs/plugin-react'; +import { tanstackRouter } from '@tanstack/router-plugin/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [ + tanstackRouter({ + target: 'react', + autoCodeSplitting: true, + }), + react(), + ], +}); diff --git a/integrations/lucide-react/tanstack-router/vitest.config.ts b/integrations/lucide-react/tanstack-router/vitest.config.ts new file mode 100644 index 000000000..0aef508c8 --- /dev/null +++ b/integrations/lucide-react/tanstack-router/vitest.config.ts @@ -0,0 +1,17 @@ +import { playwright } from '@vitest/browser-playwright'; +import { defineConfig, mergeConfig } from 'vitest/config'; +import viteConfig from './vite.config'; + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + browser: { + enabled: true, + headless: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + }, + }, + }), +); diff --git a/integrations/lucide-react/tanstack-start/package.json b/integrations/lucide-react/tanstack-start/package.json new file mode 100644 index 000000000..c40479dc8 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/package.json @@ -0,0 +1,30 @@ +{ + "name": "@lucide/integration-react-tanstack-start", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "vite build", + "typecheck": "tsc --noEmit", + "test:browser": "vitest run", + "check": "pnpm build && pnpm typecheck && pnpm test:browser" + }, + "dependencies": { + "@tanstack/react-router": "1.170.32", + "@tanstack/react-start": "1.168.49", + "lucide-react": "workspace:*", + "react": "19.2.8", + "react-dom": "19.2.8" + }, + "devDependencies": { + "@types/node": "^26.1.1", + "@types/react": "19.2.18", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^4.7.0", + "@vitest/browser-playwright": "4.1.10", + "typescript": "^6.0.3", + "vite": "^7.3.6", + "vitest": "4.1.10", + "vitest-browser-react": "2.2.0" + } +} diff --git a/integrations/lucide-react/tanstack-start/src/IconShowcase.tsx b/integrations/lucide-react/tanstack-start/src/IconShowcase.tsx new file mode 100644 index 000000000..f9b1da045 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/src/IconShowcase.tsx @@ -0,0 +1,32 @@ +import { Camera, Droplet, Edit2, House, LucideProvider, Pen } from 'lucide-react'; +import { DynamicIcon } from 'lucide-react/dynamic'; + +export default function IconShowcase() { + return ( +
+ + + + + + + + +
+ ); +} diff --git a/integrations/lucide-react/tanstack-start/src/routeTree.gen.ts b/integrations/lucide-react/tanstack-start/src/routeTree.gen.ts new file mode 100644 index 000000000..d89758e68 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/src/routeTree.gen.ts @@ -0,0 +1,86 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as IndexRouteImport } from './routes/index' +import { Route as AboutRouteImport } from './routes/about' + +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) +const AboutRoute = AboutRouteImport.update({ + id: '/about', + path: '/about', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute + '/about': typeof AboutRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute + '/about': typeof AboutRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/about' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/about' + id: '__root__' | '/' | '/about' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + AboutRoute: typeof AboutRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + '/about': { + id: '/about' + path: '/about' + fullPath: '/about' + preLoaderRoute: typeof AboutRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + AboutRoute: AboutRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +import type { getRouter } from './router.tsx' +import type { createStart } from '@tanstack/react-start' +declare module '@tanstack/react-start' { + interface Register { + ssr: true + router: Awaited> + } +} diff --git a/integrations/lucide-react/tanstack-start/src/router.tsx b/integrations/lucide-react/tanstack-start/src/router.tsx new file mode 100644 index 000000000..e474d9811 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/src/router.tsx @@ -0,0 +1,15 @@ +import { createRouter } from '@tanstack/react-router'; +import { routeTree } from './routeTree.gen'; + +export function getRouter() { + return createRouter({ + routeTree, + scrollRestoration: true, + }); +} + +declare module '@tanstack/react-router' { + interface Register { + router: ReturnType; + } +} diff --git a/integrations/lucide-react/tanstack-start/src/routes/__root.tsx b/integrations/lucide-react/tanstack-start/src/routes/__root.tsx new file mode 100644 index 000000000..85ce34b68 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/src/routes/__root.tsx @@ -0,0 +1,35 @@ +import type { ReactNode } from 'react'; +import { HeadContent, Outlet, Scripts, createRootRoute } from '@tanstack/react-router'; + +export const Route = createRootRoute({ + head: () => ({ + meta: [ + { charSet: 'utf-8' }, + { name: 'viewport', content: 'width=device-width, initial-scale=1' }, + { title: 'Lucide React TanStack Start integration' }, + ], + }), + component: RootComponent, +}); + +function RootComponent() { + return ( + + + + ); +} + +function RootDocument({ children }: Readonly<{ children: ReactNode }>) { + return ( + + + + + + {children} + + + + ); +} diff --git a/integrations/lucide-react/tanstack-start/src/routes/about.tsx b/integrations/lucide-react/tanstack-start/src/routes/about.tsx new file mode 100644 index 000000000..d7ed14255 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/src/routes/about.tsx @@ -0,0 +1,15 @@ +import { Link, createFileRoute } from '@tanstack/react-router'; +import { ArrowLeft } from 'lucide-react'; + +export const Route = createFileRoute('/about')({ + component: About, +}); + +function About() { + return ( +
+ + Home +
+ ); +} diff --git a/integrations/lucide-react/tanstack-start/src/routes/index.tsx b/integrations/lucide-react/tanstack-start/src/routes/index.tsx new file mode 100644 index 000000000..db58dd3ae --- /dev/null +++ b/integrations/lucide-react/tanstack-start/src/routes/index.tsx @@ -0,0 +1,15 @@ +import { Link, createFileRoute } from '@tanstack/react-router'; +import IconShowcase from '../IconShowcase'; + +export const Route = createFileRoute('/')({ + component: Home, +}); + +function Home() { + return ( + <> + + About + + ); +} diff --git a/integrations/lucide-react/tanstack-start/tests/icons.browser.spec.tsx b/integrations/lucide-react/tanstack-start/tests/icons.browser.spec.tsx new file mode 100644 index 000000000..3d34789f6 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/tests/icons.browser.spec.tsx @@ -0,0 +1,38 @@ +import { expect, test } from 'vitest'; +import { render } from 'vitest-browser-react'; +import IconShowcase from '../src/IconShowcase'; + +test('renders Lucide public APIs in a real browser', async () => { + const screen = await render(); + + const staticIcon = screen.getByTestId('static-icon'); + await expect.element(staticIcon).toBeVisible(); + await expect.element(staticIcon).toHaveAttribute('width', '24'); + await expect.element(staticIcon).toHaveAttribute('height', '24'); + await expect.element(staticIcon).toHaveAttribute('viewBox', '0 0 24 24'); + await expect.element(staticIcon).toHaveAttribute('aria-hidden', 'true'); + + const customIcon = screen.getByTestId('custom-icon'); + await expect.element(customIcon).toBeVisible(); + await expect.element(customIcon).toHaveAttribute('width', '48'); + await expect.element(customIcon).toHaveAttribute('height', '48'); + await expect.element(customIcon).toHaveAttribute('stroke', 'red'); + await expect.element(customIcon).toHaveAttribute('stroke-width', '2'); + await expect.element(customIcon).toHaveClass('consumer-icon'); + + const providerIcon = screen.getByTestId('provider-icon'); + await expect.element(providerIcon).toHaveAttribute('width', '32'); + await expect.element(providerIcon).toHaveAttribute('stroke', 'purple'); + await expect.element(providerIcon).toHaveAttribute('stroke-width', '3'); + + const aliasIcon = screen.getByTestId('alias-icon'); + const canonicalIcon = screen.getByTestId('canonical-icon'); + await expect.element(aliasIcon).toBeVisible(); + await expect.element(canonicalIcon).toBeVisible(); + expect(aliasIcon.element().innerHTML).toBe(canonicalIcon.element().innerHTML); + + const dynamicIcon = screen.getByTestId('dynamic-icon'); + await expect.element(dynamicIcon).toBeVisible(); + await expect.element(dynamicIcon).toHaveAttribute('aria-label', 'Dynamic circle'); + await expect.element(dynamicIcon).not.toHaveAttribute('aria-hidden'); +}); diff --git a/integrations/lucide-react/tanstack-start/tsconfig.json b/integrations/lucide-react/tanstack-start/tsconfig.json new file mode 100644 index 000000000..4f5805816 --- /dev/null +++ b/integrations/lucide-react/tanstack-start/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "types": ["node", "vite/client", "vitest/globals"], + }, + "include": ["src", "tests", "vite.config.ts", "vitest.config.ts"], +} diff --git a/integrations/lucide-react/tanstack-start/vite.config.ts b/integrations/lucide-react/tanstack-start/vite.config.ts new file mode 100644 index 000000000..d8177653f --- /dev/null +++ b/integrations/lucide-react/tanstack-start/vite.config.ts @@ -0,0 +1,7 @@ +import react from '@vitejs/plugin-react'; +import { tanstackStart } from '@tanstack/react-start/plugin/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [tanstackStart(), react()], +}); diff --git a/integrations/lucide-react/tanstack-start/vitest.config.ts b/integrations/lucide-react/tanstack-start/vitest.config.ts new file mode 100644 index 000000000..f30d4b90d --- /dev/null +++ b/integrations/lucide-react/tanstack-start/vitest.config.ts @@ -0,0 +1,15 @@ +import react from '@vitejs/plugin-react'; +import { playwright } from '@vitest/browser-playwright'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [react()], + test: { + browser: { + enabled: true, + headless: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + }, + }, +}); diff --git a/integrations/lucide-react/vite/index.html b/integrations/lucide-react/vite/index.html new file mode 100644 index 000000000..37234e0dc --- /dev/null +++ b/integrations/lucide-react/vite/index.html @@ -0,0 +1,18 @@ + + + + + + Lucide React Vite integration + + +
+ + + diff --git a/integrations/lucide-react/vite/package.json b/integrations/lucide-react/vite/package.json new file mode 100644 index 000000000..5c1e403b7 --- /dev/null +++ b/integrations/lucide-react/vite/package.json @@ -0,0 +1,28 @@ +{ + "name": "@lucide/integration-react-vite", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "vite build", + "typecheck": "tsc --noEmit", + "test:browser": "vitest run", + "check": "pnpm build && pnpm typecheck && pnpm test:browser" + }, + "dependencies": { + "lucide-react": "workspace:*", + "react": "19.2.8", + "react-dom": "19.2.8" + }, + "devDependencies": { + "@types/react": "19.2.18", + "@types/react-dom": "19.2.3", + "@vitejs/plugin-react": "^4.7.0", + "@vitest/browser-playwright": "4.1.10", + "playwright": "1.58.2", + "typescript": "^6.0.3", + "vite": "^7.3.6", + "vitest": "4.1.10", + "vitest-browser-react": "2.2.0" + } +} diff --git a/integrations/lucide-react/vite/src/App.tsx b/integrations/lucide-react/vite/src/App.tsx new file mode 100644 index 000000000..28c729c09 --- /dev/null +++ b/integrations/lucide-react/vite/src/App.tsx @@ -0,0 +1,5 @@ +import IconShowcase from './IconShowcase'; + +export default function App() { + return ; +} diff --git a/integrations/lucide-react/vite/src/IconShowcase.tsx b/integrations/lucide-react/vite/src/IconShowcase.tsx new file mode 100644 index 000000000..f9b1da045 --- /dev/null +++ b/integrations/lucide-react/vite/src/IconShowcase.tsx @@ -0,0 +1,32 @@ +import { Camera, Droplet, Edit2, House, LucideProvider, Pen } from 'lucide-react'; +import { DynamicIcon } from 'lucide-react/dynamic'; + +export default function IconShowcase() { + return ( +
+ + + + + + + + +
+ ); +} diff --git a/integrations/lucide-react/vite/src/main.tsx b/integrations/lucide-react/vite/src/main.tsx new file mode 100644 index 000000000..d9736adc9 --- /dev/null +++ b/integrations/lucide-react/vite/src/main.tsx @@ -0,0 +1,9 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import App from './App'; + +createRoot(document.getElementById('root')!).render( + + + , +); diff --git a/integrations/lucide-react/vite/tests/icons.browser.spec.tsx b/integrations/lucide-react/vite/tests/icons.browser.spec.tsx new file mode 100644 index 000000000..a2f9982ab --- /dev/null +++ b/integrations/lucide-react/vite/tests/icons.browser.spec.tsx @@ -0,0 +1,38 @@ +import { expect, test } from 'vitest'; +import { render } from 'vitest-browser-react'; +import App from '../src/App'; + +test('renders Lucide public APIs in a real browser', async () => { + const screen = await render(); + + const staticIcon = screen.getByTestId('static-icon'); + await expect.element(staticIcon).toBeVisible(); + await expect.element(staticIcon).toHaveAttribute('width', '24'); + await expect.element(staticIcon).toHaveAttribute('height', '24'); + await expect.element(staticIcon).toHaveAttribute('viewBox', '0 0 24 24'); + await expect.element(staticIcon).toHaveAttribute('aria-hidden', 'true'); + + const customIcon = screen.getByTestId('custom-icon'); + await expect.element(customIcon).toBeVisible(); + await expect.element(customIcon).toHaveAttribute('width', '48'); + await expect.element(customIcon).toHaveAttribute('height', '48'); + await expect.element(customIcon).toHaveAttribute('stroke', 'red'); + await expect.element(customIcon).toHaveAttribute('stroke-width', '2'); + await expect.element(customIcon).toHaveClass('consumer-icon'); + + const providerIcon = screen.getByTestId('provider-icon'); + await expect.element(providerIcon).toHaveAttribute('width', '32'); + await expect.element(providerIcon).toHaveAttribute('stroke', 'purple'); + await expect.element(providerIcon).toHaveAttribute('stroke-width', '3'); + + const aliasIcon = screen.getByTestId('alias-icon'); + const canonicalIcon = screen.getByTestId('canonical-icon'); + await expect.element(aliasIcon).toBeVisible(); + await expect.element(canonicalIcon).toBeVisible(); + expect(aliasIcon.element().innerHTML).toBe(canonicalIcon.element().innerHTML); + + const dynamicIcon = screen.getByTestId('dynamic-icon'); + await expect.element(dynamicIcon).toBeVisible(); + await expect.element(dynamicIcon).toHaveAttribute('aria-label', 'Dynamic circle'); + await expect.element(dynamicIcon).not.toHaveAttribute('aria-hidden'); +}); diff --git a/integrations/lucide-react/vite/tsconfig.json b/integrations/lucide-react/vite/tsconfig.json new file mode 100644 index 000000000..63d48882e --- /dev/null +++ b/integrations/lucide-react/vite/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "types": ["vitest/globals"], + }, + "include": ["src", "tests", "vite.config.ts"], +} diff --git a/integrations/lucide-react/vite/vite.config.ts b/integrations/lucide-react/vite/vite.config.ts new file mode 100644 index 000000000..f30d4b90d --- /dev/null +++ b/integrations/lucide-react/vite/vite.config.ts @@ -0,0 +1,15 @@ +import react from '@vitejs/plugin-react'; +import { playwright } from '@vitest/browser-playwright'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [react()], + test: { + browser: { + enabled: true, + headless: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + }, + }, +}); diff --git a/package.json b/package.json index f5d71083d..0c1a28710 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "build": "pnpm -r --filter './packages/**' build", "test": "pnpm -r --filter './packages/**' test", "test:update": "pnpm -r --filter './packages/**' --filter !'./packages/lucide-angular' test -- -u", + "test:integrations:react": "pnpm --filter lucide-react build && pnpm -r --workspace-concurrency=1 --filter './integrations/lucide-react/**' check", "test:font": "pnpm --filter build-font test", "lucide": "pnpm --filter lucide", "lucide-angular": "pnpm --filter lucide-angular", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c7ce47a4a..08470e43a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,7 +58,7 @@ importers: version: 4.1.10(vitest@4.1.10) ajv-cli: specifier: ^5.0.0 - version: 5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.17))(@types/node@26.1.1)(typescript@6.0.3)) + version: 5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3)) cspell: specifier: ^10.0.1 version: 10.0.1 @@ -118,7 +118,7 @@ importers: version: 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) yargs: specifier: ^17.7.3 version: 17.7.3 @@ -206,7 +206,7 @@ importers: version: 4.0.0 nitropack: specifier: ^2.13.4 - version: 2.13.4(@vercel/blob@2.6.1)(encoding@0.1.13)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(xml2js@0.6.2) + version: 2.13.4(@vercel/blob@2.6.1)(encoding@0.1.13)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(xml2js@0.6.2) rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 @@ -236,14 +236,238 @@ importers: version: 5.3.1 vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.55.2)(@types/node@26.1.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.6.7)(postcss@8.5.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.101.0)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(typescript@6.0.3)(yaml@2.9.0) + version: 1.6.4(@algolia/client-search@5.55.2)(@types/node@26.1.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(postcss@8.5.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.101.0)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(typescript@6.0.3)(yaml@2.9.0) vitepress-plugin-group-icons: specifier: ^1.7.5 - version: 1.7.5(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 1.7.5(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) vitepress-plugin-llms: specifier: ^1.13.3 version: 1.13.3(supports-color@10.2.2) + integrations/lucide-react/nextjs: + dependencies: + lucide-react: + specifier: workspace:* + version: link:../../../packages/lucide-react + next: + specifier: 16.3.4 + version: 16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.1.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.101.0) + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + devDependencies: + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser-playwright': + specifier: 4.1.10 + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vite: + specifier: ^7.3.6 + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitest: + specifier: 4.1.10 + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest-browser-react: + specifier: 2.2.0 + version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + + integrations/lucide-react/react-router: + dependencies: + '@react-router/node': + specifier: 8.3.1 + version: 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3) + '@react-router/serve': + specifier: 8.3.1 + version: 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3) + isbot: + specifier: 5.2.2 + version: 5.2.2 + lucide-react: + specifier: workspace:* + version: link:../../../packages/lucide-react + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + react-router: + specifier: 8.3.1 + version: 8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + devDependencies: + '@react-router/dev': + specifier: 8.3.1 + version: 8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@types/node': + specifier: ^26.1.1 + version: 26.1.1 + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser-playwright': + specifier: 4.1.10 + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vite: + specifier: ^7.3.6 + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitest: + specifier: 4.1.10 + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest-browser-react: + specifier: 2.2.0 + version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + + integrations/lucide-react/tanstack-router: + dependencies: + '@tanstack/react-router': + specifier: 1.170.32 + version: 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + lucide-react: + specifier: workspace:* + version: link:../../../packages/lucide-react + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + devDependencies: + '@tanstack/router-plugin': + specifier: 1.168.35 + version: 1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser-playwright': + specifier: 4.1.10 + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vite: + specifier: ^7.3.6 + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitest: + specifier: 4.1.10 + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest-browser-react: + specifier: 2.2.0 + version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + + integrations/lucide-react/tanstack-start: + dependencies: + '@tanstack/react-router': + specifier: 1.170.32 + version: 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/react-start': + specifier: 1.168.49 + version: 1.168.49(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + lucide-react: + specifier: workspace:* + version: link:../../../packages/lucide-react + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + devDependencies: + '@types/node': + specifier: ^26.1.1 + version: 26.1.1 + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser-playwright': + specifier: 4.1.10 + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vite: + specifier: ^7.3.6 + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitest: + specifier: 4.1.10 + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest-browser-react: + specifier: 2.2.0 + version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + + integrations/lucide-react/vite: + dependencies: + lucide-react: + specifier: workspace:* + version: link:../../../packages/lucide-react + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + devDependencies: + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser-playwright': + specifier: 4.1.10 + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + playwright: + specifier: 1.58.2 + version: 1.58.2 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vite: + specifier: ^7.3.6 + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitest: + specifier: 4.1.10 + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest-browser-react: + specifier: 2.2.0 + version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + packages/angular: devDependencies: '@angular-eslint/builder': @@ -254,7 +478,7 @@ importers: version: 21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(@typescript-eslint/types@8.66.0)(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) '@angular/build': specifier: ^21.2.19 - version: 21.2.19(28e23c74415271707c4a8b9b89f9e3f2) + version: 21.2.19(e343b82913a2fd05679d0f3ed92b548d) '@angular/cli': specifier: ^21.2.19 version: 21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2) @@ -290,7 +514,7 @@ importers: version: link:../../tools/build-helpers '@vitest/browser-playwright': specifier: ^4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) angular-eslint: specifier: 21.4.0 version: 21.4.0(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript-eslint@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(typescript@5.9.3) @@ -324,7 +548,7 @@ importers: version: 6.9.1 astro: specifier: ^7.1.0 - version: 7.1.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.6.7)(rollup@4.62.2)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.1.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(rollup@4.62.2)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 @@ -339,10 +563,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) packages/icons: devDependencies: @@ -378,10 +602,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) packages/lab: devDependencies: @@ -444,7 +668,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) packages/lucide-preact: devDependencies: @@ -459,7 +683,7 @@ importers: version: link:../shared '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 @@ -483,7 +707,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) packages/lucide-react: devDependencies: @@ -507,7 +731,7 @@ importers: version: 18.3.31 '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 @@ -531,7 +755,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) packages/lucide-react-native: devDependencies: @@ -561,7 +785,7 @@ importers: version: 18.3.31 '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 @@ -588,7 +812,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) packages/lucide-solid: devDependencies: @@ -639,10 +863,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vite-plugin-solid: specifier: ^2.11.12 - version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) packages/lucide-static: devDependencies: @@ -675,7 +899,7 @@ importers: devDependencies: vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) packages/svelte: devDependencies: @@ -690,13 +914,13 @@ importers: version: 2.5.8(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3) '@sveltejs/vite-plugin-svelte': specifier: ^7.3.0 - version: 7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 '@testing-library/svelte': specifier: ^5.4.2 - version: 5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) '@tsconfig/svelte': specifier: ^5.0.8 version: 5.0.8 @@ -720,7 +944,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) packages/vue: devDependencies: @@ -741,7 +965,7 @@ importers: version: 8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) '@vitejs/plugin-vue': specifier: ^6.0.8 - version: 6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3)) + version: 6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3)) '@vue/test-utils': specifier: 2.5.0 version: 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) @@ -756,7 +980,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vue: specifier: ^3.5.42 version: 3.5.42(typescript@5.9.3) @@ -848,7 +1072,7 @@ importers: version: 3.0.1(rollup@4.62.2)(supports-color@10.2.2) rollup-plugin-visualizer: specifier: ^6.0.11 - version: 6.0.11(rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2))(rollup@4.62.2) + version: 6.0.11(rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3))(rollup@4.62.2) packages: @@ -1299,6 +1523,10 @@ packages: '@astrojs/yaml2ts@0.2.4': resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -1414,11 +1642,6 @@ packages: resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.8': resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} @@ -2008,10 +2231,6 @@ packages: resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.8': resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} @@ -2440,6 +2659,9 @@ packages: '@emnapi/runtime@1.11.2': resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -2929,70 +3151,145 @@ packages: cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + engines: {node: '>=20.9.0'} + os: [freebsd] + '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3000,6 +3297,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3007,6 +3311,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3014,6 +3325,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3021,6 +3339,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3028,6 +3353,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3035,6 +3367,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3042,6 +3381,13 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3049,29 +3395,63 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + '@img/sharp-win32-arm64@0.34.5': resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -3680,6 +4060,61 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 + '@next/env@16.3.4': + resolution: {integrity: sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q==} + + '@next/swc-darwin-arm64@16.3.4': + resolution: {integrity: sha512-iBr3I5LZNk5/bgl5//iTgD2tcym14MX0Xo7fD//u9dYAEgGzza1y9oywluPtf74YnOswVdH1908aK9xVz7zQTw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.3.4': + resolution: {integrity: sha512-2dpiSyl2Jw/NrBPaU2MAKGSa+2MR82pJIn4Sm5Rjr+gxAeuh0z158Su3Z2O8zn7UNNq+ej4bToed6RcRN/Lydg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.3.4': + resolution: {integrity: sha512-+t+U8HZT+fApePCS5h89CSH3datz29MkzyfCn+6fpsZBG/oiEOhINcb9rtkv6sdpToLGFn2e6146NzaKCXkqrA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.3.4': + resolution: {integrity: sha512-mx03GNs1ocQA5JQ4FxDMmIsNkdrZh8cuezKCrId28e5/gIPU/l7Kcy2+vmCCzdjnnmXJy+iOAu+7K0QppO6Urg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@16.3.4': + resolution: {integrity: sha512-YIhGY6fSMfha52bnVxnzc9zaVBzJg+cqQTOD8tXIBSx4fuv0pVMxQTE0PaS59YhnMOiYiG09IMwxJAf/CFm/Dw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@16.3.4': + resolution: {integrity: sha512-+eaaX6axpDb0yF1GCpiERe6njplvdC+nks/fKfcHu3XPGRrald8P3/X7yv7QLdjA51knnxwl9pxdIJsg+w1L+Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@16.3.4': + resolution: {integrity: sha512-0jcXW7Xs/uzICrmgV3MhDYDeRy++1CqnpDIerlPIqYO4bhzB4WNbX/aRnQclustsAyTkFKB0z6rbcjmNg5tR8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.3.4': + resolution: {integrity: sha512-vvBzwu1pYQCp92maZCFCIw/XgOTMR5tur9GjakwIo2cmwRTMKajRZZDS9+e4KsUZWKu1E007WUeAFXRRjZeuzw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3839,6 +4274,22 @@ packages: '@one-ini/wasm@0.2.1': resolution: {integrity: sha512-TUqERXGNTifZ9y2g3wPxQrw3HpHv/02DsW3D90T9x0hhonrL1ZqpSmNrU2XkoIq0fP1N6gZfVQzy2Fw1ZvGBNg==} + '@oozcitak/dom@2.0.2': + resolution: {integrity: sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==} + engines: {node: '>=20.0'} + + '@oozcitak/infra@2.0.2': + resolution: {integrity: sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==} + engines: {node: '>=20.0'} + + '@oozcitak/url@3.0.0': + resolution: {integrity: sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==} + engines: {node: '>=20.0'} + + '@oozcitak/util@10.0.0': + resolution: {integrity: sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==} + engines: {node: '>=20.0'} + '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -4046,6 +4497,61 @@ packages: '@types/react': optional: true + '@react-router/dev@8.3.1': + resolution: {integrity: sha512-yvhMiOq+LLmGPgTOYYWjzfapUN4B2/T3nfr8P81bLTiyh0YSx88OAz5y2D/KKS0boF9EoHyhzeMH4ZweMTwjJA==} + engines: {node: '>=22.22.0'} + hasBin: true + peerDependencies: + '@react-router/serve': ^8.3.1 + '@vitejs/plugin-rsc': ~0.5.26 + react-router: ^8.3.1 + react-server-dom-webpack: ^19.2.7 + typescript: ^5.1.0 || ^6.0.0 || ^7.0.0 + vite: ^7.3.6 + wrangler: ^4.0.0 + peerDependenciesMeta: + '@react-router/serve': + optional: true + '@vitejs/plugin-rsc': + optional: true + react-server-dom-webpack: + optional: true + typescript: + optional: true + wrangler: + optional: true + + '@react-router/express@8.3.1': + resolution: {integrity: sha512-b4Qj+gNc/8zBojI7jouoie8zf/Vv4sBmE1P41tfLl5alxQPyUgH4kXlJzc+GY59lB3poanhBXVcj9P2A+5B2fw==} + engines: {node: '>=22.22.0'} + peerDependencies: + express: ^4.22.2 || ^5 + react-router: 8.3.1 + typescript: ^5.1.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@react-router/node@8.3.1': + resolution: {integrity: sha512-JQI2vPd0twfHXxRxD1QWxKkCfu5I7bxojgEZFL97EvbJLm1B6p4qeqvGc9hl9g/3ZYbieczQY6ElM3zZjiG4sA==} + engines: {node: '>=22.22.0'} + peerDependencies: + react-router: 8.3.1 + typescript: ^5.1.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@react-router/serve@8.3.1': + resolution: {integrity: sha512-BtR3jw0Uw8/2KzeFdOMSDhKOL1NPXIbxfthDNZcsy4Wz7VfrxdfgDOkDMzcsk47nOGyI+C5Y+x8TSyv6oBvVqg==} + engines: {node: '>=22.22.0'} + hasBin: true + peerDependencies: + react-router: 8.3.1 + + '@remix-run/node-fetch-server@0.14.1': + resolution: {integrity: sha512-pKenF5ysIN5lDCnCyvoUxDhKP0tfnGagvGbZh01xxHG6DJXSIXWVC9NpLSDGjxcxd1CKdCOKuZFleXBF3pChIg==} + '@resvg/resvg-js-android-arm-eabi@2.6.2': resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} engines: {node: '>= 10'} @@ -4695,15 +5201,148 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} '@swc/types@0.1.27': resolution: {integrity: sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==} + '@tanstack/history@1.162.1': + resolution: {integrity: sha512-DR9t6lfLVdrjgCwpglrR9DR7Ok8/HlXjcOE+goWXF3zyuLUO/ug7vMbSFxTqrQTtbRghJfyhmIZ0S6LhPIy44w==} + engines: {node: '>=20.19'} + + '@tanstack/react-router@1.170.32': + resolution: {integrity: sha512-SIpxvaTKco100a5ZR3ePmArbhtm3XOx+w1dpGYY9gxHDta4iXSKDdQuhLonwJbIMkVJsU1rwXf0UDHMrF/1snw==} + engines: {node: '>=20.19'} + peerDependencies: + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-start-client@1.168.30': + resolution: {integrity: sha512-qsZuykUl1EF0/rc1bin1RtjFzz07YMOTBzhOstSDzbOVm/WKf1QKFTN+qAZi74xlbXSWNuT2MiFRyg4RKwj8iw==} + engines: {node: '>=22.12.0'} + peerDependencies: + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-start-rsc@0.1.48': + resolution: {integrity: sha512-UglRdTMuF3c4dvzL/gh4dMVbMWHsPy8ZgTQdT2qpTlyt1b/3m+R40tBFdsfTgw76VTXivW+qV/ih0PN9000XTw==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@rspack/core': '>=2.0.0-0' + '@vitejs/plugin-rsc': '>=0.5.30' + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + react-server-dom-rspack: '>=0.0.2' + peerDependenciesMeta: + '@rspack/core': + optional: true + '@vitejs/plugin-rsc': + optional: true + react-server-dom-rspack: + optional: true + + '@tanstack/react-start-server@1.167.37': + resolution: {integrity: sha512-cODHpFU8vIm7AdHii9W3NEuwyruNmT5wLDZjRsJLT9Jp+7FACnfJrRbvxnp1ldSv/9mxcHKi/OgwbdHQeMZcAQ==} + engines: {node: '>=22.12.0'} + peerDependencies: + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-start@1.168.49': + resolution: {integrity: sha512-iQb1ZoEHqvZMGLR4G7v3tTtgL06yv/bwxvGP3waVHxVn7bRpyopM44YbOluaGkcJzc13ZTvdLKWYNAN3bxMX/Q==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@rsbuild/core': ^2.0.0 + '@vitejs/plugin-rsc': '*' + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + vite: ^7.3.6 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + '@vitejs/plugin-rsc': + optional: true + vite: + optional: true + + '@tanstack/react-store@0.9.3': + resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/router-core@1.171.27': + resolution: {integrity: sha512-wDwSLvoLwIaNcnx9UNcN9Mb7Y8QwCYq1U1RQZwyN186gnkIoIYI2SOxy8VqH1vFigbkHkk4FmwMAQlghPgDK2g==} + engines: {node: '>=20.19'} + + '@tanstack/router-generator@1.167.33': + resolution: {integrity: sha512-Z3lCWIPuRUMPmuI8Mm48x/s49TxmHOaFVZ52j1W1QKYrsFHyT6U/h9bqfHJDxfQ8kz7y9q+W1YPKZ15Ee7yuCA==} + engines: {node: '>=20.19'} + + '@tanstack/router-plugin@1.168.35': + resolution: {integrity: sha512-foDAZKFqHXae+oFbIgcsSvy2QCVRn7XdS3nhwcRvD+ed6JrKPUP/1lQMsZLJqWycgR1vkZF7gs955KGa0NZQ0w==} + engines: {node: '>=20.19'} + peerDependencies: + '@rsbuild/core': '>=1.0.2 || ^2.0.0' + '@tanstack/react-router': ^1.170.32 + vite: ^7.3.6 + vite-plugin-solid: ^2.11.10 || ^3.0.0-0 + webpack: '>=5.92.0' + peerDependenciesMeta: + '@rsbuild/core': + optional: true + '@tanstack/react-router': + optional: true + vite: + optional: true + vite-plugin-solid: + optional: true + webpack: + optional: true + + '@tanstack/router-utils@1.162.2': + resolution: {integrity: sha512-hTWqJtqIFFdvuCl8WXNyrodp2L9zo2G37xKRrcVmVRWpAB2h+U1LuRAfS4tsFTiWOIoE/B+WDVFB8JpoEdw6jQ==} + engines: {node: '>=20.19'} + + '@tanstack/start-client-core@1.170.27': + resolution: {integrity: sha512-Ro6ZSM0NgYKDMxM0e8qyU4mBfnld2Zb74BA/9f4i35C0Y3IAA8Zxs/DIPfOo9VRYWp5c5n5Q8dRBn2qn0vtPhQ==} + engines: {node: '>=22.12.0'} + + '@tanstack/start-fn-stubs@1.162.0': + resolution: {integrity: sha512-QWfUZ3Yo923tdQn38LyKMU8rcTw69zc+T4dAvgTWV4O56SqFRsGfS0lSWIMhJRwXIx/bvdi7nTUBDdZtTHtpTQ==} + engines: {node: '>=22.12.0'} + + '@tanstack/start-plugin-core@1.171.39': + resolution: {integrity: sha512-Zyj6G4MDFLXcHYhPavhewCBo8dsxi3qvPk31zl/QtTzYzOY9rJHDDBGarKsJq20ziChmkGn/sttYqb4vGCxJDA==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@rsbuild/core': ^2.0.0 + vite: ^7.3.6 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + vite: + optional: true + + '@tanstack/start-server-core@1.169.31': + resolution: {integrity: sha512-56w8l+Fao01YCrmv0hzNxL3b3FRmqLRGdE11izZNQsW+1CcSYuehAM5khWKABuI1DI/UIBLGV7BwL4Dlg0eHCw==} + engines: {node: '>=22.12.0'} + + '@tanstack/start-storage-context@1.167.29': + resolution: {integrity: sha512-8qfprC5774XMRDQlMogkfiGpFLiBf0xDG4bMFUbfkSzpCAQwpLbgGY4Zwft22O9rKYq2vUXusKAdVjvJTUEquQ==} + engines: {node: '>=22.12.0'} + + '@tanstack/store@0.9.3': + resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} + '@tanstack/virtual-core@3.17.4': resolution: {integrity: sha512-nGm5KteqxasUdThLc2izl6dHUqLv0LQj7Nuyo5gYalTPf/U8a9ermvsl7reT+6ioBW1l8WfpP/mcU338nLXpqw==} + '@tanstack/virtual-file-routes@1.162.0': + resolution: {integrity: sha512-uhOeFyxLcU41HzvrxsGpiWdcMbScY1EDgbZ5K7DVRMYInbLYWAC0EA/kx9wXAoSM8q82bUG2hRl8+EAjE6XAbA==} + engines: {node: '>=20.19'} + '@tanstack/vue-virtual@3.13.32': resolution: {integrity: sha512-E8OCutx7QnwZdvpJijz0Q2PHsYDWBWjnGr3TvgWiqxTU35jB1kVhtkd93scRV7tTFuId2tg3x2iFiw+IE4evjQ==} peerDependencies: @@ -4914,9 +5553,17 @@ packages: peerDependencies: '@types/react': ^18.0.0 + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + '@types/react@18.3.31': resolution: {integrity: sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==} + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -5589,6 +6236,10 @@ packages: vue: optional: true + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + engines: {node: '>=14'} + any-base@1.1.0: resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} @@ -5726,6 +6377,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + babel-dead-code-elimination@1.0.12: + resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==} + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5854,6 +6508,10 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + beasties@0.4.1: resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==} engines: {node: '>=18.0.0'} @@ -6110,6 +6768,9 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -6208,6 +6869,14 @@ packages: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6498,6 +7167,14 @@ packages: dedent-js@1.0.1: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} + dedent@1.7.2: + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + deep-equal@2.2.3: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} @@ -6985,6 +7662,10 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + exit-hook@5.1.0: + resolution: {integrity: sha512-INjr2xyxHo7bhAqf5ong++GZPPnpcuBcaXUKt03yf7Fie9yWD7FapL4teOU0+awQazGs5ucBh7xWs/AD+6nhog==} + engines: {node: '>=20'} + expect-type@1.4.0: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} @@ -7069,6 +7750,9 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + fetchdts@0.1.7: + resolution: {integrity: sha512-YoZjBdafyLIop9lSxXVI33oLD5kN31q4Td+CasofLLYeLXRFeOsuOw0Uo+XNRi9PZlbfdlN2GmRtm4tCEQ9/KA==} + fflate@0.8.3: resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} @@ -7384,6 +8068,16 @@ packages: h3@1.15.11: resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + h3@2.0.1-rc.20: + resolution: {integrity: sha512-28ljodXuUp0fZovdiSRq4G9OgrxCztrJe5VdYzXAB7ueRvI7pIUqLU14Xi3XqdYJ/khXjfpUOOD2EQa6CmBgsg==} + engines: {node: '>=20.11.1'} + hasBin: true + peerDependencies: + crossws: ^0.4.1 + peerDependenciesMeta: + crossws: + optional: true + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -7874,6 +8568,10 @@ packages: isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isbot@5.2.2: + resolution: {integrity: sha512-iQcBXcd+Rv/pkubRyGh2utW2j1oPG5hZY6TUhVPpqK4G+o3IbxpJNx04hgksjc/N7GK5pEorUxDeg31cFgEk/w==} + engines: {node: '>=18'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -8126,6 +8824,80 @@ packages: lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -8598,6 +9370,10 @@ packages: moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + morgan@1.12.0: + resolution: {integrity: sha512-OHpTRQwn2ezasILW8iKe+Yww1XsfWsZIpUOLF7RDb2g5GwO3trPaRwi7+8BDiJ7HFx2Kg2mfUdCBcVhwYlOz2g==} + engines: {node: '>= 0.8.0'} + motion-dom@12.42.2: resolution: {integrity: sha512-5gIMWLp/PycBtJRJWRgjxke5n8dlvkSn2DrYW+tr3XcqAZY1xZh6BJyooJXCM8wdfM7wfMjkBJNLge1CKPUIRA==} @@ -8663,6 +9439,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -8674,6 +9454,27 @@ packages: resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} engines: {node: '>= 10'} + next@16.3.4: + resolution: {integrity: sha512-/Ztf6CeRH+ejEXUrYtqI4gkS66eFIHuSwqi60RgcpWKodxFZx2/dqVCMKBwILfAHXQ+F1b1vAudgj3mnxqtoIA==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + ng-packagr@21.2.5: resolution: {integrity: sha512-WGF4DK6nOE3xKPj8miC3lw6I66n1wdBhnMl25zMExqFmzRk9jABwFj3eycellTiH4t4x+yHnuxS/im9DLTa9cg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -8894,6 +9695,10 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -9242,6 +10047,10 @@ packages: resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} @@ -9397,6 +10206,11 @@ packages: peerDependencies: react: ^18.3.1 + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} @@ -9428,6 +10242,20 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} + engines: {node: '>=0.10.0'} + + react-router@8.3.1: + resolution: {integrity: sha512-TEOpiO2g0TJHEOJeRVv4amUFun9v1npCKszvcquNvzETUtJ8udV86ah5eFoHT7g26bsBvT6EiIhqulR8eDF++A==} + engines: {node: '>=22.22.0'} + peerDependencies: + react: '>=19.2.7' + react-dom: '>=19.2.7' + peerDependenciesMeta: + react-dom: + optional: true + react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -9436,6 +10264,10 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -9678,6 +10510,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rou3@0.8.1: + resolution: {integrity: sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==} + router@2.2.0: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} @@ -9762,6 +10597,9 @@ packages: scheduler@0.24.0-canary-efb381bbf-20230505: resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -9803,10 +10641,20 @@ packages: peerDependencies: seroval: ^1.0 + seroval-plugins@1.6.4: + resolution: {integrity: sha512-R0f1U9hmn38+dFMz6b6ab8lwucmw4AtiY7St+JPWudy1dm+Bs3g884nyrsH9Cy6rKpZKLYayXuMda9GZ/fl8JQ==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + seroval@1.5.5: resolution: {integrity: sha512-bSjOuPcwPKLSJNhr9+bZxA20nQxVle5J5MNsYRVE6cIg7KpRLXGupymePavu0jrxlPiPsr4xGZSB8yUY2sH2sw==} engines: {node: '>=10'} + seroval@1.6.4: + resolution: {integrity: sha512-LErWMNS2RRFdu2RMA5u/PA59/IWs0XsikyEXGQ2/36iEWFrdG0ABmg17E17cikrv76891kOAMq3TkTFXpwAHXw==} + engines: {node: '>=10'} + serve-placeholder@2.0.2: resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} @@ -9844,6 +10692,15 @@ packages: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -10015,6 +10872,11 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + srvx@0.11.22: + resolution: {integrity: sha512-LqZxxBDMKuMAZzFzJnDCkFOrs9MZQZr0LvHiO/SuSZVdQaXD7xQ5UWTUxheJrQPve1qk9MG2B/yttUvJxw8egQ==} + engines: {node: '>=20.16.0'} + hasBin: true + ssri@12.0.0: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -10151,6 +11013,19 @@ packages: style-mod@4.1.3: resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + stylus@0.56.0: resolution: {integrity: sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==} hasBin: true @@ -10778,6 +11653,11 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + utif2@4.1.0: resolution: {integrity: sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==} @@ -10791,6 +11671,14 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + valibot@1.4.2: + resolution: {integrity: sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + validate-npm-package-name@7.0.2: resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} engines: {node: ^20.17.0 || >=22.9.0} @@ -10899,6 +11787,20 @@ packages: postcss: optional: true + vitest-browser-react@2.2.0: + resolution: {integrity: sha512-oY3KM6305kwJMa6nHo92vVtkOsih7mjEf12dLKuphaF+9ywWPEc+qanIBd394SZ6m5LadVEaG6dicvvizOzmjA==} + peerDependencies: + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + vitest: 4.1.10 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + vitest@4.1.10: resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -11183,6 +12085,10 @@ packages: resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} engines: {node: '>=4.0.0'} + xmlbuilder2@4.0.3: + resolution: {integrity: sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA==} + engines: {node: '>=20.0'} + xmlbuilder@11.0.1: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} @@ -11678,7 +12584,7 @@ snapshots: eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) typescript: 5.9.3 - '@angular/build@21.2.19(28e23c74415271707c4a8b9b89f9e3f2)': + '@angular/build@21.2.19(e343b82913a2fd05679d0f3ed92b548d)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.19(chokidar@5.0.0) @@ -11688,7 +12594,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 '@inquirer/confirm': 5.1.21(@types/node@26.1.1) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) beasties: 0.4.1 browserslist: 4.28.6 esbuild: 0.28.1 @@ -11701,7 +12607,7 @@ snapshots: parse5-html-rewriting-stream: 8.0.0 picomatch: 4.0.4 piscina: 5.2.0 - rolldown: 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + rolldown: 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) sass: 1.97.3 semver: 7.8.5 source-map-support: 0.5.21 @@ -11709,7 +12615,7 @@ snapshots: tslib: 2.8.1 typescript: 5.9.3 undici: 7.28.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) watchpack: 2.5.1 optionalDependencies: '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) @@ -11719,7 +12625,7 @@ snapshots: lmdb: 3.5.1 ng-packagr: 21.2.5(@angular/compiler-cli@21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: 8.5.19 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -11952,6 +12858,12 @@ snapshots: dependencies: yaml: 2.9.0 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -11990,7 +12902,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-annotate-as-pure@7.29.7': dependencies: @@ -12051,7 +12963,7 @@ snapshots: '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: '@babel/traverse': 7.29.7(supports-color@10.2.2) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -12097,7 +13009,7 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-string-parser@7.29.7': {} @@ -12118,10 +13030,6 @@ snapshots: '@babel/template': 7.29.7 '@babel/types': 7.29.8 - '@babel/parser@7.29.7': - dependencies: - '@babel/types': 7.29.7 - '@babel/parser@7.29.8': dependencies: '@babel/types': 7.29.8 @@ -12838,11 +13746,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.29.7': - dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 @@ -13300,6 +14203,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -13649,95 +14557,199 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true + '@img/sharp-darwin-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.3 + optional: true + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true + '@img/sharp-darwin-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.3 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true + '@img/sharp-libvips-darwin-arm64@1.3.3': + optional: true + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true + '@img/sharp-libvips-darwin-x64@1.3.3': + optional: true + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true + '@img/sharp-libvips-linux-arm64@1.3.3': + optional: true + '@img/sharp-libvips-linux-arm@1.2.4': optional: true + '@img/sharp-libvips-linux-arm@1.3.3': + optional: true + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true + '@img/sharp-libvips-linux-ppc64@1.3.3': + optional: true + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true + '@img/sharp-libvips-linux-riscv64@1.3.3': + optional: true + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true + '@img/sharp-libvips-linux-s390x@1.3.3': + optional: true + '@img/sharp-libvips-linux-x64@1.2.4': optional: true + '@img/sharp-libvips-linux-x64@1.3.3': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + optional: true + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true + '@img/sharp-linux-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.3 + optional: true + '@img/sharp-linux-arm@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.4 optional: true + '@img/sharp-linux-arm@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.3 + optional: true + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true + '@img/sharp-linux-ppc64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.3 + optional: true + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true + '@img/sharp-linux-riscv64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.3 + optional: true + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true + '@img/sharp-linux-s390x@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.3 + optional: true + '@img/sharp-linux-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.4 optional: true + '@img/sharp-linux-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.3 + optional: true + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true + '@img/sharp-linuxmusl-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + optional: true + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true + '@img/sharp-linuxmusl-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + optional: true + '@img/sharp-wasm32@0.34.5': dependencies: '@emnapi/runtime': 1.11.2 optional: true + '@img/sharp-wasm32@0.35.4': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + '@img/sharp-win32-arm64@0.34.5': optional: true + '@img/sharp-win32-arm64@0.35.4': + optional: true + '@img/sharp-win32-ia32@0.34.5': optional: true + '@img/sharp-win32-ia32@0.35.4': + optional: true + '@img/sharp-win32-x64@0.34.5': optional: true + '@img/sharp-win32-x64@0.35.4': + optional: true + '@inquirer/ansi@1.0.2': {} '@inquirer/checkbox@4.3.2(@types/node@26.1.1)': @@ -13900,14 +14912,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.20.1 + '@types/node': 26.1.1 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.20.1 + '@types/node': 26.1.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -13941,7 +14953,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -14406,6 +15418,39 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@next/env@16.3.4': {} + + '@next/swc-darwin-arm64@16.3.4': + optional: true + + '@next/swc-darwin-x64@16.3.4': + optional: true + + '@next/swc-linux-arm64-gnu@16.3.4': + optional: true + + '@next/swc-linux-arm64-musl@16.3.4': + optional: true + + '@next/swc-linux-x64-gnu@16.3.4': + optional: true + + '@next/swc-linux-x64-musl@16.3.4': + optional: true + + '@next/swc-win32-arm64-msvc@16.3.4': + optional: true + + '@next/swc-win32-x64-msvc@16.3.4': + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14623,6 +15668,23 @@ snapshots: '@one-ini/wasm@0.2.1': {} + '@oozcitak/dom@2.0.2': + dependencies: + '@oozcitak/infra': 2.0.2 + '@oozcitak/url': 3.0.0 + '@oozcitak/util': 10.0.0 + + '@oozcitak/infra@2.0.2': + dependencies: + '@oozcitak/util': 10.0.0 + + '@oozcitak/url@3.0.0': + dependencies: + '@oozcitak/infra': 2.0.2 + '@oozcitak/util': 10.0.0 + + '@oozcitak/util@10.0.0': {} + '@open-draft/deferred-promise@2.2.0': {} '@oslojs/encoding@1.1.0': {} @@ -14711,19 +15773,19 @@ snapshots: '@poppinss/exception@1.2.3': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vite-prerender-plugin: 0.5.12(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite-prerender-plugin: 0.5.12(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) zimmerframe: 1.1.4 transitivePeerDependencies: - preact @@ -14738,7 +15800,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.3 @@ -14746,7 +15808,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.8 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -14812,7 +15874,7 @@ snapshots: '@react-native/codegen@0.76.9(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) glob: 7.2.3 hermes-parser: 0.23.1 @@ -14891,6 +15953,71 @@ snapshots: optionalDependencies: '@types/react': 18.3.31 + '@react-router/dev@8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/types': 7.29.8 + '@react-router/node': 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3) + '@remix-run/node-fetch-server': 0.14.1 + babel-dead-code-elimination: 1.0.12(supports-color@10.2.2) + chokidar: 5.0.0 + dedent: 1.7.2 + es-module-lexer: 2.3.1 + exit-hook: 5.1.0 + isbot: 5.2.2 + jsesc: 3.1.0 + lodash: 4.18.1 + p-map: 7.0.5 + pathe: 2.0.3 + picocolors: 1.1.1 + pkg-types: 2.3.1 + react-refresh: 0.18.0 + react-router: 8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + semver: 7.8.5 + tinyglobby: 0.2.17 + valibot: 1.4.2(typescript@6.0.3) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + optionalDependencies: + '@react-router/serve': 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + '@react-router/express@8.3.1(express@5.2.1(supports-color@10.2.2))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3)': + dependencies: + '@react-router/node': 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3) + express: 5.2.1(supports-color@10.2.2) + react-router: 8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + optionalDependencies: + typescript: 6.0.3 + + '@react-router/node@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3)': + dependencies: + '@remix-run/node-fetch-server': 0.14.1 + react-router: 8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + optionalDependencies: + typescript: 6.0.3 + + '@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)': + dependencies: + '@react-router/express': 8.3.1(express@5.2.1(supports-color@10.2.2))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3) + '@react-router/node': 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3) + '@remix-run/node-fetch-server': 0.14.1 + compression: 1.8.1(supports-color@10.2.2) + express: 5.2.1(supports-color@10.2.2) + morgan: 1.12.0(supports-color@10.2.2) + react-router: 8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + source-map-support: 0.5.21 + transitivePeerDependencies: + - supports-color + - typescript + + '@remix-run/node-fetch-server@0.14.1': {} + '@resvg/resvg-js-android-arm-eabi@2.6.2': optional: true @@ -14972,9 +16099,9 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -15358,14 +16485,14 @@ snapshots: transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: deepmerge: 4.3.1 magic-string: 1.2.0 obug: 2.1.4 svelte: 5.56.9(@typescript-eslint/types@8.66.0) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@swc/core-darwin-arm64@1.7.23': optional: true @@ -15397,7 +16524,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.7.23': optional: true - '@swc/core@1.7.23(@swc/helpers@0.5.17)': + '@swc/core@1.7.23(@swc/helpers@0.5.23)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.27 @@ -15412,24 +16539,239 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.7.23 '@swc/core-win32-ia32-msvc': 1.7.23 '@swc/core-win32-x64-msvc': 1.7.23 - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.23 optional: true '@swc/counter@0.1.3': optional: true - '@swc/helpers@0.5.17': + '@swc/helpers@0.5.23': dependencies: tslib: 2.8.1 - optional: true '@swc/types@0.1.27': dependencies: '@swc/counter': 0.1.3 optional: true + '@tanstack/history@1.162.1': {} + + '@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/history': 1.162.1 + '@tanstack/react-store': 0.9.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/router-core': 1.171.27 + isbot: 5.2.2 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@tanstack/react-start-client@1.168.30(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/router-core': 1.171.27 + '@tanstack/start-client-core': 1.170.27 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@tanstack/react-start-rsc@0.1.48(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + dependencies: + '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/router-core': 1.171.27 + '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) + '@tanstack/start-client-core': 1.170.27 + '@tanstack/start-fn-stubs': 1.162.0 + '@tanstack/start-plugin-core': 1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@tanstack/start-storage-context': 1.167.29 + pathe: 2.0.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - bun-types-no-globals + - crossws + - esbuild + - rolldown + - rollup + - supports-color + - unloader + - vite + - vite-plugin-solid + - webpack + + '@tanstack/react-start-server@1.167.37(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/router-core': 1.171.27 + '@tanstack/start-server-core': 1.169.31 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - crossws + + '@tanstack/react-start@1.168.49(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + dependencies: + '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/react-start-client': 1.168.30(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/react-start-rsc': 0.1.48(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@tanstack/react-start-server': 1.167.37(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) + '@tanstack/start-client-core': 1.170.27 + '@tanstack/start-plugin-core': 1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@tanstack/start-server-core': 1.169.31 + pathe: 2.0.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - crossws + - esbuild + - react-server-dom-rspack + - rolldown + - rollup + - supports-color + - unloader + - vite-plugin-solid + - webpack + + '@tanstack/react-store@0.9.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/store': 0.9.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + use-sync-external-store: 1.6.0(react@19.2.8) + + '@tanstack/router-core@1.171.27': + dependencies: + '@tanstack/history': 1.162.1 + cookie-es: 3.1.1 + seroval: 1.6.4 + seroval-plugins: 1.6.4(seroval@1.6.4) + + '@tanstack/router-generator@1.167.33(supports-color@10.2.2)': + dependencies: + '@babel/types': 7.29.8 + '@tanstack/router-core': 1.171.27 + '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) + '@tanstack/virtual-file-routes': 1.162.0 + jiti: 2.7.0 + magic-string: 0.30.21 + prettier: 3.9.5 + zod: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@tanstack/router-plugin@1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + '@tanstack/router-core': 1.171.27 + '@tanstack/router-generator': 1.167.33(supports-color@10.2.2) + '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) + chokidar: 5.0.0 + unplugin: 3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + zod: 4.4.3 + optionalDependencies: + '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite-plugin-solid: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup + - supports-color + - unloader + + '@tanstack/router-utils@1.162.2(supports-color@10.2.2)': + dependencies: + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + ansis: 4.3.1 + babel-dead-code-elimination: 1.0.12(supports-color@10.2.2) + diff: 8.0.4 + pathe: 2.0.3 + tinyglobby: 0.2.17 + transitivePeerDependencies: + - supports-color + + '@tanstack/start-client-core@1.170.27': + dependencies: + '@tanstack/router-core': 1.171.27 + '@tanstack/start-fn-stubs': 1.162.0 + '@tanstack/start-storage-context': 1.167.29 + seroval: 1.6.4 + + '@tanstack/start-fn-stubs@1.162.0': {} + + '@tanstack/start-plugin-core@1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/types': 7.29.8 + '@tanstack/router-core': 1.171.27 + '@tanstack/router-generator': 1.167.33(supports-color@10.2.2) + '@tanstack/router-plugin': 1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) + '@tanstack/start-server-core': 1.169.31 + exsolve: 1.1.0 + lightningcss: 1.33.0 + pathe: 2.0.3 + picomatch: 4.0.5 + seroval: 1.6.4 + source-map: 0.7.6 + srvx: 0.11.22 + tinyglobby: 0.2.17 + ufo: 1.6.4 + vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + xmlbuilder2: 4.0.3 + zod: 4.4.3 + optionalDependencies: + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - '@tanstack/react-router' + - bun-types-no-globals + - crossws + - esbuild + - rolldown + - rollup + - supports-color + - unloader + - vite-plugin-solid + - webpack + + '@tanstack/start-server-core@1.169.31': + dependencies: + '@tanstack/history': 1.162.1 + '@tanstack/router-core': 1.171.27 + '@tanstack/start-client-core': 1.170.27 + '@tanstack/start-storage-context': 1.167.29 + fetchdts: 0.1.7 + h3-v2: h3@2.0.1-rc.20 + seroval: 1.6.4 + transitivePeerDependencies: + - crossws + + '@tanstack/start-storage-context@1.167.29': + dependencies: + '@tanstack/router-core': 1.171.27 + + '@tanstack/store@0.9.3': {} + '@tanstack/virtual-core@3.17.4': {} + '@tanstack/virtual-file-routes@1.162.0': {} + '@tanstack/vue-virtual@3.13.32(vue@3.5.42(typescript@6.0.3))': dependencies: '@tanstack/virtual-core': 3.17.4 @@ -15506,14 +16848,14 @@ snapshots: dependencies: svelte: 5.56.9(@typescript-eslint/types@8.66.0) - '@testing-library/svelte@5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@testing-library/svelte@5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/svelte-core': 1.1.3(svelte@5.56.9(@typescript-eslint/types@8.66.0)) svelte: 5.56.9(@typescript-eslint/types@8.66.0) optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@testing-library/vue@8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3))': dependencies: @@ -15604,20 +16946,20 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/fs-extra@8.1.5': dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/hast@3.0.5': dependencies: @@ -15637,7 +16979,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/linkify-it@5.0.0': {} @@ -15666,7 +17008,7 @@ snapshots: '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/node@16.9.1': {} @@ -15679,7 +17021,6 @@ snapshots: '@types/node@26.1.1': dependencies: undici-types: 8.3.0 - optional: true '@types/prop-types@15.7.15': {} @@ -15687,16 +17028,24 @@ snapshots: dependencies: '@types/react': 18.3.31 + '@types/react-dom@19.2.3(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + '@types/react@18.3.31': dependencies: '@types/prop-types': 15.7.15 csstype: 3.2.3 + '@types/react@19.2.18': + dependencies: + csstype: 3.2.3 + '@types/resolve@1.20.2': {} '@types/sax@1.2.7': dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 '@types/semver@7.7.1': {} @@ -16053,11 +17402,11 @@ snapshots: '@vercel/cli-exec': 1.0.0 jose: 5.10.0 - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - '@vitejs/plugin-react@4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitejs/plugin-react@4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -16065,76 +17414,74 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': + '@vitejs/plugin-vue@5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': dependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) - '@vitejs/plugin-vue@6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vue: 3.5.42(typescript@5.9.3) - '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) playwright: 1.58.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - - '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': - dependencies: - '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - playwright: 1.58.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + dependencies: + '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + playwright: 1.58.2 + tinyrainbow: 3.1.0 + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) ws: 8.21.1 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - optional: true - '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) ws: 8.21.1 transitivePeerDependencies: - bufferutil @@ -16154,9 +17501,9 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect@4.1.10': dependencies: @@ -16167,21 +17514,21 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -16210,7 +17557,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@vitest/utils@4.1.10': dependencies: @@ -16416,7 +17763,7 @@ snapshots: agent-base@7.1.4: {} - ajv-cli@5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.17))(@types/node@26.1.1)(typescript@6.0.3)): + ajv-cli@5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3)): dependencies: ajv: 8.20.0 fast-json-patch: 3.1.1 @@ -16426,7 +17773,7 @@ snapshots: json5: 2.2.3 minimist: 1.2.8 optionalDependencies: - ts-node: 10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.17))(@types/node@26.1.1)(typescript@6.0.3) + ts-node: 10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3) ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: @@ -16543,6 +17890,8 @@ snapshots: optionalDependencies: vue: 3.5.42(typescript@6.0.3) + ansis@4.3.1: {} + any-base@1.1.0: {} any-promise@1.3.0: {} @@ -16643,7 +17992,7 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - astro@7.1.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.6.7)(rollup@4.62.2)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): + astro@7.1.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(rollup@4.62.2)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): dependencies: '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) '@astrojs/internal-helpers': 0.10.1 @@ -16693,8 +18042,8 @@ snapshots: ultrahtml: 1.7.0 unifont: 0.7.4 unstorage: 1.17.5(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.4.3 @@ -16773,6 +18122,15 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) + babel-dead-code-elimination@1.0.12(supports-color@10.2.2): + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/parser': 7.29.8 + '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + babel-jest@29.7.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -16808,7 +18166,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 html-entities: 2.3.3 parse5: 7.3.0 @@ -16933,6 +18291,10 @@ snapshots: baseline-browser-mapping@2.10.43: {} + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + beasties@0.4.1: dependencies: css-select: 6.0.0 @@ -17199,7 +18561,7 @@ snapshots: chrome-launcher@0.15.2(supports-color@10.2.2): dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@10.2.2) @@ -17208,7 +18570,7 @@ snapshots: chromium-edge-launcher@0.2.0(supports-color@10.2.2): dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@10.2.2) @@ -17254,6 +18616,8 @@ snapshots: cli-width@4.1.0: {} + client-only@0.0.1: {} + cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -17335,6 +18699,22 @@ snapshots: normalize-path: 3.0.0 readable-stream: 4.7.0 + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1(supports-color@10.2.2): + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9(supports-color@10.2.2) + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + concat-map@0.0.1: {} confbox@0.1.8: {} @@ -17655,6 +19035,8 @@ snapshots: dedent-js@1.0.1: {} + dedent@1.7.2: {} + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.2 @@ -18256,6 +19638,8 @@ snapshots: exif-parser@0.1.12: {} + exit-hook@5.1.0: {} + expect-type@1.4.0: {} exponential-backoff@3.1.3: {} @@ -18359,6 +19743,8 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + fetchdts@0.1.7: {} + fflate@0.8.3: {} file-entry-cache@8.0.0: @@ -18709,6 +20095,11 @@ snapshots: ufo: 1.6.4 uncrypto: 0.1.3 + h3@2.0.1-rc.20: + dependencies: + rou3: 0.8.1 + srvx: 0.11.22 + has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -19194,6 +20585,8 @@ snapshots: isarray@2.0.5: {} + isbot@5.2.2: {} + isexe@2.0.0: {} isexe@3.1.5: {} @@ -19224,7 +20617,7 @@ snapshots: istanbul-lib-instrument@6.0.3(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 semver: 7.8.5 @@ -19257,7 +20650,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.20.1 + '@types/node': 26.1.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -19267,7 +20660,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.20.1 + '@types/node': 26.1.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -19294,7 +20687,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.20.1 + '@types/node': 26.1.1 jest-util: 29.7.0 jest-regex-util@29.6.3: {} @@ -19306,7 +20699,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.20.1 + '@types/node': 26.1.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -19323,7 +20716,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.20.1 + '@types/node': 26.1.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -19378,7 +20771,7 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) @@ -19533,6 +20926,55 @@ snapshots: transitivePeerDependencies: - supports-color + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + lines-and-columns@1.2.4: {} linkedom@0.18.13: @@ -19695,8 +21137,8 @@ snapshots: magicast@0.5.3: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 source-map-js: 1.2.1 make-dir@2.1.0: @@ -19927,7 +21369,7 @@ snapshots: dependencies: '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/traverse--for-generate-function-map': '@babel/traverse@7.29.7(supports-color@10.2.2)' - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.81.5(supports-color@10.2.2) @@ -19985,10 +21427,10 @@ snapshots: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 '@babel/traverse': 7.29.7(supports-color@10.2.2) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -20289,6 +21731,16 @@ snapshots: moment@2.30.1: {} + morgan@1.12.0(supports-color@10.2.2): + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9(supports-color@10.2.2) + depd: 2.0.0 + on-finished: 2.4.1 + on-headers: 1.1.0 + transitivePeerDependencies: + - supports-color + motion-dom@12.42.2: dependencies: motion-utils: 12.39.0 @@ -20356,12 +21808,40 @@ snapshots: negotiator@0.6.3: {} + negotiator@0.6.4: {} + negotiator@1.0.0: {} neo-async@2.6.2: {} neotraverse@0.6.18: {} + next@16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.1.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.101.0): + dependencies: + '@next/env': 16.3.4 + '@swc/helpers': 0.5.23 + baseline-browser-mapping: 2.10.43 + caniuse-lite: 1.0.30001805 + postcss: 8.5.23 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.8) + optionalDependencies: + '@next/swc-darwin-arm64': 16.3.4 + '@next/swc-darwin-x64': 16.3.4 + '@next/swc-linux-arm64-gnu': 16.3.4 + '@next/swc-linux-arm64-musl': 16.3.4 + '@next/swc-linux-x64-gnu': 16.3.4 + '@next/swc-linux-x64-musl': 16.3.4 + '@next/swc-win32-arm64-msvc': 16.3.4 + '@next/swc-win32-x64-msvc': 16.3.4 + sass: 1.101.0 + sharp: 0.35.4(@types/node@26.1.1) + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - babel-plugin-macros + ng-packagr@21.2.5(@angular/compiler-cli@21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 @@ -20391,7 +21871,7 @@ snapshots: optionalDependencies: rollup: 4.62.2 - nitropack@2.13.4(@vercel/blob@2.6.1)(encoding@0.1.13)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(xml2js@0.6.2): + nitropack@2.13.4(@vercel/blob@2.6.1)(encoding@0.1.13)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(xml2js@0.6.2): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 '@rollup/plugin-alias': 6.0.0(rollup@4.62.2) @@ -20456,7 +21936,7 @@ snapshots: uncrypto: 0.1.3 unctx: 2.5.0 unenv: 2.0.0-rc.24 - unimport: 6.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + unimport: 6.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) unplugin-utils: 0.3.2 unstorage: 1.17.5(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) untyped: 2.0.0 @@ -20720,6 +22200,8 @@ snapshots: dependencies: ee-first: 1.1.1 + on-headers@1.1.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -21093,6 +22575,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.23: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + powershell-utils@0.1.0: {} preact@10.29.7: {} @@ -21217,6 +22705,11 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + react-is@17.0.2: {} react-is@18.3.1: {} @@ -21284,6 +22777,15 @@ snapshots: react-refresh@0.17.0: {} + react-refresh@0.18.0: {} + + react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + cookie-es: 3.1.1 + react: 19.2.8 + optionalDependencies: + react-dom: 19.2.8(react@19.2.8) + react@18.2.0: dependencies: loose-envify: 1.4.0 @@ -21292,6 +22794,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@19.2.8: {} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -21500,7 +23004,7 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2): + rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3): dependencies: '@oxc-project/types': 0.113.0 '@rolldown/pluginutils': 1.0.0-rc.4 @@ -21515,7 +23019,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 transitivePeerDependencies: @@ -21597,14 +23101,14 @@ snapshots: transitivePeerDependencies: - supports-color - rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2))(rollup@4.62.2): + rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3))(rollup@4.62.2): dependencies: open: 8.4.2 picomatch: 4.0.5 source-map: 0.7.6 yargs: 17.7.3 optionalDependencies: - rolldown: 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + rolldown: 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) rollup: 4.62.2 rollup-plugin-visualizer@7.0.1(rollup@4.62.2): @@ -21647,6 +23151,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.62.2 fsevents: 2.3.3 + rou3@0.8.1: {} + router@2.2.0(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -21774,6 +23280,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.27.0: {} + scule@1.3.0: {} search-insights@2.8.2: {} @@ -21832,8 +23340,14 @@ snapshots: dependencies: seroval: 1.5.5 + seroval-plugins@1.6.4(seroval@1.6.4): + dependencies: + seroval: 1.6.4 + seroval@1.5.5: {} + seroval@1.6.4: {} + serve-placeholder@2.0.2: dependencies: defu: 6.1.7 @@ -21918,6 +23432,40 @@ snapshots: '@img/sharp-win32-ia32': 0.34.5 '@img/sharp-win32-x64': 0.34.5 + sharp@0.35.4(@types/node@26.1.1): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + '@types/node': 26.1.1 + optional: true + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -22076,7 +23624,7 @@ snapshots: dependencies: '@babel/generator': 7.29.7 '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 solid-js: 1.9.14 transitivePeerDependencies: - supports-color @@ -22138,6 +23686,8 @@ snapshots: sprintf-js@1.0.3: {} + srvx@0.11.22: {} + ssri@12.0.0: dependencies: minipass: 7.1.3 @@ -22289,6 +23839,13 @@ snapshots: style-mod@4.1.3: {} + styled-jsx@5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.8): + dependencies: + client-only: 0.0.1 + react: 19.2.8 + optionalDependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + stylus@0.56.0(supports-color@10.2.2): dependencies: css: 3.0.0 @@ -22605,7 +24162,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.17))(@types/node@26.1.1)(typescript@6.0.3): + ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -22623,7 +24180,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.7.23(@swc/helpers@0.5.17) + '@swc/core': 1.7.23(@swc/helpers@0.5.23) optional: true tslib@2.8.1: {} @@ -22768,8 +24325,7 @@ snapshots: undici-types@6.21.0: {} - undici-types@8.3.0: - optional: true + undici-types@8.3.0: {} undici@6.27.0: {} @@ -22808,7 +24364,7 @@ snapshots: ofetch: 1.5.1 ohash: 2.0.11 - unimport@6.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + unimport@6.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: acorn: 8.18.0 escape-string-regexp: 5.0.0 @@ -22822,7 +24378,7 @@ snapshots: scule: 1.3.0 strip-literal: 3.1.0 tinyglobby: 0.2.17 - unplugin: 3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + unplugin: 3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) unplugin-utils: 0.3.2 transitivePeerDependencies: - '@farmfe/core' @@ -22898,7 +24454,7 @@ snapshots: picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 - unplugin@3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + unplugin@3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.5 @@ -22906,7 +24462,7 @@ snapshots: optionalDependencies: esbuild: 0.28.1 rollup: 4.62.2 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) unrs-resolver@1.12.2: dependencies: @@ -22985,6 +24541,10 @@ snapshots: dependencies: punycode: 2.3.1 + use-sync-external-store@1.6.0(react@19.2.8): + dependencies: + react: 19.2.8 + utif2@4.1.0: dependencies: pako: 1.0.11 @@ -22996,6 +24556,10 @@ snapshots: v8-compile-cache-lib@3.0.1: optional: true + valibot@1.4.2(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 + validate-npm-package-name@7.0.2: {} validator@13.15.35: {} @@ -23017,7 +24581,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@types/babel__core': 7.20.5 @@ -23025,14 +24589,14 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.14 solid-refresh: 0.6.3(solid-js@1.9.14)(supports-color@10.2.2) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) optionalDependencies: '@testing-library/jest-dom': 6.9.1 transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vite-prerender-plugin@0.5.12(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -23040,9 +24604,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): + vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.5) @@ -23055,12 +24619,13 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 less: 4.6.7 + lightningcss: 1.33.0 sass: 1.101.0 stylus: 0.56.0(supports-color@10.2.2) terser: 5.49.0 yaml: 2.9.0 - vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): + vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.5) @@ -23073,22 +24638,23 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 less: 4.6.7 + lightningcss: 1.33.0 sass: 1.97.3 stylus: 0.56.0(supports-color@10.2.2) terser: 5.49.0 yaml: 2.9.0 - vitefu@1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitefu@1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitepress-plugin-group-icons@1.7.5(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitepress-plugin-group-icons@1.7.5(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: '@iconify-json/logos': 1.2.11 '@iconify-json/vscode-icons': 1.2.67 '@iconify/utils': 3.1.4 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vitepress-plugin-llms@1.13.3(supports-color@10.2.2): dependencies: @@ -23109,7 +24675,7 @@ snapshots: transitivePeerDependencies: - supports-color - vitepress@1.6.4(@algolia/client-search@5.55.2)(@types/node@26.1.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.6.7)(postcss@8.5.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.101.0)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(typescript@6.0.3)(yaml@2.9.0): + vitepress@1.6.4(@algolia/client-search@5.55.2)(@types/node@26.1.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(postcss@8.5.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.101.0)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(typescript@6.0.3)(yaml@2.9.0): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.55.2)(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.8.2) @@ -23118,7 +24684,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) + '@vitejs/plugin-vue': 5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) '@vue/devtools-api': 7.7.10 '@vue/shared': 3.5.39 '@vueuse/core': 12.8.2(typescript@6.0.3) @@ -23127,7 +24693,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) optionalDependencies: postcss: 8.5.19 @@ -23162,10 +24728,19 @@ snapshots: - universal-cookie - yaml - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitest-browser-react@2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10): + dependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.3(@types/react@19.2.18) + + vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -23182,21 +24757,21 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': 4.1.10(vitest@4.1.10) jsdom: 27.4.0(supports-color@10.2.2) transitivePeerDependencies: - msw - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -23213,11 +24788,11 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': 4.1.10(vitest@4.1.10) jsdom: 27.4.0(supports-color@10.2.2) @@ -23474,6 +25049,13 @@ snapshots: xmlbuilder: 11.0.1 optional: true + xmlbuilder2@4.0.3: + dependencies: + '@oozcitak/dom': 2.0.2 + '@oozcitak/infra': 2.0.2 + '@oozcitak/util': 10.0.0 + js-yaml: 4.3.0 + xmlbuilder@11.0.1: {} xmlchars@2.2.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 92cd69d9a..63bc2335f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,7 @@ packages: - 'packages/*' - 'tools/*' - 'docs' + - 'integrations/*/*' overrides: cross-spawn: 7.0.5 From 99d25bdee231922e73e19525f57a585d1682fab2 Mon Sep 17 00:00:00 2001 From: Karsa Date: Fri, 4 Sep 2026 16:38:01 +0200 Subject: [PATCH 035/157] feat(packages): extract icon build logic into `@lucide/shared` (#4409) * feat(packages): extract build logic to @lucide/shared, still wip * feat(): unify icon build logic some more, add nonScalingStroke option, marking absoluteStrokeWidth as deprecated * feat(): unify icon build logic some more, add nonScalingStroke option, marking absoluteStrokeWidth as deprecated * feat(packages): extract build logic to @lucide/shared, still wip * feat(): unify icon build logic some more, add nonScalingStroke option, marking absoluteStrokeWidth as deprecated * feat(): unify icon build logic some more, add nonScalingStroke option, marking absoluteStrokeWidth as deprecated * chore(icons): revert git hook changes made to icons * fix(packages/astro,react-native,vue): fix iconNode type fix(packages/vue): fix hasA11yProp * fix(packages/solid): make component reactive & add unit tests for checking prop changes * test(packages/vue): add reactivity tests to @lucide/vue * fix(packages): replace cpy-cli, accidentally removed during main merge * docs(packages): upgrade react documentation with nonScalingStroke * fix(tests): update snapshots for lucide-react * feat(docs): upgraded package guides with nonScalingStroke, dropping absoluteStrokeWidth * fix(vue,react-native): fix linting issues * fix(icons): add proper fallback for icon width in calculatedStrokeWidth * fix(packages/svelte): add globalProps.class to icons * fix(packages/shared): wrap width, height & size in isDefined * Update types.ts * fix(packages/svelte): do not pass propsClass to mergeClasses --------- Co-authored-by: Eric Fennis --- .gitignore | 3 + .../guide/angular/advanced/combining-icons.md | 100 ++--- docs/guide/angular/advanced/global-styling.md | 63 ++-- docs/guide/angular/basics/stroke-width.md | 42 ++- docs/guide/angular/getting-started.md | 27 +- docs/guide/astro/advanced/global-styling.md | 4 +- docs/guide/astro/advanced/typescript.md | 13 +- docs/guide/astro/basics/stroke-width.md | 16 +- docs/guide/astro/getting-started.md | 14 +- .../{packages/icons.md => icons/index.md} | 41 +- docs/guide/lucide/basics/stroke-width.md | 30 +- docs/guide/packages/angular.md | 286 -------------- docs/guide/packages/lucide-astro.md | 210 ----------- docs/guide/packages/lucide-preact.md | 149 -------- docs/guide/packages/lucide-react-native.md | 133 ------- docs/guide/packages/lucide-solid.md | 162 -------- docs/guide/packages/lucide-static.md | 265 ------------- docs/guide/packages/lucide-svelte.md | 349 ------------------ docs/guide/packages/lucide-vue.md | 171 --------- docs/guide/preact/advanced/combining-icons.md | 26 +- docs/guide/preact/advanced/global-styling.md | 20 +- docs/guide/preact/advanced/typescript.md | 13 +- docs/guide/preact/basics/stroke-width.md | 27 +- docs/guide/preact/getting-started.md | 21 +- .../react-native/advanced/combining-icons.md | 4 +- .../guide/react-native/advanced/typescript.md | 13 +- .../guide/react-native/basics/stroke-width.md | 19 +- docs/guide/react-native/getting-started.md | 21 +- docs/guide/react/advanced/combining-icons.md | 4 +- docs/guide/react/advanced/global-styling.md | 4 +- docs/guide/react/advanced/typescript.md | 4 + docs/guide/react/basics/stroke-width.md | 16 +- docs/guide/react/getting-started.md | 12 +- docs/guide/solid/advanced/combining-icons.md | 8 +- docs/guide/solid/advanced/global-styling.md | 13 +- docs/guide/solid/advanced/typescript.md | 13 +- docs/guide/solid/basics/stroke-width.md | 19 +- docs/guide/solid/getting-started.md | 20 +- docs/guide/svelte/advanced/combining-icons.md | 5 +- docs/guide/svelte/advanced/global-styling.md | 7 +- docs/guide/svelte/advanced/typescript.md | 18 +- docs/guide/svelte/basics/stroke-width.md | 18 +- docs/guide/svelte/getting-started.md | 15 +- docs/guide/vue/advanced/combining-icons.md | 17 +- docs/guide/vue/advanced/global-styling.md | 16 +- docs/guide/vue/advanced/typescript.md | 24 +- docs/guide/vue/basics/stroke-width.md | 24 +- docs/guide/vue/getting-started.md | 21 +- docs/images/non-scaling-stroke-compare.svg | 59 +++ docs/packages.md | 4 +- docs/showcase.md | 4 +- docs/vercel.json | 45 +-- package.json | 1 + packages/angular/package.json | 7 +- packages/angular/src/lucide-config.ts | 8 +- packages/angular/src/lucide-hydration.spec.ts | 2 +- packages/angular/src/lucide-icon-base.spec.ts | 52 ++- packages/angular/src/lucide-icon-base.ts | 140 +++++-- packages/angular/src/lucide-icon-template.ts | 2 +- packages/angular/src/types.ts | 18 +- packages/astro/package.json | 2 +- packages/astro/scripts/exportTemplate.mts | 42 +-- packages/astro/src/Icon.astro | 44 ++- packages/astro/src/createLucideIcon.ts | 51 ++- packages/astro/src/defaultAttributes.ts | 15 - packages/astro/src/lucide-astro.ts | 2 +- packages/astro/src/types.ts | 36 +- .../tests/__snapshots__/Icon.spec.ts.snap | 2 +- .../createLucideIcon.spec.ts.snap | 2 +- .../__snapshots__/lucide-astro.spec.ts.snap | 74 +++- packages/astro/tests/createLucideIcon.spec.ts | 5 +- packages/astro/tests/lucide-astro.spec.ts | 43 ++- packages/icons/package.json | 1 + packages/icons/rollup.config.mjs | 7 +- packages/icons/src/buildLucideDataUri.ts | 31 +- packages/icons/src/buildLucideIconElement.ts | 35 +- packages/icons/src/buildLucideIconNode.ts | 56 +-- packages/icons/src/buildLucideSvg.ts | 20 +- packages/icons/src/types.ts | 53 +-- .../buildLucideIconNode.spec.ts.snap | 2 +- .../icons/tests/buildLucideIconNode.spec.ts | 64 +++- packages/icons/tsconfig.json | 5 + packages/lucide-preact/rollup.config.mjs | 11 +- .../lucide-preact/scripts/exportTemplate.mts | 24 +- packages/lucide-preact/src/Icon.ts | 69 ++-- packages/lucide-preact/src/context.ts | 13 +- .../lucide-preact/src/createLucideIcon.ts | 56 ++- .../lucide-preact/src/defaultAttributes.ts | 14 +- packages/lucide-preact/src/types.ts | 19 +- .../tests/__snapshots__/context.spec.tsx.snap | 2 +- .../createLucideIcon.spec.tsx.snap | 10 +- .../__snapshots__/lucide-preact.spec.tsx.snap | 60 ++- packages/lucide-preact/tests/context.spec.tsx | 21 +- .../tests/createLucideIcon.spec.tsx | 62 +++- .../tests/lucide-preact.spec.tsx | 42 ++- packages/lucide-preact/tsconfig.json | 5 + .../lucide-react-native/rollup.config.mjs | 13 +- .../scripts/exportTemplate.mts | 24 +- packages/lucide-react-native/src/Icon.ts | 87 +++-- packages/lucide-react-native/src/context.ts | 13 +- .../src/createLucideIcon.ts | 47 ++- .../src/defaultAttributes.ts | 25 +- packages/lucide-react-native/src/types.ts | 30 +- .../lucide-react-native/tests/Icon.spec.tsx | 28 ++ .../tests/__snapshots__/Icon.spec.tsx.snap | 2 + .../tests/__snapshots__/context.spec.tsx.snap | 2 + .../lucide-react-native.spec.tsx.snap | 197 +++++++--- .../tests/lucide-react-native.spec.tsx | 22 +- packages/lucide-react-native/tsconfig.json | 5 + packages/lucide-react/package.json | 1 + packages/lucide-react/rollup.config.mjs | 15 +- .../lucide-react/scripts/exportTemplate.mts | 30 +- packages/lucide-react/src/DynamicIcon.ts | 30 +- packages/lucide-react/src/Icon.ts | 74 ++-- packages/lucide-react/src/context.ts | 8 +- packages/lucide-react/src/createLucideIcon.ts | 53 ++- .../lucide-react/src/defaultAttributes.ts | 12 +- packages/lucide-react/src/types.ts | 35 +- .../tests/__snapshots__/context.spec.tsx.snap | 50 ++- .../createLucideIcon.spec.tsx.snap | 64 ++-- .../dynamicImports.spec.tsx.snap | 2 +- .../__snapshots__/lucide-react.spec.tsx.snap | 60 ++- packages/lucide-react/tests/context.spec.tsx | 23 +- .../tests/createLucideIcon.spec.tsx | 62 +++- .../lucide-react/tests/lucide-react.spec.tsx | 42 ++- packages/lucide-react/tsconfig.json | 7 +- .../lucide-solid/scripts/exportTemplate.mts | 25 +- packages/lucide-solid/src/Icon.tsx | 86 ++--- packages/lucide-solid/src/context.tsx | 10 + .../lucide-solid/src/defaultAttributes.ts | 16 +- packages/lucide-solid/src/types.ts | 20 +- packages/lucide-solid/tests/Icon.spec.tsx | 47 +++ .../tests/__snapshots__/context.spec.tsx.snap | 2 +- .../__snapshots__/lucide-solid.spec.tsx.snap | 98 ++--- packages/lucide-solid/tests/context.spec.tsx | 20 +- .../lucide-solid/tests/lucide-solid.spec.tsx | 2 +- packages/lucide-solid/tsconfig.json | 5 + packages/shared/package.json | 7 + .../shared/src/build/buildLucideDataUri.ts | 30 ++ .../src/build/buildLucideIconElement.ts | 36 ++ .../src/build/buildLucideIconForReact.ts | 27 ++ .../shared/src/build/buildLucideIconNode.ts | 88 +++++ packages/shared/src/build/buildLucideSvg.ts | 20 + .../src/build}/defaultAttributes.ts | 6 +- .../src/build/defaultReactAttributes.ts | 13 + packages/shared/src/build/types.ts | 76 ++++ packages/shared/src/index.ts | 9 + packages/shared/src/utils/toCamelCase.ts | 25 +- packages/shared/src/utils/toKebabCase.ts | 2 +- packages/shared/src/utils/toLucideIconData.ts | 22 ++ .../shared/tests/toLucideIconData.spec.ts | 31 ++ packages/svelte/package.json | 2 +- packages/svelte/scripts/exportTemplate.mts | 11 +- packages/svelte/scripts/patchCopiedUtils.mts | 14 + packages/svelte/src/Icon.svelte | 59 ++- packages/svelte/src/context.ts | 4 + packages/svelte/src/lucide-svelte.ts | 2 +- packages/svelte/src/types.ts | 37 +- .../tests/__snapshots__/Icon.spec.ts.snap | 2 +- .../__snapshots__/lucide-svelte.spec.ts.snap | 56 ++- packages/svelte/tests/lucide-svelte.spec.ts | 20 +- packages/svelte/tests/setupVitest.ts | 3 +- packages/svelte/tsconfig.json | 5 + packages/vue/rollup.config.mjs | 29 +- packages/vue/scripts/exportTemplate.mts | 25 +- packages/vue/src/Icon.ts | 110 +++--- packages/vue/src/context.ts | 4 + packages/vue/src/createLucideIcon.ts | 41 +- packages/vue/src/defaultAttributes.ts | 12 +- packages/vue/src/types.ts | 22 +- packages/vue/tests/Icon.spec.ts | 33 +- .../vue/tests/__snapshots__/Icon.spec.ts.snap | 32 +- .../tests/__snapshots__/context.spec.ts.snap | 3 +- .../__snapshots__/lucide-vue.spec.ts.snap | 16 +- packages/vue/tests/context.spec.ts | 27 +- packages/vue/tests/lucide-vue.spec.ts | 60 ++- packages/vue/tsconfig.json | 5 + pnpm-lock.yaml | 141 ++++++- 178 files changed, 3257 insertions(+), 3166 deletions(-) rename docs/guide/{packages/icons.md => icons/index.md} (64%) delete mode 100644 docs/guide/packages/angular.md delete mode 100644 docs/guide/packages/lucide-astro.md delete mode 100644 docs/guide/packages/lucide-preact.md delete mode 100644 docs/guide/packages/lucide-react-native.md delete mode 100644 docs/guide/packages/lucide-solid.md delete mode 100644 docs/guide/packages/lucide-static.md delete mode 100644 docs/guide/packages/lucide-svelte.md delete mode 100644 docs/guide/packages/lucide-vue.md create mode 100644 docs/images/non-scaling-stroke-compare.svg delete mode 100644 packages/astro/src/defaultAttributes.ts create mode 100644 packages/shared/src/build/buildLucideDataUri.ts create mode 100644 packages/shared/src/build/buildLucideIconElement.ts create mode 100644 packages/shared/src/build/buildLucideIconForReact.ts create mode 100644 packages/shared/src/build/buildLucideIconNode.ts create mode 100644 packages/shared/src/build/buildLucideSvg.ts rename packages/{svelte/src => shared/src/build}/defaultAttributes.ts (75%) create mode 100644 packages/shared/src/build/defaultReactAttributes.ts create mode 100644 packages/shared/src/build/types.ts create mode 100644 packages/shared/src/utils/toLucideIconData.ts create mode 100644 packages/shared/tests/toLucideIconData.spec.ts create mode 100644 packages/svelte/scripts/patchCopiedUtils.mts diff --git a/.gitignore b/.gitignore index cf6cb25aa..9003ed236 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ packages/**/src/aliases.ts !packages/**/src/aliases/index.ts packages/**/src/utils/*.ts !packages/shared/src/utils/*.ts +!packages/shared/src/build/ +!packages/shared/src/build/*.ts +packages/shared/src/build/types.d.ts packages/**/src/dynamicIconImports.ts packages/**/DynamicIcon.d.ts packages/**/dynamicIconImports.js diff --git a/docs/guide/angular/advanced/combining-icons.md b/docs/guide/angular/advanced/combining-icons.md index ec5c6a3b3..38b8a6199 100644 --- a/docs/guide/angular/advanced/combining-icons.md +++ b/docs/guide/angular/advanced/combining-icons.md @@ -2,6 +2,7 @@ title: Combining icons - Angular description: Learn how to combine multiple icons into a single icon nested SVG elements in your Angular application. --- + @@ -14,28 +15,32 @@ This is useful for if you want to be creative and make your own custom icons by ::: sandpack {template=angular showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="@lucide/angular"} ```ts /src/app/app.component.ts [active] -import { Component, ViewEncapsulation } from "@angular/core"; -import { LucideScan, LucideUser } from "@lucide/angular"; +import { Component, ViewEncapsulation } from '@angular/core'; +import { LucideScan, LucideUser } from '@lucide/angular'; @Component({ selector: 'app', imports: [LucideScan, LucideUser], - template: ` - - - `, + template: ` + + `, styleUrls: ['./app.component.css'], encapsulation: ViewEncapsulation.None, }) -export class App { -} +export class App {} ``` + ::: This is valid SVG and all SVG properties are supported on the icons. @@ -53,28 +58,29 @@ You can also use SVG elements to create your own icons. For example, you can add a notification badge to an icon by using the `circle` SVG element. - ::: sandpack {template=angular showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="@lucide/angular"} ```ts /src/app/app.component.ts [active] -import { Component, ViewEncapsulation, signal } from "@angular/core"; -import { LucideMail } from "@lucide/angular"; +import { Component, ViewEncapsulation, signal } from '@angular/core'; +import { LucideMail } from '@lucide/angular'; @Component({ selector: 'app', imports: [LucideMail], - template: ` - - @if (hasUnreadMessages()) { - - } - `, + template: ` + @if (hasUnreadMessages()) { + + } + `, styleUrls: ['./app.component.css'], encapsulation: ViewEncapsulation.None, }) @@ -82,38 +88,40 @@ export class App { protected readonly hasUnreadMessages = signal(true); } ``` + ::: ### Example with text element You can also use the `text` SVG element to add text to your icon. - ::: sandpack {template=angular showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="@lucide/angular"} ```ts /src/app/app.component.ts [active] -import { Component, ViewEncapsulation } from "@angular/core"; -import { LucideFile } from "@lucide/angular"; +import { Component, ViewEncapsulation } from '@angular/core'; +import { LucideFile } from '@lucide/angular'; @Component({ selector: 'app', imports: [LucideFile], - template: ` - - - JS - - `, + template: ` + + JS + + `, styleUrls: ['./app.component.css'], encapsulation: ViewEncapsulation.None, }) -export class App { -} +export class App {} ``` + ::: diff --git a/docs/guide/angular/advanced/global-styling.md b/docs/guide/angular/advanced/global-styling.md index d275dd8fa..3e275a8d9 100644 --- a/docs/guide/angular/advanced/global-styling.md +++ b/docs/guide/angular/advanced/global-styling.md @@ -2,6 +2,7 @@ title: Global Styling - Angular description: Learn how to style all icons globally in your Angular application using CSS or the provideLucideConfig provider. --- + @@ -29,9 +30,9 @@ import { provideLucideConfig } from '@lucide/angular'; export const appConfig: ApplicationConfig = { providers: [ provideLucideConfig({ - strokeWidth: 1.5 + strokeWidth: 1.5, }), - ] + ], }; ``` @@ -65,7 +66,7 @@ All Lucide icons include the `lucide` class. You can use this class in your styl ``` ```ts /src/app/app.component.ts -import { Component, ViewEncapsulation } from "@angular/core"; +import { Component, ViewEncapsulation } from '@angular/core'; import { LucideCakeSlice, LucideCandy, @@ -76,7 +77,7 @@ import { LucideSandwich, LucideWine, LucideDessert, -} from "@lucide/angular"; +} from '@lucide/angular'; @Component({ selector: 'app', @@ -92,28 +93,27 @@ import { LucideDessert, ], template: `
- - - - - - - - - -
`, + + + + + + + + + + `, styleUrls: ['./app.component.css', './icon.css'], encapsulation: ViewEncapsulation.None, }) -export class App { -} +export class App {} ``` ::: -### Absolute stroke width +### Non-scaling strokes -To keep the stroke width constant regardless of icon size, apply `vector-effect: non-scaling-stroke` to the icon's children. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more details. +To keep the stroke width constant regardless of icon size, apply `vector-effect: non-scaling-stroke` to the icon's children. See [non-scaling strokes](../basics/stroke-width.md#non-scaling-strokes) for more details. ::: sandpack {template=angular editorHeight=300 dependencies="@lucide/angular"} @@ -137,7 +137,7 @@ To keep the stroke width constant regardless of icon size, apply `vector-effect: ``` ```ts /src/app/app.component.ts -import { Component, ViewEncapsulation } from "@angular/core"; +import { Component, ViewEncapsulation } from '@angular/core'; import { LucideTentTree, LucideCaravan, @@ -148,7 +148,7 @@ import { LucideMap, LucideCloudMoon, LucideSparkles, -} from "@lucide/angular"; +} from '@lucide/angular'; @Component({ selector: 'app', @@ -164,21 +164,20 @@ import { LucideSparkles, ], template: `
- - - - - - - - - -
`, + + + + + + + + + + `, styleUrls: ['./app.component.css', './icon.css'], encapsulation: ViewEncapsulation.None, }) -export class App { -} +export class App {} ``` ::: diff --git a/docs/guide/angular/basics/stroke-width.md b/docs/guide/angular/basics/stroke-width.md index fab0df7ab..77327c0cb 100644 --- a/docs/guide/angular/basics/stroke-width.md +++ b/docs/guide/angular/basics/stroke-width.md @@ -1,7 +1,8 @@ --- title: Stroke width - Angular -description: Learn how to adjust the stroke width of icons in your Angular application using the `strokeWidth` input or adjust the strokeWidth appearance using the `absoluteStrokeWidth` input. +description: Learn how to adjust the stroke width of icons in your Angular application using the `strokeWidth` input or adjust the strokeWidth appearance using the `nonScalingStroke` input. --- + @@ -18,55 +19,58 @@ The `strokeWidth` can be adjusted to create a different look of the icons. ::: sandpack {template=angular showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="@lucide/angular"} ```ts /src/app/app.component.ts [active] -import { Component, ViewEncapsulation } from "@angular/core"; -import { LucideFolderLock } from "@lucide/angular"; +import { Component, ViewEncapsulation } from '@angular/core'; +import { LucideFolderLock } from '@lucide/angular'; @Component({ selector: 'app', imports: [LucideFolderLock], - template: ``, + template: ``, styleUrls: ['./app.component.css'], encapsulation: ViewEncapsulation.None, }) -export class App { -} +export class App {} ``` + ::: -## Absolute stroke width +## Non-scaling strokes -When binding the `size` input, the icon's stroke width will be relative to its size, this is the default SVG behavior. The `absoluteStrokeWidth` input is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. +When binding the `size` input, the icon's stroke width will be relative to its size, this is the default SVG behavior. The `nonScalingStroke` input is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. -This means that when `absoluteStrokeWidth` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. +This means that when `nonScalingStroke` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. Note `2px` is the default stroke width for a Lucide icon, this can be adjusted to all sizes. -![Absolute stroke width comparison](../../../images/absolute-stroke-width-compare.png?raw=true "Absolute stroke width comparison") + -### Adjusting stroke width with `absoluteStrokeWidth` input +### Adjusting stroke width with `nonScalingStroke` input -Setting `absoluteStrokeWidth` to `true` will make the stroke width absolute. +Setting `nonScalingStroke` to `true` will make the stroke width non-scaling. ::: sandpack {template=angular showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="@lucide/angular"} ```ts /src/app/app.component.ts [active] -import { Component, ViewEncapsulation } from "@angular/core"; -import { LucideRollerCoaster } from "@lucide/angular"; +import { Component, ViewEncapsulation } from '@angular/core'; +import { LucideRollerCoaster } from '@lucide/angular'; @Component({ selector: 'app', imports: [LucideRollerCoaster], template: ` - -`, + `, styleUrls: ['./app.component.css'], encapsulation: ViewEncapsulation.None, }) -export class App { -} +export class App {} ``` + ::: diff --git a/docs/guide/angular/getting-started.md b/docs/guide/angular/getting-started.md index bf45cb80e..805a5f841 100644 --- a/docs/guide/angular/getting-started.md +++ b/docs/guide/angular/getting-started.md @@ -2,6 +2,7 @@ title: Getting started - Angular description: This guide will help you get started with Lucide in your Angular project. --- + @@ -18,10 +19,13 @@ The `strokeWidth` can be adjusted to create a different look of the icons. ::: sandpack {template=vanilla showTabs=false editorHeight=250 editorWidthPercentage=70 dependencies="lucide"} ```html /index.html [active] - + - + @@ -29,34 +33,32 @@ The `strokeWidth` can be adjusted to create a different look of the icons. ``` ```js /index.js -import "./styles.css"; +import './styles.css'; import { createIcons, FolderLock } from 'lucide/dist/cjs/lucide'; createIcons({ icons: { FolderLock, - } + }, }); - ``` ::: + - -``` - -## Props - -You can pass additional props to adjust the icon appearance. - -| name | type | default | -|-----------------------|-----------|--------------| -| `size` | *number* | 24 | -| `color` | *string* | currentColor | -| `strokeWidth` | *number* | 2 | -| `absoluteStrokeWidth` | *boolean* | false | - -```html - -``` - -## Global configuration - -You can use `provideLucideConfig` to configure the default property values as defined above: - -```ts{2,7-9} -import { ApplicationConfig } from '@angular/core'; -import { provideLucideConfig } from '@lucide/angular'; - -export const appConfig: ApplicationConfig = { - providers: [ - // ... - provideLucideConfig({ - strokeWidth: 1.5 - }), - ] -}; -``` - -## Styling via CSS - -Icons can also be styled by using custom CSS classes: - -```html - -``` - -```css -svg.my-icon { - width: 12px; - height: 12px; - stroke-width: 3; -} -``` - -## With Lucide lab or custom icons - -[Lucide lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -While they aren't provided as standalone components, they can be still be passed to the `LucideIcon` component the same way as official icons: - -```html - - - - - -``` - -```ts{2,6-7,11-12} -import { provideLucideIcons } from '@lucide/angular'; -import { coconut } from '@lucide/lab'; - -@Component({ - templateUrl: './foobar.html', - // For using by name via provider: - providers: [provideLucideIcons({ coconut })], - imports: [LucideIcon] -}) -export class Foobar { - // For passing directly as LucideIconData: - readonly CoconutIcon = coconut; -} -``` - -## Troubleshooting - -### The icon is not being displayed - -If using per-icon-components: - -1. Ensure that the icon component is being imported, if using per-icon-components -2. Check that the icon name matches exactly (case-sensitive) - -If using the dynamic component: - -1. Ensure the icon is provided via `provideLucideIcons()` if using string names -2. Verify the icon is imported from `@lucide/angular` and not the legacy package - -### TypeScript errors? - -Make sure you're importing from `@lucide/angular` and not `lucide-angular`. - -### Icons render with wrong defaults - -Ensure `provideLucideConfig()` is used at the right level. - -## Migration guide - -Migrating from `lucide-angular`? Read our [comprehensive migration guide](https://github.com/lucide-icons/lucide/blob/main/packages/angular/MIGRATION.md). diff --git a/docs/guide/packages/lucide-astro.md b/docs/guide/packages/lucide-astro.md deleted file mode 100644 index 830f4f43a..000000000 --- a/docs/guide/packages/lucide-astro.md +++ /dev/null @@ -1,210 +0,0 @@ -# Lucide Astro - -Astro components for Lucide icons that work perfectly with Astro's island architecture and multi-framework support. Each icon is an Astro component that renders as an inline SVG, providing excellent performance for static sites and server-side rendering scenarios. - -**What you can accomplish:** -- Use icons as Astro components with zero JavaScript runtime overhead -- Build fast, static websites with optimized SVG icons -- Integrate seamlessly with Astro's component islands and partial hydration -- Create multi-framework applications where icons work across different UI libraries -- Optimize performance with direct icon imports and build-time rendering - -## Installation - -::: code-group - -```sh [pnpm] -pnpm add @lucide/astro -``` - -```sh [yarn] -yarn add @lucide/astro -``` - -```sh [npm] -npm install @lucide/astro -``` - -```sh [bun] -bun add @lucide/astro -``` - -::: - -## How to use - -Lucide is built with ES Modules, so it's completely tree-shakable. - -Each icon can be imported as an Astro component, which renders an inline SVG element. This way, only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away. - -### Example - -Default usage: - -```astro ---- -import { Skull } from '@lucide/astro'; ---- - - -``` - -Additional props can be passed to adjust the icon: - -```astro ---- -import { Camera } from '@lucide/astro'; ---- - - -``` - -For faster builds and load times, you can import icons directly from the `@lucide/astro/icons` directory: - -```astro ---- -import CircleAlert from '@lucide/astro/icons/circle-alert'; ---- - - -``` - -## Props - -| name | type | default | -| --------------------- | --------- | ------------ | -| `size` | _number_ | 24 | -| `color` | _string_ | currentColor | -| `stroke-width` | _number_ | 2 | -| `absoluteStrokeWidth` | _boolean_ | false | - -### Applying props - -To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation). - -```astro ---- -import { Phone } from '@lucide/astro'; ---- - - -``` - -This results a filled phone icon. - -## Types - -The package includes type definitions for all icons. This is useful if you want to dynamically render icons. - -### Example - -```astro ---- -import { House, Library, Cog, type Icon as IconType } from '@lucide/astro'; - -type MenuItem = { - name: string; - href: string; - icon: typeof IconType; -}; - -const menuItems: MenuItem[] = [ - { - name: 'Home', - href: '/', - icon: House, - }, - { - name: 'Blog', - href: '/blog', - icon: Library, - }, - { - name: 'Projects', - href: '/projects', - icon: Cog, - }, -]; ---- - -{ - menuItems.map((item) => ( - - - {item.name} - - )) -} -``` - -## With Lucide Lab or custom icons - -[Lucide Lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -They can be used by using the `Icon` component. -All props of the regular Lucide icons can be passed to adjust the icon appearance. - -### Using the `Icon` component - -This creates a single icon based on the iconNode passed and renders a Lucide icon component. - -```astro ---- -import { Icon } from '@lucide/astro'; -import { burger, sausage } from '@lucide/lab'; ---- - - - -``` - -## One generic icon component - -It is possible to create one generic icon component to load icons, but it is not recommended. - -::: danger -The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application. This may be passable if you're doing SSG and SSR in server environments. However if you're doing SSR in serverless environments, it could negatively affect your app's performance, as a bigger bundle size will translate to an increase in cold starts. -::: - -### Icon Component Example - -```astro ---- -import { icons, type IconProps } from '@lucide/astro'; - -interface Props extends IconProps { - name: keyof typeof icons; -} - -const { name, ...restProps } = Astro.props; -const Icon = icons[name]; ---- - - -``` - -### Using the Icon Component - -```astro ---- -import LucideIcon from './LucideIcon.astro'; ---- - - -``` - -## Accessibility - -By default, we hide icons from screen readers using `aria-hidden="true"`. - -You can add accessibility attributes using aria-labels. - -```jsx ---- -import { Check } from '@lucide/astro'; ---- - - -``` - -For best practices on accessibility, please see our [accessibility guide](../accessibility.md). diff --git a/docs/guide/packages/lucide-preact.md b/docs/guide/packages/lucide-preact.md deleted file mode 100644 index 1fe1bf1d4..000000000 --- a/docs/guide/packages/lucide-preact.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Lucide Preact ---- - -# Lucide Preact - -Preact components for Lucide icons that provide React-like development experience with a smaller footprint. Each icon is a lightweight Preact component that renders as an inline SVG, perfect for applications that need React compatibility with minimal bundle size. - -**What you can accomplish:** -- Use icons as Preact components with React-like syntax and patterns -- Build lightweight applications with Preact's smaller runtime -- Create fast, responsive interfaces with minimal JavaScript overhead -- Maintain React compatibility while reducing bundle size -- Integrate with existing Preact applications and component libraries - -## Installation - -::: code-group - -```sh [pnpm] -pnpm add lucide-preact -``` - -```sh [yarn] -yarn add lucide-preact -``` - -```sh [npm] -npm install lucide-preact -``` - -```sh [bun] -bun add lucide-preact -``` - -::: - -## How to use - -Lucide is built with ES Modules, so it's completely tree-shakable. - -Each icon can be imported as a Preact component, which renders an inline SVG element. This way, only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away. - -### Example - -Additional props can be passed to adjust the icon: - -```jsx -import { Camera } from 'lucide-preact'; - -// Usage -const App = () => { - return ; -}; - -export default App; -``` - -## Props - -| name | type | default | -| --------------------- | --------- | ------------ | -| `size` | *number* | 24 | -| `color` | *string* | currentColor | -| `strokeWidth` | *number* | 2 | -| `absoluteStrokeWidth` | *boolean* | false | - -### Applying props - -To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation). - -```jsx -// Usage -const App = () => { - return ; -}; -``` - -> SVG attributes in Preact aren't transformed, so if you want to change for example the `stroke-linejoin` you need to pass it in kebabcase. Basically how the SVG spec want you to write it. See this topic in the [Preact documentation](https://preactjs.com/guide/v10/differences-to-react/#svg-inside-jsx). - -## With Lucide Lab or custom icons - -[Lucide Lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -They can be used by using the `Icon` component. -All props like regular Lucide icons can be passed to adjust the icon appearance. - -### Using the `Icon` component - -This creates a single icon based on the iconNode passed and renders a Lucide icon component. - -```jsx -import { Icon } from 'lucide-preact'; -import { coconut } from '@lucide/lab'; - -const App = () => ( - -); -``` - -## One generic icon component - -It is possible to create one generic icon component to load icons, but it is not recommended. - -::: danger -The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important when using bundlers like `Webpack`, `Rollup`, or `Vite`. -::: - -### Icon Component Example - -```jsx -import { icons } from 'lucide-preact'; - -const Icon = ({ name, color, size }) => { - const LucideIcon = icons[name]; - - return ; -}; - -export default Icon; -``` - -#### Using the Icon Component - -```jsx -import Icon from './Icon'; - -const App = () => { - return ; -}; - -export default App; -``` - -## Accessibility - -By default, we hide icons from screen readers using `aria-hidden="true"`. - -You can add accessibility attributes using aria-labels. - -```jsx -import { Check } from 'lucide-preact'; - -const App = () => { - return ; -}; -``` - -For best practices on accessibility, please see our [accessibility guide](../accessibility.md). diff --git a/docs/guide/packages/lucide-react-native.md b/docs/guide/packages/lucide-react-native.md deleted file mode 100644 index 6d148ce76..000000000 --- a/docs/guide/packages/lucide-react-native.md +++ /dev/null @@ -1,133 +0,0 @@ -# Lucide React Native - -React Native components for Lucide icons that work seamlessly across iOS and Android platforms. Built on top of react-native-svg, each icon renders as a native SVG component, providing consistent visual appearance and performance across mobile devices. - -**What you can accomplish:** -- Use icons as React Native components with platform-consistent rendering -- Build cross-platform mobile apps with scalable vector icons -- Create responsive interfaces that adapt to different screen densities -- Integrate with React Native's styling system and animation libraries -- Maintain consistent icon appearance across iOS and Android platforms - -## Installation - -First, ensure that you have `react-native-svg` (version between 12 and 15) installed. Then, install the package: - -::: code-group - -```sh [pnpm] -pnpm add lucide-react-native -``` - -```sh [yarn] -yarn add lucide-react-native -``` - -```sh [npm] -npm install lucide-react-native -``` - -```sh [bun] -bun add lucide-react-native -``` - -::: - -## How to use - -Each icon can be imported as a React component. - -### Example - -Additional props can be passed to adjust the icon: - -```jsx -import { Camera } from 'lucide-react-native'; - -// Usage -const App = () => { - return ; -}; - -export default App; -``` - -## Props - -| name | type | default | -| --------------------- | --------- | ------------ | -| `size` | *number* | 24 | -| `color` | *string* | currentColor | -| `strokeWidth` | *number* | 2 | -| `absoluteStrokeWidth` | *boolean* | false | - -### Applying props - -To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. - -```jsx -// Usage -const App = () => { - return ; -}; -``` - -## With Lucide Lab or custom icons - -[Lucide Lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -They can be used by using the `Icon` component. -All props like regular Lucide icons can be passed to adjust the icon appearance. - -### Using the `Icon` component - -This creates a single icon based on the iconNode passed and renders a Lucide icon component. - -```jsx -import { Icon } from 'lucide-react-native'; -import { coconut } from '@lucide/lab'; - -const App = () => ( - -); -``` - -## One generic icon component - -It is possible to create one generic icon component to load icons, but it is not recommended. - -::: warning -The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important to keep in mind when using bundlers like `Webpack`, `Rollup`, or `Vite`. -::: - -### Icon Component Example - -```tsx -import * as icons from 'lucide-react-native/icons'; - -interface IconProps { - name: keyof typeof icons; - color?: string; - size?: number; -} - -const Icon = ({ name, color, size }: IconProps) => { - const LucideIcon = icons[name]; - - return ; -}; - -export default Icon; -``` - -#### Using the Icon Component - -```tsx -import Icon from './Icon'; - -const App = () => { - return ; -}; - -export default App; -``` diff --git a/docs/guide/packages/lucide-solid.md b/docs/guide/packages/lucide-solid.md deleted file mode 100644 index 63157ff4f..000000000 --- a/docs/guide/packages/lucide-solid.md +++ /dev/null @@ -1,162 +0,0 @@ -# Lucide Solid - -SolidJS components for Lucide icons that leverage Solid's fine-grained reactivity system. Each icon is a reactive Solid component that renders as an inline SVG, providing exceptional performance through Solid's compile-time optimizations and reactive primitives. - -**What you can accomplish:** -- Use icons as SolidJS components with fine-grained reactivity -- Create highly performant interfaces with Solid's reactive system -- Build dynamic icon components that respond to signals and stores -- Integrate seamlessly with Solid's JSX and component patterns -- Optimize performance with direct icon imports and minimal runtime overhead - -## Installation - -::: code-group - -```sh [pnpm] -pnpm add lucide-solid -``` - -```sh [yarn] -yarn add lucide-solid -``` - -```sh [npm] -npm install lucide-solid -``` - -```sh [bun] -bun add lucide-solid -``` - -::: - -## How to use - -Lucide is built with ES Modules, so it's completely tree-shakable. - -Each icon can be imported as a Solid component, which renders an inline SVG element. This way, only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away. - -### Example - -Additional props can be passed to adjust the icon: - -```jsx -import { Camera } from 'lucide-solid'; - -// Usage -const App = () => { - return ; -}; - -export default App; -``` - -Vite loading/performing issues with the dev server can be resolved by import icons directly from the `lucide-solid/icons` directory: - -```jsx -import Camera from 'lucide-solid/icons/camera'; - -// Usage -const App = () => { - return ; -}; - -export default App; -``` - -## Props - -| name | type | default | -| --------------------- | --------- | ------------ | -| `size` | *number* | 24 | -| `color` | *string* | currentColor | -| `strokeWidth` | *number* | 2 | -| `absoluteStrokeWidth` | *boolean* | false | - -### Applying props - -To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation). - -```jsx -// Usage -const App = () => { - return ; -}; -``` - -## With Lucide Lab or custom icons - -[Lucide Lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -They can be used by using the `Icon` component. -All props like the regular Lucide icons can be passed to adjust the icon appearance. - -### Using the `Icon` component - -This creates a single icon based on the iconNode passed and renders a Lucide icon component. - -```jsx -import { Icon } from 'lucide-solid'; -import { sausage } from '@lucide/lab'; - -const App = () => ( - -); -``` - -## One generic icon component - -It is possible to create one generic icon component to load icons. It's not recommended. - -::: danger -The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important to keep in mind when using bundlers like `Webpack`, `Rollup`, or `Vite`. -::: - -### Icon Component Example - -```tsx -import { icons, type LucideProps } from 'lucide-solid'; -import { splitProps } from 'solid-js'; -import { Dynamic } from 'solid-js/web'; - -interface IconProps extends LucideProps { - name: keyof typeof icons; -} - -const Icon = (props: IconProps) => { - const [local, others] = splitProps(props, ["name"]); - - return -}; - -export default Icon; -``` - -#### Using the Icon Component - -```tsx -import Icon from './Icon'; - -const App = () => { - return ; -}; - -export default App; -``` - -## Accessibility - -By default, we hide icons from screen readers using `aria-hidden="true"`. - -You can add accessibility attributes using aria-labels. - -```jsx -import { Check } from 'lucide-solid'; - -const App = () => { - return ; -}; -``` - -For best practices on accessibility, please see our [accessibility guide](../accessibility.md). diff --git a/docs/guide/packages/lucide-static.md b/docs/guide/packages/lucide-static.md deleted file mode 100644 index 22e1d976d..000000000 --- a/docs/guide/packages/lucide-static.md +++ /dev/null @@ -1,265 +0,0 @@ -# Lucide Static - -Static assets and utilities for Lucide icons that work without JavaScript frameworks. This package provides multiple formats including individual SVG files, SVG sprites, icon fonts, and Node.js utilities for server-side rendering and static site generation. - -**What you can accomplish:** -- Use individual SVG files as images or CSS background images -- Implement icon fonts for CSS-based icon systems -- Create SVG sprites for efficient icon loading in static sites -- Import SVG strings in Node.js applications and server-side rendering -- Build static websites and applications without JavaScript framework dependencies - -This package includes the following implementations of Lucide icons: - -- Individual SVG files -- SVG sprite -- Icon font files -- A JavaScript library exporting SVG strings - -## Who is this for? - -`lucide-static` is suitable for _very specific use cases_ where you want to use Lucide icons without relying on a JavaScript framework or component system. It's ideal for: - -- Projects that use icon fonts with plain CSS or utility-first frameworks -- Embedding raw SVG files or sprites directly in HTML -- Using SVGs as CSS background images -- Importing SVG strings into Node.js (CommonJS) environments - -::: danger -### Not recommended for production {#production-warning} - -SVG sprites and icon fonts include **all icons**, which can significantly increase your app's bundle size and load time. - -For production environments, we recommend using a bundler with tree-shaking support to include only the icons you actually use. Consider using one of the framework-specific [packages](../../packages.md). -::: - -## Installation - -::: code-group - -```sh [pnpm] -pnpm add lucide-static -``` - -```sh [yarn] -yarn add lucide-static -``` - -```sh [npm] -npm install lucide-static -``` - -```sh [bun] -bun add lucide-static -``` - -::: - -## SVG Files - -You can use standalone SVG files or SVG sprites in several ways. - -Check out our [codesandbox example](https://codesandbox.io/s/using-the-svg-sprite-lz1kk). - -### SVG file as image - -#### In HTML: - -::: code-group - -```html [Webpack] - - -``` - -```html [CDN] - - -``` - -::: - -#### In CSS: - -::: code-group - -```css [Webpack] -.house-icon { - background-image: url(~lucide-static/icons/house.svg); -} -``` - -```css [CDN] -.house-icon { - background-image: url(https://unpkg.com/lucide-static@latest/icons/house.svg); -} -``` - -::: - -Make sure you have the correct Webpack loader configured, such as [`url-loader`](https://v4.webpack.js.org/loaders/url-loader/). - -### SVG file as string - -To import an SVG as a string (e.g., for templating): - -::: code-group - -```js [Webpack] -import arrowRightIcon from 'lucide-static/icons/arrow-right'; -``` - -```js [Vite] -import arrowRightIcon from 'lucide-static/icons/arrow-right.svg?raw'; -``` - -::: - -You'll need an SVG loader like [`svg-inline-loader`](https://v4.webpack.js.org/loaders/svg-inline-loader/). - - -### Using the SVG sprite - -:::danger -[Not intended for production use.](#production-warning) -::: - -You may also need an additional SVG loader to handle this. - -#### Basic sprite usage (not production-optimized): - -```html - -``` - -#### Inline usage: - -```html - - - - - -... -``` - -#### Inline with CSS helper class - -If you'd prefer, you can use CSS to hold your base SVG properties: - -```css -.lucide-icon { - width: 24px; - height: 24px; - stroke: currentColor; - fill: none; - stroke-width: 2; - stroke-linecap: round; - stroke-linejoin: round; -} -``` - -...and update the SVG as follows: - -```xml - - - - - -... -``` - -## Icon font - -:::danger -[Not intended for production use.](#production-warning) -::: - -Lucide icons are also available as a web font. To use them, you first need to include the corresponding stylesheet: - -::: code-group - -```css [Vite] -@import 'lucide-static/font/lucide.css'; -``` - -```css [Webpack] -@import ('~lucide-static/font/lucide.css'); -``` - -```html [CDN] - -``` - -```html [Static asset] - -``` - -::: - -Once included, use the format `icon-{kebab-case-name}`. You can copy icon names from the [Lucide Icons page](https://lucide.dev/icons). - -```html -
-``` - -If you're not using a package manager, you can download the font files directly from the [latest release](https://github.com/lucide-icons/lucide/releases/latest). - -## Node.js - -You can also import Lucide icons in Node.js projects: - -::: code-group - -```js [ESM] -import {MessageSquare} from 'lucide-static'; -``` - -```js [CommonJs] -const {MessageSquare} = require('lucide-static'); -``` - -::: - -> Note: Each icon name is in PascalCase. - -#### Express app example in Node.js - -```js -import express from 'express'; -import {MessageSquare} from 'lucide-static'; -const app = express(); -const port = 3000; - -app.get('/', (req, res) => { - res.send(` - - - - Page Title - - -

Lucide Icons

-

This is a Lucide icon ${MessageSquare}

- - - - `); -}); - -app.listen(port, () => { - console.log(`Example app listening at http://localhost:${port}`); -}); -``` diff --git a/docs/guide/packages/lucide-svelte.md b/docs/guide/packages/lucide-svelte.md deleted file mode 100644 index d46582825..000000000 --- a/docs/guide/packages/lucide-svelte.md +++ /dev/null @@ -1,349 +0,0 @@ -# Lucide Svelte - -Svelte components for Lucide icons that work seamlessly with both Svelte 4 and Svelte 5. Each icon is a reactive Svelte component that renders as an inline SVG, providing excellent performance and integration with Svelte's reactive system and modern features. - -**What you can accomplish:** -- Use icons as Svelte components with full reactivity and TypeScript support -- Bind icon properties to reactive variables and stores -- Create dynamic icon systems that respond to application state -- Build type-safe interfaces with comprehensive TypeScript definitions -- Optimize bundle sizes with direct icon imports and tree-shaking - -## Installation - -::: code-group - -```sh [pnpm] -pnpm add @lucide/svelte -``` - -```sh [yarn] -yarn add @lucide/svelte -``` - -```sh [npm] -npm install @lucide/svelte -``` - -```sh [bun] -bun add @lucide/svelte -``` -::: -> `@lucide/svelte` is only for Svelte 5, for Svelte 4 use the `lucide-svelte` package. - -## How to use - -Lucide is built with ES Modules, so it's completely tree-shakable. - -Each icon can be imported as a Svelte component, which renders an inline SVG element. This way, only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away. - -### Example - -Default usage: - -```svelte - - - -``` - -Additional props can be passed to adjust the icon: - -```svelte - - - -``` - -For faster builds and load times, you can import icons directly from the `@lucide/svelte/icons` directory: - -```svelte - - - -``` - -## Props - -| name | type | default | -| --------------------- | --------- | ------------ | -| `size` | _number_ | 24 | -| `color` | _string_ | currentColor | -| `strokeWidth` | _number_ | 2 | -| `absoluteStrokeWidth` | _boolean_ | false | - -### Applying props - -To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation). - -```svelte - - - -``` - -This results a filled phone icon. - -## Types - -The package includes type definitions for all icons. This is useful if you want to dynamically load icons with the `svelte:component` directive whether you are using TypeScript or JSDoc. - -### TypeScript Example - -::: code-group - -```svelte [Svelte 5] - - -{#each menuItems as item} - {@const Icon = item.icon} - - - {item.name} - -{/each} -``` - -```svelte [Svelte 4] - - -{#each menuItems as item} - {@const Icon = item.icon} - - - {item.name} - -{/each} - -``` -::: - -### JSDoc Example - -::: code-group - -```svelte [Svelte 5] - - -{#each menuItems as item} - {@const Icon = item.icon} - - - {item.name} - -{/each} -``` - -```svelte [Svelte 4] - - -{#each menuItems as item} - {@const Icon = item.icon} - - - {item.name} - -{/each} -``` - -::: - -For more details about typing the `svelte:component` directive, see the [Svelte documentation](https://svelte.dev/docs/typescript#types-componenttype). - -## With Lucide Lab or custom icons - -[Lucide Lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -They can be used by using the `Icon` component. -All props like the regular Lucide icons can be passed to adjust the icon appearance. - -### Using the `Icon` component - -This creates a single icon based on the iconNode passed and renders a Lucide icon component. - -```svelte - - - - -``` - -## One generic icon component - -It is possible to create one generic icon component to load icons, but it is not recommended. - -::: danger -The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important when using bundlers like `Webpack`, `Rollup`, or `Vite`. -::: - -### Icon Component Example - -::: code-group - -```svelte [Svelte 5] - - - -``` - -```svelte [Svelte 4] - - - -``` - -::: - -#### Using the Icon Component - -```svelte - - - -``` - -## Accessibility - -By default, we hide icons from screen readers using `aria-hidden="true"`. - -You can add accessibility attributes using aria-labels. - -```svelte - - - -``` - -For best practices on accessibility, please see our [accessibility guide](../accessibility.md). diff --git a/docs/guide/packages/lucide-vue.md b/docs/guide/packages/lucide-vue.md deleted file mode 100644 index f5ac0ff10..000000000 --- a/docs/guide/packages/lucide-vue.md +++ /dev/null @@ -1,171 +0,0 @@ -# Lucide Vue - -Vue 2 components for Lucide icons that integrate with Vue's Options API and template system. Each icon is a Vue component that renders as an inline SVG, providing familiar Vue development patterns for legacy applications still using Vue 2. - -**What you can accomplish:** - -- Use icons as Vue 2 components with Options API integration -- Maintain legacy Vue 2 applications with modern icon components -- Integrate with Vue 2's template system and component lifecycle -- Build applications using Vue 2's familiar syntax and patterns -- Bridge the gap while planning migration to Vue 3 - -## Installation - -::: code-group - -```sh [pnpm] -pnpm add @lucide/vue -``` - -```sh [yarn] -yarn add @lucide/vue -``` - -```sh [npm] -npm install @lucide/vue -``` - -```sh [bun] -bun add @lucide/vue -``` - -::: - -## How to use - -Lucide is built with ES Modules, so it's completely tree-shakable. - -Each icon can be imported as a Vue component, which renders an inline SVG Element. This way only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away. - -### Example - -You can pass additional props to adjust the icon. - -```vue - - - -``` - -## Props - -| name | type | default | -| ----------------------- | --------- | ------------ | -| `size` | *number* | 24 | -| `color` | *string* | currentColor | -| `stroke-width` | *number* | 2 | -| `absoluteStrokeWidth` | *boolean* | false | -| `default-class` | *string* | lucide-icon | - -### Applying props - -To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation). - -```vue - -``` - -## With Lucide Lab or custom icons - -[Lucide Lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library. - -They can be used by using the `Icon` component. -All props like regular Lucide icons can be passed to adjust the icon appearance. - -### Using the `Icon` component - -This creates a single icon based on the iconNode passed and renders a Lucide icon component. - -```vue - - - -``` - -## One generic icon component - -It is possible to create one generic icon component to load icons, but it is not recommended. - -::: danger -The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important when using bundlers like `Webpack`, `Rollup`, or `Vite`. -::: - -### Icon Component Example - -```vue - - - -``` - -### Using the Icon Component - -All other props listed above also work on the `Icon` Component. - -```vue - -``` - -## Accessibility - -By default, we hide icons from screen readers using `aria-hidden="true"`. - -You can add accessibility attributes using aria-labels. - -```vue - - - -``` - -For best practices on accessibility, please see our [accessibility guide](../accessibility.md). diff --git a/docs/guide/preact/advanced/combining-icons.md b/docs/guide/preact/advanced/combining-icons.md index 8f5ffd92f..b8bcf7c6f 100644 --- a/docs/guide/preact/advanced/combining-icons.md +++ b/docs/guide/preact/advanced/combining-icons.md @@ -2,6 +2,7 @@ title: Combining icons - Preact description: Learn how to combine multiple icons into a single icon nested SVG elements in your Preact application. --- + @@ -14,18 +15,21 @@ This is useful if you want to create custom icons by combining existing ones. ::: sandpack {showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="lucide-preact"} ```jsx App.js [active] -import { Scan, User } from "lucide-preact"; -import { h } from "preact"; +import { Scan, User } from 'lucide-preact'; +import { h } from 'preact'; function App() { return (
- +
@@ -33,8 +37,8 @@ function App() { } export default App; - ``` + ::: This is valid, since [SVGs can be nested](https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/svg#nested_svg_element), and all SVG properties are supported on the icons. @@ -55,8 +59,8 @@ For example, you can add a notification badge to an icon by using the `circle` S ::: sandpack {showTabs=false editorHeight=580 editorWidthPercentage=60 dependencies="lucide-preact"} ```jsx App.js [active] -import { Mail } from "lucide-preact"; -import { h } from "preact"; +import { Mail } from 'lucide-preact'; +import { h } from 'preact'; function App() { const hasUnreadMessages = true; @@ -79,8 +83,8 @@ function App() { } export default App; - ``` + ::: ### Example with text element @@ -90,8 +94,8 @@ You can also use the `text` SVG element to add text to your icon. ::: sandpack {showTabs=false editorHeight=400 editorWidthPercentage=60 dependencies="lucide-preact"} ```jsx App.js [active] -import { File } from "lucide-preact"; -import { h } from "preact"; +import { File } from 'lucide-preact'; +import { h } from 'preact'; function App() { return ( @@ -112,6 +116,6 @@ function App() { } export default App; - ``` + ::: diff --git a/docs/guide/preact/advanced/global-styling.md b/docs/guide/preact/advanced/global-styling.md index c8e77feb7..47b24d7fd 100644 --- a/docs/guide/preact/advanced/global-styling.md +++ b/docs/guide/preact/advanced/global-styling.md @@ -2,6 +2,7 @@ title: Global Styling - Preact description: Learn how to style all Lucide icons globally in your Preact application using CSS or the Lucide context provider. --- + @@ -34,8 +35,8 @@ const App = () => ( This will apply the `color`, `size` and `strokeWidth` props to all icons that are children of the `LucideProvider`. - ## Style by using CSS + Styling icons is easy to accomplish using CSS. Every icon has a class attribute applied called `lucide`. This class name can be used in the CSS file to target all icons that are being used within the app. @@ -74,9 +75,9 @@ import { Sandwich, Wine, Dessert, -} from "lucide-preact"; -import { h } from "preact"; -import "./icon.css"; +} from 'lucide-preact'; +import { h } from 'preact'; +import './icon.css'; function App() { return ( @@ -99,10 +100,9 @@ export default App; ::: +### Non-scaling strokes -### Absolute stroke width - -For global absolute stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more info. +For global non-scaling stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [non-scaling strokes](../basics/stroke-width.md#non-scaling-strokes) for more info. ::: sandpack {editorHeight=480 editorWidthPercentage=60 dependencies="lucide-preact"} @@ -136,9 +136,9 @@ import { Map, CloudMoon, Sparkles, -} from "lucide-preact"; -import { h } from "preact"; -import "./icon.css"; +} from 'lucide-preact'; +import { h } from 'preact'; +import './icon.css'; function App() { return ( diff --git a/docs/guide/preact/advanced/typescript.md b/docs/guide/preact/advanced/typescript.md index b55c7c720..2d8dd926d 100644 --- a/docs/guide/preact/advanced/typescript.md +++ b/docs/guide/preact/advanced/typescript.md @@ -2,6 +2,7 @@ title: Typescript - Preact description: Learn about the different types exported by the `lucide-preact` package and how to use them in your Preact application. --- + # TypeScript List of exported types from the `lucide-preact` package. @@ -16,12 +17,17 @@ interface LucideProps { size?: number | string; color?: string; strokeWidth?: number; + nonScalingStroke?: boolean; + /** + * @deprecated + */ absoluteStrokeWidth?: boolean; [key: string]: any; // Any other SVG attributes } ``` ### Using `LucideProps` + You can use the `LucideProps` interface to type your custom icon components or when you need to work with icon props. ```tsx @@ -76,6 +82,7 @@ type IconNode = [elementName: string, attrs: Record][]; ``` ### Using `IconNode` + You can use the `IconNode` type when you need to work with the raw SVG structure of an icon. ```tsx @@ -89,7 +96,11 @@ const customIcon: IconNode = [ const MyCustomIcon = () => { return ( - + ); }; diff --git a/docs/guide/preact/basics/stroke-width.md b/docs/guide/preact/basics/stroke-width.md index fe88199b3..b2c9d9e60 100644 --- a/docs/guide/preact/basics/stroke-width.md +++ b/docs/guide/preact/basics/stroke-width.md @@ -1,7 +1,8 @@ --- title: Stroke width - Preact -description: Learn how to adjust the stroke width of icons in your Preact application using the `strokeWidth` prop or adjust the strokeWidth appearance using the `absoluteStrokeWidth` prop. +description: Learn how to adjust the stroke width of icons in your Preact application using the `strokeWidth` prop or adjust the strokeWidth appearance using the `nonScalingStroke` prop. --- + @@ -18,8 +19,8 @@ The `strokeWidth` can be adjusted to create a different look of the icons. ::: sandpack {showTabs=false editorHeight=320 editorWidthPercentage=60 dependencies="lucide-preact"} ```jsx App.js [active] -import { h } from "preact"; -import { FolderLock } from "lucide-preact"; +import { h } from 'preact'; +import { FolderLock } from 'lucide-preact'; function App() { return ( @@ -31,34 +32,35 @@ function App() { export default App; ``` + ::: -## Absolute stroke width +## Non-scaling strokes -When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `absoluteStrokeWidth` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. +When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `nonScalingStroke` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. -This means that when `absoluteStrokeWidth` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. +This means that when `nonScalingStroke` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. Note `2px` is the default stroke width for a Lucide icon, this can be adjusted to all sizes. -![Absolute stroke width comparison](../../../images/absolute-stroke-width-compare.png?raw=true "Absolute stroke width comparison") + -### Adjusting stroke width with `absoluteStrokeWidth` prop +### Adjusting stroke width with `nonScalingStroke` prop -Setting `absoluteStrokeWidth` to `true` will make the stroke width absolute. +Setting `nonScalingStroke` to `true` will make the stroke width non-scaling. ::: sandpack {showTabs=false editorHeight=340 editorWidthPercentage=60 dependencies="lucide-preact"} ```jsx App.js [active] -import { h } from "preact"; -import { RollerCoaster } from "lucide-preact"; +import { h } from 'preact'; +import { RollerCoaster } from 'lucide-preact'; function App() { return (
); @@ -66,4 +68,5 @@ function App() { export default App; ``` + ::: diff --git a/docs/guide/preact/getting-started.md b/docs/guide/preact/getting-started.md index f7343b9fe..71babbd79 100644 --- a/docs/guide/preact/getting-started.md +++ b/docs/guide/preact/getting-started.md @@ -2,6 +2,7 @@ title: Getting started - Preact description: This guide will help you get started with Lucide in your Preact project. --- + @@ -36,8 +37,8 @@ const App = () => ( This will apply the `color`, `size` and `strokeWidth` props to all icons that are children of the `LucideProvider`. - ## Style by using CSS + Styling icons is easy to accomplish using CSS. Every icon has a class attribute applied called `lucide`. This class name can be used in the CSS file to target all icons that are being used within the app. @@ -75,7 +76,7 @@ import IceCream2 from 'lucide-solid/icons/ice-cream-2'; import Sandwich from 'lucide-solid/icons/sandwich'; import Wine from 'lucide-solid/icons/wine'; import Dessert from 'lucide-solid/icons/dessert'; -import "./icon.css"; +import './icon.css'; function App() { return ( @@ -95,11 +96,12 @@ function App() { export default App; ``` + ::: -### Absolute stroke width +### Non-scaling strokes -For global absolute stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more info. +For global non-scaling stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [non-scaling strokes](../basics/stroke-width.md#non-scaling-strokes) for more info. ::: sandpack {template=vite-solid editorHeight=300 editorWidthPercentage=60 dependencies="lucide-solid"} @@ -120,7 +122,6 @@ For global absolute stroke width styling the `vector-effect: non-scaling-stroke` grid-template-rows: 1fr 1fr 1fr; gap: 6px; } - ``` ```tsx App.tsx @@ -133,7 +134,7 @@ import Axe from 'lucide-solid/icons/axe'; import Map from 'lucide-solid/icons/map'; import CloudMoon from 'lucide-solid/icons/cloud-moon'; import Sparkles from 'lucide-solid/icons/sparkles'; -import "./icon.css"; +import './icon.css'; function App() { return ( diff --git a/docs/guide/solid/advanced/typescript.md b/docs/guide/solid/advanced/typescript.md index 1142e3b0f..a5f4f0026 100644 --- a/docs/guide/solid/advanced/typescript.md +++ b/docs/guide/solid/advanced/typescript.md @@ -2,6 +2,7 @@ title: Typescript - Solid description: Learn about the different types exported by the `lucide-solid` package and how to use them in your Solid application. --- + # TypeScript Support List of exported types from the `lucide-solid` package. @@ -16,12 +17,17 @@ interface LucideProps extends SVGAttributes { size?: number | string; color?: string; strokeWidth?: number; + nonScalingStroke?: boolean; + /** + * @deprecated + */ absoluteStrokeWidth?: boolean; [key: string]: any; // Any other SVG attributes } ``` ### Using `LucideProps` + You can use the `LucideProps` interface to type your custom icon components or when you need to work with icon props. ```tsx @@ -76,6 +82,7 @@ type IconNode = [elementName: string, attrs: Record][]; ``` ### Using `IconNode` + You can use the `IconNode` type when you need to work with the raw SVG structure of an icon. ```tsx @@ -89,7 +96,11 @@ const customIcon: IconNode = [ const MyCustomIcon = () => { return ( - + ); }; diff --git a/docs/guide/solid/basics/stroke-width.md b/docs/guide/solid/basics/stroke-width.md index 8e4e84f96..5b7ff8c47 100644 --- a/docs/guide/solid/basics/stroke-width.md +++ b/docs/guide/solid/basics/stroke-width.md @@ -1,7 +1,8 @@ --- title: Stroke width - Solid -description: Learn how to adjust the stroke width of icons in your Solid application using the `strokeWidth` prop or adjust the strokeWidth appearance using the `absoluteStrokeWidth` prop. +description: Learn how to adjust the stroke width of icons in your Solid application using the `strokeWidth` prop or adjust the strokeWidth appearance using the `nonScalingStroke` prop. --- + @@ -30,21 +31,22 @@ function App() { export default App; ``` + ::: -## Absolute stroke width +## Non-scaling strokes -When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `absoluteStrokeWidth` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. +When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `nonScalingStroke` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. -This means that when `absoluteStrokeWidth` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. +This means that when `nonScalingStroke` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. Note `2px` is the default stroke width for a Lucide icon, this can be adjusted to all sizes. -![Absolute stroke width comparison](../../../images/absolute-stroke-width-compare.png?raw=true "Absolute stroke width comparison") + -### Adjusting stroke width with `absoluteStrokeWidth` prop +### Adjusting stroke width with `nonScalingStroke` prop -Setting `absoluteStrokeWidth` to `true` will make the stroke width absolute. +Setting `nonScalingStroke` to `true` will make the stroke width non-scaling. ::: sandpack {template=vite-solid showTabs=false editorHeight=320 editorWidthPercentage=60 dependencies="lucide-solid"} @@ -56,7 +58,7 @@ function App() {
); @@ -64,4 +66,5 @@ function App() { export default App; ``` + ::: diff --git a/docs/guide/solid/getting-started.md b/docs/guide/solid/getting-started.md index b058ad4d5..68edf02f2 100644 --- a/docs/guide/solid/getting-started.md +++ b/docs/guide/solid/getting-started.md @@ -57,19 +57,25 @@ export default App; To customize the appearance of an icon, you can use the following props: -| name | type | default | -| --------------------- | --------- | ------------ | -| `size` | *number* | 24 | -| `color` | *string* | currentColor | -| `strokeWidth` | *number* | 2 | -| `absoluteStrokeWidth` | *boolean* | false | +| name | type | default | +| ------------------ | --------- | ------------ | +| `size` | _number_ | 24 | +| `color` | _string_ | currentColor | +| `strokeWidth` | _number_ | 2 | +| `nonScalingStroke` | _boolean_ | false | Because icons render as SVG elements, all standard SVG attributes can also be applied as props. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation). ```jsx // Usage const App = () => { - return ; + return ( + + ); }; ``` diff --git a/docs/guide/svelte/advanced/combining-icons.md b/docs/guide/svelte/advanced/combining-icons.md index dd9c30df8..8a267a5a9 100644 --- a/docs/guide/svelte/advanced/combining-icons.md +++ b/docs/guide/svelte/advanced/combining-icons.md @@ -2,6 +2,7 @@ title: Combining icons - Svelte description: Learn how to combine multiple icons into a single icon nested SVG elements in your Svelte application. --- + @@ -20,12 +21,12 @@ import User from '@lucide/svelte/icons/user';
- +
diff --git a/docs/guide/svelte/advanced/global-styling.md b/docs/guide/svelte/advanced/global-styling.md index 42f1ea061..d96cc302f 100644 --- a/docs/guide/svelte/advanced/global-styling.md +++ b/docs/guide/svelte/advanced/global-styling.md @@ -2,6 +2,7 @@ title: Global Styling - Svelte description: Learn how to style all Lucide icons globally in your Svelte application using CSS or the Lucide context provider. --- + @@ -89,11 +90,12 @@ import "./icon.css"; ``` + ::: -### Absolute stroke width +### Non-scaling strokes -For global absolute stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more info. +For global non-scaling stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [non-scaling strokes](../basics/stroke-width.md#non-scaling-strokes) for more info. ::: sandpack {template=vite-svelte editorHeight=420 editorWidthPercentage=55} @@ -143,4 +145,5 @@ import "./icon.css"; ``` + ::: diff --git a/docs/guide/svelte/advanced/typescript.md b/docs/guide/svelte/advanced/typescript.md index 08aab6f0f..ce3445fc9 100644 --- a/docs/guide/svelte/advanced/typescript.md +++ b/docs/guide/svelte/advanced/typescript.md @@ -2,6 +2,7 @@ title: Typescript - Svelte description: Learn about the different types exported by the `@lucide/svelte` package and how to use them in your Svelte application. --- + # TypeScript Support List of exported types from the `@lucide/svelte` package. @@ -17,6 +18,10 @@ interface LucideProps extends SVGAttributes { color?: string; size?: number | string; strokeWidth?: number | string; + nonScalingStroke?: boolean; + /** + * @deprecated + */ absoluteStrokeWidth?: boolean; children?: Snippet; [key: string]: any; // Any other SVG attributes @@ -24,9 +29,11 @@ interface LucideProps extends SVGAttributes { ``` ### Using `LucideProps` + You can use the `LucideProps` interface to type props for your custom icon components. ::: code-group + ```svelte [IconWrapper.svelte] @@ -24,21 +25,22 @@ import FolderLock from "@lucide/svelte/icons/folder-lock"; ``` + ::: -## Absolute stroke width +## Non-scaling strokes -When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `absoluteStrokeWidth` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. +When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `nonScalingStroke` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. -This means that when `absoluteStrokeWidth` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. +This means that when `nonScalingStroke` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. Note `2px` is the default stroke width for a Lucide icon, this can be adjusted to all sizes. -![Absolute stroke width comparison](../../../images/absolute-stroke-width-compare.png?raw=true "Absolute stroke width comparison") + -### Adjusting stroke width with `absoluteStrokeWidth` prop +### Adjusting stroke width with `nonScalingStroke` prop -Setting `absoluteStrokeWidth` to `true` will make the stroke width absolute. +Setting `nonScalingStroke` to `true` will make the stroke width non-scaling. ::: sandpack {template=vite-svelte editorHeight=240 editorWidthPercentage=60} @@ -49,7 +51,7 @@ import RollerCoaster from "@lucide/svelte/icons/roller-coaster"; ``` diff --git a/docs/guide/svelte/getting-started.md b/docs/guide/svelte/getting-started.md index c32d41eeb..8a9cf1f24 100644 --- a/docs/guide/svelte/getting-started.md +++ b/docs/guide/svelte/getting-started.md @@ -2,6 +2,7 @@ title: Getting started - Svelte description: This guide will help you get started with Lucide in your Svelte project. --- + @@ -15,22 +16,24 @@ This is useful if you want to create custom icons by combining existing ones. ```vue src/App.vue [active] - ``` ::: @@ -54,7 +57,7 @@ For example, you can add a notification badge to an icon by using the `circle` S ```vue src/App.vue [active] @@ -73,7 +76,6 @@ const hasUnreadMessages = true; - ``` ::: @@ -86,7 +88,7 @@ You can also use the `text` SVG element to add text to your icon. ```vue src/App.vue [active] - ``` ::: diff --git a/docs/guide/vue/advanced/global-styling.md b/docs/guide/vue/advanced/global-styling.md index eb7ce6ed5..25070059f 100644 --- a/docs/guide/vue/advanced/global-styling.md +++ b/docs/guide/vue/advanced/global-styling.md @@ -2,6 +2,7 @@ title: Global Styling - Vue description: Learn how to style all Lucide icons globally in your Vue application using CSS or the Lucide context provider. --- + @@ -74,9 +75,9 @@ import { Sandwich, Wine, Dessert, -} from "@lucide/vue"; +} from '@lucide/vue'; -import "./icon.css"; +import './icon.css'; ``` + ::: -### Absolute stroke width +### Non-scaling strokes -For global absolute stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more info. +For global non-scaling stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [non-scaling strokes](../basics/stroke-width.md#non-scaling-strokes) for more info. ::: sandpack {template=vue editorHeight=300 editorWidthPercentage=55 dependencies="@lucide/vue"} @@ -132,9 +134,9 @@ import { Map, CloudMoon, Sparkles, -} from "@lucide/vue"; +} from '@lucide/vue'; -import "./icon.css"; +import './icon.css'; - ``` + ::: diff --git a/docs/guide/vue/advanced/typescript.md b/docs/guide/vue/advanced/typescript.md index 4114c1247..096cb0ade 100644 --- a/docs/guide/vue/advanced/typescript.md +++ b/docs/guide/vue/advanced/typescript.md @@ -2,6 +2,7 @@ title: Typescript - Vue description: Learn about the different types exported by the `@lucide/vue` package and how to use them in your Vue application. --- + # TypeScript Support List of exported types from the `@lucide/vue` package. @@ -16,15 +17,21 @@ interface LucideProps { size?: number | string; color?: string; strokeWidth?: number; + nonScalingStroke?: boolean; + /** + * @deprecated + */ absoluteStrokeWidth?: boolean; [key: string]: any; // Any other SVG attributes } ``` ### Using `LucideProps` + You can use the `LucideProps` interface to type props for your custom icon components. ::: code-group + ```vue [IconWrapper.vue] ``` + ::: diff --git a/docs/guide/vue/basics/stroke-width.md b/docs/guide/vue/basics/stroke-width.md index c41ac174f..693f9db08 100644 --- a/docs/guide/vue/basics/stroke-width.md +++ b/docs/guide/vue/basics/stroke-width.md @@ -1,7 +1,8 @@ --- title: Stroke width - Vue -description: Learn how to adjust the stroke width of icons in your Vue application using the `strokeWidth` prop or adjust the strokeWidth appearance using the `absoluteStrokeWidth` prop. +description: Learn how to adjust the stroke width of icons in your Vue application using the `strokeWidth` prop or adjust the strokeWidth appearance using the `nonScalingStroke` prop. --- + @@ -19,42 +20,43 @@ The `strokeWidth` can be adjusted to create a different look of the icons. ```vue src/App.vue [active] ``` + ::: -## Absolute stroke width +## Non-scaling strokes -When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `absoluteStrokeWidth` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. +When adjusting the `size` prop the size of the stroke width will be relative to the size of the icon, this is the default SVG behavior. The `nonScalingStroke` prop is introduced to adjust this behavior to make the stroke width constant no matter the size of the icon. -This means that when `absoluteStrokeWidth` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. +This means that when `nonScalingStroke` is enabled and the `size` of the icons is set to `48px` the `strokeWidth` will still be `2px` on the screen. Note `2px` is the default stroke width for a Lucide icon, this can be adjusted to all sizes. -![Absolute stroke width comparison](../../../images/absolute-stroke-width-compare.png?raw=true "Absolute stroke width comparison") + -### Adjusting stroke width with `absoluteStrokeWidth` prop +### Adjusting stroke width with `nonScalingStroke` prop -Setting `absoluteStrokeWidth` to `true` will make the stroke width absolute. +Setting `nonScalingStroke` to `true` will make the stroke width non-scaling. ::: sandpack {template=vue showTabs=false editorHeight=320 editorWidthPercentage=60 dependencies="@lucide/vue"} ```vue src/App.vue [active] - ``` + ::: diff --git a/docs/guide/vue/getting-started.md b/docs/guide/vue/getting-started.md index 277071d51..ce22268b9 100644 --- a/docs/guide/vue/getting-started.md +++ b/docs/guide/vue/getting-started.md @@ -2,6 +2,7 @@ title: Getting started - Vue description: This guide will help you get started with Lucide in your Vue project. --- +
diff --git a/docs/showcase.md b/docs/showcase.md index c8884e6ff..3a7c2ea15 100644 --- a/docs/showcase.md +++ b/docs/showcase.md @@ -5,8 +5,8 @@ outline: 2 outlineTitle: Showcase ---
diff --git a/docs/vercel.json b/docs/vercel.json index 623d457e6..b67281451 100644 --- a/docs/vercel.json +++ b/docs/vercel.json @@ -13,7 +13,7 @@ }, { "source": "/docs/:slug(lucide-?.*)", - "destination": "/guide/packages/:slug", + "destination": "/guide/:slug", "permanent": true }, { @@ -58,48 +58,13 @@ "permanent": true }, { - "source": "/guide/packages/lucide-react", - "destination": "/guide/react", + "source": "/guide/packages/lucide-:package", + "destination": "/guide/:package", "permanent": true }, { - "source": "/guide/packages/lucide-vue-next", - "destination": "/guide/vue", - "permanent": true - }, - { - "source": "/guide/packages/lucide-vue", - "destination": "/guide/vue", - "permanent": true - }, - { - "source": "/guide/packages/lucide-svelte", - "destination": "/guide/svelte", - "permanent": true - }, - { - "source": "/guide/packages/lucide-solid", - "destination": "/guide/solid", - "permanent": true - }, - { - "source": "/guide/packages/lucide-angular", - "destination": "/guide/angular", - "permanent": true - }, - { - "source": "/guide/packages/lucide-preact", - "destination": "/guide/preact", - "permanent": true - }, - { - "source": "/guide/packages/lucide-astro", - "destination": "/guide/astro", - "permanent": true - }, - { - "source": "/guide/packages/lucide-static", - "destination": "/guide/static", + "source": "/guide/packages/:package", + "destination": "/guide/:package", "permanent": true }, { diff --git a/package.json b/package.json index 0c1a28710..5604d3a27 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@vitest/coverage-v8": "4.1.10", "@vitest/ui": "4.1.10", "ajv-cli": "^5.0.0", + "cpy-cli": "^7.0.0", "cspell": "^10.0.1", "dotenv": "^17.4.2", "eslint": "^10.8.0", diff --git a/packages/angular/package.json b/packages/angular/package.json index 05688d51c..e4a6de9eb 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -17,14 +17,15 @@ "scripts": { "ng": "ng", "watch": "ng build --watch --configuration development", - "prebuild": "pnpm clean && pnpm copy:license && pnpm build:icons", + "prebuild": "pnpm clean && pnpm copy:license && pnpm copy:utils && pnpm build:icons", "build": "pnpm prebuild && pnpm build:ng", "copy:license": "cp ../../LICENSE ./LICENSE", + "copy:utils": "cpy ../../packages/shared/src/build/{buildLucideIconNode.ts,defaultAttributes.ts,types.ts} ../../packages/shared/src/utils/mergeClasses.ts ./src/utils/", "clean": "rm -rf dist && rm -rf ./src/icons/*.ts", "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --iconFileExtension=.ts --exportFileName=lucide-angular.ts --useDefaultExports=0", "build:ng": "ng build --configuration production", - "test": "pnpm build:icons && ng test --no-watch", - "test:watch": "ng test", + "test": "pnpm copy:utils && pnpm build:icons && ng test --no-watch", + "test:watch": "pnpm copy:utils && ng test", "lint": "eslint 'src/**/*.{js,jsx,ts,tsx,html,css,scss}' --quiet --fix", "e2e": "ng e2e" }, diff --git a/packages/angular/src/lucide-config.ts b/packages/angular/src/lucide-config.ts index 8a4953127..3944638f1 100644 --- a/packages/angular/src/lucide-config.ts +++ b/packages/angular/src/lucide-config.ts @@ -19,6 +19,11 @@ export interface LucideConfig { * @default 2 */ strokeWidth: number; + /** + * Whether to use absolute stroke width. + * @deprecated Use `nonScalingStroke` instead. + */ + absoluteStrokeWidth: boolean; /** * Whether stroke width should be scaled to appear uniform regardless of icon size. * @default false @@ -31,7 +36,7 @@ export interface LucideConfig { * } * ``` */ - absoluteStrokeWidth: boolean; + nonScalingStroke: boolean; } /** @@ -42,6 +47,7 @@ export const lucideDefaultConfig: LucideConfig = { size: 24, strokeWidth: 2, absoluteStrokeWidth: false, + nonScalingStroke: false, }; /** diff --git a/packages/angular/src/lucide-hydration.spec.ts b/packages/angular/src/lucide-hydration.spec.ts index 8521fa8e0..9b4757c85 100644 --- a/packages/angular/src/lucide-hydration.spec.ts +++ b/packages/angular/src/lucide-hydration.spec.ts @@ -8,7 +8,7 @@ import { LucideBadgeAlert } from './icons/badge-alert'; @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'lucide-static-hydration-root', - template: ``, + template: ``, imports: [LucideBadgeAlert], }) class StaticHydrationRootComponent {} diff --git a/packages/angular/src/lucide-icon-base.spec.ts b/packages/angular/src/lucide-icon-base.spec.ts index f90f91596..f5df57065 100644 --- a/packages/angular/src/lucide-icon-base.spec.ts +++ b/packages/angular/src/lucide-icon-base.spec.ts @@ -47,6 +47,7 @@ describe('LucideIconBase', () => { let size: WritableSignal; let strokeWidth: WritableSignal; let absoluteStrokeWidth: WritableSignal; + let nonScalingStroke: WritableSignal; const getSvgAttribute = (attr: string) => fixture.nativeElement.getAttribute(attr); const expectSvgClasses = (classes: string[], svg: SVGElement = fixture.nativeElement) => { for (const cssClass of classes) { @@ -63,6 +64,7 @@ describe('LucideIconBase', () => { inputBinding('size', size), inputBinding('strokeWidth', strokeWidth), inputBinding('absoluteStrokeWidth', absoluteStrokeWidth), + inputBinding('nonScalingStroke', nonScalingStroke), ], }); } @@ -72,6 +74,7 @@ describe('LucideIconBase', () => { size = signal(undefined); strokeWidth = signal(undefined); absoluteStrokeWidth = signal(undefined); + nonScalingStroke = signal(undefined); fixture = createComponent(); component = fixture.componentInstance; }); @@ -135,6 +138,11 @@ describe('LucideIconBase', () => { expect(getSvgAttribute('width')).toBe('18'); expect(getSvgAttribute('height')).toBe('18'); }); + it('should set viewBox', () => { + size.set('18'); + fixture.detectChanges(); + expect(getSvgAttribute('viewBox')).toBe('0 0 24 24'); + }); }); describe('strokeWidth', () => { @@ -155,22 +163,38 @@ describe('LucideIconBase', () => { }); describe('absoluteStrokeWidth', () => { + it('should adjust stroke width', () => { + strokeWidth.set(2); + size.set(32); + absoluteStrokeWidth.set(true); + fixture.detectChanges(); + expect(getSvgAttribute('stroke-width')).toBe('1.5'); + }); + it('should not set vector-effect on children', () => { + absoluteStrokeWidth.set(true); + for (const child of fixture.nativeElement.children) { + expect(child.getAttribute('vector-effect')).toBeNull(); + } + }); + }); + + describe('nonScalingStroke', () => { it('should not adjust stroke width', () => { strokeWidth.set(2); size.set(12); - absoluteStrokeWidth.set(true); + nonScalingStroke.set(false); fixture.detectChanges(); expect(getSvgAttribute('stroke-width')).toBe('2'); }); it('should not set vector-effect on children', () => { - absoluteStrokeWidth.set(false); + nonScalingStroke.set(false); fixture.detectChanges(); for (const child of getRenderedChildren()) { expect(child.getAttribute('vector-effect')).toBeNull(); } }); it('should set vector-effect on children', () => { - absoluteStrokeWidth.set(true); + nonScalingStroke.set(true); fixture.detectChanges(); for (const child of getRenderedChildren()) { expect(child.getAttribute('vector-effect')).toBe('non-scaling-stroke'); @@ -207,6 +231,7 @@ describe('LucideIconBase', () => { color: 'red', strokeWidth: 1, size: 12, + nonScalingStroke: true, absoluteStrokeWidth: true, }), ], @@ -229,12 +254,12 @@ describe('LucideIconBase', () => { describe('strokeWidth', () => { it('should use stroke width from config', () => { fixture.detectChanges(); - expect(getSvgAttribute('stroke-width')).toBe('1'); + expect(getSvgAttribute('stroke-width')).toBe('2'); }); it('should use override stroke width from config', () => { strokeWidth.set(3); fixture.detectChanges(); - expect(getSvgAttribute('stroke-width')).toBe('3'); + expect(getSvgAttribute('stroke-width')).toBe('6'); }); }); describe('size', () => { @@ -253,14 +278,23 @@ describe('LucideIconBase', () => { describe('absoluteStrokeWidth', () => { it('should use absoluteStrokeWidth from config', () => { fixture.detectChanges(); - for (const child of getRenderedChildren()) { - expect(child.getAttribute('vector-effect')).toBe('non-scaling-stroke'); - } + expect(getSvgAttribute('stroke-width')).toBe('2'); }); it('should override absoluteStrokeWidth', () => { absoluteStrokeWidth.set(false); fixture.detectChanges(); - for (const child of getRenderedChildren()) { + expect(getSvgAttribute('stroke-width')).toBe('1'); + }); + }); + describe('nonScalingStroke', () => { + it('should use nonScalingStroke from config', () => { + for (const child of fixture.nativeElement.children) { + expect(child.getAttribute('vector-effect')).toBe('non-scaling-stroke'); + } + }); + it('should override nonScalingStroke', () => { + nonScalingStroke.set(false); + for (const child of fixture.nativeElement.children) { expect(child.getAttribute('vector-effect')).toBeNull(); } }); diff --git a/packages/angular/src/lucide-icon-base.ts b/packages/angular/src/lucide-icon-base.ts index 5708baab6..624307076 100644 --- a/packages/angular/src/lucide-icon-base.ts +++ b/packages/angular/src/lucide-icon-base.ts @@ -1,8 +1,9 @@ import { Component, computed, inject, input, Signal } from '@angular/core'; import { LUCIDE_CONFIG } from './lucide-config'; -import { LucideIconData, Nullable } from './types'; +import { LucideIconData, LucideIconNode, Nullable } from './types'; import defaultAttributes from './default-attributes'; import { lucideIconTemplate } from './lucide-icon-template'; +import buildLucideIconNode from './utils/buildLucideIconNode'; /** * @internal @@ -12,38 +13,17 @@ import { lucideIconTemplate } from './lucide-icon-template'; template: lucideIconTemplate, host: { ...defaultAttributes, - class: 'lucide', - '[class]': 'iconClasses()', - '[attr.width]': 'size()', - '[attr.height]': 'size()', - '[attr.stroke]': 'color()', - '[attr.stroke-width]': 'strokeWidth()', - '[attr.aria-hidden]': '!title()', + '[attr.class]': 'computedClass()', + '[attr.width]': 'computedWidth()', + '[attr.height]': 'computedHeight()', + '[attr.viewBox]': 'computedViewbox()', + '[attr.stroke]': 'computedStroke()', + '[attr.stroke-width]': 'computedStrokeWidth()', + '[attr.aria-hidden]': 'computedAriaHidden()', }, }) export abstract class LucideIconBase { protected abstract readonly icon: Signal>; - protected readonly iconNodes = computed(() => { - const node = this.icon()?.node ?? []; - if (!this.absoluteStrokeWidth()) { - return node; - } - return node.map(([name, attrs]) => [ - name, - { - 'vector-effect': 'non-scaling-stroke', - ...attrs, - }, - ]); - }); - protected readonly iconClasses = computed(() => { - const icon = this.icon(); - if (!icon) { - return ''; - } - const { name, aliases = [] } = icon; - return [name, ...aliases].map((item) => `lucide-${item}`).join(' '); - }); protected readonly iconConfig = inject(LUCIDE_CONFIG); /** * An optional accessible label for the icon. @@ -58,6 +38,10 @@ export abstract class LucideIconBase { * - If your icon is functional (e.g. used in place of a label), feel free to use this property. */ readonly title = input>(); + /** + * Optional CSS classes for the icon. + */ + readonly class = input>(); /** * Width and height. * @default 24 @@ -65,6 +49,16 @@ export abstract class LucideIconBase { readonly size = input(this.iconConfig.size, { transform: (value: Nullable) => value ?? this.iconConfig.size, }); + /** + * Icon width. + * @default 24 + */ + readonly width = input(null); + /** + * Icon height. + * @default 24 + */ + readonly height = input(null); /** * Stroke color. * @default currentColor @@ -80,9 +74,95 @@ export abstract class LucideIconBase { transform: (value: Nullable) => value ?? this.iconConfig.strokeWidth, }); /** - * If set to true, it adds [`vector-effect="non-scaling-stroke"`](https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/vector-effect) to child elements. + * Whether to use absolute stroke width. */ readonly absoluteStrokeWidth = input(this.iconConfig.absoluteStrokeWidth, { transform: (value: Nullable) => value ?? this.iconConfig.absoluteStrokeWidth, }); + /** + * If set to true, it adds [`vector-effect="non-scaling-stroke"`](https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/vector-effect) to child elements. + */ + readonly nonScalingStroke = input(this.iconConfig.nonScalingStroke, { + transform: (value: Nullable) => value ?? this.iconConfig.nonScalingStroke, + }); + + /** + * @internal + */ + protected readonly computedIcon = computed(() => { + const icon = this.icon(); + return icon + ? buildLucideIconNode(icon, { + width: this.width() ?? this.size(), + height: this.height() ?? this.size(), + color: this.color(), + strokeWidth: this.strokeWidth(), + absoluteStrokeWidth: this.absoluteStrokeWidth(), + nonScalingStroke: this.nonScalingStroke(), + className: this.class() ?? undefined, + hasA11yProp: this.title() != null, + }) + : null; + }); + + /** + * @internal + */ + protected readonly computedAttributes = computed( + () => this.computedIcon()?.[1], + ); + + /** + * @internal + */ + protected readonly computedIconNode = computed(() => this.computedIcon()?.[2] ?? []); + + /** + * @internal + */ + protected readonly computedWidth = computed( + () => this.computedAttributes()?.['width'] ?? this.iconConfig.size, + ); + + /** + * @internal + */ + protected readonly computedHeight = computed( + () => this.computedAttributes()?.['height'] ?? this.iconConfig.size, + ); + + /** + * @internal + */ + protected readonly computedStroke = computed( + () => this.computedAttributes()?.['stroke'] ?? this.iconConfig.color, + ); + + /** + * @internal + */ + protected readonly computedStrokeWidth = computed( + () => this.computedAttributes()?.['stroke-width'] ?? this.iconConfig.strokeWidth, + ); + + /** + * @internal + */ + protected readonly computedAriaHidden = computed( + () => this.computedAttributes()?.['aria-hidden'] === 'true', + ); + + /** + * @internal + */ + protected readonly computedViewbox = computed( + () => this.computedAttributes()?.['viewBox'] ?? '0 0 24 24', + ); + + /** + * @internal + */ + protected readonly computedClass = computed( + () => this.computedAttributes()?.['class'] ?? 'lucide', + ); } diff --git a/packages/angular/src/lucide-icon-template.ts b/packages/angular/src/lucide-icon-template.ts index ec95dc55f..5a6cde461 100644 --- a/packages/angular/src/lucide-icon-template.ts +++ b/packages/angular/src/lucide-icon-template.ts @@ -6,7 +6,7 @@ export const lucideIconTemplate = `@if (title(); as titleValue) { {{ titleValue }} } -@for (child of iconNodes(); track child[1]['key'] ?? $index) { +@for (child of computedIconNode(); track child[1]['key'] ?? $index) { @let attrs = child[1]; @switch (child[0]) { @case ('path') { diff --git a/packages/angular/src/types.ts b/packages/angular/src/types.ts index bc75de19e..c234ab405 100644 --- a/packages/angular/src/types.ts +++ b/packages/angular/src/types.ts @@ -1,18 +1,16 @@ import { Signal, Type } from '@angular/core'; +import { + LucideIconNode as SharedLucideIconNode, + LucideIconData as SharedLucideIconData, +} from './utils/types'; -type HtmlAttributes = { [key: string]: string | number }; -export type LucideIconNode = readonly [string, HtmlAttributes]; +export type LucideIconNode = SharedLucideIconNode; export type LucideIcons = { [key: string]: LucideIconData }; /** * A Lucide icon object that fully describes an icon to be displayed. */ -export type LucideIconData = { - name: string; - size?: number; - node: LucideIconNode[]; - aliases?: string[]; -}; +export type LucideIconData = SharedLucideIconData & { name: string }; /** * Input signal map of Lucide icon components. @@ -22,7 +20,11 @@ interface LucideIconProps { size: Signal>; color: Signal>; strokeWidth: Signal>; + /** + * @deprecated Use `nonScalingStroke` instead. + */ absoluteStrokeWidth: Signal>; + nonScalingStroke: Signal>; } /** diff --git a/packages/astro/package.json b/packages/astro/package.json index f55794442..24bed5562 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -43,7 +43,7 @@ "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts --pretty=false", "clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts", "copy:license": "cp ../../LICENSE ./LICENSE", - "copy:utils": "mkdir -p ./src/utils && for f in hasA11yProp toKebabCase mergeClasses; do cp -f ../../packages/shared/src/utils/$f.ts ./src/utils/; done", + "copy:utils": "cpy ../../packages/shared/src/build/{buildLucideIconNode.ts,defaultAttributes.ts,types.ts} ../../packages/shared/src/utils/{hasA11yProp.ts,toKebabCase.ts,mergeClasses.ts} ./src/utils/", "test": "pnpm copy:utils && pnpm build:icons && vitest run", "test:watch": "pnpm build:icons && vitest run --watch" }, diff --git a/packages/astro/scripts/exportTemplate.mts b/packages/astro/scripts/exportTemplate.mts index c8a41ed3a..1c43db3e4 100644 --- a/packages/astro/scripts/exportTemplate.mts +++ b/packages/astro/scripts/exportTemplate.mts @@ -1,28 +1,27 @@ import base64SVG from '@lucide/build-icons/utils/base64SVG'; import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate'; -export default defineExportTemplate(async ({ - componentName, - iconName, - children, - getSvg, - deprecated, - deprecationReason, -}) => { - const svgContents = await getSvg(); - const svgBase64 = base64SVG(svgContents); +export default defineExportTemplate( + async ({ componentName, iconName, iconData, getSvg, deprecated, deprecationReason }) => { + const svgContents = await getSvg(); + const svgBase64 = base64SVG(svgContents); - // Astro doesn't need keyed children in loops - const keylessChildren = children.map((c) => { - const [element, { key, ...otherAttrs }] = c; - return [element, otherAttrs]; - }); + // Astro doesn't need keyed children in loops + const keylessIconData = { + ...iconData, + node: iconData.node.map((child) => { + const [element, { key, ...otherAttrs }] = child; + return [element, otherAttrs]; + }), + }; - // TODO: build-icons' `pretty` is set to false as the prettier - // formatter uses babel which I'm not sure it supports typescript - return ` + // TODO: build-icons' `pretty` is set to false as the prettier + // formatter uses babel which I'm not sure it supports typescript + return ` import createLucideIcon from '../createLucideIcon'; -import type { AstroComponent } from '../types' +import type { AstroComponent, LucideIconData } from '../types' + +const iconData: LucideIconData = ${JSON.stringify(keylessIconData)}; /** * @component @name ${componentName} @@ -35,8 +34,9 @@ import type { AstroComponent } from '../types' * @returns {any} Astro Component * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ -const ${componentName} = createLucideIcon('${iconName}', ${JSON.stringify(keylessChildren)}) as AstroComponent; +const ${componentName} = createLucideIcon(iconData) as AstroComponent; export default ${componentName}; `; -}); + }, +); diff --git a/packages/astro/src/Icon.astro b/packages/astro/src/Icon.astro index eb504dbad..7d54bedfa 100644 --- a/packages/astro/src/Icon.astro +++ b/packages/astro/src/Icon.astro @@ -1,32 +1,44 @@ --- -import defaultAttributes from './defaultAttributes'; +import buildLucideIconNode from './utils/buildLucideIconNode'; import type { IconProps as Props } from './types'; import { hasA11yProp } from './utils/hasA11yProp'; - const { color = 'currentColor', size = 24, + width, + height, 'stroke-width': strokeWidth = 2, absoluteStrokeWidth = false, - iconNode = [], + nonScalingStroke = false, + iconNode, + icon = { + node: iconNode, + aliases: [], + size: 24, + }, class: className, ...rest } = Astro.props; + +const [, builtIconAttributes, builtIconNode = []] = buildLucideIconNode(icon, { + color, + width: width ?? size, + height: height ?? size, + strokeWidth, + absoluteStrokeWidth, + nonScalingStroke, + className, + hasA11yProp: hasA11yProp(rest), +}); + +const iconAttributes = { + ...builtIconAttributes, + ...rest, +}; --- - - {iconNode.map(([Tag, attrs]) => )} + + {builtIconNode.map(([Tag, attrs]) => )} diff --git a/packages/astro/src/createLucideIcon.ts b/packages/astro/src/createLucideIcon.ts index 36c1c99e7..7d5b2a594 100644 --- a/packages/astro/src/createLucideIcon.ts +++ b/packages/astro/src/createLucideIcon.ts @@ -1,11 +1,43 @@ import type { AstroComponentFactory } from 'astro/runtime/server/render/astro/factory.js'; -import type { IconNode } from './types'; +import type { LucideIconData, LucideIconNode } from './types'; import { render, renderSlot, createComponent, renderComponent } from 'astro/compiler-runtime'; import Icon from './Icon.astro'; -import { mergeClasses } from './utils/mergeClasses'; -import { toKebabCase } from './utils/toKebabCase'; -export default (iconName: string, iconNode: IconNode): AstroComponentFactory => { +/** + * Creates a Lucide icon component from icon data. + * + * @param icon Icon data object. + * @returns Lucide icon component. + */ +function createLucideIcon(icon: LucideIconData): AstroComponentFactory; + +/** + * Creates a Lucide icon component from the legacy icon arguments. + * + * @param iconName Icon name. + * @param iconNode Icon node. + * @param aliases Optional icon aliases. + * @returns Lucide icon component. + */ +function createLucideIcon( + iconName: string, + iconNode: LucideIconNode[], + aliases?: string[], +): AstroComponentFactory; + +function createLucideIcon( + iconOrIconName: string | LucideIconData, + iconNode: LucideIconNode[] = [], + aliases: string[] = [], +): AstroComponentFactory { + const icon = + typeof iconOrIconName === 'string' + ? { + name: iconOrIconName, + node: iconNode, + aliases, + } + : iconOrIconName; const Component = createComponent( ($$result, $$props: Record, $$slots) => { const { class: className, ...restProps } = $$props; @@ -14,11 +46,8 @@ export default (iconName: string, iconNode: IconNode): AstroComponentFactory => 'Icon', Icon, { - class: mergeClasses( - Boolean(iconName) && `lucide-${toKebabCase(iconName)}`, - Boolean(className) && className, - ), - iconNode, + class: className, + icon, ...restProps, }, { default: () => render`${renderSlot($$result, $$slots['default'])}` }, @@ -28,4 +57,6 @@ export default (iconName: string, iconNode: IconNode): AstroComponentFactory => 'none', ); return Component; -}; +} + +export default createLucideIcon; diff --git a/packages/astro/src/defaultAttributes.ts b/packages/astro/src/defaultAttributes.ts deleted file mode 100644 index 5b1fddd06..000000000 --- a/packages/astro/src/defaultAttributes.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { SVGAttributes } from './types'; - -const defaultAttributes: SVGAttributes = { - xmlns: 'http://www.w3.org/2000/svg', - width: 24, - height: 24, - viewBox: '0 0 24 24', - fill: 'none', - stroke: 'currentColor', - 'stroke-width': 2, - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round', -}; - -export default defaultAttributes; diff --git a/packages/astro/src/lucide-astro.ts b/packages/astro/src/lucide-astro.ts index adc0c1003..19d041177 100644 --- a/packages/astro/src/lucide-astro.ts +++ b/packages/astro/src/lucide-astro.ts @@ -3,6 +3,6 @@ export * as icons from './icons/index'; export * from './aliases'; export * from './types'; -export { default as defaultAttributes } from './defaultAttributes'; +export { default as defaultAttributes } from './utils/defaultAttributes'; export { default as createLucideIcon } from './createLucideIcon'; export { default as Icon } from './Icon.astro'; diff --git a/packages/astro/src/types.ts b/packages/astro/src/types.ts index 451e3d181..aff54253b 100644 --- a/packages/astro/src/types.ts +++ b/packages/astro/src/types.ts @@ -1,23 +1,47 @@ import type { HTMLAttributes } from 'astro/types'; +import type { + LucideIconData as SharedLucideIconData, + LucideIconNode as SharedLucideIconNode, +} from './utils/types'; // Type that the Astro language server needs to infer component props in Astro files -export type AstroComponent = (_props: IconProps) => unknown; +export type AstroComponent = (_props: LucideProps) => unknown; -export interface IconProps extends SVGAttributes { +export type LucideProps = SVGAttributes & { color?: string; size?: number | string; 'stroke-width'?: number | string; + /** + * @deprecated Use `nonScalingStroke` instead. + */ absoluteStrokeWidth?: boolean; + nonScalingStroke?: boolean; class?: string; - iconNode?: IconNode; title?: string; -} +}; + +export type IconProps = LucideProps & + ( + | { + icon: LucideIconData; + iconNode?: never; + } + | { + icon?: never; + iconNode: LucideIconNode[]; + } + ); export type SVGAttributes = HTMLAttributes<'svg'>; -export type IconNode = IconNodeChild[]; +export type LucideIconNode = SharedLucideIconNode; -type IconNodeChild = [elementName: SVGElements, attrs: SVGAttributes]; +export type LucideIconData = SharedLucideIconData; + +/** + * @deprecated Use LucideIconNode instead. + */ +export type IconNode = LucideIconNode[]; // All possible svg elements according to the Astro definitions type SVGElements = diff --git a/packages/astro/tests/__snapshots__/Icon.spec.ts.snap b/packages/astro/tests/__snapshots__/Icon.spec.ts.snap index a550ccb86..f3bc1ec4d 100644 --- a/packages/astro/tests/__snapshots__/Icon.spec.ts.snap +++ b/packages/astro/tests/__snapshots__/Icon.spec.ts.snap @@ -10,8 +10,8 @@ exports[`Using Icon Component > should render icon and match snapshot 1`] = ` stroke-width="1" stroke-linecap="round" stroke-linejoin="round" - aria-hidden="true" class="lucide" + aria-hidden="true" > diff --git a/packages/astro/tests/__snapshots__/createLucideIcon.spec.ts.snap b/packages/astro/tests/__snapshots__/createLucideIcon.spec.ts.snap index 13a285420..e53acc2bb 100644 --- a/packages/astro/tests/__snapshots__/createLucideIcon.spec.ts.snap +++ b/packages/astro/tests/__snapshots__/createLucideIcon.spec.ts.snap @@ -10,8 +10,8 @@ exports[`Using createLucideIcon > should create a component from an iconNode 1`] stroke-width="2" stroke-linecap="round" stroke-linejoin="round" - aria-hidden="true" class="lucide lucide-air-vent" + aria-hidden="true" > diff --git a/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap b/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap index 35f95548d..34154c0eb 100644 --- a/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap +++ b/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap @@ -10,9 +10,9 @@ exports[`Using lucide icon components > should add a non-default attribute to th stroke-width="2" stroke-linecap="round" stroke-linejoin="round" + class="lucide lucide-face-slightly-smiling lucide-smile" aria-hidden="true" style="position: absolute" - class="lucide lucide-face-slightly-smiling" > @@ -38,8 +38,8 @@ exports[`Using lucide icon components > should adjust the size, stroke color and stroke-width="4" stroke-linecap="round" stroke-linejoin="round" + class="lucide lucide-grid-3x3 lucide-grid lucide-grid-3-x-3" aria-hidden="true" - class="lucide lucide-grid-3x3" > should apply all classes to the element stroke-width="2" stroke-linecap="round" stroke-linejoin="round" + class="lucide lucide-droplet lucide-drop my-icon" aria-hidden="true" - class="lucide lucide-droplet my-icon" > `; -exports[`Using lucide icon components > should not scale the strokeWidth when absoluteStrokeWidth is set 1`] = ` +exports[`Using lucide icon components > should apply vector-effect when nonScalingStroke is set 1`] = ` `; @@ -118,8 +127,8 @@ exports[`Using lucide icon components > should pass children to the icon slot 1` stroke-width="2" stroke-linecap="round" stroke-linejoin="round" + class="lucide lucide-face-slightly-smiling lucide-smile" aria-hidden="true" - class="lucide lucide-face-slightly-smiling" > @@ -148,8 +157,8 @@ exports[`Using lucide icon components > should render a component 1`] = ` stroke-width="2" stroke-linecap="round" stroke-linejoin="round" + class="lucide lucide-grid-3x3 lucide-grid lucide-grid-3-x-3" aria-hidden="true" - class="lucide lucide-grid-3x3" > should render the icon with default attr stroke-width="2" stroke-linecap="round" stroke-linejoin="round" + class="lucide lucide-grid-3x3 lucide-grid lucide-grid-3-x-3" + aria-hidden="true" +> + + + + + + + + + + + +`; + +exports[`Using lucide icon components > should scale the strokeWidth when absoluteStrokeWidth is set 1`] = ` +
`; -exports[`Using lucide icon components > should not scale the strokeWidth when absoluteStrokeWidth is set 1`] = ` +exports[`Using lucide icon components > should apply vector-effect when nonScalingStroke is set 1`] = `
should render an icon slot 1`] = `
`; + +exports[`Using lucide icon components > should scale the strokeWidth when absoluteStrokeWidth is set 1`] = ` + +`; diff --git a/packages/svelte/tests/lucide-svelte.spec.ts b/packages/svelte/tests/lucide-svelte.spec.ts index da19e096b..4713a05bf 100644 --- a/packages/svelte/tests/lucide-svelte.spec.ts +++ b/packages/svelte/tests/lucide-svelte.spec.ts @@ -66,7 +66,7 @@ describe('Using lucide icon components', () => { expect(PenIconRenderedHTML).toBe(Edit2Container.innerHTML); }); - it('should not scale the strokeWidth when absoluteStrokeWidth is set', () => { + it('should scale the strokeWidth when absoluteStrokeWidth is set', () => { const { container } = render(Smile, { color: 'red', size: 48, @@ -83,6 +83,24 @@ describe('Using lucide icon components', () => { expect(container.innerHTML).toMatchSnapshot(); }); + it('should apply vector-effect when nonScalingStroke is set', () => { + const { container } = render(Smile, { + color: 'red', + size: 48, + nonScalingStroke: true, + }); + + const IconComponent = container.firstElementChild; + + expect(IconComponent).toHaveAttribute('width', '48'); + expect(IconComponent).toHaveAttribute('height', '48'); + expect(IconComponent).toHaveAttribute('stroke', 'red'); + expect(IconComponent).toHaveAttribute('stroke-width', '2'); + expect(IconComponent?.firstElementChild).toHaveAttribute('vector-effect', 'non-scaling-stroke'); + + expect(container.innerHTML).toMatchSnapshot(); + }); + it('should use context values from the global set properties', () => { const { container } = render(ContextWrapper); diff --git a/packages/svelte/tests/setupVitest.ts b/packages/svelte/tests/setupVitest.ts index 03a0244af..01bf442b9 100644 --- a/packages/svelte/tests/setupVitest.ts +++ b/packages/svelte/tests/setupVitest.ts @@ -1,5 +1,6 @@ import { expect } from 'vitest'; -import '@testing-library/jest-dom/vitest'; +import * as matchers from '@testing-library/jest-dom/matchers'; import htmlSerializer from 'jest-serializer-html'; +expect.extend(matchers); expect.addSnapshotSerializer(htmlSerializer); diff --git a/packages/svelte/tsconfig.json b/packages/svelte/tsconfig.json index 3ef7dda35..58280e442 100644 --- a/packages/svelte/tsconfig.json +++ b/packages/svelte/tsconfig.json @@ -6,6 +6,11 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "resolveJsonModule": true, + "baseUrl": ".", + "paths": { + "@lucide/shared": ["../shared/src/index.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"], + }, "allowJs": true, "checkJs": true, "isolatedModules": true, diff --git a/packages/vue/rollup.config.mjs b/packages/vue/rollup.config.mjs index 94bba42f8..b69ab424a 100644 --- a/packages/vue/rollup.config.mjs +++ b/packages/vue/rollup.config.mjs @@ -2,6 +2,11 @@ import plugins from '@lucide/rollup-plugins'; import pkg from './package.json' with { type: 'json' }; import dts from 'rollup-plugin-dts'; +const dtsOptions = { + includeExternal: ['@lucide/shared/types'], + tsconfig: './tsconfig.json', +}; + const packageName = '@lucide/vue'; const outputFileName = 'lucide-vue'; const outputDir = 'dist'; @@ -58,13 +63,7 @@ export default [ format: 'es', }, ], - plugins: [ - dts({ - compilerOptions: { - preserveSymlinks: false, - }, - }), - ], + plugins: [dts(dtsOptions)], }, { input: `src/${outputFileName}.suffixed.ts`, @@ -74,13 +73,7 @@ export default [ format: 'es', }, ], - plugins: [ - dts({ - compilerOptions: { - preserveSymlinks: false, - }, - }), - ], + plugins: [dts(dtsOptions)], }, { input: `src/${outputFileName}.prefixed.ts`, @@ -90,13 +83,7 @@ export default [ format: 'es', }, ], - plugins: [ - dts({ - compilerOptions: { - preserveSymlinks: false, - }, - }), - ], + plugins: [dts(dtsOptions)], }, ...configs, ]; diff --git a/packages/vue/scripts/exportTemplate.mts b/packages/vue/scripts/exportTemplate.mts index d42df2a61..6f85690b8 100644 --- a/packages/vue/scripts/exportTemplate.mts +++ b/packages/vue/scripts/exportTemplate.mts @@ -1,22 +1,16 @@ import base64SVG from '@lucide/build-icons/utils/base64SVG'; import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate'; -export default defineExportTemplate(async({ - componentName, - iconName, - children, - getSvg, - deprecated, - deprecationReason, -}) => { - const svgContents = await getSvg(); - const svgBase64 = base64SVG(svgContents); +export default defineExportTemplate( + async ({ componentName, iconName, iconData, getSvg, deprecated, deprecationReason }) => { + const svgContents = await getSvg(); + const svgBase64 = base64SVG(svgContents); - return ` + return ` import createLucideIcon from '../createLucideIcon'; -import { IconNode } from '../types'; +import type { LucideIconData } from '../types'; -export const __iconNode: IconNode = ${JSON.stringify(children)} +export const __iconData: LucideIconData = ${JSON.stringify(iconData)} /** * @component @name ${componentName} @@ -29,8 +23,9 @@ export const __iconNode: IconNode = ${JSON.stringify(children)} * @returns {FunctionalComponent} Vue component * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ -const ${componentName} = createLucideIcon('${iconName}', __iconNode); +const ${componentName} = createLucideIcon(__iconData); export default ${componentName}; `; -}); + }, +); diff --git a/packages/vue/src/Icon.ts b/packages/vue/src/Icon.ts index 8d4254460..f8b6d2aa8 100644 --- a/packages/vue/src/Icon.ts +++ b/packages/vue/src/Icon.ts @@ -1,24 +1,48 @@ -import { computed, type FunctionalComponent, h } from 'vue'; -import { isEmptyString, mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared'; -import defaultAttributes from './defaultAttributes'; -import { IconNode, LucideProps } from './types'; +import { type FunctionalComponent, h } from 'vue'; +import { buildLucideIconNode, hasA11yProp, isEmptyString, toKebabCase } from '@lucide/shared'; +import { LucideIconNode, LucideIconData, LucideProps } from './types'; import { useLucideProps } from './context'; -type IconProps = { name: string } & ( - | { iconNode: IconNode; 'icon-node'?: never } - | { 'icon-node': IconNode; iconNode?: never } -); +type IconProps = + | { + icon: LucideIconData; + iconNode?: never; + 'icon-node'?: never; + name?: never; + } + | { + icon?: never; + iconNode: LucideIconNode[]; + 'icon-node'?: never; + name: string; + } + | { + icon?: never; + iconNode?: never; + 'icon-node': LucideIconNode[]; + name: string; + }; const Icon: FunctionalComponent = ( { name, iconNode, 'icon-node': iconNodeKebabCase, + icon = { + name: toKebabCase(name), + node: iconNode ?? iconNodeKebabCase, + size: 24, + aliases: [], + }, absoluteStrokeWidth, 'absolute-stroke-width': absoluteStrokeWidthKebabCase, + nonScalingStroke, + 'non-scaling-stroke': nonScalingStrokeKebabCase, strokeWidth, 'stroke-width': strokeWidthKebabCase, size, + width = size, + height = size, color, ...props }, @@ -29,54 +53,44 @@ const Icon: FunctionalComponent = ( color: contextColor, strokeWidth: contextStrokeWidth = 2, absoluteStrokeWidth: contextAbsoluteStrokeWidth = false, + nonScalingStroke: contextNonScalingStroke = false, class: contextClass = '', } = useLucideProps(); - const calculatedStrokeWidth = computed(() => { - const isAbsoluteStrokeWidth = - isEmptyString(absoluteStrokeWidth) || - isEmptyString(absoluteStrokeWidthKebabCase) || - absoluteStrokeWidth === true || - absoluteStrokeWidthKebabCase === true || - contextAbsoluteStrokeWidth === true; + const isAbsoluteStrokeWidth = + isEmptyString(absoluteStrokeWidth) || + isEmptyString(absoluteStrokeWidthKebabCase) || + absoluteStrokeWidth === true || + absoluteStrokeWidthKebabCase === true || + contextAbsoluteStrokeWidth === true; - const strokeWidthValue = - strokeWidth || - strokeWidthKebabCase || - contextStrokeWidth || - defaultAttributes['stroke-width']; + const isNonScalingStroke = + isEmptyString(nonScalingStroke) || + isEmptyString(nonScalingStrokeKebabCase) || + nonScalingStroke === true || + nonScalingStrokeKebabCase === true || + contextNonScalingStroke === true; - if (isAbsoluteStrokeWidth) { - return ( - (Number(strokeWidthValue) * 24) / Number(size ?? contextSize ?? defaultAttributes.width) - ); - } + delete props.class; - return strokeWidthValue; + const defaultSlot = slots.default?.(); + + const [, svgAttributes, builtIconNode = []] = buildLucideIconNode(icon, { + color: color ?? contextColor, + width: width ?? size ?? contextSize, + height: height ?? size ?? contextSize, + strokeWidth: strokeWidth ?? strokeWidthKebabCase ?? contextStrokeWidth, + absoluteStrokeWidth: isAbsoluteStrokeWidth, + nonScalingStroke: isNonScalingStroke, + className: contextClass, + hasA11yProp: (defaultSlot != null && defaultSlot.length > 0) || hasA11yProp(props), + attributes: props, }); - return h( - 'svg', - { - ...defaultAttributes, - ...props, - width: size ?? contextSize ?? defaultAttributes.width, - height: size ?? contextSize ?? defaultAttributes.height, - stroke: color ?? contextColor ?? defaultAttributes.stroke, - 'stroke-width': calculatedStrokeWidth.value, - class: mergeClasses( - 'lucide', - contextClass, - ...(name - ? [`lucide-${toKebabCase(toPascalCase(name))}-icon`, `lucide-${toKebabCase(name)}`] - : ['lucide-icon']), - ), - }, - [ - ...(iconNode ?? iconNodeKebabCase ?? []).map((child) => h(...child)), - ...(slots.default ? [slots.default()] : []), - ], - ); + return h('svg', svgAttributes, [ + ...builtIconNode.map((child) => h(...child)), + ...(defaultSlot ?? []), + ]); }; export default Icon; diff --git a/packages/vue/src/context.ts b/packages/vue/src/context.ts index 7af325ec7..0435ed55c 100644 --- a/packages/vue/src/context.ts +++ b/packages/vue/src/context.ts @@ -6,7 +6,11 @@ interface LucideIconsContext { size?: number; color?: string; strokeWidth?: number; + /** + * @deprecated Use `nonScalingStroke` instead. + */ absoluteStrokeWidth?: boolean; + nonScalingStroke?: boolean; class?: string; } diff --git a/packages/vue/src/createLucideIcon.ts b/packages/vue/src/createLucideIcon.ts index 85919b106..5981b8153 100644 --- a/packages/vue/src/createLucideIcon.ts +++ b/packages/vue/src/createLucideIcon.ts @@ -1,25 +1,44 @@ import { h } from 'vue'; -import { IconNode, LucideIcon } from './types'; +import { LucideIcon, LucideIconData, LucideIconNode } from './types'; import Icon from './Icon'; /** - * Create a Lucide icon component - * @param {string} iconName - * @param {array} iconNode - * @returns {FunctionalComponent} LucideIcon + * Creates a Lucide icon component from icon data. + * + * @param icon Icon data object. + * @returns Lucide icon component. */ -const createLucideIcon = - (iconName: string, iconNode: IconNode): LucideIcon => - (props, { slots, attrs }) => +function createLucideIcon(icon: LucideIconData): LucideIcon; + +/** + * Creates a Lucide icon component from the legacy icon arguments. + * + * @param iconName Icon name. + * @param iconNode Icon node. + * @returns Lucide icon component. + */ +function createLucideIcon(iconName: string, iconNode: LucideIconNode[]): LucideIcon; + +function createLucideIcon( + iconDataOrName: LucideIconData | string, + iconNode: LucideIconNode[] = [], +): LucideIcon { + const icon: LucideIconData = + typeof iconDataOrName === 'string' + ? { + name: iconDataOrName, + node: iconNode, + } + : iconDataOrName; + return (props, { slots }) => h( Icon, { - ...attrs, ...props, - iconNode, - name: iconName, + icon, }, slots.default ? { default: slots.default } : undefined, ); +} export default createLucideIcon; diff --git a/packages/vue/src/defaultAttributes.ts b/packages/vue/src/defaultAttributes.ts index 8ae7d46ea..cc4036fbd 100644 --- a/packages/vue/src/defaultAttributes.ts +++ b/packages/vue/src/defaultAttributes.ts @@ -1,11 +1 @@ -export default { - xmlns: 'http://www.w3.org/2000/svg', - width: 24, - height: 24, - viewBox: '0 0 24 24', - fill: 'none', - stroke: 'currentColor', - 'stroke-width': 2, - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round', -}; +export { defaultAttributes as default } from '@lucide/shared'; diff --git a/packages/vue/src/types.ts b/packages/vue/src/types.ts index a8b865db6..f292be26a 100644 --- a/packages/vue/src/types.ts +++ b/packages/vue/src/types.ts @@ -1,11 +1,31 @@ import type { FunctionalComponent, SVGAttributes } from 'vue'; +import type { + LucideIconData as SharedLucideIconData, + LucideIconNode as SharedLucideIconNode, +} from '@lucide/shared/types'; export interface LucideProps extends Partial { size?: 24 | number; strokeWidth?: number | string; + /** + * @deprecated Use `nonScalingStroke` instead. + */ absoluteStrokeWidth?: boolean; + /** + * @deprecated Use `nonScalingStroke` instead. + */ 'absolute-stroke-width'?: boolean; + nonScalingStroke?: boolean; + 'non-scaling-stroke'?: boolean; } -export type IconNode = [elementName: string, attrs: Record][]; +export type LucideIconNode = SharedLucideIconNode; + +export type LucideIconData = SharedLucideIconData; + +/** + * @deprecated Use LucideIconNode instead. + */ +export type IconNode = LucideIconNode[]; + export type LucideIcon = FunctionalComponent; diff --git a/packages/vue/tests/Icon.spec.ts b/packages/vue/tests/Icon.spec.ts index d8ec174a8..134e34c8c 100644 --- a/packages/vue/tests/Icon.spec.ts +++ b/packages/vue/tests/Icon.spec.ts @@ -1,11 +1,14 @@ import { describe, it, expect } from 'vitest'; import { render } from '@testing-library/vue'; +import { defineComponent } from 'vue'; import { airVent } from './testIconNodes'; import { Icon } from '../src/lucide-vue'; describe('Using Icon Component', () => { - it('should render icon based on a iconNode', async () => { + const airVentIcon = { name: 'air-vent', node: airVent, size: 24 }; + + it('should render icon based on an icon node', async () => { const { container } = render(Icon, { props: { iconNode: airVent, @@ -16,7 +19,7 @@ describe('Using Icon Component', () => { }, }); - expect(container.firstChild).toBeDefined(); + expect(container.firstChild).toMatchSnapshot(); }); it('should render when iconNode is passed as the kebab-case icon-node prop', async () => { @@ -34,8 +37,7 @@ describe('Using Icon Component', () => { it('should render icon and match snapshot', async () => { const { container } = render(Icon, { props: { - iconNode: airVent, - name: 'AirVent', + icon: airVentIcon, size: 48, color: 'red', absoluteStrokeWidth: true, @@ -44,4 +46,27 @@ describe('Using Icon Component', () => { expect(container.firstChild).toMatchSnapshot(); }); + + it('should update when reactive props change', async () => { + const wrapper = defineComponent({ + components: { Icon }, + props: { + size: Number, + }, + setup() { + return { airVentIcon }; + }, + template: '', + }); + + const { container, rerender } = render(wrapper, { props: { size: 24 } }); + + expect(container.firstChild).toHaveAttribute('width', '24'); + expect(container.firstChild).toHaveAttribute('height', '24'); + + await rerender({ size: 48 }); + + expect(container.firstChild).toHaveAttribute('width', '48'); + expect(container.firstChild).toHaveAttribute('height', '48'); + }); }); diff --git a/packages/vue/tests/__snapshots__/Icon.spec.ts.snap b/packages/vue/tests/__snapshots__/Icon.spec.ts.snap index 4b742c143..9257657d8 100644 --- a/packages/vue/tests/__snapshots__/Icon.spec.ts.snap +++ b/packages/vue/tests/__snapshots__/Icon.spec.ts.snap @@ -2,7 +2,37 @@ exports[`Using Icon Component > should render icon and match snapshot 1`] = ` +`; + +exports[`Using Icon Component > should render icon based on an icon node 1`] = ` +
should pass children to the icon slot 1` cy="12" r="10" /> - Hello World -
`; @@ -137,7 +138,8 @@ exports[`Using lucide icon components > should pass children to the icon slot 1` exports[`Using lucide icon components > should render an component 1`] = `
From 94e4cb9d9db5907053ebf3636a97c45529cf776b Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 4 Sep 2026 17:34:58 +0200 Subject: [PATCH 037/157] chore(dependencies): Update dependencies (#4806) * chore(deps): upgrade dependencies across workspace and unify shared versions Co-authored-by: ericfennis <11825403+ericfennis@users.noreply.github.com> * chore(deps): finish workspace dependency upgrade and align versions * fix: keep vitest on 4.1.10, drop deprecated baseUrl, reformat with prettier * fix(lucide-react): drop inert outDir so TS 6 rootDir check passes --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ericfennis <11825403+ericfennis@users.noreply.github.com> --- .husky/pre-commit | 3 - .../lib/codeExamples/createCodeExamples.ts | 3 +- .../lib/codeExamples/highLightCode.ts | 3 +- .../theme/components/icons/confetti.css | 6 +- docs/package.json | 32 +- docs/tsconfig.json | 6 +- .../lucide-react/nextjs/tsconfig.json | 6 +- .../lucide-react/react-router/tsconfig.json | 4 +- .../tanstack-router/tsconfig.json | 4 +- .../lucide-react/tanstack-start/tsconfig.json | 4 +- integrations/lucide-react/vite/tsconfig.json | 4 +- package.json | 38 +- packages/angular/package.json | 30 +- packages/angular/tsconfig.json | 15 +- packages/astro/package.json | 10 +- packages/astro/tsconfig.json | 10 +- packages/icons/package.json | 10 +- packages/icons/tsconfig.json | 10 +- packages/lab/package.json | 12 +- packages/lab/tsconfig.json | 6 +- packages/lucide-preact/package.json | 8 +- packages/lucide-preact/tsconfig.json | 10 +- packages/lucide-react-native/package.json | 16 +- packages/lucide-react-native/tsconfig.json | 9 +- packages/lucide-react/package.json | 16 +- packages/lucide-react/tsconfig.json | 11 +- packages/lucide-solid/package.json | 14 +- packages/lucide-solid/tsconfig.json | 11 +- packages/lucide-static/package.json | 8 +- packages/lucide-static/tsconfig.json | 6 +- packages/lucide/package.json | 8 +- packages/lucide/src/attributeTypes.ts | 20 +- packages/lucide/tsconfig.json | 6 +- .../shared/src/build/buildLucideIconNode.ts | 2 +- packages/svelte/package.json | 8 +- packages/svelte/src/types.ts | 9 +- packages/svelte/tsconfig.json | 7 +- packages/vue/package.json | 8 +- packages/vue/tsconfig.json | 7 +- pnpm-lock.yaml | 8905 ++++++++--------- tools/build-font/package.json | 8 +- tools/build-font/tsconfig.json | 4 +- tools/build-helpers/package.json | 2 +- tools/build-helpers/tsconfig.json | 4 +- .../build-icons/building/generateIconFiles.ts | 2 +- tools/build-icons/package.json | 6 +- tools/build-icons/tsconfig.json | 4 +- tools/rollup-plugins/package.json | 6 +- tsconfig.json | 7 +- 49 files changed, 4133 insertions(+), 5215 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 0675e2802..719ca7939 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,2 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - pnpm lint-staged pnpm checkIcons diff --git a/docs/.vitepress/lib/codeExamples/createCodeExamples.ts b/docs/.vitepress/lib/codeExamples/createCodeExamples.ts index ceafb02ca..976b79c4b 100644 --- a/docs/.vitepress/lib/codeExamples/createCodeExamples.ts +++ b/docs/.vitepress/lib/codeExamples/createCodeExamples.ts @@ -119,8 +119,7 @@ const highlighter = await createHighlighter({ }); export type ThemeOptions = - | ThemeRegistration - | { light: ThemeRegistration; dark: ThemeRegistration }; + ThemeRegistration | { light: ThemeRegistration; dark: ThemeRegistration }; export const highLightCode = async (code: string, lang: string, active?: boolean) => { const highlightedCode = highlighter diff --git a/docs/.vitepress/lib/codeExamples/highLightCode.ts b/docs/.vitepress/lib/codeExamples/highLightCode.ts index 2376d1432..42d7b5954 100644 --- a/docs/.vitepress/lib/codeExamples/highLightCode.ts +++ b/docs/.vitepress/lib/codeExamples/highLightCode.ts @@ -2,8 +2,7 @@ import { bundledLanguages, type ThemeRegistration } from 'shiki'; import { createHighlighter } from 'shiki'; export type ThemeOptions = - | ThemeRegistration - | { light: ThemeRegistration; dark: ThemeRegistration }; + ThemeRegistration | { light: ThemeRegistration; dark: ThemeRegistration }; const highLightCode = async (code: string, lang: string, active?: boolean) => { const highlighter = await createHighlighter({ diff --git a/docs/.vitepress/theme/components/icons/confetti.css b/docs/.vitepress/theme/components/icons/confetti.css index 687edbeaa..c6962115e 100644 --- a/docs/.vitepress/theme/components/icons/confetti.css +++ b/docs/.vitepress/theme/components/icons/confetti.css @@ -32,7 +32,8 @@ color: rgb(var(--text-color) / 1); display: none; top: -85%; - background-image: radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), + background-image: + radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), radial-gradient(circle, transparent 20%, var(--confetti-color) 20%, transparent 30%), radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), @@ -56,7 +57,8 @@ .confetti-button:after { display: none; bottom: -75%; - background-image: radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), + background-image: + radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), radial-gradient(circle, transparent 10%, var(--confetti-color) 15%, transparent 20%), radial-gradient(circle, var(--confetti-color) 20%, transparent 20%), diff --git a/docs/package.json b/docs/package.json index 9c52294a6..472d98c23 100644 --- a/docs/package.json +++ b/docs/package.json @@ -33,40 +33,40 @@ "@lucide/helpers": "workspace:*", "@lucide/shared": "workspace:*", "@rollup/plugin-replace": "^6.0.3", - "@types/semver": "^7.7.1", + "@types/semver": "^7.8.0", "h3": "^1.15.11", - "markdown-it": "^14.3.0", + "markdown-it": "^15.0.1", "markdown-it-container": "^4.0.0", "nitropack": "^2.13.4", "rollup-plugin-copy": "^3.5.0", "semver": "^7.8.5", - "sharp": "^0.34.5", - "shiki": "^3.23.0", + "sharp": "^0.35.4", + "shiki": "^4.4.3", "simple-git": "^3.36.0", - "sitemap": "^7.1.3", - "svg-path-commander": "^2.2.1", - "svg-pathdata": "^6.0.3", + "sitemap": "^9.0.1", + "svg-path-commander": "^2.3.3", + "svg-pathdata": "^9.0.0", "svgson": "^5.3.1", "vitepress": "^1.6.4", - "vitepress-plugin-group-icons": "^1.7.5", - "vitepress-plugin-llms": "^1.13.3" + "vitepress-plugin-group-icons": "^1.7.6", + "vitepress-plugin-llms": "^1.13.5" }, "dependencies": { - "@floating-ui/vue": "^1.1.11", + "@floating-ui/vue": "^2.0.1", "@headlessui/vue": "^1.7.23", "@lucide/vue": "workspace:*", - "@vueuse/components": "^14.3.0", - "@vueuse/core": "^14.3.0", - "@vueuse/integrations": "^14.3.0", + "@vueuse/components": "^14.4.0", + "@vueuse/core": "^14.4.0", + "@vueuse/integrations": "^14.4.0", "element-to-path": "^1.2.1", "fuse.js": "^7.5.0", "jszip": "^3.10.1", "lodash-es": "^4.18.1", "lucide": "workspace:*", "lucide-react": "workspace:*", - "motion-v": "1.10.3", - "react": "18.2.0", - "react-dom": "18.2.0", + "motion-v": "2.4.0", + "react": "18.3.1", + "react-dom": "18.3.1", "sandpack-vue3": "3.1.12", "vue": "^3.5.42" } diff --git a/docs/tsconfig.json b/docs/tsconfig.json index f786c0c16..21eb9c575 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -8,7 +8,7 @@ "allowSyntheticDefaultImports": true, "noEmit": true, "paths": { - "~/.vitepress/*": ["./.vitepress/*"], - }, - }, + "~/.vitepress/*": ["./.vitepress/*"] + } + } } diff --git a/integrations/lucide-react/nextjs/tsconfig.json b/integrations/lucide-react/nextjs/tsconfig.json index 67e9156f8..a0fa7d262 100644 --- a/integrations/lucide-react/nextjs/tsconfig.json +++ b/integrations/lucide-react/nextjs/tsconfig.json @@ -14,7 +14,7 @@ "jsx": "react-jsx", "incremental": true, "plugins": [{ "name": "next" }], - "types": ["vitest/globals"], + "types": ["vitest/globals"] }, "include": [ "next-env.d.ts", @@ -22,7 +22,7 @@ ".next/dev/types/**/*.ts", "**/*.ts", "**/*.tsx", - "**/*.mts", + "**/*.mts" ], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/integrations/lucide-react/react-router/tsconfig.json b/integrations/lucide-react/react-router/tsconfig.json index 395c862f2..91398e158 100644 --- a/integrations/lucide-react/react-router/tsconfig.json +++ b/integrations/lucide-react/react-router/tsconfig.json @@ -13,6 +13,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "strict": true, - "noEmit": true, - }, + "noEmit": true + } } diff --git a/integrations/lucide-react/tanstack-router/tsconfig.json b/integrations/lucide-react/tanstack-router/tsconfig.json index 9aaa72b55..47b2dc739 100644 --- a/integrations/lucide-react/tanstack-router/tsconfig.json +++ b/integrations/lucide-react/tanstack-router/tsconfig.json @@ -15,7 +15,7 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - "types": ["vite/client", "vitest/globals"], + "types": ["vite/client", "vitest/globals"] }, - "include": ["src", "tests", "vite.config.ts", "vitest.config.ts"], + "include": ["src", "tests", "vite.config.ts", "vitest.config.ts"] } diff --git a/integrations/lucide-react/tanstack-start/tsconfig.json b/integrations/lucide-react/tanstack-start/tsconfig.json index 4f5805816..8de805f01 100644 --- a/integrations/lucide-react/tanstack-start/tsconfig.json +++ b/integrations/lucide-react/tanstack-start/tsconfig.json @@ -11,7 +11,7 @@ "resolveJsonModule": true, "isolatedModules": true, "jsx": "react-jsx", - "types": ["node", "vite/client", "vitest/globals"], + "types": ["node", "vite/client", "vitest/globals"] }, - "include": ["src", "tests", "vite.config.ts", "vitest.config.ts"], + "include": ["src", "tests", "vite.config.ts", "vitest.config.ts"] } diff --git a/integrations/lucide-react/vite/tsconfig.json b/integrations/lucide-react/vite/tsconfig.json index 63d48882e..4c75ccce2 100644 --- a/integrations/lucide-react/vite/tsconfig.json +++ b/integrations/lucide-react/vite/tsconfig.json @@ -15,7 +15,7 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - "types": ["vitest/globals"], + "types": ["vitest/globals"] }, - "include": ["src", "tests", "vite.config.ts"], + "include": ["src", "tests", "vite.config.ts"] } diff --git a/package.json b/package.json index 5604d3a27..5c9ddb246 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mts", "suggest:metadata": "node ./scripts/suggestMetaData.mts", "suggest:metadata:watch": "node --env-file .env --watch ./scripts/suggestMetaData.mts", - "postinstall": "husky install", + "postinstall": "husky", "lint:es": "eslint .", "lint:format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --check", "lint:format-fix": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write", @@ -41,7 +41,7 @@ "lint:icons:all": "pnpm run lint:icons && pnpm run lint:json:icons", "lint": "pnpm lint:es && pnpm lint:format && pnpm lint:json && pnpm lint:icons", "format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write", - "prepare": "husky install", + "prepare": "husky", "gi": "node ./scripts/generate/generateIcons.mts", "rename": "node ./scripts/rename/renameIcon.mts", "renamePattern": "node ./scripts/rename/renamePattern.mts" @@ -51,38 +51,38 @@ "@actions/github": "^9.1.1", "@eslint/compat": "^2.1.0", "@eslint/js": "^10.0.1", - "@html-eslint/eslint-plugin": "^0.60.0", - "@html-eslint/parser": "^0.60.0", - "@octokit/rest": "^19.0.13", + "@html-eslint/eslint-plugin": "^0.65.0", + "@html-eslint/parser": "^0.65.0", + "@octokit/rest": "^22.0.1", "@types/yargs": "^17.0.35", - "@typescript-eslint/eslint-plugin": "^8.59.3", - "@typescript-eslint/parser": "^8.59.3", + "@typescript-eslint/eslint-plugin": "^8.69.0", + "@typescript-eslint/parser": "^8.69.0", "@vitest/coverage-v8": "4.1.10", "@vitest/ui": "4.1.10", "ajv-cli": "^5.0.0", "cpy-cli": "^7.0.0", - "cspell": "^10.0.1", + "cspell": "^10.2.0", "dotenv": "^17.4.2", - "eslint": "^10.8.0", + "eslint": "^10.9.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import-x": "^4.17.1", - "husky": "^8.0.3", - "jsdom": "^27.4.0", - "lint-staged": "^17.0.8", + "husky": "^9.1.7", + "jsdom": "^30.0.1", + "lint-staged": "^17.4.1", "minimist": "^1.2.8", - "openai": "^5.23.2", - "p-memoize": "^7.1.1", - "prettier": "3.2.4", + "openai": "^7.9.0", + "p-memoize": "^8.0.0", + "prettier": "3.9.6", "prettier-plugin-astro": "^0.14.1", "semver": "^7.8.5", "simple-git": "^3.36.0", - "svgo": "^3.3.4", + "svgo": "^4.1.0", "svgson": "^5.3.1", "typescript": "^6.0.3", - "typescript-eslint": "^8.59.4", + "typescript-eslint": "^8.69.0", "vitest": "4.1.10", - "yargs": "^17.7.3", - "zod": "^3.25.76" + "yargs": "^18.1.0", + "zod": "^4.5.4" }, "engines": { "node": ">=24.11.1" diff --git a/packages/angular/package.json b/packages/angular/package.json index e4a6de9eb..a66031c1b 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -42,26 +42,26 @@ ] }, "devDependencies": { - "@angular-eslint/builder": "~21.4.0", - "@angular-eslint/schematics": "~21.4.0", - "@angular/build": "^21.2.19", - "@angular/cli": "^21.2.19", - "@angular/common": "^21.2.19", - "@angular/compiler": "^21.2.19", - "@angular/compiler-cli": "^21.2.19", - "@angular/core": "^21.2.19", - "@angular/forms": "^21.2.19", - "@angular/platform-browser": "^21.2.19", - "@angular/platform-server": "^21.2.19", - "@angular/router": "^21.2.19", + "@angular-eslint/builder": "~22.2.0", + "@angular-eslint/schematics": "~22.2.0", + "@angular/build": "^22.1.7", + "@angular/cli": "^22.1.7", + "@angular/common": "^22.1.5", + "@angular/compiler": "^22.1.5", + "@angular/compiler-cli": "^22.1.5", + "@angular/core": "^22.1.5", + "@angular/forms": "^22.1.5", + "@angular/platform-browser": "^22.1.5", + "@angular/platform-server": "^22.1.5", + "@angular/router": "^22.1.5", "@lucide/build-icons": "workspace:*", "@lucide/helpers": "workspace:*", "@vitest/browser-playwright": "^4.1.10", - "angular-eslint": "21.4.0", - "ng-packagr": "^21.2.5", + "angular-eslint": "22.2.0", + "ng-packagr": "^22.1.1", "rxjs": "~7.8.2", "tslib": "^2.8.1", - "typescript": "~5.9.3" + "typescript": "^6.0.3" }, "peerDependencies": { "@angular/common": ">=17.0.0", diff --git a/packages/angular/tsconfig.json b/packages/angular/tsconfig.json index 65b5c1a3d..36c4351f7 100644 --- a/packages/angular/tsconfig.json +++ b/packages/angular/tsconfig.json @@ -4,7 +4,7 @@ "compileOnSave": false, "compilerOptions": { "paths": { - "@lucide/angular": ["./dist"], + "@lucide/angular": ["./dist"] }, "strict": true, "noImplicitOverride": true, @@ -14,25 +14,24 @@ "skipLibCheck": true, "isolatedModules": true, "declaration": false, - "downlevelIteration": true, "experimentalDecorators": true, "importHelpers": true, "target": "ES2022", - "module": "preserve", + "module": "preserve" }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true, + "strictTemplates": true }, "files": [], "references": [ { - "path": "./tsconfig.lib.json", + "path": "./tsconfig.lib.json" }, { - "path": "./tsconfig.spec.json", - }, - ], + "path": "./tsconfig.spec.json" + } + ] } diff --git a/packages/astro/package.json b/packages/astro/package.json index 24bed5562..b6f34ea1e 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -48,15 +48,15 @@ "test:watch": "pnpm build:icons && vitest run --watch" }, "devDependencies": { - "@astrojs/ts-plugin": "^1.10.10", + "@astrojs/ts-plugin": "^1.10.11", "@lucide/build-icons": "workspace:*", "@testing-library/dom": "^10.4.1", - "@testing-library/jest-dom": "^6.9.1", - "astro": "^7.1.0", + "@testing-library/jest-dom": "^7.0.1", + "astro": "^7.3.0", "jest-serializer-html": "^7.1.0", "linkedom": "^0.18.13", - "prettier": "^3.9.5", - "typescript": "^5.9.3", + "prettier": "3.9.6", + "typescript": "^6.0.3", "vite": "^7.3.6", "vitest": "4.1.10" }, diff --git a/packages/astro/tsconfig.json b/packages/astro/tsconfig.json index d285fa621..7b837db8c 100644 --- a/packages/astro/tsconfig.json +++ b/packages/astro/tsconfig.json @@ -15,12 +15,12 @@ "skipLibCheck": true, "jsx": "preserve", "lib": ["ESNext", "DOM.Iterable"], - "types": ["@testing-library/jest-dom"], + "types": ["@testing-library/jest-dom/vitest"], "plugins": [ { - "name": "@astrojs/ts-plugin", - }, - ], + "name": "@astrojs/ts-plugin" + } + ] }, - "include": ["src/**/*.ts", "src/**/*.astro", "tests/**/*.ts"], + "include": ["src/**/*.ts", "src/**/*.astro", "tests/**/*.ts"] } diff --git a/packages/icons/package.json b/packages/icons/package.json index a222b329c..cd09e51d1 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -61,16 +61,16 @@ }, "devDependencies": { "@lucide/build-icons": "workspace:*", - "@lucide/helpers": "^1.0.0", + "@lucide/helpers": "workspace:*", "@lucide/rollup-plugins": "workspace:*", "@lucide/shared": "workspace:*", "@rollup/plugin-replace": "^6.0.3", - "@testing-library/jest-dom": "^6.9.1", + "@testing-library/jest-dom": "^7.0.1", "jest-serializer-html": "^7.1.0", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", "rollup-plugin-preserve-directives": "^0.4.0", - "typescript": "^5.9.3", + "typescript": "^6.0.3", "vite": "^7.3.6", "vitest": "4.1.10" } diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json index 9bf14cca6..6df4143ee 100644 --- a/packages/icons/tsconfig.json +++ b/packages/icons/tsconfig.json @@ -5,13 +5,12 @@ "noEmitOnError": true, "noEmit": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", - "baseUrl": ".", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "esModuleInterop": true, "isolatedModules": true, @@ -19,9 +18,8 @@ "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, - "downlevelIteration": true, "sourceMap": true, - "outDir": "./dist", + "outDir": "./dist" }, - "exclude": ["**/node_modules"], + "exclude": ["**/node_modules"] } diff --git a/packages/lab/package.json b/packages/lab/package.json index 86740c284..6191fdca2 100644 --- a/packages/lab/package.json +++ b/packages/lab/package.json @@ -42,11 +42,11 @@ "@lucide/build-icons": "workspace:*", "@lucide/helpers": "workspace:*", "@lucide/rollup-plugins": "workspace:*", - "@types/node": "^22.20.1", - "prettier": "^2.3.2", - "rollup": "^4.9.2", - "rollup-plugin-dts": "^6.1.0", - "svgson": "^5.2.1", - "typescript": "^5.9.3" + "@types/node": "^26.4.1", + "prettier": "3.9.6", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", + "svgson": "^5.3.1", + "typescript": "^6.0.3" } } diff --git a/packages/lab/tsconfig.json b/packages/lab/tsconfig.json index 6e7572cfe..479ed0ac1 100644 --- a/packages/lab/tsconfig.json +++ b/packages/lab/tsconfig.json @@ -4,7 +4,7 @@ "declaration": true, "noEmitOnError": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", "esModuleInterop": true, @@ -13,6 +13,6 @@ "resolveJsonModule": true, "allowImportingTsExtensions": true, "sourceMap": true, - "outDir": "./dist", - }, + "outDir": "./dist" + } } diff --git a/packages/lucide-preact/package.json b/packages/lucide-preact/package.json index 157f0b34c..0b9883c26 100644 --- a/packages/lucide-preact/package.json +++ b/packages/lucide-preact/package.json @@ -51,13 +51,13 @@ "@lucide/rollup-plugins": "workspace:*", "@lucide/shared": "workspace:*", "@preact/preset-vite": "^2.10.6", - "@testing-library/jest-dom": "^6.9.1", + "@testing-library/jest-dom": "^7.0.1", "@testing-library/preact": "^3.2.4", "jest-serializer-html": "^7.1.0", "preact": "^10.29.8", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", - "typescript": "^5.9.3", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", + "typescript": "^6.0.3", "vite": "^7.3.6" }, "peerDependencies": { diff --git a/packages/lucide-preact/tsconfig.json b/packages/lucide-preact/tsconfig.json index ff8a883fe..5e21a5f7e 100644 --- a/packages/lucide-preact/tsconfig.json +++ b/packages/lucide-preact/tsconfig.json @@ -5,13 +5,12 @@ "noEmitOnError": true, "noEmit": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", - "baseUrl": ".", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "esModuleInterop": true, "isolatedModules": true, @@ -19,12 +18,11 @@ "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, - "downlevelIteration": true, "sourceMap": true, "outDir": "./dist", "jsx": "react-jsx", "jsxImportSource": "preact", - "types": ["@testing-library/jest-dom"], + "types": ["@testing-library/jest-dom/vitest"] }, - "exclude": ["**/node_modules"], + "exclude": ["**/node_modules"] } diff --git a/packages/lucide-react-native/package.json b/packages/lucide-react-native/package.json index db260feb1..df6ff3760 100644 --- a/packages/lucide-react-native/package.json +++ b/packages/lucide-react-native/package.json @@ -68,19 +68,19 @@ "@lucide/helpers": "workspace:*", "@lucide/rollup-plugins": "workspace:*", "@lucide/shared": "workspace:*", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^14.3.1", + "@testing-library/jest-dom": "^7.0.1", + "@testing-library/react": "^16.3.3", "@types/prop-types": "^15.7.15", "@types/react": "^18.3.31", - "@vitejs/plugin-react": "^4.7.0", + "@vitejs/plugin-react": "^5.2.0", "jest-serializer-html": "^7.1.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "18.3.1", + "react-dom": "18.3.1", "react-native": "^0.76.9", "react-native-svg": "^15.15.5", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", - "typescript": "^5.9.3", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", + "typescript": "^6.0.3", "vite": "^7.3.6" }, "peerDependencies": { diff --git a/packages/lucide-react-native/tsconfig.json b/packages/lucide-react-native/tsconfig.json index 9d1946159..a79eb44b0 100644 --- a/packages/lucide-react-native/tsconfig.json +++ b/packages/lucide-react-native/tsconfig.json @@ -8,17 +8,16 @@ "noEmit": true, "isolatedModules": true, "strict": true, - "moduleResolution": "node", - "baseUrl": ".", + "moduleResolution": "bundler", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, - "skipLibCheck": false, + "skipLibCheck": false }, - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/packages/lucide-react/package.json b/packages/lucide-react/package.json index cf7b4888e..a179c65f6 100644 --- a/packages/lucide-react/package.json +++ b/packages/lucide-react/package.json @@ -53,18 +53,18 @@ "@lucide/build-icons": "workspace:*", "@lucide/rollup-plugins": "workspace:*", "@lucide/shared": "workspace:*", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^14.3.1", + "@testing-library/jest-dom": "^7.0.1", + "@testing-library/react": "^16.3.3", "@types/node": "^25.9.1", "@types/react": "^18.3.31", - "@vitejs/plugin-react": "^4.7.0", + "@vitejs/plugin-react": "^5.2.0", "jest-serializer-html": "^7.1.0", - "react": "18.2.0", - "react-dom": "18.2.0", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", + "react": "18.3.1", + "react-dom": "18.3.1", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", "rollup-plugin-preserve-directives": "^0.4.0", - "typescript": "^5.9.3", + "typescript": "^6.0.3", "vite": "^7.3.6" }, "peerDependencies": { diff --git a/packages/lucide-react/tsconfig.json b/packages/lucide-react/tsconfig.json index bd959bbec..ef41c309d 100644 --- a/packages/lucide-react/tsconfig.json +++ b/packages/lucide-react/tsconfig.json @@ -5,13 +5,12 @@ "noEmitOnError": true, "noEmit": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", - "baseUrl": ".", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "esModuleInterop": true, "isolatedModules": true, @@ -20,12 +19,10 @@ "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "allowImportingTsExtensions": true, - "downlevelIteration": true, "sourceMap": true, - "outDir": "./dist", "jsx": "react-jsx", - "types": ["@testing-library/jest-dom", "node"], + "types": ["@testing-library/jest-dom/vitest", "node"] }, "exclude": ["**/node_modules"], - "include": ["src", "tests"], + "include": ["src", "tests"] } diff --git a/packages/lucide-solid/package.json b/packages/lucide-solid/package.json index 74422f5b7..05862da98 100644 --- a/packages/lucide-solid/package.json +++ b/packages/lucide-solid/package.json @@ -76,15 +76,15 @@ "@lucide/shared": "workspace:*", "@rollup/plugin-babel": "^6.1.0", "@solidjs/testing-library": "^0.8.10", - "@testing-library/jest-dom": "^6.9.1", - "babel-preset-solid": "^1.9.12", - "esbuild": "^0.28.1", + "@testing-library/jest-dom": "^7.0.1", + "babel-preset-solid": "^1.9.15", + "esbuild": "^0.28.2", "jest-serializer-html": "^7.1.0", - "rollup": "^4.62.2", - "solid-js": "^1.9.14", - "typescript": "^5.9.3", + "rollup": "^4.63.1", + "solid-js": "^1.9.15", + "typescript": "^6.0.3", "vite": "^7.3.6", - "vite-plugin-solid": "^2.11.12" + "vite-plugin-solid": "^2.11.14" }, "peerDependencies": { "solid-js": "^1.4.7" diff --git a/packages/lucide-solid/tsconfig.json b/packages/lucide-solid/tsconfig.json index 6b35f2565..a0f34da4d 100644 --- a/packages/lucide-solid/tsconfig.json +++ b/packages/lucide-solid/tsconfig.json @@ -3,21 +3,20 @@ "strict": true, "target": "ESNext", "module": "ESNext", - "moduleResolution": "node", - "baseUrl": ".", + "moduleResolution": "bundler", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", "jsxImportSource": "solid-js", - "types": ["vite/client", "@testing-library/jest-dom"], + "types": ["vite/client", "@testing-library/jest-dom/vitest"], "noEmit": true, "isolatedModules": true, "outDir": "./dist", "declarationDir": "./dist", - "declaration": true, - }, + "declaration": true + } } diff --git a/packages/lucide-static/package.json b/packages/lucide-static/package.json index 3a62a893b..3030f1cf6 100644 --- a/packages/lucide-static/package.json +++ b/packages/lucide-static/package.json @@ -40,10 +40,10 @@ "@lucide/build-icons": "workspace:*", "@lucide/helpers": "workspace:*", "@lucide/rollup-plugins": "workspace:*", - "@types/node": "^22.20.1", - "prettier": "^2.8.8", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", + "@types/node": "^26.4.1", + "prettier": "3.9.6", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", "svgson": "^5.3.1" } } diff --git a/packages/lucide-static/tsconfig.json b/packages/lucide-static/tsconfig.json index 6e7572cfe..479ed0ac1 100644 --- a/packages/lucide-static/tsconfig.json +++ b/packages/lucide-static/tsconfig.json @@ -4,7 +4,7 @@ "declaration": true, "noEmitOnError": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", "esModuleInterop": true, @@ -13,6 +13,6 @@ "resolveJsonModule": true, "allowImportingTsExtensions": true, "sourceMap": true, - "outDir": "./dist", - }, + "outDir": "./dist" + } } diff --git a/packages/lucide/package.json b/packages/lucide/package.json index e5067211e..6aafc661b 100644 --- a/packages/lucide/package.json +++ b/packages/lucide/package.json @@ -46,11 +46,11 @@ "@lucide/rollup-plugins": "workspace:*", "@lucide/shared": "workspace:*", "@rollup/plugin-replace": "^6.0.3", - "@testing-library/jest-dom": "^6.9.1", + "@testing-library/jest-dom": "^7.0.1", "jest-serializer-html": "^7.1.0", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", - "typescript": "^5.9.3", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", + "typescript": "^6.0.3", "vite": "^7.3.6" } } diff --git a/packages/lucide/src/attributeTypes.ts b/packages/lucide/src/attributeTypes.ts index 2346a3fdc..e82032b1c 100644 --- a/packages/lucide/src/attributeTypes.ts +++ b/packages/lucide/src/attributeTypes.ts @@ -11,15 +11,7 @@ export interface AriaAttributes { 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: - | boolean - | 'false' - | 'true' - | 'page' - | 'step' - | 'location' - | 'date' - | 'time' - | undefined; + boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; @@ -29,15 +21,7 @@ export interface AriaAttributes { 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: - | boolean - | 'false' - | 'true' - | 'menu' - | 'listbox' - | 'tree' - | 'grid' - | 'dialog' - | undefined; + boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined; 'aria-keyshortcuts'?: string | undefined; diff --git a/packages/lucide/tsconfig.json b/packages/lucide/tsconfig.json index 7fdaedbf6..b6614e7e8 100644 --- a/packages/lucide/tsconfig.json +++ b/packages/lucide/tsconfig.json @@ -4,7 +4,7 @@ "declaration": true, "noEmitOnError": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", "esModuleInterop": true, @@ -12,6 +12,6 @@ "lib": ["esnext", "dom"], "resolveJsonModule": true, "sourceMap": true, - "outDir": "./dist", - }, + "outDir": "./dist" + } } diff --git a/packages/shared/src/build/buildLucideIconNode.ts b/packages/shared/src/build/buildLucideIconNode.ts index 4e99a417b..a88f323e7 100644 --- a/packages/shared/src/build/buildLucideIconNode.ts +++ b/packages/shared/src/build/buildLucideIconNode.ts @@ -34,7 +34,7 @@ function buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = { ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) * Number(icon.size ?? icon.width ?? defaultAttributes['width'])) / Number(params.size ?? params.width ?? defaultAttributes['width']) - : params.strokeWidth ?? defaultAttributes['stroke-width']; + : (params.strokeWidth ?? defaultAttributes['stroke-width']); const attributes = { ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => { diff --git a/packages/svelte/package.json b/packages/svelte/package.json index cd60a8e21..ae4ffd196 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -62,15 +62,15 @@ "@lucide/helpers": "workspace:*", "@sveltejs/package": "^2.5.8", "@sveltejs/vite-plugin-svelte": "^7.3.0", - "@testing-library/jest-dom": "^6.9.1", + "@testing-library/jest-dom": "^7.0.1", "@testing-library/svelte": "^5.4.2", "@tsconfig/svelte": "^5.0.8", "jest-serializer-html": "^7.1.0", - "jsdom": "^27.4.0", - "svelte": "^5.56.9", + "jsdom": "^30.0.1", + "svelte": "^5.57.0", "svelte-check": "^4.7.6", "svelte-preprocess": "^6.0.5", - "typescript": "^5.9.3", + "typescript": "^6.0.3", "vite": "^7.3.6" }, "peerDependencies": { diff --git a/packages/svelte/src/types.ts b/packages/svelte/src/types.ts index 56fbd407e..0dae05063 100644 --- a/packages/svelte/src/types.ts +++ b/packages/svelte/src/types.ts @@ -7,14 +7,7 @@ import type { export type Attrs = Record & SVGAttributes; type IconNodeElements = - | 'circle' - | 'ellipse' - | 'g' - | 'line' - | 'path' - | 'polygon' - | 'polyline' - | 'rect'; + 'circle' | 'ellipse' | 'g' | 'line' | 'path' | 'polygon' | 'polyline' | 'rect'; export type LucideIconNode = SharedLucideIconNode; diff --git a/packages/svelte/tsconfig.json b/packages/svelte/tsconfig.json index 58280e442..1a10edad5 100644 --- a/packages/svelte/tsconfig.json +++ b/packages/svelte/tsconfig.json @@ -6,16 +6,15 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "resolveJsonModule": true, - "baseUrl": ".", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "allowJs": true, "checkJs": true, "isolatedModules": true, - "types": ["@testing-library/jest-dom"], + "types": ["@testing-library/jest-dom/vitest"] }, "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte", "tests/**/*.ts"], - "exclude": ["tests/setupVitest.ts"], + "exclude": ["tests/setupVitest.ts"] } diff --git a/packages/vue/package.json b/packages/vue/package.json index 962d9f964..b7ca62e4f 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -44,13 +44,13 @@ "@lucide/build-icons": "workspace:*", "@lucide/rollup-plugins": "workspace:*", "@lucide/shared": "workspace:*", - "@testing-library/jest-dom": "^6.9.1", + "@testing-library/jest-dom": "^7.0.1", "@testing-library/vue": "^8.1.0", "@vitejs/plugin-vue": "^6.0.8", "@vue/test-utils": "2.5.0", - "rollup": "^4.62.2", - "rollup-plugin-dts": "^6.4.1", - "typescript": "^5.9.3", + "rollup": "^4.63.1", + "rollup-plugin-dts": "^6.5.1", + "typescript": "^6.0.3", "vite": "^7.3.6", "vue": "^3.5.42" }, diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index dba73c989..5ae2b152d 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -4,10 +4,9 @@ "useDefineForClassFields": true, "module": "ESNext", "moduleResolution": "Node", - "baseUrl": ".", "paths": { "@lucide/shared": ["../shared/src/index.ts"], - "@lucide/shared/types": ["../shared/src/build/types.ts"], + "@lucide/shared/types": ["../shared/src/build/types.ts"] }, "strict": true, "jsx": "preserve", @@ -18,6 +17,6 @@ "lib": ["ESNext", "DOM"], "skipLibCheck": true, "noEmit": true, - "types": ["@testing-library/jest-dom", "vitest/globals"], - }, + "types": ["@testing-library/jest-dom/vitest", "vitest/globals"] + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f675f9ea2..b6ec7ba77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,28 +28,28 @@ importers: version: 9.1.1 '@eslint/compat': specifier: ^2.1.0 - version: 2.1.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) + version: 2.1.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) + version: 10.0.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) '@html-eslint/eslint-plugin': - specifier: ^0.60.0 - version: 0.60.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) + specifier: ^0.65.0 + version: 0.65.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) '@html-eslint/parser': - specifier: ^0.60.0 - version: 0.60.0 + specifier: ^0.65.0 + version: 0.65.0 '@octokit/rest': - specifier: ^19.0.13 - version: 19.0.13(encoding@0.1.13) + specifier: ^22.0.1 + version: 22.0.1 '@types/yargs': specifier: ^17.0.35 version: 17.0.35 '@typescript-eslint/eslint-plugin': - specifier: ^8.59.3 - version: 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.69.0 + version: 8.69.0(@typescript-eslint/parser@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/parser': - specifier: ^8.59.3 - version: 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.69.0 + version: 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@vitest/coverage-v8': specifier: 4.1.10 version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) @@ -58,46 +58,46 @@ importers: version: 4.1.10(vitest@4.1.10) ajv-cli: specifier: ^5.0.0 - version: 5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3)) + version: 5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.4.1)(typescript@6.0.3)) cpy-cli: specifier: ^7.0.0 version: 7.0.0 cspell: - specifier: ^10.0.1 - version: 10.0.1 + specifier: ^10.2.0 + version: 10.2.0 dotenv: specifier: ^17.4.2 version: 17.4.2 eslint: - specifier: ^10.8.0 - version: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + specifier: ^10.9.1 + version: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) + version: 10.1.8(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-import-x: specifier: ^4.17.1 - version: 4.17.1(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10(supports-color@10.2.2))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + version: 4.17.1(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10(supports-color@10.2.2))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) husky: - specifier: ^8.0.3 - version: 8.0.3 + specifier: ^9.1.7 + version: 9.1.7 jsdom: - specifier: ^27.4.0 - version: 27.4.0(supports-color@10.2.2) + specifier: ^30.0.1 + version: 30.0.1 lint-staged: - specifier: ^17.0.8 - version: 17.0.8 + specifier: ^17.4.1 + version: 17.4.1 minimist: specifier: ^1.2.8 version: 1.2.8 openai: - specifier: ^5.23.2 - version: 5.23.2(ws@8.21.1)(zod@3.25.76) + specifier: ^7.9.0 + version: 7.9.0(undici@8.10.1)(ws@8.21.3)(zod@4.5.4) p-memoize: - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^8.0.0 + version: 8.0.0 prettier: - specifier: 3.2.4 - version: 3.2.4 + specifier: 3.9.6 + version: 3.9.6 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 @@ -108,8 +108,8 @@ importers: specifier: ^3.36.0 version: 3.36.0(supports-color@10.2.2) svgo: - specifier: ^3.3.4 - version: 3.3.4 + specifier: ^4.1.0 + version: 4.1.0 svgson: specifier: ^5.3.1 version: 5.3.1 @@ -117,23 +117,23 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.59.4 - version: 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.69.0 + version: 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) yargs: - specifier: ^17.7.3 - version: 17.7.3 + specifier: ^18.1.0 + version: 18.1.0 zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.5.4 + version: 4.5.4 docs: dependencies: '@floating-ui/vue': - specifier: ^1.1.11 - version: 1.1.11(vue@3.5.42(typescript@6.0.3)) + specifier: ^2.0.1 + version: 2.0.1(vue@3.5.42(typescript@6.0.3)) '@headlessui/vue': specifier: ^1.7.23 version: 1.7.23(vue@3.5.42(typescript@6.0.3)) @@ -141,14 +141,14 @@ importers: specifier: workspace:* version: link:../packages/vue '@vueuse/components': - specifier: ^14.3.0 - version: 14.3.0(vue@3.5.42(typescript@6.0.3)) + specifier: ^14.4.0 + version: 14.4.0(vue@3.5.42(typescript@6.0.3)) '@vueuse/core': - specifier: ^14.3.0 - version: 14.3.0(vue@3.5.42(typescript@6.0.3)) + specifier: ^14.4.0 + version: 14.4.0(vue@3.5.42(typescript@6.0.3)) '@vueuse/integrations': - specifier: ^14.3.0 - version: 14.3.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.42(typescript@6.0.3)) + specifier: ^14.4.0 + version: 14.4.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.42(typescript@6.0.3)) element-to-path: specifier: ^1.2.1 version: 1.2.1 @@ -168,14 +168,14 @@ importers: specifier: workspace:* version: link:../packages/lucide-react motion-v: - specifier: 1.10.3 - version: 1.10.3(@vueuse/core@14.3.0(vue@3.5.42(typescript@6.0.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vue@3.5.42(typescript@6.0.3)) + specifier: 2.4.0 + version: 2.4.0(@vueuse/core@14.4.0(vue@3.5.42(typescript@6.0.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vue@3.5.42(typescript@6.0.3)) react: - specifier: 18.2.0 - version: 18.2.0 + specifier: 18.3.1 + version: 18.3.1 react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) sandpack-vue3: specifier: 3.1.12 version: 3.1.12(vue@3.5.42(typescript@6.0.3)) @@ -194,22 +194,22 @@ importers: version: link:../packages/shared '@rollup/plugin-replace': specifier: ^6.0.3 - version: 6.0.3(rollup@4.62.2) + version: 6.0.3(rollup@4.63.1) '@types/semver': - specifier: ^7.7.1 - version: 7.7.1 + specifier: ^7.8.0 + version: 7.8.0 h3: specifier: ^1.15.11 version: 1.15.11 markdown-it: - specifier: ^14.3.0 - version: 14.3.0 + specifier: ^15.0.1 + version: 15.0.1 markdown-it-container: specifier: ^4.0.0 version: 4.0.0 nitropack: specifier: ^2.13.4 - version: 2.13.4(@vercel/blob@2.6.1)(encoding@0.1.13)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(xml2js@0.6.2) + version: 2.13.4(@parcel/watcher@2.6.0)(@vercel/blob@2.8.0)(encoding@0.1.13)(oxc-parser@0.142.0)(rolldown@1.2.7)(srvx@1.0.1)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(xml2js@0.6.2) rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 @@ -217,35 +217,35 @@ importers: specifier: ^7.7.3 version: 7.8.5 sharp: - specifier: ^0.34.5 - version: 0.34.5 + specifier: ^0.35.4 + version: 0.35.4(@types/node@26.4.1) shiki: - specifier: ^3.23.0 - version: 3.23.0 + specifier: ^4.4.3 + version: 4.4.3 simple-git: specifier: ^3.36.0 version: 3.36.0(supports-color@10.2.2) sitemap: - specifier: ^7.1.3 - version: 7.1.3 + specifier: ^9.0.1 + version: 9.0.1 svg-path-commander: - specifier: ^2.2.1 - version: 2.2.1 + specifier: ^2.3.3 + version: 2.3.3 svg-pathdata: - specifier: ^6.0.3 - version: 6.0.3 + specifier: ^9.0.0 + version: 9.0.0 svgson: specifier: ^5.3.1 version: 5.3.1 vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.55.2)(@types/node@26.1.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(postcss@8.5.23)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.101.0)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(typescript@6.0.3)(yaml@2.9.0) + version: 1.6.4(@algolia/client-search@5.57.0)(@types/node@26.4.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(postcss@8.5.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.103.1)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(typescript@6.0.3)(yaml@2.9.0) vitepress-plugin-group-icons: - specifier: ^1.7.5 - version: 1.7.5(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + specifier: ^1.7.6 + version: 1.7.6(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) vitepress-plugin-llms: - specifier: ^1.13.3 - version: 1.13.3(supports-color@10.2.2) + specifier: ^1.13.5 + version: 1.13.5(supports-color@10.2.2) integrations/lucide-react/nextjs: dependencies: @@ -254,7 +254,7 @@ importers: version: link:../../../packages/lucide-react next: specifier: 16.3.4 - version: 16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.1.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.101.0) + version: 16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.103.1) react: specifier: 19.2.8 version: 19.2.8 @@ -270,19 +270,19 @@ importers: version: 19.2.3(@types/react@19.2.18) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) typescript: specifier: ^6.0.3 version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) vitest-browser-react: specifier: 2.2.0 version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) @@ -313,10 +313,10 @@ importers: devDependencies: '@react-router/dev': specifier: 8.3.1 - version: 8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@types/node': specifier: ^26.1.1 - version: 26.1.1 + version: 26.4.1 '@types/react': specifier: 19.2.18 version: 19.2.18 @@ -325,19 +325,19 @@ importers: version: 19.2.3(@types/react@19.2.18) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) typescript: specifier: ^6.0.3 version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) vitest-browser-react: specifier: 2.2.0 version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) @@ -359,7 +359,7 @@ importers: devDependencies: '@tanstack/router-plugin': specifier: 1.168.35 - version: 1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@types/react': specifier: 19.2.18 version: 19.2.18 @@ -368,19 +368,19 @@ importers: version: 19.2.3(@types/react@19.2.18) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) typescript: specifier: ^6.0.3 version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) vitest-browser-react: specifier: 2.2.0 version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) @@ -392,7 +392,7 @@ importers: version: 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-start': specifier: 1.168.49 - version: 1.168.49(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 1.168.49(crossws@0.4.12(srvx@1.0.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) lucide-react: specifier: workspace:* version: link:../../../packages/lucide-react @@ -405,7 +405,7 @@ importers: devDependencies: '@types/node': specifier: ^26.1.1 - version: 26.1.1 + version: 26.4.1 '@types/react': specifier: 19.2.18 version: 19.2.18 @@ -414,19 +414,19 @@ importers: version: 19.2.3(@types/react@19.2.18) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) typescript: specifier: ^6.0.3 version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) vitest-browser-react: specifier: 2.2.0 version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) @@ -451,10 +451,10 @@ importers: version: 19.2.3(@types/react@19.2.18) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) playwright: specifier: 1.58.2 version: 1.58.2 @@ -463,10 +463,10 @@ importers: version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) vitest-browser-react: specifier: 2.2.0 version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) @@ -474,41 +474,41 @@ importers: packages/angular: devDependencies: '@angular-eslint/builder': - specifier: ~21.4.0 - version: 21.4.0(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) + specifier: ~22.2.0 + version: 22.2.0(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) '@angular-eslint/schematics': - specifier: ~21.4.0 - version: 21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(@typescript-eslint/types@8.66.0)(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) + specifier: ~22.2.0 + version: 22.2.0(@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3))(@typescript-eslint/types@8.69.0)(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) '@angular/build': - specifier: ^21.2.19 - version: 21.2.19(e343b82913a2fd05679d0f3ed92b548d) + specifier: ^22.1.7 + version: 22.1.7(b556f1a6e72e2d9b777c6a017606beff) '@angular/cli': - specifier: ^21.2.19 - version: 21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: ^22.1.7 + version: 22.1.7(@types/node@26.4.1)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/common': - specifier: ^21.2.19 - version: 21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2) + specifier: ^22.1.5 + version: 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) '@angular/compiler': - specifier: ^21.2.19 - version: 21.2.19 + specifier: ^22.1.5 + version: 22.1.5 '@angular/compiler-cli': - specifier: ^21.2.19 - version: 21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3) + specifier: ^22.1.5 + version: 22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3) '@angular/core': - specifier: ^21.2.19 - version: 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) + specifier: ^22.1.5 + version: 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) '@angular/forms': - specifier: ^21.2.19 - version: 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2) + specifier: ^22.1.5 + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/platform-browser': - specifier: ^21.2.19 - version: 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)) + specifier: ^22.1.5 + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) '@angular/platform-server': - specifier: ^21.2.19 - version: 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@21.2.19)(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2) + specifier: ^22.1.5 + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@22.1.5)(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/router': - specifier: ^21.2.19 - version: 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2) + specifier: ^22.1.5 + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2) '@lucide/build-icons': specifier: workspace:* version: link:../../tools/build-icons @@ -517,13 +517,13 @@ importers: version: link:../../tools/build-helpers '@vitest/browser-playwright': specifier: ^4.1.10 - version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) angular-eslint: - specifier: 21.4.0 - version: 21.4.0(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript-eslint@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(typescript@5.9.3) + specifier: 22.2.0 + version: 22.2.0(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript-eslint@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(typescript@6.0.3) ng-packagr: - specifier: ^21.2.5 - version: 21.2.5(@angular/compiler-cli@21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: ^22.1.1 + version: 22.1.1(@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3))(supports-color@10.2.2)(tslib@2.8.1)(typescript@6.0.3) rxjs: specifier: ~7.8.2 version: 7.8.2 @@ -531,15 +531,15 @@ importers: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ~5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 publishDirectory: dist packages/astro: devDependencies: '@astrojs/ts-plugin': - specifier: ^1.10.10 - version: 1.10.10(typescript@5.9.3) + specifier: ^1.10.11 + version: 1.10.11(typescript@6.0.3) '@lucide/build-icons': specifier: workspace:* version: link:../../tools/build-icons @@ -547,11 +547,11 @@ importers: specifier: ^10.4.1 version: 10.4.1 '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) astro: - specifier: ^7.1.0 - version: 7.1.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(rollup@4.62.2)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + specifier: ^7.3.0 + version: 7.3.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@26.4.1)(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 @@ -559,17 +559,17 @@ importers: specifier: ^0.18.13 version: 0.18.13 prettier: - specifier: ^3.9.5 - version: 3.9.5 + specifier: 3.9.6 + version: 3.9.6 typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) packages/icons: devDependencies: @@ -577,8 +577,8 @@ importers: specifier: workspace:* version: link:../../tools/build-icons '@lucide/helpers': - specifier: ^1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../../tools/build-helpers '@lucide/rollup-plugins': specifier: workspace:* version: link:../../tools/rollup-plugins @@ -587,31 +587,31 @@ importers: version: link:../shared '@rollup/plugin-replace': specifier: ^6.0.3 - version: 6.0.3(rollup@4.62.2) + version: 6.0.3(rollup@4.63.1) '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) rollup-plugin-preserve-directives: specifier: ^0.4.0 - version: 0.4.0(rollup@4.62.2) + version: 0.4.0(rollup@4.63.1) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) packages/lab: devDependencies: @@ -625,23 +625,23 @@ importers: specifier: workspace:* version: link:../../tools/rollup-plugins '@types/node': - specifier: ^22.20.1 - version: 22.20.1 + specifier: ^26.4.1 + version: 26.4.1 prettier: - specifier: ^2.3.2 - version: 2.8.8 + specifier: 3.9.6 + version: 3.9.6 rollup: - specifier: ^4.9.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.1.0 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) svgson: - specifier: ^5.2.1 + specifier: ^5.3.1 version: 5.3.1 typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 packages/lucide: devDependencies: @@ -656,25 +656,25 @@ importers: version: link:../shared '@rollup/plugin-replace': specifier: ^6.0.3 - version: 6.0.3(rollup@4.62.2) + version: 6.0.3(rollup@4.63.1) '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) packages/lucide-preact: devDependencies: @@ -689,10 +689,10 @@ importers: version: link:../shared '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.63.1)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) '@testing-library/preact': specifier: ^3.2.4 version: 3.2.4(preact@10.29.8) @@ -703,17 +703,17 @@ importers: specifier: ^10.29.8 version: 10.29.8 rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) packages/lucide-react: devDependencies: @@ -727,11 +727,11 @@ importers: specifier: workspace:* version: link:../shared '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) '@testing-library/react': - specifier: ^14.3.1 - version: 14.3.1(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^16.3.3 + version: 16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/node': specifier: ^25.9.1 version: 25.9.5 @@ -739,32 +739,32 @@ importers: specifier: ^18.3.31 version: 18.3.31 '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + specifier: ^5.2.0 + version: 5.2.0(supports-color@10.2.2)(vite@7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 react: - specifier: 18.2.0 - version: 18.2.0 + specifier: 18.3.1 + version: 18.3.1 react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) rollup-plugin-preserve-directives: specifier: ^0.4.0 - version: 0.4.0(rollup@4.62.2) + version: 0.4.0(rollup@4.63.1) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) packages/lucide-react-native: devDependencies: @@ -781,11 +781,11 @@ importers: specifier: workspace:* version: link:../shared '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) '@testing-library/react': - specifier: ^14.3.1 - version: 14.3.1(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.3.3 + version: 16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.15 version: 15.7.15 @@ -793,16 +793,16 @@ importers: specifier: ^18.3.31 version: 18.3.31 '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + specifier: ^5.2.0 + version: 5.2.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 react: - specifier: ^18.3.1 + specifier: 18.3.1 version: 18.3.1 react-dom: - specifier: ^18.3.1 + specifier: 18.3.1 version: 18.3.1(react@18.3.1) react-native: specifier: ^0.76.9 @@ -811,17 +811,17 @@ importers: specifier: ^15.15.5 version: 15.15.5(react-native@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1) rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) packages/lucide-solid: devDependencies: @@ -845,37 +845,37 @@ importers: version: link:../shared '@rollup/plugin-babel': specifier: ^6.1.0 - version: 6.1.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/babel__core@7.20.5)(rollup@4.62.2)(supports-color@10.2.2) + version: 6.1.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/babel__core@7.20.5)(rollup@4.63.1)(supports-color@10.2.2) '@solidjs/testing-library': specifier: ^0.8.10 - version: 0.8.10(@solidjs/router@0.11.5(solid-js@1.9.14))(solid-js@1.9.14) + version: 0.8.10(@solidjs/router@0.11.5(solid-js@1.9.15))(solid-js@1.9.15) '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) babel-preset-solid: - specifier: ^1.9.12 - version: 1.9.12(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.14) + specifier: ^1.9.15 + version: 1.9.15(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.15) esbuild: - specifier: ^0.28.1 - version: 0.28.1 + specifier: ^0.28.2 + version: 0.28.2 jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 solid-js: - specifier: ^1.9.14 - version: 1.9.14 + specifier: ^1.9.15 + version: 1.9.15 typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vite-plugin-solid: - specifier: ^2.11.12 - version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + specifier: ^2.11.14 + version: 2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) packages/lucide-static: devDependencies: @@ -889,17 +889,17 @@ importers: specifier: workspace:* version: link:../../tools/rollup-plugins '@types/node': - specifier: ^22.20.1 - version: 22.20.1 + specifier: ^26.4.1 + version: 26.4.1 prettier: - specifier: ^2.8.8 - version: 2.8.8 + specifier: 3.9.6 + version: 3.9.6 rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@6.0.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) svgson: specifier: ^5.3.1 version: 5.3.1 @@ -908,7 +908,7 @@ importers: devDependencies: vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) packages/svelte: devDependencies: @@ -920,16 +920,16 @@ importers: version: link:../../tools/build-helpers '@sveltejs/package': specifier: ^2.5.8 - version: 2.5.8(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3) + version: 2.5.8(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3) '@sveltejs/vite-plugin-svelte': specifier: ^7.3.0 - version: 7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + version: 7.3.0(svelte@5.57.0(@typescript-eslint/types@8.69.0))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) '@testing-library/svelte': specifier: ^5.4.2 - version: 5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + version: 5.4.2(svelte@5.57.0(@typescript-eslint/types@8.69.0))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) '@tsconfig/svelte': specifier: ^5.0.8 version: 5.0.8 @@ -937,23 +937,23 @@ importers: specifier: ^7.1.0 version: 7.1.0 jsdom: - specifier: ^27.4.0 - version: 27.4.0(supports-color@10.2.2) + specifier: ^30.0.1 + version: 30.0.1 svelte: - specifier: ^5.56.9 - version: 5.56.9(@typescript-eslint/types@8.66.0) + specifier: ^5.57.0 + version: 5.57.0(@typescript-eslint/types@8.69.0) svelte-check: specifier: ^4.7.6 - version: 4.7.6(picomatch@4.0.5)(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3) + version: 4.7.6(picomatch@4.0.7)(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3) svelte-preprocess: specifier: ^6.0.5 - version: 6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.6.7)(postcss@8.5.23)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3) + version: 6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.9.1(supports-color@10.2.2))(postcss@8.5.27)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) packages/vue: devDependencies: @@ -967,47 +967,47 @@ importers: specifier: workspace:* version: link:../shared '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) '@testing-library/vue': specifier: ^8.1.0 - version: 8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) + version: 8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@6.0.3)) '@vitejs/plugin-vue': specifier: ^6.0.8 - version: 6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3)) + version: 6.0.8(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) '@vue/test-utils': specifier: 2.5.0 - version: 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) + version: 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@6.0.3)) rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-dts: - specifier: ^6.4.1 - version: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vite: specifier: ^7.3.6 - version: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + version: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vue: specifier: ^3.5.42 - version: 3.5.42(typescript@5.9.3) + version: 3.5.42(typescript@6.0.3) tools/build-font: dependencies: '@vercel/blob': - specifier: ^2.6.1 - version: 2.6.1 + specifier: ^2.8.0 + version: 2.8.0 fs-extra: - specifier: ^11.3.6 - version: 11.3.6 + specifier: ^11.4.0 + version: 11.4.0 minimist: specifier: ^1.2.8 version: 1.2.8 oslllo-svg-fixer: - specifier: ^5.0.0 - version: 5.0.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13) + specifier: ^6.0.1 + version: 6.0.1(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13) svgtofont: specifier: ^6.5.3 version: 6.5.3(@types/svg2ttf@5.0.1)(chokidar@3.6.0)(supports-color@10.2.2) @@ -1022,14 +1022,14 @@ importers: specifier: ^1.2.5 version: 1.2.5 '@types/node': - specifier: ^22.20.1 - version: 22.20.1 + specifier: ^26.4.1 + version: 26.4.1 tools/build-helpers: devDependencies: '@types/node': - specifier: ^22.20.1 - version: 22.20.1 + specifier: ^26.4.1 + version: 26.4.1 tools/build-icons: dependencies: @@ -1037,11 +1037,11 @@ importers: specifier: ^1.2.8 version: 1.2.8 prettier: - specifier: 2.7.1 - version: 2.7.1 + specifier: 3.9.6 + version: 3.9.6 svgo: - specifier: ^3.3.4 - version: 3.3.4 + specifier: ^4.1.0 + version: 4.1.0 svgson: specifier: ^5.3.1 version: 5.3.1 @@ -1053,40 +1053,41 @@ importers: specifier: ^1.2.5 version: 1.2.5 '@types/node': - specifier: ^22.20.1 - version: 22.20.1 + specifier: ^26.4.1 + version: 26.4.1 tools/rollup-plugins: dependencies: '@rollup/plugin-node-resolve': specifier: ^16.0.3 - version: 16.0.3(rollup@4.62.2) + version: 16.0.3(rollup@4.63.1) '@rollup/plugin-replace': specifier: ^6.0.3 - version: 6.0.3(rollup@4.62.2) + version: 6.0.3(rollup@4.63.1) esbuild: - specifier: ^0.28.1 - version: 0.28.1 + specifier: ^0.28.2 + version: 0.28.2 rollup: - specifier: ^4.62.2 - version: 4.62.2 + specifier: ^4.63.1 + version: 4.63.1 rollup-plugin-esbuild: specifier: ^6.2.1 - version: 6.2.1(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2) + version: 6.2.1(esbuild@0.28.2)(rollup@4.63.1)(supports-color@10.2.2) rollup-plugin-license: specifier: ^3.7.1 - version: 3.7.1(picomatch@4.0.5)(rollup@4.62.2) + version: 3.7.1(picomatch@4.0.7)(rollup@4.63.1) rollup-plugin-summary: specifier: ^3.0.1 - version: 3.0.1(rollup@4.62.2)(supports-color@10.2.2) + version: 3.0.1(rollup@4.63.1)(supports-color@10.2.2) rollup-plugin-visualizer: - specifier: ^6.0.11 - version: 6.0.11(rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3))(rollup@4.62.2) + specifier: ^7.1.1 + version: 7.1.1(rolldown@1.2.7)(rollup@4.63.1) packages: - '@acemir/cssom@0.9.31': - resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + '@11ty/gray-matter@2.1.0': + resolution: {integrity: sha512-fNdBOb3MgDz/1UCIoeY4wDuGbp+/3s5y6UrsyfMabECbh/CVycj7Er33JXqSxRwxrRKXcGE1Jipuq/1mODInsQ==} + engines: {node: '>=11'} '@actions/core@3.0.1': resolution: {integrity: sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==} @@ -1109,12 +1110,8 @@ packages: '@adobe/css-tools@4.5.0': resolution: {integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==} - '@algolia/abtesting@1.14.1': - resolution: {integrity: sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==} - engines: {node: '>= 14.0.0'} - - '@algolia/abtesting@1.21.2': - resolution: {integrity: sha512-uXj0rgk30EpsKvOpuS+R+1XFDrnm56hED1Lz56e8uBkZdKCxw99LS2U8eXBqAHYU8kpkbsnV1GC8velBG070Hg==} + '@algolia/abtesting@1.23.0': + resolution: {integrity: sha512-j45MBISstltys9QyQ4xf6quRiN1g7vMuwQL9VM4dx8YuRZvCQ173b9royZAx6iAbRX3IB1VnG1z//NuwyQ8jpQ==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.7': @@ -1137,195 +1134,142 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.48.1': - resolution: {integrity: sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==} + '@algolia/client-abtesting@5.57.0': + resolution: {integrity: sha512-JVFFujiZUCguk5tz3LZr4fTQxqpIrj4/Jw3SI7kMljSqtfLxYn/s/TWH0J2s4iNfsDpxPhgFGMotCpmDI4kZ8w==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.55.2': - resolution: {integrity: sha512-y7Epol8HcjlBxKXHhyhfFPFhm78B3P6x9cCbCyGTdxjsdVCptXCy5hpkZWxjGpnaLHvWsHS4QRF0TiBOLst2xg==} + '@algolia/client-analytics@5.57.0': + resolution: {integrity: sha512-6KqECK4ED3JJQEoDrQWnGPQzElA828xAD4qK5ceawNNyP/LcSvzAoLHjFkoTPksZ/kxj6VUtCRH+IHZesLltng==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.48.1': - resolution: {integrity: sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==} + '@algolia/client-common@5.57.0': + resolution: {integrity: sha512-uqpGF3oXYsoCbQq5d7BzNrNTfIfuvJyGP1CKvSW27T9boUg7KOwyxsAw1AX0a3jSW2HrYEJ/NN+Z4MiGivbpeQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.55.2': - resolution: {integrity: sha512-8Pxj2VVmpM2d+UZufnlTq7T1QIcYPVugLV5XC50PnHsV5uRM9CSoYkg2Y+CwqwRk2La0xK5QsfZ0obIU+9XftQ==} + '@algolia/client-insights@5.57.0': + resolution: {integrity: sha512-u5NboJVJXDEFplvNnqqX4CxkXPYysjJRj47hOSh9329H8kG5gFLKJBIiS5utMQ+GZm8xQl3Te7NInDk6elEADQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.48.1': - resolution: {integrity: sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==} + '@algolia/client-personalization@5.57.0': + resolution: {integrity: sha512-uzc0b2LmHAK9/QID4xeo35OG84AkZl4YewkCqawqAOGLjT2eZpM/OZx45ESygMHG30Ws+ZTSdluPtMJcUnrbWQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.55.2': - resolution: {integrity: sha512-9L4IpIYUqA63a7sw1trnHQGUvwiAjKz67nsgDnal98JGAc7wyposRb0Iag+eiMuyzFFaSHLe2/rGyIo+PafRBA==} + '@algolia/client-query-suggestions@5.57.0': + resolution: {integrity: sha512-dIAhnM6ue/ssa5PjgNfu4g8A4yTojl9ZOUzZU3wIaIKRerL2R/3Emuf9n/D6ICXXP167KC6XCeC7nliSw7cuSw==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.48.1': - resolution: {integrity: sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==} + '@algolia/client-search@5.57.0': + resolution: {integrity: sha512-2TTPTTKSJmCptvhCm4Xf3bBYMqZni+Pgc2hVdqc4l9wsBpSJNVTVIKpnd10OubUgkGcmppVDj1XQqYaf6EnPSQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.55.2': - resolution: {integrity: sha512-ZBm2ytY5EHFcj+kjNsXxMNO/TGlOHe2fBFXGKHJOM1bk1rAy4o2YI+d9oV/w/jrqx44pvJMJlc8X6vKnCuDgUQ==} + '@algolia/ingestion@1.57.0': + resolution: {integrity: sha512-W4JseHKt+pzOxlFV+T3MWEG0h4Z2Se5zjoXUD0ewlw8aOWMG/yjRdopUdLQsXULepB/My2tDuZjkwk2sMfsUrQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.48.1': - resolution: {integrity: sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==} + '@algolia/monitoring@1.57.0': + resolution: {integrity: sha512-BrxJVE0/eLinEPICCD7BKN/2xnt0nkjge70u8zzE2ISP3fuB3tjLgcwpanUycvlHBFLI4gK0l5ol54p6IYuR/Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.55.2': - resolution: {integrity: sha512-3FGVW/jDk7sdYwqa2NKnF/qXWcttc4bvGrwNbvqz3VoWSRv42CNvRk+3Y9QJFIUf1vY50hAuVWUoFKdyc8vaXA==} + '@algolia/recommend@5.57.0': + resolution: {integrity: sha512-Gc29jkeiLKlVfHvyrIgyUHHE+aYTdXEeLfK42rjr5/1TTVsYwUJz0XkvoIBIqfMjcDg6gXeHb1jTUZ0H+SYIlQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.48.1': - resolution: {integrity: sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==} + '@algolia/requester-browser-xhr@5.57.0': + resolution: {integrity: sha512-PIPnPN7MP3fp2VAi01BVXhCWmD366ZB2Hkq5TlYKtThd4KxUtMmaaNDpFgVCTXtSIqWVZLJntOHRvxg/sIPd8Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.55.2': - resolution: {integrity: sha512-JsG8LovDAYul5t8e533tZ3O1uZILxso5zsTtB7ONc5RJ8ACdTxAAC/jaOnsBNYb+x+STP7fzx/Iro55v5DNgoQ==} + '@algolia/requester-fetch@5.57.0': + resolution: {integrity: sha512-AX3RlOudXMdTwtwUqdAf5hAVLvXfOZZH1FZh6ALDdrhVLT0TtAIe48N6nYcWcTnwoTxK/wDIQqZ19IMjK8zJAA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.48.1': - resolution: {integrity: sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-search@5.55.2': - resolution: {integrity: sha512-5wDnoIfC75zJ2MSHv5SSzTlRL2z7jQMbqQ5jrzottuq2p3oBObv8pD/JpXWu8pRaimaxNr3/Bs/KZIGVXxJ7hg==} - engines: {node: '>= 14.0.0'} - - '@algolia/ingestion@1.48.1': - resolution: {integrity: sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==} - engines: {node: '>= 14.0.0'} - - '@algolia/ingestion@1.55.2': - resolution: {integrity: sha512-da+SC6ikpza98W7C5ChsKEQDvZc8PQLQ0sxmQ5yMRsHpdD3iPKnclJA6ViB5Nr5T9qOX+IDswC6AyqY4V3rtug==} - engines: {node: '>= 14.0.0'} - - '@algolia/monitoring@1.48.1': - resolution: {integrity: sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==} - engines: {node: '>= 14.0.0'} - - '@algolia/monitoring@1.55.2': - resolution: {integrity: sha512-Y8kEcPqCiIEeaGv83l9RRA09mfYECqAJHNnOyEtZc9UirI6XBMUyFVss/sSeYUiV/Lf30hkbWcl00V1uXsf86Q==} - engines: {node: '>= 14.0.0'} - - '@algolia/recommend@5.48.1': - resolution: {integrity: sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==} - engines: {node: '>= 14.0.0'} - - '@algolia/recommend@5.55.2': - resolution: {integrity: sha512-5zmobuCQqFZkx+84Nt+suL7vo6jTh2CfAs2ndDSeTS2QHvnzP8YEEGWtWftjyACI0cK/FuH8urWwCHP+d2j8TA==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-browser-xhr@5.48.1': - resolution: {integrity: sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-browser-xhr@5.55.2': - resolution: {integrity: sha512-qnGUUuWG66dRMnr33owLsrYIh9fHVxtU4R2rd3SpneAHuoAUcGbDOWNrj05glVU6M8yOqo9gQ22K8zpz0I8Xpg==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-fetch@5.48.1': - resolution: {integrity: sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-fetch@5.55.2': - resolution: {integrity: sha512-lKZ5uhafMvR7dWCJEyuaeyZitid1I3ICx+k0vGf5x/ktdIQvc7bndCiOPpmIDqUmN26FE3jTehkAzSqee95G2Q==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-node-http@5.48.1': - resolution: {integrity: sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-node-http@5.55.2': - resolution: {integrity: sha512-Zc90xvKWUvxcNicvvTO9Pr/hT2TAnkixOIzJm/KMj5Ptm2pKjk71ngTsdkbRtJQvhZ2Kr9N1YdIjLrNHB5P2xw==} + '@algolia/requester-node-http@5.57.0': + resolution: {integrity: sha512-cWZc1dKb7wy9/wPpwMtL1y89gK2G7y2A47Coa7zwf1ydtIeJm4+S+XxoQ2b/ZRiQnrC1YHavLjYUPDCdnT7Khg==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2102.19': - resolution: {integrity: sha512-cj4tzUMiloLTg5rNf17E8MsvIxCWYoBiBsaj7ns6dgXqT9XCeG+J0TA2t1M+N9uuqfeLd22U/rYoCkADmcircQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/architect@0.2201.7': + resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/core@21.2.19': - resolution: {integrity: sha512-dtpJMQBz5nhkcIogPmXP/aT2Ak8m/wLRPOSTI/g4vSJSuGiI53PgtWq4/wfQga6E6wdM2XWsblAE89d8w5heQQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/core@22.1.7': + resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 peerDependenciesMeta: chokidar: optional: true - '@angular-devkit/schematics@21.2.19': - resolution: {integrity: sha512-AG3Fzh9wJCmKBfxUQOUWaEHMj5Gq2O+Msf1z52aDSxbVhs5/iSQcXGPv/DLdAXu7d4xmQhLouNe9Glaq2omDyw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/schematics@22.1.7': + resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-eslint/builder@21.4.0': - resolution: {integrity: sha512-3kgGmrVaCYbLtDjC8g4BmMBbdz4thsOB8/NYly8JtXM8EuDZEk5Pz6VTRpJR02ARprwayraTTmhyvq6OGBlQ9w==} + '@angular-eslint/builder@22.2.0': + resolution: {integrity: sha512-X5r6JG2VC0aZBayHM9tJYZIF5KWBo2opC4uHndhZqQqb3TmX/KYlgbMlTC4HIAXQlTXfTNbjHW8mhhAwGOaNMA==} peerDependencies: - '@angular/cli': '>= 21.0.0 < 22.0.0' - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + eslint: ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/bundled-angular-compiler@21.4.0': - resolution: {integrity: sha512-/3H4BPbQ1BHJkkrUsfusZtmHc+qiFWBBZ9UDPWah4xZMjflexOK9U4GYeH7nMjcuyqFnIlMMeJJNwNLGt/hmdg==} + '@angular-eslint/bundled-angular-compiler@22.2.0': + resolution: {integrity: sha512-JYjUXcnZCMg23HXvHnaGcMvVF0WP9b/n9I9Oz3zY+lH2A2HkcCUYnTg3lhDghZfCcermNaz+JvXp88NX+cgA6A==} - '@angular-eslint/eslint-plugin-template@21.4.0': - resolution: {integrity: sha512-sJEHx2WYnvOgPpzP1eHnUdRS06zgKmRxbiIR0JiCcaSen5iv1HlsMieXy//FS9TtNW+abHOy4UtDuGuSPflPFA==} + '@angular-eslint/eslint-plugin-template@22.2.0': + resolution: {integrity: sha512-v/X8/QJXWXaOkU8chmIPWu/86JAca5Tje6EFIf3G2VOxxuGzDpCPPuAKLBclhK+dtFHuJnqKYKZOfcdXqzj9eg==} peerDependencies: - '@angular-eslint/template-parser': 21.4.0 - '@typescript-eslint/types': ^7.11.0 || ^8.0.0 - '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + '@angular-eslint/template-parser': 22.2.0 + '@typescript-eslint/types': ^8.0.0 + '@typescript-eslint/utils': ^8.0.0 + eslint: ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/eslint-plugin@21.4.0': - resolution: {integrity: sha512-mow2DMj+xBvGl5t7jzC34R8YfbHbaGNyCNFzpovtl9qc0JbuqLyg6htmt8xb05f8ZjATOr4nz0ESt6HV4c51hw==} + '@angular-eslint/eslint-plugin@22.2.0': + resolution: {integrity: sha512-ceA/aluyI7LKii+IaIjhoVCqJ3oPKC+3kqUf/DpWrgVsCbbLoW+iXCQVqMnlDZG1lagpLaqe6cIbVaH897yjPA==} peerDependencies: - '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + '@typescript-eslint/utils': ^8.0.0 + eslint: ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/schematics@21.4.0': - resolution: {integrity: sha512-crD6Hfxs7x5bN9FCqTZI7uVSiGvprfCS3MCPOpyIQl87bRr/9aNhnicJ3ROUHv+2A713BgPHIgiCII/bxzrfPw==} - peerDependencies: - '@angular/cli': '>= 21.0.0 < 22.0.0' + '@angular-eslint/schematics@22.2.0': + resolution: {integrity: sha512-KDtjpkAUOO+wK9J5HtRQtS5lwn5UHGMLEPVFznwrK+5hrNGN9LzfAzDhAHA9y+YoplqGK/Romm4v0384e+BiWw==} - '@angular-eslint/template-parser@21.4.0': - resolution: {integrity: sha512-BaUSLSyS+43fzDoJkTMkGqNdCXq3fGnUZsfXTmrlZPJf5AYFbgAlAPGZXDJyoNWw43fux+DafdlrlKcYUSgSIw==} + '@angular-eslint/template-parser@22.2.0': + resolution: {integrity: sha512-RCDEzYRFIV8UPWsAgj8v8ryKwXq+wAmEHqMJRqMdAGXRWrxziWvCxI7nCsj74u/11GXZKSAz3SQmwfkdWiZEQA==} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + eslint: ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/utils@21.4.0': - resolution: {integrity: sha512-7pi+Ga7QmdH5Ig/diau6fR5L4yubgKr9TOjdCg7OeuE/zo0O3osTCNT6JOodzS/iQM1kSCJFDoIBKFeUOttiNw==} + '@angular-eslint/utils@22.2.0': + resolution: {integrity: sha512-hAAMlPhaoLI0W4CmICrLp58Jm0pMs4OBL/DYvjFu7cdoey0fRMRBiHV1Fw5lT1oHtLjsFj0n6TzvpbjGYkaYvw==} peerDependencies: - '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + '@typescript-eslint/utils': ^8.0.0 + eslint: ^9.0.0 || ^10.0.0 typescript: '*' - '@angular/build@21.2.19': - resolution: {integrity: sha512-emy9mqrTXAwhZzcvx8MaHyz+cUR06PVGxnqy91+bpDxPP9S5x67sPoOkY9y/ETFFhRpB5ULlUxyq0eN/pi6QOg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular/build@22.1.7': + resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler': ^21.0.0 - '@angular/compiler-cli': ^21.0.0 - '@angular/core': ^21.0.0 - '@angular/localize': ^21.0.0 - '@angular/platform-browser': ^21.0.0 - '@angular/platform-server': ^21.0.0 - '@angular/service-worker': ^21.0.0 - '@angular/ssr': ^21.2.19 + '@angular/compiler': ^22.0.0 + '@angular/compiler-cli': ^22.0.0 + '@angular/core': ^22.0.0 + '@angular/localize': ^22.0.0 + '@angular/platform-browser': ^22.0.0 + '@angular/platform-server': ^22.0.0 + '@angular/service-worker': ^22.0.0 + '@angular/ssr': ^22.1.7 + istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 - ng-packagr: ^21.0.0 + ng-packagr: ^22.0.0 postcss: ^8.4.0 + rollup: ^4.0.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: '>=5.9 <6.0' + typescript: '>=6.0 <6.1' vitest: 4.1.10 peerDependenciesMeta: '@angular/core': @@ -1340,6 +1284,8 @@ packages: optional: true '@angular/ssr': optional: true + istanbul-lib-instrument: + optional: true karma: optional: true less: @@ -1348,43 +1294,45 @@ packages: optional: true postcss: optional: true + rollup: + optional: true tailwindcss: optional: true vitest: optional: true - '@angular/cli@21.2.19': - resolution: {integrity: sha512-i78NzvoNonAY17QgzSmqrYnXHmEfraLv4wZ/o/m3efxuz61ZJ+5X/PsCeAhbwBvQfRrPRQaJV2tK9vGjHa+U6w==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular/cli@22.1.7': + resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@21.2.19': - resolution: {integrity: sha512-Rvo/VXI0kUmfQT7+OeAjv526OJlf/WrLnJq1Tz84Jkyv9bs9SOMTCT6m4+boo8gxVNdrcxvGU3Q0o2jZzKceSg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/common@22.1.5': + resolution: {integrity: sha512-KgB+MTDotlTn67YK4sCTNFLja+G+EMCqHo5bB1cvRKw7Gd9AtAi5kgDmYzMk7ftJ9qJ2O30zXR56Hpw37J2CTQ==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/core': 21.2.19 + '@angular/core': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.2.19': - resolution: {integrity: sha512-QxWqUvhTWgyYPPkfpupOUIEa3Y5cbzMilaFgRNpkvFy6teARw5Izsd7RxUbj3Tp3xJOi1MtumNmkxLxmv3iv7A==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/compiler-cli@22.1.5': + resolution: {integrity: sha512-XyeLlCqngUiZK8EMQo2DFfDxDoFdlsOe98eK7++N9Cs7qETTaMM3mu8iZbT2o6KhEwzjabW+mqipts1/ecEhyQ==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.2.19 - typescript: '>=5.9 <6.1' + '@angular/compiler': 22.1.5 + typescript: '>=6.0 <6.1' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.2.19': - resolution: {integrity: sha512-vuF5i1t14ftJiHXVVLgDYLWkT99QuajphcUHy1VZaMX3FiqSGXRV62g+R2RMxL0OJ5C1ai8xTHKPx9n1lQFyFg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/compiler@22.1.5': + resolution: {integrity: sha512-GvM0oNCuI09Up5Lk0ZQCX5yA2cGyHYB/rZsa/EGTnzwuxgLDlhOOa19QaVaoxDCo9vO43Ix9rG7SLppEv+qd1w==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} - '@angular/core@21.2.19': - resolution: {integrity: sha512-PVoXD1kBexOJLkFzKx2zBY/0oZJXGru0eGn2hu0q5n3vkZlYsR1yRolfGenK1gZE48Qibiw/ttg/X/pAIPEZGg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/core@22.1.5': + resolution: {integrity: sha512-uiL+xVL4264NEuc3E5ILd6meSv9I4Xt82VQHvYlAVYlcjHlWY49yVe0/apzncUOGxUKzvK8/GDbyFEH7WfJYFw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/compiler': 21.2.19 + '@angular/compiler': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -1393,130 +1341,129 @@ packages: zone.js: optional: true - '@angular/forms@21.2.19': - resolution: {integrity: sha512-tEw8cz2UU6VSB+ReJN86k87nRdLRXGi+8SZhoRl2dFu2iReIO3S6kJAVTH7Y9kdrokqTPhWG+KNEzWgqhdjXOg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/forms@22.1.5': + resolution: {integrity: sha512-E7pDEKtSvO1MNw222ZcvphzT4GAQ9D725v2Rq7ft8orT2qvHS6RlVnEc5ioPDhYTAD0HmbwDmutxkcuxqc16VA==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/common': 21.2.19 - '@angular/core': 21.2.19 - '@angular/platform-browser': 21.2.19 + '@angular/common': 22.1.5 + '@angular/core': 22.1.5 + '@angular/platform-browser': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser@21.2.19': - resolution: {integrity: sha512-YMguYVhdkV8tr9MvbN+VpMjbdmsYq6g12M9WPvAYM51BkL2iREbWeoXDGmfCw9G0it6+0pMdgrSPFFUFuOqpAQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/platform-browser@22.1.5': + resolution: {integrity: sha512-xRX7TvHzFcur5bhZUqT7QPkezcSuWRzcltcsrqh3UsZnEJ2p+olilFyLq5yAneO13hffNifFkxngoSxVwKwnHw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/animations': 21.2.19 - '@angular/common': 21.2.19 - '@angular/core': 21.2.19 + '@angular/animations': 22.1.5 + '@angular/common': 22.1.5 + '@angular/core': 22.1.5 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.2.19': - resolution: {integrity: sha512-UVyUIj04LRBoi4KfvxeZYPohzh80nSqamxpb8uzsYFKVSYdZSHDiFaE6OOzj0YST1rs2/LC92cPE2TY7IQIdew==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/platform-server@22.1.5': + resolution: {integrity: sha512-v4T1uBwsbx2jNjOrGHDp0UVfOYOFBHABb+WwJLCCDxi2XZT+XaMHpSryq+DuO+CDUfq+OStCW1V4TzIuIiPV6A==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/common': 21.2.19 - '@angular/compiler': 21.2.19 - '@angular/core': 21.2.19 - '@angular/platform-browser': 21.2.19 + '@angular/common': 22.1.5 + '@angular/compiler': 22.1.5 + '@angular/core': 22.1.5 + '@angular/platform-browser': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.2.19': - resolution: {integrity: sha512-cKO/aq1xEMvgS29jFUc/Y3KsgEzHnwOw6sEL+UQZkZTmGD5YrYv8Yvj05GDMEUYbvDxBd5DixVVEbH38lyQKqA==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@angular/router@22.1.5': + resolution: {integrity: sha512-RYgL2iTGpMFcqZtXjcjxGVqGraDfOdk/epbLK8z/vy5cI+W2uVdiu5ait7xhv82KoaWT8lUU3sDc4jdI17qHcg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/common': 21.2.19 - '@angular/core': 21.2.19 - '@angular/platform-browser': 21.2.19 + '@angular/common': 22.1.5 + '@angular/core': 22.1.5 + '@angular/platform-browser': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@asamuzakjp/css-color@4.1.2': - resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} + '@asamuzakjp/css-color@6.0.7': + resolution: {integrity: sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==} + engines: {node: ^22.13.0 || >=24.0.0} - '@asamuzakjp/dom-selector@6.8.1': - resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} + '@asamuzakjp/dom-selector@8.3.2': + resolution: {integrity: sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==} + engines: {node: ^22.13.0 || >=24.0.0} - '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - - '@astrojs/compiler-binding-darwin-arm64@0.3.1': - resolution: {integrity: sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw==} + '@astrojs/compiler-binding-darwin-arm64@0.4.0': + resolution: {integrity: sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@astrojs/compiler-binding-darwin-x64@0.3.1': - resolution: {integrity: sha512-GF2kIxjpPDLsn94zbZNMsxEmkU828QqnmM7kiQJnaooS3jmI+I7kk6+oI6EpwOsK3femCMdcm+wmOsEqtGrmjQ==} + '@astrojs/compiler-binding-darwin-x64@0.4.0': + resolution: {integrity: sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': - resolution: {integrity: sha512-XJL3SDmOtVrqFhCirNcHwE91+IesJqlgNo23I4qW9QUYfwzm/TBZuH61fgqsb1ttgR1mMYz6ooPWs0JDhwMqpQ==} + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': + resolution: {integrity: sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': - resolution: {integrity: sha512-xqE8BVbDoBueK/B47w30PtkVofUWJKGkwoMVE+EOMLf11rnoANxIAdA9FPqY+rng4oNI5ndHGsri1yPj2k8vZQ==} + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': + resolution: {integrity: sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': - resolution: {integrity: sha512-1y0StU1qiCuDFH3rmbRJXcxdfHxFPrES1Rd+RLffosvUR7I2cH5SF5SFnBN9vXpzpkmyElZm3Yr47iJBPN7vVA==} + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': + resolution: {integrity: sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-x64-musl@0.3.1': - resolution: {integrity: sha512-16q0fYf7kpbmdObZEeZJEup8hQv/whgNwVjrSvT8umrKwLDSnNIWiQpm09lQQu6bweZB0XyIvHwlPitvJhC+hg==} + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': + resolution: {integrity: sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@astrojs/compiler-binding-wasm32-wasi@0.3.1': - resolution: {integrity: sha512-cB456shIwDv/PrVT+2QG7LFndpHkVge5HjqADKZgGaAc9JHVktCtjSrcdkRQ+3tbkPazNKaTLRjXLIiz2NIx9g==} + '@astrojs/compiler-binding-wasm32-wasi@0.4.0': + resolution: {integrity: sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': - resolution: {integrity: sha512-ur/9+If/yTE69mmeX5MqSZndL0HOyx67GeNZUy3N7wVdWpLz9UTJXwyWS4UR2PUQHitghjsM5xoX0Ge56WRVQQ==} + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': + resolution: {integrity: sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': - resolution: {integrity: sha512-k0W+kDBzDkNZOqu4kElDvCOIbKw5Ut9S1WZ1Krj3KTgNuBERNKXsMMsRLLcbgfdMdbe7bTekQLshZrrvmYpmwA==} + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': + resolution: {integrity: sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@astrojs/compiler-binding@0.3.1': - resolution: {integrity: sha512-DaAUj29AIBU2XdJ8uwcab8lW5O2pk9pY8AXkcMw0sw77nVa3oeTYRcO+Dvbbpoexf6ThMc0FMWYCQ/wN1/T7oQ==} + '@astrojs/compiler-binding@0.4.0': + resolution: {integrity: sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==} engines: {node: ^20.19.0 || >=22.12.0} - '@astrojs/compiler-rs@0.3.1': - resolution: {integrity: sha512-aT7xkgsbNoS6nriY5qKpbihK43slFHO41iqgHCTdOvn1ifaQxLCc5yXy+6GzAtiafoaC1zA7OwVXCXMsvUZOkg==} + '@astrojs/compiler-rs@0.4.0': + resolution: {integrity: sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==} engines: {node: '>=22.12.0'} '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} - '@astrojs/internal-helpers@0.10.1': - resolution: {integrity: sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q==} + '@astrojs/internal-helpers@0.11.0': + resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} - '@astrojs/markdown-satteri@0.3.4': - resolution: {integrity: sha512-6Lvt/bQZEBW+zzdhPblvfZEy5PGEYJaUsUqaCgwHeRPxZJL1gc9I+DRLKWJjjYTWDzVUTzXlMq4WwSK+X34CVw==} + '@astrojs/markdown-satteri@0.4.0': + resolution: {integrity: sha512-wykOOW9KsUVcZweOpY/CeXpdKcCKZy6fQbdcteWFuI75+sQCiqxYM7VKsGa5b+aGl3cYQscFY37rsbbyal5MRw==} '@astrojs/prism@4.0.2': resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} @@ -1526,8 +1473,8 @@ packages: resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@astrojs/ts-plugin@1.10.10': - resolution: {integrity: sha512-US1czRBD43THzzwSyWJwPRX9VDBYbHmJKnpJAsmqT7Uun5UYvcMNNOfDyZxp5bKTNiApvA8HrjwUhYso8CE2Iw==} + '@astrojs/ts-plugin@1.10.11': + resolution: {integrity: sha512-W7Fmbaw81mcecFgJWgfY8FX7G7nCiooiakgd8ZAVprglEo81W2HzXh2I+okmAorCZLICl4PeEELkpGzrEXze4g==} '@astrojs/yaml2ts@0.2.4': resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} @@ -1540,30 +1487,50 @@ packages: resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} + '@babel/code-frame@8.0.0': + resolution: {integrity: sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/compat-data@7.29.7': resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@8.0.0': + resolution: {integrity: sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/core@7.29.7': resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + '@babel/core@8.0.1': + resolution: {integrity: sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0': + resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} + engines: {node: ^22.18.0 || >=24.11.0} '@babel/helper-annotate-as-pure@7.29.7': resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@8.0.0': + resolution: {integrity: sha512-NSpMkMsvvZqzThJ0p1B02cbtA2ObEyfBvq950bmNkyxsxvcxwhvvCB036rKhlEnuBBo30bOrk13u3FzlKSoRrw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-compilation-targets@7.29.7': resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@8.0.0': + resolution: {integrity: sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-create-class-features-plugin@7.29.7': resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} engines: {node: '>=6.9.0'} @@ -1585,6 +1552,10 @@ packages: resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@8.0.0': + resolution: {integrity: sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-member-expression-to-functions@7.29.7': resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} engines: {node: '>=6.9.0'} @@ -1635,14 +1606,26 @@ packages: resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@8.0.0': + resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.4': + resolution: {integrity: sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-option@7.29.7': resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@8.0.0': + resolution: {integrity: sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-wrap-function@7.29.7': resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} engines: {node: '>=6.9.0'} @@ -1651,11 +1634,20 @@ packages: resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} + '@babel/helpers@8.0.0': + resolution: {integrity: sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/parser@7.29.8': resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@8.0.4': + resolution: {integrity: sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==} engines: {node: '>=6.9.0'} @@ -2001,8 +1993,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.29.7': - resolution: {integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==} + '@babel/plugin-transform-modules-systemjs@7.29.8': + resolution: {integrity: sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2115,8 +2107,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.29.7': - resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==} + '@babel/plugin-transform-regenerator@7.29.8': + resolution: {integrity: sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2145,8 +2137,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.29.7': - resolution: {integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==} + '@babel/plugin-transform-spread@7.29.8': + resolution: {integrity: sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2236,14 +2228,26 @@ packages: resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + '@babel/template@8.0.0': + resolution: {integrity: sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} engines: {node: '>=6.9.0'} + '@babel/traverse@8.0.4': + resolution: {integrity: sha512-bZnmqzGG8UZneG1lLxBoWIH0G6Gr1D846Yu4/3XnY6FhCndMR49u26nTY08u/dAxWmLWF9vGQOuC+84FfIUoeg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/types@7.29.8': resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} + '@babel/types@8.0.4': + resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==} + engines: {node: ^22.18.0 || >=24.11.0} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -2251,52 +2255,56 @@ packages: '@blazediff/core@1.9.1': resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==} - '@bruits/satteri-darwin-arm64@0.9.5': - resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + + '@bruits/satteri-darwin-arm64@0.10.5': + resolution: {integrity: sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==} cpu: [arm64] os: [darwin] - '@bruits/satteri-darwin-x64@0.9.5': - resolution: {integrity: sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==} + '@bruits/satteri-darwin-x64@0.10.5': + resolution: {integrity: sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==} cpu: [x64] os: [darwin] - '@bruits/satteri-linux-arm64-gnu@0.9.5': - resolution: {integrity: sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==} + '@bruits/satteri-linux-arm64-gnu@0.10.5': + resolution: {integrity: sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==} cpu: [arm64] os: [linux] libc: [glibc] - '@bruits/satteri-linux-arm64-musl@0.9.5': - resolution: {integrity: sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==} + '@bruits/satteri-linux-arm64-musl@0.10.5': + resolution: {integrity: sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==} cpu: [arm64] os: [linux] libc: [musl] - '@bruits/satteri-linux-x64-gnu@0.9.5': - resolution: {integrity: sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==} + '@bruits/satteri-linux-x64-gnu@0.10.5': + resolution: {integrity: sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==} cpu: [x64] os: [linux] libc: [glibc] - '@bruits/satteri-linux-x64-musl@0.9.5': - resolution: {integrity: sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==} + '@bruits/satteri-linux-x64-musl@0.10.5': + resolution: {integrity: sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==} cpu: [x64] os: [linux] libc: [musl] - '@bruits/satteri-wasm32-wasi@0.9.5': - resolution: {integrity: sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==} + '@bruits/satteri-wasm32-wasi@0.10.5': + resolution: {integrity: sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@bruits/satteri-win32-arm64-msvc@0.9.5': - resolution: {integrity: sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==} + '@bruits/satteri-win32-arm64-msvc@0.10.5': + resolution: {integrity: sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==} cpu: [arm64] os: [win32] - '@bruits/satteri-win32-x64-msvc@0.9.5': - resolution: {integrity: sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==} + '@bruits/satteri-win32-x64-msvc@0.10.5': + resolution: {integrity: sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==} cpu: [x64] os: [win32] @@ -2319,14 +2327,14 @@ packages: '@codemirror/autocomplete@6.20.3': resolution: {integrity: sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g==} - '@codemirror/commands@6.10.4': - resolution: {integrity: sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg==} + '@codemirror/commands@6.11.0': + resolution: {integrity: sha512-/K4Rl5BN0OtTiPWmJCdqODu38XnDMsDxKY5rgrPnCkutPTJf2wVbkoixLfealF5Kwse/s8P8M5jAiURiwSwnFA==} '@codemirror/lang-css@6.3.1': resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==} - '@codemirror/lang-html@6.4.11': - resolution: {integrity: sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==} + '@codemirror/lang-html@6.4.12': + resolution: {integrity: sha512-pw2ReWKUqSkbvh76RAT4NYxiogRu+PWkR2ukAwO9uOgrm8uipkzjtKKtNpyeAQwHOqxEeSvAXZ6vr3AfyB9y/w==} '@codemirror/lang-javascript@6.2.5': resolution: {integrity: sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==} @@ -2337,11 +2345,11 @@ packages: '@codemirror/lint@6.9.7': resolution: {integrity: sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==} - '@codemirror/state@6.7.1': - resolution: {integrity: sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==} + '@codemirror/state@6.7.2': + resolution: {integrity: sha512-U3RiPX62Wl/Gx4ftQ7UxLlloSfsFTQqKa+7vFBYteZGCzkp6oBqcsD7iSwniWRGobCAmDcwZSY+Six3+3ztdfg==} - '@codemirror/view@6.43.6': - resolution: {integrity: sha512-EVunGSYN1wz1p75WY1s3Xg7t3i8Yol0kGZGizNdX9BUFgMFILYVe8/u6EVpo7Ff5PwbZuILb4QAq7IZoKzIEQA==} + '@codemirror/view@6.43.11': + resolution: {integrity: sha512-2+esucbQX6wB2JYi1eDvdCPFTA31BN8oSy6xCmk3G6CloV11yOvEjYk+gH7kLrP0MuHG94E8WDhjs5oMiu3+Wg==} '@codesandbox/nodebox@0.1.8': resolution: {integrity: sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==} @@ -2353,36 +2361,36 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@cspell/cspell-bundled-dicts@10.0.1': - resolution: {integrity: sha512-WvkSDNX4Uyyj/ZgbPO6L38iFNMfK1EqsH1FteRiI2qLz6QZMXRFrIt12OqiWIplzZDDaVpBH9FCJOPJll0fjCQ==} + '@cspell/cspell-bundled-dicts@10.2.0': + resolution: {integrity: sha512-pNdBzc3+njM1A8cp0t/az+FbwBoiIzKCJ15gHVdEtynGOH+GLKzpbNeRAXe3ci+BYUjQQXlQrCKalXaa+ZXVtQ==} engines: {node: '>=22.18.0'} - '@cspell/cspell-json-reporter@10.0.1': - resolution: {integrity: sha512-/nes1RGILec3WCBcoMOd0byNTBtnJuPaVz/+ZzqYkLtY7x58VMcBG5kyP6hPyN8cIwjRADE/SR43gwdXuqk/FA==} + '@cspell/cspell-json-reporter@10.2.0': + resolution: {integrity: sha512-2iKTU/UPkSV9O4EzWSFreqM4/RTLoYnvCA9dmh9hJnmarYu/eDJk1CIVu+HgMlOiyCI3cgVux+649vJ0T2dHrA==} engines: {node: '>=22.18.0'} - '@cspell/cspell-performance-monitor@10.0.1': - resolution: {integrity: sha512-9tVcHXwRnbazUv4WSG0h3MqV4+LgmLNgSALAQUflPPW0EMxTf7C4Dmv9cgxJyCEQrdnVKCr58nPPaahhz9LJUg==} + '@cspell/cspell-performance-monitor@10.2.0': + resolution: {integrity: sha512-Wzh984VNI+nkNiVSC4yXbzdVhVnxtxcvtCmslVhk7wc0nmwN5r9M4TQ1k5tSOihVMJn4iV3+fy3TUjkrSsppFA==} engines: {node: '>=22.18.0'} - '@cspell/cspell-pipe@10.0.1': - resolution: {integrity: sha512-HPeXMD9AZ3V/qPkvQaPcak+C7cJ2z7JTHN8smd6J8L2aThLRky2cHc2OyeaHPSHB7WA47b4z2n5u5nawZhv5VQ==} + '@cspell/cspell-pipe@10.2.0': + resolution: {integrity: sha512-BlA7k9kjgH7LxA3DZGRvOo2Cs9wArR0ux6gvmweoyD+zbOsZquTfrCwnU9IoctTy7HjuYrsE7mvCCN6xP11E7g==} engines: {node: '>=22.18.0'} - '@cspell/cspell-resolver@10.0.1': - resolution: {integrity: sha512-PIzkZHD1fGUQx1XteK2d1iQ0Mzq/maYcoB4jkvAiiR6WqP3MWYNKFdI9z+R5pOq5KgMfW+5Ig1q0oSR6h8irlA==} + '@cspell/cspell-resolver@10.2.0': + resolution: {integrity: sha512-m94I4iTzWaklOr+eNxy/kgpcJYS9dMzeEsZKV6uprVCPNLNn63Ic+ChadNErwV2ii3tiNLAkn8VJy84oe2h1YA==} engines: {node: '>=22.18.0'} - '@cspell/cspell-service-bus@10.0.1': - resolution: {integrity: sha512-y6NcIGP2IdXaBL4PVH8vxsr7K27wzz3Ech87UtUtrDSXAiVEOvXgAIknEOUVp59rTlUE8Rn4IRURC6f/hgMyfw==} + '@cspell/cspell-service-bus@10.2.0': + resolution: {integrity: sha512-r061UxqmEwZK+XiW0dnbE6r7nKHNavQJ4PVw2zqzBVtcFj9YU9LCpOZx4mL49IlmCWxy7jf2jAD9w8nFPn1pWg==} engines: {node: '>=22.18.0'} - '@cspell/cspell-types@10.0.1': - resolution: {integrity: sha512-kLgLShnWADDVreKC63pBrWkcvxgZzFIfO34Jhx/SWfuOIA3cD8AXT+HjyuLfoGJ7mUb58hv2kUziKzEy4INb1w==} + '@cspell/cspell-types@10.2.0': + resolution: {integrity: sha512-tkmOVCm2XzPUipa8eIu88ShRogjJ5RIen3y9kzBn51re5Nmjw4HDWRLbeBP1WTGFYR7bMi2h0ybnH0BuBCA29g==} engines: {node: '>=22.18.0'} - '@cspell/cspell-worker@10.0.1': - resolution: {integrity: sha512-L2bJerfuYOls2wEknm8FmynLtj/G7O4UqX9I/HznRggEW6i2yZIxagDetpVDNowpyavNHJ3SJtUFiyMiZc16Sw==} + '@cspell/cspell-worker@10.2.0': + resolution: {integrity: sha512-6yom68ucNQIUA56gEsXtoquM55AeQBKaMe/a35a91HIvB7AyhrTRTTeheuE/Gl2FUyszHecdewC6sbYELaAsvA==} engines: {node: '>=22.18.0'} '@cspell/dict-ada@4.1.1': @@ -2400,8 +2408,8 @@ packages: '@cspell/dict-companies@3.2.12': resolution: {integrity: sha512-mjiz/N3zWOCsz5VfwMUydSl7uW0OU9H2PnbCNc3RV44Vj6Q59CSp6EYGSGZQxrXU1gpsuZUrwr6QCjNjFOOg5A==} - '@cspell/dict-cpp@7.0.2': - resolution: {integrity: sha512-dfbeERiVNeqmo/npivdR6rDiBCqZi3QtjH2Z0HFcXwpdj6i97dX1xaKyK2GUsO/p4u1TOv63Dmj5Vm48haDpuA==} + '@cspell/dict-cpp@7.1.0': + resolution: {integrity: sha512-rcjycobioQUd9Jm/Y1n8U+sq6ytpZ0iV8AYIo+vyEFfutC5x7g6hL6Fh3bCdh6IporGHRqfEutGK/4sfopD2ZA==} '@cspell/dict-cryptocurrencies@5.0.5': resolution: {integrity: sha512-R68hYYF/rtlE6T/dsObStzN5QZw+0aQBinAXuWCVqwdS7YZo0X33vGMfChkHaiCo3Z2+bkegqHlqxZF4TD3rUA==} @@ -2430,14 +2438,14 @@ packages: '@cspell/dict-elixir@4.0.8': resolution: {integrity: sha512-CyfphrbMyl4Ms55Vzuj+mNmd693HjBFr9hvU+B2YbFEZprE5AG+EXLYTMRWrXbpds4AuZcvN3deM2XVB80BN/Q==} - '@cspell/dict-en-common-misspellings@2.1.13': - resolution: {integrity: sha512-00rpydUxKNWY2xxrSx+h46aNWLvbkJdd57SsnEFt24fbs1fROhXZ6XSQu+gQz/zNuiCvFi4Ro3ej9DLbEdWQmQ==} + '@cspell/dict-en-common-misspellings@2.2.0': + resolution: {integrity: sha512-5PmCHv+AhY0LVNo3bE1FdRKMmw1esKj83GPwLymnVPYNtlI2Jf6y27EjC0azg4zny5keWmku0GQiMf55Fi+qeA==} - '@cspell/dict-en-gb-mit@3.1.25': - resolution: {integrity: sha512-zGODptk24CMrXi49ieG2SUm94CKxEsVF0dYNF+1ZYH0MSsQDZ/PKDlrrbvtBqSupKdPSj0Z9sjOmMNfHHW9ZSg==} + '@cspell/dict-en-gb-mit@3.1.26': + resolution: {integrity: sha512-F9Y/45+1oIPzfL/pyWLp4kzX+vddHPAYpIpIF+45bdc65AebeEiQHKzSmKgGGTd3qbQc3fATw2kAFdLryiQpjQ==} - '@cspell/dict-en_us@4.4.36': - resolution: {integrity: sha512-2yOhI/+7d1DbfvMljGW4jw8pLqDEsVmnvUXBOCFXtLU2BWgQkrqOJDCNseYjEiEbTp0OtdrWEWWPFSP1TNugQw==} + '@cspell/dict-en_us@4.4.37': + resolution: {integrity: sha512-rMKyPrk2SKmDU+Bj0U0ixsv4Du93oijwovc8XlUin0zwKOJZb0/PFG5Df4P8CrM2CrLeovpaFvhoI98DigxBLw==} '@cspell/dict-filetypes@3.0.18': resolution: {integrity: sha512-yU7RKD/x1IWmDLzWeiItMwgV+6bUcU/af23uS0+uGiFUbsY1qWV/D4rxlAAO6Z7no3J2z8aZOkYIOvUrJq0Rcw==} @@ -2460,8 +2468,8 @@ packages: '@cspell/dict-git@3.1.0': resolution: {integrity: sha512-KEt9zGkxqGy2q1nwH4CbyqTSv5nadpn8BAlDnzlRcnL0Xb3LX9xTgSGShKvzb0bw35lHoYyLWN2ZKAqbC4pgGQ==} - '@cspell/dict-golang@6.0.26': - resolution: {integrity: sha512-YKA7Xm5KeOd14v5SQ4ll6afe9VSy3a2DWM7L9uBq4u3lXToRBQ1W5PRa+/Q9udd+DTURyVVnQ+7b9cnOlNxaRg==} + '@cspell/dict-golang@6.0.27': + resolution: {integrity: sha512-rRDb2JL8EefaezHGTEclKXCs4eMOS0q/datk94Lm7KQOhlGlzS9FDVZiR1/guh0o+iJCmejQuf5NR2FQeQSWsg==} '@cspell/dict-google@1.0.9': resolution: {integrity: sha512-biL65POqialY0i4g6crj7pR6JnBkbsPovB2WDYkj3H4TuC/QXv7Pu5pdPxeUJA6TSCHI7T5twsO4VSVyRxD9CA==} @@ -2472,8 +2480,8 @@ packages: '@cspell/dict-html-symbol-entities@4.0.5': resolution: {integrity: sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==} - '@cspell/dict-html@4.0.15': - resolution: {integrity: sha512-GJYnYKoD9fmo2OI0aySEGZOjThnx3upSUvV7mmqUu8oG+mGgzqm82P/f7OqsuvTaInZZwZbo+PwJQd/yHcyFIw==} + '@cspell/dict-html@4.0.16': + resolution: {integrity: sha512-9B6/Cpb5YVcYgsEAlKudun1yd4ONllYS/ZibKLYea2apPR+l2vQdARnPrP9kTqa7NUNfRKl7m9Fb6k9rjimnow==} '@cspell/dict-java@5.0.12': resolution: {integrity: sha512-qPSNhTcl7LGJ5Qp6VN71H8zqvRQK04S08T67knMq9hTA8U7G1sTKzLmBaDOFhq17vNX/+rT+rbRYp+B5Nwza1A==} @@ -2499,22 +2507,22 @@ packages: '@cspell/dict-makefile@1.0.5': resolution: {integrity: sha512-4vrVt7bGiK8Rx98tfRbYo42Xo2IstJkAF4tLLDMNQLkQ86msDlYSKG1ZCk8Abg+EdNcFAjNhXIiNO+w4KflGAQ==} - '@cspell/dict-markdown@2.0.17': - resolution: {integrity: sha512-H8bAxih6U8NOnSPL7R8My+tqjaB4tmnJTjERuz4zYqmf+cH+5xshX3UVgKlwWFcyjsYfv/zEDuRdMctQv1q6HQ==} + '@cspell/dict-markdown@2.0.18': + resolution: {integrity: sha512-KLRSwVrwKDz4n7bl2XQjzvaBZbGgx5QKkP5Ok1b24xaO3TpXsLhAbAn1mItvFlI2tF6Rkt83iYjQcYppywuf5Q==} peerDependencies: '@cspell/dict-css': ^4.1.2 - '@cspell/dict-html': ^4.0.15 + '@cspell/dict-html': ^4.0.16 '@cspell/dict-html-symbol-entities': ^4.0.5 '@cspell/dict-typescript': ^3.2.3 - '@cspell/dict-monkeyc@1.0.12': - resolution: {integrity: sha512-MN7Vs11TdP5mbdNFQP5x2Ac8zOBm97ARg6zM5Sb53YQt/eMvXOMvrep7+/+8NJXs0jkp70bBzjqU4APcqBFNAw==} + '@cspell/dict-monkeyc@1.1.0': + resolution: {integrity: sha512-mc/hgvSy/emOIYtc8kuVEaLUlnaERunfAubfJ5plUXq6s0A69bcukJzUzSt9C0UTCwS28641ILRPv80m3L9QbA==} '@cspell/dict-node@5.0.9': resolution: {integrity: sha512-hO+ga+uYZ/WA4OtiMEyKt5rDUlUyu3nXMf8KVEeqq2msYvAPdldKBGH7lGONg6R/rPhv53Rb+0Y1SLdoK1+7wQ==} - '@cspell/dict-npm@5.2.43': - resolution: {integrity: sha512-H2gYwtu59dNO9662Uq0usfuhyNd7lZJE1C61a/UXcpRyWWSrTo2Bz+vwGYp1bXZ1LmjXadqvwJ8ArFlGdiadNQ==} + '@cspell/dict-npm@5.2.48': + resolution: {integrity: sha512-R5dDnXTxZFOdb/4XSugCjsb3gXTHcEURGFAVOThg5QVu2YRI+yYj5vGgj9gSNffbgoQsNnaukPoB5v1tjF+tRA==} '@cspell/dict-php@4.1.1': resolution: {integrity: sha512-EXelI+4AftmdIGtA8HL8kr4WlUE11OqCSVlnIgZekmTkEGSZdYnkFdiJ5IANSALtlQ1mghKjz+OFqVs6yowgWA==} @@ -2525,14 +2533,14 @@ packages: '@cspell/dict-public-licenses@2.0.16': resolution: {integrity: sha512-EQRrPvEOmwhwWezV+W7LjXbIBjiy6y/shrET6Qcpnk3XANTzfvWflf9PnJ5kId/oKWvihFy0za0AV1JHd03pSQ==} - '@cspell/dict-python@4.2.29': - resolution: {integrity: sha512-OnEt1a35iuQzc2Ize1qU/43ZyF10urRKAm+mlTz++vnAgDLBHpKfWakpSK50nyL5/1WvyQ8BaMjb52MBLEpTeA==} + '@cspell/dict-python@4.5.0': + resolution: {integrity: sha512-O1lSuFXoX8p+4hvJMbqvg3blbn0Zx8LHqdPQSNaOxFZGf7hmq6pc8sfta+98E7Q/WtDooAnU3XpBxBXcn0r94g==} '@cspell/dict-r@2.1.1': resolution: {integrity: sha512-71Ka+yKfG4ZHEMEmDxc6+blFkeTTvgKbKAbwiwQAuKl3zpqs1Y0vUtwW2N4b3LgmSPhV3ODVY0y4m5ofqDuKMw==} - '@cspell/dict-ruby@5.1.1': - resolution: {integrity: sha512-LHrp84oEV6q1ZxPPyj4z+FdKyq1XAKYPtmGptrd+uwHbrF/Ns5+fy6gtSi7pS+uc0zk3JdO9w/tPK+8N1/7WUA==} + '@cspell/dict-ruby@5.1.2': + resolution: {integrity: sha512-f6Slf11N91ittf71AWlfVVG9GZPezVRBfcMPCTNTWhUsY/VEspkBRZYDhPXjV4df3jqHy5YJs8nlsFcFVF/bMA==} '@cspell/dict-rust@4.1.2': resolution: {integrity: sha512-O1FHrumYcO+HZti3dHfBPUdnDFkI+nbYK3pxYmiM1sr+G0ebOd6qchmswS0Wsc6ZdEVNiPYJY/gZQR6jfW3uOg==} @@ -2543,8 +2551,8 @@ packages: '@cspell/dict-shell@1.2.0': resolution: {integrity: sha512-PVctvT22lJ49niMiakO8xieY7ELCAzjSqhejWR7bAMb5AZ9F4WDEs+XdGMnoVHWeXq7K5rcepLPmEJb+37zzIw==} - '@cspell/dict-software-terms@5.2.4': - resolution: {integrity: sha512-z6y/TGH3QNf5wB4pVvN/P3GfFEW/Whf6QAekNsIn06VKl95dnamfpkPWqV8rEtCixQFaKalb5+y9hRQXH3XQ1g==} + '@cspell/dict-software-terms@5.4.2': + resolution: {integrity: sha512-C2tS1JjxqHef9TpPRm08a6n+PJCrKrD6FsmPEyXb2J6TFef4FFnKRcGOf3pFnd+a6/oyQgXZWeKiECH6lBFjQA==} '@cspell/dict-sql@2.2.1': resolution: {integrity: sha512-qDHF8MpAYCf4pWU8NKbnVGzkoxMNrFqBHyG/dgrlic5EQiKANCLELYtGlX5auIMDLmTf1inA0eNtv74tyRJ/vg==} @@ -2567,43 +2575,43 @@ packages: '@cspell/dict-zig@1.0.0': resolution: {integrity: sha512-XibBIxBlVosU06+M6uHWkFeT0/pW5WajDRYdXG2CgHnq85b0TI/Ks0FuBJykmsgi2CAD3Qtx8UHFEtl/DSFnAQ==} - '@cspell/dynamic-import@10.0.1': - resolution: {integrity: sha512-mP1gdq00aIcH8HxNMqnH11X6BKxLcneDtFgl/ecjIKnaGKwi44m8AndP5Kr4ODaYdl8UUw9O3dJh7KaQXnLHZQ==} + '@cspell/dynamic-import@10.2.0': + resolution: {integrity: sha512-FpmedZcu9qcN14/awVPISEBi3A1nPR2zyLslvSRhp6GPJt0YsRVBR5BDKxbLNIGqvM2xg3ZLjo2eGTjThiyHxA==} engines: {node: '>=22.18.0'} - '@cspell/filetypes@10.0.1': - resolution: {integrity: sha512-Z5S35giU5IW49fBBq6BksUbE8PC4IYPfaKuwl5Nl9jkf/OkAKiBmCowKX45NzRUQInwK/GSqqIUifrNeI6LdLw==} + '@cspell/filetypes@10.2.0': + resolution: {integrity: sha512-1I1wnjGqJkQqoHWZ8I28HuMPLG7yzJOh//rGGHBZE6Ly2loJWhk4+/Fa4wEoZ71Ss1HQii9d7smB0B/w1dqGDA==} engines: {node: '>=22.18.0'} - '@cspell/rpc@10.0.1': - resolution: {integrity: sha512-axSRKv3zEAmBm66iD/FV/MPmE4/Yf7c3PZiwTW894Yd3iEhtn3KPKeTrqQ2/tDrhB1Z2qTsap/Hue0MK4o5WXg==} + '@cspell/rpc@10.2.0': + resolution: {integrity: sha512-K8g80OcuhsGqFQvX2kjhgCGs7mOQf5lSeR2Jg34Uq6VQQ/WapJ9pE7CK6R3RKFjhWT8hlrbALiByk9Mj+7GyeQ==} engines: {node: '>=22.18.0'} - '@cspell/strong-weak-map@10.0.1': - resolution: {integrity: sha512-lenN1DVyPi8nJLSMSJJ670ddTjyiruLueuSZO1qLcxBqUhgxDt/mALu9N/1m6WdOVcg6m/5cLiZVg2KOo2UzRw==} + '@cspell/strong-weak-map@10.2.0': + resolution: {integrity: sha512-fBLmVOakQ42Wy+7ZnIdnOSk4/WtJFoNLMEG4yqX/cGML3tIh06PTd9UphwltuwPDCL/tXJQsN/LOY8iLx6hmfw==} engines: {node: '>=22.18.0'} - '@cspell/url@10.0.1': - resolution: {integrity: sha512-abYYgI29wJhWIfWTYrYuzRYDcHQUQ1N5ylnhxYn1NJnIQMqUWGLbDmt12JABtZ+R6h6UNatQrS7rhP86etvJyQ==} + '@cspell/url@10.2.0': + resolution: {integrity: sha512-TIgG/pCkgo3SiayAbV0CorYPdnaNkYWfJFKHhSBTKIdBDwK4YwcbbDlXWGCTJ6gxhhwnrNhcw4jDjz8jejKS4A==} engines: {node: '>=22.18.0'} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@6.1.0': - resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==} + '@csstools/color-helpers@6.1.1': + resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==} engines: {node: '>=20.19.0'} - '@csstools/css-calc@3.2.1': - resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + '@csstools/css-calc@3.3.0': + resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@4.1.9': - resolution: {integrity: sha512-paQcIaOO53Rk5+YrBaBjm/SgrV4INImjo2BT1DtQRYr+XeTRbeAYlS+jxXp9drqvKmtFnWRJKIalDLhZZDu42A==} + '@csstools/css-color-parser@4.2.2': + resolution: {integrity: sha512-3QKjR/vxyjcSXBLgb6lP0S3MGdvwbmqSsvLPbYdVORqPDc8FX1HAJ0Spk38bxaRXgvENTA47tlhhbb5Z2e8hEg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -2615,8 +2623,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.6': - resolution: {integrity: sha512-TcJCWFbXLPpJYq6z7bfOyjWYJDiDg2/I4gyUC9pqPNqHFRIey0EB0q0L5cSnQDfWJg8Jd6VadakxdIez/3zkqQ==} + '@csstools/css-syntax-patches-for-csstree@1.1.12': + resolution: {integrity: sha512-3vLQK+dXxhBMR2Wx99PTCifE+vHtW2ndZWyla8yK813ev6oGhyn8Lja8jCyGAWTJ+LEYZK7EVtJxrDj8ztevJw==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -2677,320 +2685,164 @@ packages: '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -3024,8 +2876,8 @@ packages: resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.6': - resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} + '@eslint/eslintrc@3.3.7': + resolution: {integrity: sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@10.0.1': @@ -3071,12 +2923,10 @@ packages: '@floating-ui/utils@0.2.12': resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} - '@floating-ui/vue@1.1.11': - resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==} - - '@gar/promise-retry@1.0.3': - resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} - engines: {node: ^20.17.0 || >=22.9.0} + '@floating-ui/vue@2.0.1': + resolution: {integrity: sha512-043dyEKD9TDSfz080YH2vobubgg+NIo/9Fw4RAl7sEMpD8Am1DNrrSTl/GpMBjyGHoD/FbJY2QLawY+HSQsEIA==} + peerDependencies: + vue: '>=3.3.0' '@harperfast/extended-iterable@1.0.3': resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==} @@ -3087,33 +2937,33 @@ packages: peerDependencies: vue: ^3.2.0 - '@hono/node-server@1.19.14': - resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} - engines: {node: '>=18.14.1'} + '@hono/node-server@2.1.1': + resolution: {integrity: sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==} + engines: {node: '>=20'} peerDependencies: hono: ^4 - '@html-eslint/core@0.60.0': - resolution: {integrity: sha512-P2+ymEBt7EZ8sh1xc4XNA1/zSyDhSA1ppWyBBwPvGfY8VnDfmtd5UKr6AD24htABwzNJ6WcBIV3lAx5crtozfg==} + '@html-eslint/core@0.65.0': + resolution: {integrity: sha512-UJUf0dDI6xq6iitksPXrfLwu2Gc143LGFHMlVnRPZxkoLz1xIzKbkQVxrqxqNmandsSmhWfkGw//U2BsBH/QRw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@html-eslint/eslint-plugin@0.60.0': - resolution: {integrity: sha512-pPi0ZdYLQiOs6cERfUr3qlnVrEALnG8nq9nbHCymwB8KSdsnGKzCa96+fbmcxEf5MF8dt/EDhHrgQjZ7gmNbWg==} + '@html-eslint/eslint-plugin@0.65.0': + resolution: {integrity: sha512-zYa4ARNbkp/GPlIY+1NFV5v6H3EDs+jby4/rFnZDaS/S3mFEvBail4+dPqugHljrBmAZ0UkxMATR696ypRvPCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.0.0 || ^10.0.0-0' - '@html-eslint/parser@0.60.0': - resolution: {integrity: sha512-1ok6+L8uFktdS1BD5d9SuZ0BbI0uOmkv39HNWpkvpa4989ooGMDK0T+wEeqoLtiGtpnUMwlzx0849yO777g6vw==} + '@html-eslint/parser@0.65.0': + resolution: {integrity: sha512-sMZ8D60uQ/yLKViiqkzX3vnpBwcBNE8x/Ax8roAdrLiErkJ4wLMdXq+kmRm0rqfTuC0mqPJ+7uRTAgUB6wXg2w==} - '@html-eslint/template-parser@0.60.0': - resolution: {integrity: sha512-V+txpL5DbBxsBfgtPGCpvXo3y2EdQDoViwL0KSA8iGOf1XwPAQlyM9wHEMG+KcDY3V9TxkEsFZAlCwVjtvAgCg==} + '@html-eslint/template-parser@0.65.0': + resolution: {integrity: sha512-gUc9D4PaV5uvQjR21Q1wumbe2Qyf6decJjCZCpM77kZ7mMprIDvnF4LgCJBkTldidc4j1GzJvqkJ5e+r+skFyw==} - '@html-eslint/template-syntax-parser@0.60.0': - resolution: {integrity: sha512-jw4eDxDtMfXZNPrms+QleG/NEu5uWtPXAr7uEmqAxwT5hhbFM+txwqqRtCdoBz/skUbKxcPnAQPotuJmXcRQzg==} + '@html-eslint/template-syntax-parser@0.65.0': + resolution: {integrity: sha512-Kh7TFOM4cYcutzGZdWKxnZJpWpuZwu4hcSxbn/PHVBgDOytKOwpuPvCKn1+B11fSFxLhrrR3RHvsBVknntpcbA==} - '@html-eslint/types@0.60.0': - resolution: {integrity: sha512-3PJaoNKK/xSTnRLPMz/6ZEr0Snr4GRjYIQJrw+nDMek1K0HstQ7KIqI7XswzT/S1kXT7B16gwXanCTjIPybjmw==} + '@html-eslint/types@0.65.0': + resolution: {integrity: sha512-bWMTSRwFXwvturEYvA5ng43+jpFh9FTpAgC2HE3O0ijsde40VcoO6DtcjFl7QY8AW5O/PeisDDl1Hbe5q89wsg==} '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} @@ -3135,14 +2985,14 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-json/logos@1.2.11': - resolution: {integrity: sha512-fOo4pGEatuyuCFNL+cwquYMa2Im0oJHRHV7lt/Qqs5Ode/lPImHCQcfTtPzZj7qYMPb/h8YHN3TG54uEowrjNQ==} + '@iconify-json/logos@1.2.13': + resolution: {integrity: sha512-Up54ZnIuiuBgGAsuzhR1nvKqwq8VE6YM3XLwVB6IgY+7NAasz6WKu9Ay5hGfAkfuOKowodfwDC8ozReEBYrWRg==} - '@iconify-json/simple-icons@1.2.90': - resolution: {integrity: sha512-zt2o2ZvQpHVvZJARIkZ51RnaHY2oqcPJMvHE+mVnxkSr+c33fnX4gciiXu+wyX5ei+s0qbVX1wD0DWBbaGBYMA==} + '@iconify-json/simple-icons@1.2.94': + resolution: {integrity: sha512-l8UWzVxKaqZd9ABsE/M/9p6NyGkQnmCnOoZyhQmjlXCtY5PuL2rcWxOFk2l9pk7ux3ERMPkTLE4jl6kQpTkwxA==} - '@iconify-json/vscode-icons@1.2.67': - resolution: {integrity: sha512-/fObxEkBtqK2e1qf1IRjuZ4drWknAnzykdT2ngGAKESf35tCcj0Lx3MdsxYBneE5YbgvsUfOl0hbZ59R5s19vw==} + '@iconify-json/vscode-icons@1.2.76': + resolution: {integrity: sha512-gSu20bZiegbMFLSPHHtmliUJoOPhovTT77RNkMfr6u9ns5uC2bVZ4K5T7wUlywRAzQk4qgG7t4AULaucSsta4w==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -3154,24 +3004,12 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.35.4': resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.35.4': resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} engines: {node: '>=20.9.0'} @@ -3183,129 +3021,64 @@ packages: engines: {node: '>=20.9.0'} os: [freebsd] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.3.3': resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.3.3': resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm64@1.3.3': resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm@1.3.3': resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.3.3': resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.3.3': resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.3.3': resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-x64@1.3.3': resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.3.3': resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm64@0.35.4': resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} engines: {node: '>=20.9.0'} @@ -3313,13 +3086,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm@0.35.4': resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} engines: {node: '>=20.9.0'} @@ -3327,13 +3093,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-ppc64@0.35.4': resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} engines: {node: '>=20.9.0'} @@ -3341,13 +3100,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-riscv64@0.35.4': resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} engines: {node: '>=20.9.0'} @@ -3355,13 +3107,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-linux-s390x@0.35.4': resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} engines: {node: '>=20.9.0'} @@ -3369,13 +3114,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-x64@0.35.4': resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} engines: {node: '>=20.9.0'} @@ -3383,13 +3121,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-arm64@0.35.4': resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} engines: {node: '>=20.9.0'} @@ -3397,13 +3128,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-x64@0.35.4': resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} engines: {node: '>=20.9.0'} @@ -3411,11 +3135,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - '@img/sharp-wasm32@0.35.4': resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} engines: {node: '>=20.9.0'} @@ -3425,170 +3144,170 @@ packages: engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - '@img/sharp-win32-arm64@0.35.4': resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.35.4': resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.35.4': resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] - '@inquirer/ansi@1.0.2': - resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} - engines: {node: '>=18'} + '@inquirer/ansi@2.0.8': + resolution: {integrity: sha512-WpQM+Ti6Z40EFwwt+uL2p4UabT+W179zHp6HhLVOzfbwnVn05IPO/eXIZXGNqcT1jbQ15SujNLzQ39k4QPPxBQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} - '@inquirer/checkbox@4.3.2': - resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} - engines: {node: '>=18'} + '@inquirer/checkbox@5.2.4': + resolution: {integrity: sha512-oKT5RNeO9oKYizSyOxKb66IrKUsYVMQD2tnjllYW4wmSOe9WawfL3OE2p82JuvAyo+/nDIEem5P4Bm/ZIVYVew==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/confirm@5.1.21': - resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} - engines: {node: '>=18'} + '@inquirer/confirm@6.1.1': + resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/core@10.3.2': - resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} - engines: {node: '>=18'} + '@inquirer/confirm@6.3.1': + resolution: {integrity: sha512-HvnOHal39DTenOVoRpIy8Z+n4YYfNa3Qhi/P8zFqn9/d1crpmQG0DPx34rwOeOFvotgKr9Vov/14OmKR/Iwfjw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/editor@4.2.23': - resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} - engines: {node: '>=18'} + '@inquirer/core@11.2.1': + resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/expand@4.0.23': - resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} - engines: {node: '>=18'} + '@inquirer/core@12.0.2': + resolution: {integrity: sha512-9pBhkxE14uUlnHhs8lOt7qVPtS4caRY6CjADl8COejl9Mf7w8i6Uoe3DrljCqYtmYM3Iv2Q6EmPxx/oTYbvTAQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} + '@inquirer/editor@5.3.2': + resolution: {integrity: sha512-7ruKO5d/wxhGHxdCQ3eyP/aBNrPTZ+Ju7ERtnAwuIsu0RSLs6kotlTRkOxHatbD6sDaEEdwsD82pzFiT9ESIyQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/figures@1.0.15': - resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} - engines: {node: '>=18'} - - '@inquirer/input@4.3.1': - resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} - engines: {node: '>=18'} + '@inquirer/expand@5.1.4': + resolution: {integrity: sha512-12o4aYnjWouoq0fyVhYIL+hwXAaga+kntA/wrijFmVvn2heinkdvkbEXRt1Ob/9IOJ285US5tntjfI/Ukt2YkA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/number@3.0.23': - resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} - engines: {node: '>=18'} + '@inquirer/external-editor@3.0.5': + resolution: {integrity: sha512-f3QQJRIX5ZEneBHNUIuPjmbdzHnmRFJA8r2dkcb8q+OM5Uv5KtnuAttQumnrjcBVBM3mcTX1CkmtAkU58VRZxg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/password@4.0.23': - resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} - engines: {node: '>=18'} + '@inquirer/figures@2.0.9': + resolution: {integrity: sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + + '@inquirer/input@5.1.5': + resolution: {integrity: sha512-2MkYYFD1Owt1eRBwHhsLSutysRodWasA4DVpl42KJKGmzwBTXRYAIXujisrt0UW0UohUlMjNjLfMDbw4emRbfw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/prompts@7.10.1': - resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} - engines: {node: '>=18'} + '@inquirer/number@4.2.2': + resolution: {integrity: sha512-tjW1gMIQsFb/9Ie11i8SpuPARBdyCVfC5XOeVugWovrdm8CpjzN+A1CBX5QwCCN2mtNmpgDDCnuLCCT94cQ5zA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/rawlist@4.1.11': - resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} - engines: {node: '>=18'} + '@inquirer/password@5.2.1': + resolution: {integrity: sha512-InA6nJxMCXPavPBiTKYHIsYiWz/mkIsk1rkI6pKp5w18gVawqrZOj7eSzSmPJa3j0pVxXm6RlrFP1BE9YeOixA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/search@3.2.2': - resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} - engines: {node: '>=18'} + '@inquirer/prompts@8.5.2': + resolution: {integrity: sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/select@4.4.2': - resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} - engines: {node: '>=18'} + '@inquirer/rawlist@5.3.4': + resolution: {integrity: sha512-c4fDwOpQsjJDHjXdHJE1/xXH6w9/BAiyu3QKzH9Ww5Xm1q37mzyUNa20L7qdtM1ECi4e+oUEKjhK8hR37OMAMQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/type@3.0.10': - resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} - engines: {node: '>=18'} + '@inquirer/search@4.3.2': + resolution: {integrity: sha512-YIaEhWmfkdHEWOKwhF/oJar35FFTTrAdzNbJDo9lSsRT6E/obRPx9oVm4rkTMtlcJSqGYttNtLbcHQef9Qw2yw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@5.2.4': + resolution: {integrity: sha512-L9ubNaJdoBsiom/AfPKq0QLHTkhhCFCtszzdVidGremrlJjPZfGlmvp+IULKIbnYjtVFWnvb4mhiEdNTZ12ugA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@4.1.1': + resolution: {integrity: sha512-yJoHYrMnxIsJZCY+0Vb66Dy3he3kL3e2wOBKhoSwWWAzZAY82emlxwgprCtp6yRixvNRNq9ztfRWQYPNr3Go7A==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -3824,8 +3543,8 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -3842,8 +3561,8 @@ packages: '@lezer/common@1.5.2': resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==} - '@lezer/css@1.3.4': - resolution: {integrity: sha512-N+tn9tej2hPvyKgHEApMOQfHczDJCwxrRFS3SPn9QjYN+uwHvEDnCgKRrb3mxDYxRS8sKMM8fhC3+lc04Abz5Q==} + '@lezer/css@1.3.6': + resolution: {integrity: sha512-YJE78Wcg+zX8f10hiHWQ4Az48Qr/c13eId0VtRQYLBpxHDmDeSrXIlkbl+fJGW42rWC/uoUco9mhBZeVWP/A1g==} '@lezer/highlight@1.2.3': resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} @@ -3857,61 +3576,58 @@ packages: '@lezer/lr@1.4.10': resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==} - '@listr2/prompt-adapter-inquirer@3.0.5': - resolution: {integrity: sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==} - engines: {node: '>=20.0.0'} + '@listr2/prompt-adapter-inquirer@4.2.5': + resolution: {integrity: sha512-pYGy9dTdTwXdasPgyohkr0HoQ4FrkAzFnsUZl/gcnadDArbpZ8e+fgr+F9WBdNEl2y00mb9bCM4WgmoBkZJ27A==} + engines: {node: '>=22.13.0'} peerDependencies: - '@inquirer/prompts': '>= 3 < 8' - listr2: 9.0.5 + '@inquirer/prompts': '>= 3 < 9' + listr2: 11.0.0 - '@lmdb/lmdb-darwin-arm64@3.5.1': - resolution: {integrity: sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==} + '@lmdb/lmdb-darwin-arm64@3.5.6': + resolution: {integrity: sha512-mY5FG4TjPAkY4P0w+OhHaUka5mDh2TX2WKYIwuKzJ1zeW3VvRgxdam/lGJTquI+bthTx5CSHDW+BAQCnNAzkEA==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.5.1': - resolution: {integrity: sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==} + '@lmdb/lmdb-darwin-x64@3.5.6': + resolution: {integrity: sha512-foa+pwitysO8k+xhs7psBFfTKnVgR69NlZRRTHaFVDqphh7AdGpLeyRzKw/ofatr/sN6TiHRRW6mmop0ZrrppQ==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.5.1': - resolution: {integrity: sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==} + '@lmdb/lmdb-linux-arm64@3.5.6': + resolution: {integrity: sha512-HmiyFFdJa38s1heCMSooSPaBSFTHJ3C+ERPp28xAPlDX1YiALJVOgbry065nXd8Y7KISWjnw05zpG1RX8IfftA==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.5.1': - resolution: {integrity: sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==} + '@lmdb/lmdb-linux-arm@3.5.6': + resolution: {integrity: sha512-QR4YRyR5h5Z8eGXrNQjiyo2NNDfqi3tCc9dQG5Is1blCt+qWw1ZoBWhlWAr5d+jshkifMIJjVHzHGKbkKzF8Tw==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.5.1': - resolution: {integrity: sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==} + '@lmdb/lmdb-linux-x64@3.5.6': + resolution: {integrity: sha512-ADzCuCF2cTNiX9kDScqcz1fjnAkxPpQNneV3KFTdV3wWtVlI2sTGzySoMTgDpinkMMFj1NTJlxA6XR8fwc4hlA==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-arm64@3.5.1': - resolution: {integrity: sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==} + '@lmdb/lmdb-win32-arm64@3.5.6': + resolution: {integrity: sha512-J7A9aEQsQiv0TYtBGL7NDIPp2lOS8nnl+zm4sWZm1xlsTTaQ4PgD096Adzdrk27rw3UxCkDXdCUa4ax41oztBQ==} cpu: [arm64] os: [win32] - '@lmdb/lmdb-win32-x64@3.5.1': - resolution: {integrity: sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==} + '@lmdb/lmdb-win32-x64@3.5.6': + resolution: {integrity: sha512-1g7G0knRX2iV/voDu54yxrGqw5Dk0w2oIYb7dgJq8IkOi+m7wbD8Q3QpPFjh0C01G58S88dqGn03len6UPCXsg==} cpu: [x64] os: [win32] - '@lucide/helpers@1.0.0': - resolution: {integrity: sha512-9dfxrgLLaoCfr3R/eh6wwlUcY+ZPdEv6SDwFMUhYoO6HhGL8yN8hb5ZwI/OfzbK9mdJpa+jYfwP4nF4ZlZwZLA==} - '@mapbox/node-pre-gyp@2.0.3': resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} engines: {node: '>=18'} hasBin: true - '@marijn/find-cluster-break@1.0.3': - resolution: {integrity: sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==} + '@marijn/find-cluster-break@1.0.4': + resolution: {integrity: sha512-Wy0V7+SGUjnF9/TkiM1hKVDPj7jKXduPNboMVtHTA8dySMURWqfg/JZ9E2Sq8JgSJmkl7k7Qe9FLeMSrSraWmQ==} - '@modelcontextprotocol/sdk@1.26.0': - resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} + '@modelcontextprotocol/sdk@1.30.0': + resolution: {integrity: sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -3950,6 +3666,13 @@ packages: cpu: [x64] os: [win32] + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + libc: [glibc] + '@napi-rs/nice-android-arm-eabi@1.1.1': resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} engines: {node: '>= 10'} @@ -4063,11 +3786,12 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + '@napi-rs/wasm-runtime@1.2.3': + resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 '@next/env@16.3.4': resolution: {integrity: sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q==} @@ -4140,101 +3864,43 @@ packages: resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} engines: {node: ^18.17.0 || >=20.5.0} - '@npmcli/agent@4.0.2': - resolution: {integrity: sha512-EUEuWAxnL07Sp5/iC/1X6Xj+XThUvnbei9zfRWZdEXa7lss9RTHMhAHBeg+MZ5To9s/gGaSI+UwZTPdYMvKSeg==} - engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/fs@4.0.0': resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} engines: {node: ^18.17.0 || >=20.5.0} - '@npmcli/fs@5.0.0': - resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/git@7.0.2': - resolution: {integrity: sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/installed-package-contents@4.0.0': - resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - - '@npmcli/node-gyp@5.0.0': - resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/package-json@7.0.5': - resolution: {integrity: sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/promise-spawn@9.0.1': - resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/redact@4.0.0': - resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/run-script@10.0.4': - resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@octokit/auth-token@3.0.4': - resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} - engines: {node: '>= 14'} - '@octokit/auth-token@6.0.0': resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} - '@octokit/core@4.2.4': - resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} - engines: {node: '>= 14'} - - '@octokit/core@7.0.6': - resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} + '@octokit/core@7.0.8': + resolution: {integrity: sha512-L7y8eYc+AwxGr2PWI4WFt1VG4TiJ66c26BD16mXpYIlXxG0SMigM1+m4aTSlYyBr5BlQsGAlz8uDCoZN4SEMcg==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.3': - resolution: {integrity: sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==} + '@octokit/endpoint@11.0.5': + resolution: {integrity: sha512-iXa654H3yFafF/ieHkukfbgWo2rmXD2ceD0ZOtrPhw1bc3FDch1d9N/TNs0FQ1/cIbwb7kspUX8jzIs8nzb9DQ==} engines: {node: '>= 20'} - '@octokit/endpoint@7.0.6': - resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} - engines: {node: '>= 14'} - - '@octokit/graphql@5.0.6': - resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} - engines: {node: '>= 14'} - - '@octokit/graphql@9.0.3': - resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} + '@octokit/graphql@9.0.5': + resolution: {integrity: sha512-bt/hm03LeU6Vy7FwTrkkC9p3XGT/lBwClglMqxBSe5/q0E5CdJTXeAqEI0vlw89/LF/G6tryTIH8HirZ3prMVg==} engines: {node: '>= 20'} - '@octokit/openapi-types@18.1.1': - resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} - '@octokit/openapi-types@27.0.0': resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} + '@octokit/openapi-types@29.0.1': + resolution: {integrity: sha512-9qWOMFNxxLokERcms42rU0PTLqQmVs7g5E41TI4mCOxmpFayD1rfC7XxOL55cG9MBZLFlC31BrR37myMKardwg==} + '@octokit/plugin-paginate-rest@14.0.0': resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-paginate-rest@6.1.2': - resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} - engines: {node: '>= 14'} + '@octokit/plugin-request-log@6.0.0': + resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} + engines: {node: '>= 20'} peerDependencies: - '@octokit/core': '>=4' - - '@octokit/plugin-request-log@1.0.4': - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': '>=6' '@octokit/plugin-rest-endpoint-methods@17.0.0': resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} @@ -4242,43 +3908,23 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@7.2.3': - resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} - engines: {node: '>= 14'} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@3.0.3': - resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} - engines: {node: '>= 14'} - - '@octokit/request-error@7.1.0': - resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} + '@octokit/request-error@7.1.2': + resolution: {integrity: sha512-XZRuT3xZ84D3gYErI1DZvhJ33dCWVV6uzBtWkaBB4TvA/L6eOeTZodxLFVB44bBEEo3vEx7y00UfX1tBLrtLRg==} engines: {node: '>= 20'} - '@octokit/request@10.0.11': - resolution: {integrity: sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==} + '@octokit/request@10.0.16': + resolution: {integrity: sha512-A0zWGjHzISIb+9ccG8s0dq7LKO5zVpJLRICjgUb+sJxEWqn8RUHB1rD3AE51+PECvXHIxqZ1VVvs4fHTSD9nUQ==} engines: {node: '>= 20'} - '@octokit/request@6.2.8': - resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} - engines: {node: '>= 14'} - - '@octokit/rest@19.0.13': - resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} - engines: {node: '>= 14'} - - '@octokit/tsconfig@1.0.2': - resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} - - '@octokit/types@10.0.0': - resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} + '@octokit/rest@22.0.1': + resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==} + engines: {node: '>= 20'} '@octokit/types@16.0.0': resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} - '@octokit/types@9.3.2': - resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} + '@octokit/types@18.0.0': + resolution: {integrity: sha512-l6bAF43PNxkJp6g+W4PjoUSSkxHomXw2nOum5CTftJz1NlV3vu93NImgOYtLf6CbBUb5j+fiuzW0PPQ5JTSvZA==} '@one-ini/wasm@0.2.1': resolution: {integrity: sha512-TUqERXGNTifZ9y2g3wPxQrw3HpHv/02DsW3D90T9x0hhonrL1ZqpSmNrU2XkoIq0fP1N6gZfVQzy2Fw1ZvGBNg==} @@ -4305,101 +3951,228 @@ packages: '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxc-project/types@0.113.0': - resolution: {integrity: sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==} + '@oxc-parser/binding-android-arm-eabi@0.142.0': + resolution: {integrity: sha512-ZiRGDutGsv1G6bL/ozy/koC0Sv39T1DqyoC4KD1DOy9ZoACm1O5UWhEK2c02Qdk+4lfLVkvFa/mQ0fm/4h1BtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - '@parcel/watcher-android-arm64@2.5.6': - resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + '@oxc-parser/binding-android-arm64@0.142.0': + resolution: {integrity: sha512-WZkvGRLNQTz8lR9zP5nLjUdlroRCopBu3g9zF1p/laE6DzT1UbQo8Rdz5MWhaJUPYg/6gp+jo7HUgsyKaN1FtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.142.0': + resolution: {integrity: sha512-l4khS8LQOOVYsGRVARo1gSaCT/aBSceUVXgtovWc2+drnxVuDr082WA3OCHVdVzIz5JIrP/y9CWsSKxBDNmYGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.142.0': + resolution: {integrity: sha512-QBsNF3nqlXmcH2B1YOPqQYmCJoy4HuIjUxGbBO/k5JAJUl68ghU2psRY2zPk+RyBaWqKP/qfL4oaFgEMCdwskA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.142.0': + resolution: {integrity: sha512-b7Q7m4Cqc6XqNhri3R+QhU+GVy646Pn+bkdhrDdWym/Fdi0ZUa+d73H9dm5H91JtbtAQ/z1d8XKMW3oOV8a4tQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.142.0': + resolution: {integrity: sha512-3riVS5IhdH3uCZj1Y9ftDQlR0dvLsIlw/edrRqk8JhgNd5K0XSs+UBtgh50N13CAlW9/TXj6sVGXaKNBocd0Yg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.142.0': + resolution: {integrity: sha512-NmXUOpgpTSkhl795TiXmWppTwmSJ92RC1qvD6e4XOF+slgmo3e6Ah+kEu+6AN8s7NAOEwqGmir58MgSQSWmBSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.142.0': + resolution: {integrity: sha512-gc0EXsKtXgerujmU2Bql3u1L1HsSQ2774R83idq/FoNMPVV/RY/1ErFsvnit7KoiP/sLvzQixeUo4Ut0ic0wmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-arm64-musl@0.142.0': + resolution: {integrity: sha512-F2XvmWSE0uWpie+jHKKIFgdVOe9ypGhkEZxKx5DuW215K6cbAC274yYaPkcM7EqY4Df3Weyhpcz3lsURyH2LVg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-ppc64-gnu@0.142.0': + resolution: {integrity: sha512-wLMbT21U/QxknQsk+VvNF0b9D2/aGWhcaQQQ+VYlE8FwD5+GoWZIPPXNzyHmkYyhm0KB3itL+TBavjMatqNnYA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.142.0': + resolution: {integrity: sha512-+G8F/4ckwT7FCJV4H2bt09xEzJbjNCfuL4Sp1AYNaFtFMVtgIGMuJlteT82U+K0UIZ/DzAR/LDlMFnEuajG7Kw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-musl@0.142.0': + resolution: {integrity: sha512-hTsHtTLxMAfCo+rpF5K3qZJKW2NpPN/CHd4mYB3y7XlSdspHkd2gehDIofP64AacA9nWQw2tY3O7wR6UY8IVOA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-s390x-gnu@0.142.0': + resolution: {integrity: sha512-6y7qYY3TCUDYjqswImdTGl92y+KA/80twALegQPN27kfY+bG7Ib1+L3jbmrCZQx6wrVnai9IPsEZp07I0hx7JQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-gnu@0.142.0': + resolution: {integrity: sha512-i69kAWU+2LgoH5bR+zWiiu+UzAw7Oxkwv7COeJTeY19pn4e70nKQcr9Pm6cL2Z0Z54d+gl9qADlK/0yyuCPiBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-musl@0.142.0': + resolution: {integrity: sha512-4SQs678MmjYVrmhAgCWD4o0vpaFszXw9xLX5p2Z9MMFcltxiLkA88wQjh80YHjPrXtpyZ2CWI5m+1yNKM0m2Pw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-openharmony-arm64@0.142.0': + resolution: {integrity: sha512-YHpx9N7Ln3a++Tc8rv+H7mrK1zyJQOAwCFg8LZ3lTs1T5afGWeZrLPhPT9HLnIwSjCyJqPWVMIrMxbjcmBr2oQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.142.0': + resolution: {integrity: sha512-3pLDyY3+oogW73RM5uehNgAiR/Xfb7fvO2Q1Z1gIqZ2+50XDVQmBVlRkHXZTU4gKnQHpwETNsYQVsJ3joVB2iA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.142.0': + resolution: {integrity: sha512-Had/VeVY28Oyb0K+Q4FV8KCzoBycIh93oDK6pCbya9lkzdq+ikMHMgBubsdqqlybjJmQRawCQRrnBRHyQwYvcQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.142.0': + resolution: {integrity: sha512-GGi3+YphVHavvgs6gum2UXoNCqzHAmPt/nXkn8ZQZstV2Q1qZD1Mn8fz/nWrDkefHQtrG/+1/XrbMxsBTo6Svw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.142.0': + resolution: {integrity: sha512-Ny/Wv4Us1LGC/ljwNTp+Hx3r/pH15EFfeDF0p+n898gt+TtRd6C9SccHcuUhDiNTb8s5tt7jdeAMDRQZ4Vq6hg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.140.0': + resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==} + + '@oxc-project/types@0.142.0': + resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} + + '@oxc-project/types@0.148.0': + resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==} + + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.6': - resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.6': - resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.6': - resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.6': - resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm-musl@2.5.6': - resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [musl] - '@parcel/watcher-linux-arm64-glibc@2.5.6': - resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm64-musl@2.5.6': - resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [musl] - '@parcel/watcher-linux-x64-glibc@2.5.6': - resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-x64-musl@2.5.6': - resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [musl] - '@parcel/watcher-wasm@2.5.6': - resolution: {integrity: sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==} + '@parcel/watcher-wasm@2.6.0': + resolution: {integrity: sha512-dtjbDxKSDPQ8AmA+pS4OFaHE1FKrjtGpLGBxw85uKFkRorjNbvDM/aFPgqosu40wprbp1xw2ZSxIKqghCUHe2w==} engines: {node: '>= 10.0.0'} bundledDependencies: - napi-wasm - '@parcel/watcher-win32-arm64@2.5.6': - resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.6': - resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.6': - resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.6': - resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} engines: {node: '>= 10.0.0'} '@pkgjs/parseargs@0.11.0': @@ -4427,8 +4200,8 @@ packages: '@prefresh/babel-plugin@0.5.3': resolution: {integrity: sha512-57LX2SHs4BX2s1IwCjNzTE2OJeEepRCNf1VTEpbNcUyHfMO68eeOWGDIt4ob9aYlW6PEWZ1SuwNikuoIXANDtQ==} - '@prefresh/core@1.5.10': - resolution: {integrity: sha512-7yPTFbG56sutaFu8krp3B4a200KOFUvrtlllKWRuLjsYXo9UUucHOZRcer+gtgMkFTpv6ob8TGcTwA32bSwa1w==} + '@prefresh/core@1.5.11': + resolution: {integrity: sha512-Ml00PP8jeHaADxfQqxUs4+M5JS+T5J26UnvPVfsrmlpGw2I3e9XtM0DMeuzkmvg+Tn7VdHSMpLBrDPG0iHoDqQ==} peerDependencies: preact: ^10.0.0 || ^11.0.0-0 @@ -4641,83 +4414,193 @@ packages: resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} engines: {node: '>= 10'} - '@rolldown/binding-android-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==} + '@rolldown/binding-android-arm-eabi@1.2.7': + resolution: {integrity: sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.0': + resolution: {integrity: sha512-9yB1l95IrJuNGDFdOYe79vdApdz6WWBCObE+rQ2LUliYUlcyFwSYIb2xb5/Ifw7dAtMy2ZqNyd8QTSOc7duAKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==} + '@rolldown/binding-android-arm64@1.2.7': + resolution: {integrity: sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.0': + resolution: {integrity: sha512-pexNaW9ACLUOaBITOpU6qVu4VrsOFIjTv6bzgu0YUATo4eUJx0V605PxwZfndpPOn0ilqGqvGQ0M8UW0IE24jg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.4': - resolution: {integrity: sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==} + '@rolldown/binding-darwin-arm64@1.2.7': + resolution: {integrity: sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.0': + resolution: {integrity: sha512-NqKYaq0355ZmNMG4QGpxtEDxsc7tGDhjhCm4PpE0cwnBW+5Il95LJyq414niEiaKLVjnVHBEjSo1wngKxJNiFw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.4': - resolution: {integrity: sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==} + '@rolldown/binding-darwin-x64@1.2.7': + resolution: {integrity: sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.0': + resolution: {integrity: sha512-3vPoHzh6eBTz9IbB0/qZdSr0Qeks2echn+I4cHu2joV74VriPDdldswksEDzrl1mBB+oPRi+67+3Ib59paxIPQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': - resolution: {integrity: sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==} + '@rolldown/binding-freebsd-x64@1.2.7': + resolution: {integrity: sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.0': + resolution: {integrity: sha512-E6NNefZ1bUVmKJq2tJkf45J4Zyczj7qm9rUT7NY+Xo2474Y13qWAwc2tvBt0BAVbmtXR1llkxXg0Ou1jbDf2SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': - resolution: {integrity: sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.7': + resolution: {integrity: sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.0': + resolution: {integrity: sha512-D+TgkdgM1vu+7/Fpf8+v0ARW+RXEP9Ccazgm8zQ4JFFd9Q7SrYQ2TakU5S5ihazQDgpKyAgZDOcIFsvoHmTZ8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': - resolution: {integrity: sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==} + '@rolldown/binding-linux-arm64-gnu@1.2.7': + resolution: {integrity: sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.2.0': + resolution: {integrity: sha512-wUqdwJBbAv0APN87GecstdMUtLjjNTs0hBALpxETD73mccFxdmt/XeizXDtN5RAlBwNKmI+Tg+blect2G+8IeQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': - resolution: {integrity: sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==} + '@rolldown/binding-linux-arm64-musl@1.2.7': + resolution: {integrity: sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.2.0': + resolution: {integrity: sha512-9DtF35qR9/NrfhM4oxLplCzVVjE+KKm8Pjemi0i/sdhAWkUasjmSo8WTTubNJClhSHCfyk2yeyoXDQEDPtDAAw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-ppc64-gnu@1.2.7': + resolution: {integrity: sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.2.0': + resolution: {integrity: sha512-RzuHrBh8X8Hntd2N4VR02QGEciq/9JhcZoTpR/Cee6otRrlILGCf3cg2ygHuih+ZebUnWmMrDX6ITI85btO6rQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.2.7': + resolution: {integrity: sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.2.0': + resolution: {integrity: sha512-MK7L0018jjh1jR3mh21G2j1zAVcpscJBlPo2z19pRjv2XOYGRhaV4LyiD8HO6nCDdZln9IFgCMIV5yt4E3klGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': - resolution: {integrity: sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==} + '@rolldown/binding-linux-x64-gnu@1.2.7': + resolution: {integrity: sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.2.0': + resolution: {integrity: sha512-gyrxLQ9NfGb/9LoVnC4kb9miUghw1mghnkfYvNHSnVIXriabnfgGPUP4RLcJm87q3KgYz4FYUG8IDiWUT+CpSw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==} + '@rolldown/binding-linux-x64-musl@1.2.7': + resolution: {integrity: sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.2.0': + resolution: {integrity: sha512-/6VFMQGRmrhP77KXDC+StIxGzcNp5JOIyYtw0CQ8gPlzhpiIRucYfoM5FaFamHd5BJYIdH86yfP46l1p3WdrFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': - resolution: {integrity: sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-openharmony-arm64@1.2.7': + resolution: {integrity: sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.2.0': + resolution: {integrity: sha512-rwdbUL465kisF24WEJLvP3JrEG6E5GRuIHt5wpMwHGERtHe4Wm2CIvtf5gTBgr2tGOHKh5NdKEAFS2VkOPE91g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': - resolution: {integrity: sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==} + '@rolldown/binding-win32-arm64-msvc@1.2.0': + resolution: {integrity: sha512-+5suHwRiKGmhwyUaNT8a5QbrBvLFh2DbO910TEmGRH1aSxwrCezodvGQnulv4uiWEIv1Kq4ypRsJ5+O+ry1DiA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': - resolution: {integrity: sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==} + '@rolldown/binding-win32-arm64-msvc@1.2.7': + resolution: {integrity: sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.0': + resolution: {integrity: sha512-WfFv6/qGufotqBSBzBYwgpCkJBk8Nj7697LL9vTz/XWc67e0r3oewu8iMRwQj3AUL45GVD7wVsPjCsAAtW66Wg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.7': + resolution: {integrity: sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4725,8 +4608,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-rc.4': - resolution: {integrity: sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==} + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} @@ -4820,208 +4703,193 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.62.2': - resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} + '@rollup/rollup-android-arm-eabi@4.63.1': + resolution: {integrity: sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.62.2': - resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==} + '@rollup/rollup-android-arm64@4.63.1': + resolution: {integrity: sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.62.2': - resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==} + '@rollup/rollup-darwin-arm64@4.63.1': + resolution: {integrity: sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.62.2': - resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==} + '@rollup/rollup-darwin-x64@4.63.1': + resolution: {integrity: sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.62.2': - resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==} + '@rollup/rollup-freebsd-arm64@4.63.1': + resolution: {integrity: sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.62.2': - resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==} + '@rollup/rollup-freebsd-x64@4.63.1': + resolution: {integrity: sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.62.2': - resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==} + '@rollup/rollup-linux-arm-gnueabihf@4.63.1': + resolution: {integrity: sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.62.2': - resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==} + '@rollup/rollup-linux-arm-musleabihf@4.63.1': + resolution: {integrity: sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.62.2': - resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==} + '@rollup/rollup-linux-arm64-gnu@4.63.1': + resolution: {integrity: sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.62.2': - resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==} + '@rollup/rollup-linux-arm64-musl@4.63.1': + resolution: {integrity: sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.62.2': - resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==} + '@rollup/rollup-linux-loong64-gnu@4.63.1': + resolution: {integrity: sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.62.2': - resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==} + '@rollup/rollup-linux-loong64-musl@4.63.1': + resolution: {integrity: sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.62.2': - resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==} + '@rollup/rollup-linux-ppc64-gnu@4.63.1': + resolution: {integrity: sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.62.2': - resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==} + '@rollup/rollup-linux-ppc64-musl@4.63.1': + resolution: {integrity: sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.62.2': - resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==} + '@rollup/rollup-linux-riscv64-gnu@4.63.1': + resolution: {integrity: sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.62.2': - resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==} + '@rollup/rollup-linux-riscv64-musl@4.63.1': + resolution: {integrity: sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.62.2': - resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==} + '@rollup/rollup-linux-s390x-gnu@4.63.1': + resolution: {integrity: sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.62.2': - resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==} + '@rollup/rollup-linux-x64-gnu@4.63.1': + resolution: {integrity: sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.62.2': - resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==} + '@rollup/rollup-linux-x64-musl@4.63.1': + resolution: {integrity: sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.62.2': - resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==} + '@rollup/rollup-openbsd-x64@4.63.1': + resolution: {integrity: sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.62.2': - resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==} + '@rollup/rollup-openharmony-arm64@4.63.1': + resolution: {integrity: sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.62.2': - resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==} + '@rollup/rollup-win32-arm64-msvc@4.63.1': + resolution: {integrity: sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.62.2': - resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==} + '@rollup/rollup-win32-ia32-msvc@4.63.1': + resolution: {integrity: sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.62.2': - resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==} + '@rollup/rollup-win32-x64-gnu@4.63.1': + resolution: {integrity: sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.62.2': - resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==} + '@rollup/rollup-win32-x64-msvc@4.63.1': + resolution: {integrity: sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.62.2': - resolution: {integrity: sha512-LseVv64SSO6S7eyc+LFGUnH36NMMFbtKN28vTUHFinRVzFKH4cVQ/BB22JfXM9Ei5l7x46AIQp+n2QzzJ9kxHg==} + '@rollup/wasm-node@4.63.1': + resolution: {integrity: sha512-zuZMuBHMMhtuXagc+3p5PGeGfL0VnO/44cX1k9R4Q/Ipb863tF8ZBGeoTz3ypgANqrpREAp49mNTwv6qSyc6XQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - '@rviscomi/capo.js@2.2.0': - resolution: {integrity: sha512-bf3EFPKV4uQQ+66MkolrYh0axOgSn6XHq8kZbu/aoiI/OFjk6Rcz6N48l822vhvNcOQpI8Pfe2sa0AUd+3PjMQ==} + '@rviscomi/capo.js@2.3.0': + resolution: {integrity: sha512-qY3QRtKdq//Z8jDENSUCAaSE76sUwHgN6pzoRXj6e5cSwQqxFLjm8B+GDkbtUr/WGWJRzoAMtz0I60TM1KrOBg==} - '@schematics/angular@21.2.19': - resolution: {integrity: sha512-eL+UU9eizoadhDB4YEctRmmo0A5iwrSmGzeuEa6akrq8nLGVWM8zO91HTJutkPqGQjelF+UOiOShsQSZAU9SIQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@schematics/angular@22.1.7': + resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@shikijs/core@2.5.0': resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} - '@shikijs/core@3.23.0': - resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} - - '@shikijs/core@4.3.1': - resolution: {integrity: sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==} + '@shikijs/core@4.4.3': + resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==} engines: {node: '>=20'} '@shikijs/engine-javascript@2.5.0': resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} - '@shikijs/engine-javascript@3.23.0': - resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} - - '@shikijs/engine-javascript@4.3.1': - resolution: {integrity: sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==} + '@shikijs/engine-javascript@4.4.3': + resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==} engines: {node: '>=20'} '@shikijs/engine-oniguruma@2.5.0': resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - - '@shikijs/engine-oniguruma@4.3.1': - resolution: {integrity: sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==} + '@shikijs/engine-oniguruma@4.4.3': + resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==} engines: {node: '>=20'} '@shikijs/langs@2.5.0': resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - - '@shikijs/langs@4.3.1': - resolution: {integrity: sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==} + '@shikijs/langs@4.4.3': + resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==} engines: {node: '>=20'} - '@shikijs/primitive@4.3.1': - resolution: {integrity: sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==} + '@shikijs/primitive@4.4.3': + resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==} engines: {node: '>=20'} '@shikijs/themes@2.5.0': resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - - '@shikijs/themes@4.3.1': - resolution: {integrity: sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==} + '@shikijs/themes@4.4.3': + resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==} engines: {node: '>=20'} '@shikijs/transformers@2.5.0': @@ -5030,48 +4898,21 @@ packages: '@shikijs/types@2.5.0': resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} - - '@shikijs/types@4.3.1': - resolution: {integrity: sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==} + '@shikijs/types@4.4.3': + resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==} engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@sigstore/bundle@4.0.0': - resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/core@3.2.1': - resolution: {integrity: sha512-qRsxPnCrbC/puegGxKuynfnxgLiHqWStrSjxkoB4YKqq3Z3s4cyZyj42ZdWFAEblNP65C+rBH8EuREHIXoi83g==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/protobuf-specs@0.5.1': - resolution: {integrity: sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@sigstore/sign@4.1.1': - resolution: {integrity: sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/tuf@4.0.2': - resolution: {integrity: sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/verify@3.1.1': - resolution: {integrity: sha512-qv7+G3J2cc6wwFj3yKvXOamzqhMwSk1ogPGmhpS8iXllcPrJaIIBA+4HbttlHVu1pqWTdmaCH/WE7UOC51kdoA==} - engines: {node: ^20.17.0 || >=22.9.0} - '@simple-git/args-pathspec@1.0.3': resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==} '@simple-git/argv-parser@1.1.1': resolution: {integrity: sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==} - '@sinclair/typebox@0.27.10': - resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + '@sinclair/typebox@0.27.12': + resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} '@sindresorhus/is@7.2.0': resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} @@ -5102,8 +4943,8 @@ packages: '@solidjs/router': optional: true - '@speed-highlight/core@1.2.17': - resolution: {integrity: sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg==} + '@speed-highlight/core@1.2.24': + resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==} '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -5345,15 +5186,15 @@ packages: '@tanstack/store@0.9.3': resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} - '@tanstack/virtual-core@3.17.4': - resolution: {integrity: sha512-nGm5KteqxasUdThLc2izl6dHUqLv0LQj7Nuyo5gYalTPf/U8a9ermvsl7reT+6ioBW1l8WfpP/mcU338nLXpqw==} + '@tanstack/virtual-core@3.17.8': + resolution: {integrity: sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==} '@tanstack/virtual-file-routes@1.162.0': resolution: {integrity: sha512-uhOeFyxLcU41HzvrxsGpiWdcMbScY1EDgbZ5K7DVRMYInbLYWAC0EA/kx9wXAoSM8q82bUG2hRl8+EAjE6XAbA==} engines: {node: '>=20.19'} - '@tanstack/vue-virtual@3.13.32': - resolution: {integrity: sha512-E8OCutx7QnwZdvpJijz0Q2PHsYDWBWjnGr3TvgWiqxTU35jB1kVhtkd93scRV7tTFuId2tg3x2iFiw+IE4evjQ==} + '@tanstack/vue-virtual@3.13.36': + resolution: {integrity: sha512-gKpExv4RbB9luVG+SucTXoqPZv/gzu/Yvz6BNO+8kpNxJ2x+I/ulryzl5W9BRciahZGp5Tls3Dp5XP1ztVGbMw==} peerDependencies: vue: ^2.7.0 || ^3.0.0 @@ -5369,9 +5210,15 @@ packages: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} - '@testing-library/jest-dom@6.9.1': - resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@testing-library/jest-dom@7.0.1': + resolution: {integrity: sha512-oMDTC3oA+6CXSO2JZnvOI7CA6oVub6kij5ggk9ohwye5slmkwxYDXcPOVxgMw/RQlticjtO0C1RZkR97HgrWMw==} + engines: {node: '>=22', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@testing-library/dom': '>=10 <11' + vitest: 4.1.10 + peerDependenciesMeta: + vitest: + optional: true '@testing-library/preact@3.2.4': resolution: {integrity: sha512-F+kJ243LP6VmEK1M809unzTE/ijg+bsMNuiRN0JEDIJBELKKDNhdgC/WrUSZ7klwJvtlO3wQZ9ix+jhObG07Fg==} @@ -5379,12 +5226,20 @@ packages: peerDependencies: preact: '>=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0' - '@testing-library/react@14.3.1': - resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} - engines: {node: '>=14'} + '@testing-library/react@16.3.3': + resolution: {integrity: sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg==} + engines: {node: '>=18'} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true '@testing-library/svelte-core@1.1.3': resolution: {integrity: sha512-KkMAvXeWorxN2Yn0kdC1lfoAItxpoj4uOWzxK5leDrNxonLvS5nwBFvztrroyTszQ0Wf/EU6iLT8JhY5qcn22g==} @@ -5415,9 +5270,8 @@ packages: '@vue/compiler-sfc': optional: true - '@thednp/dommatrix@3.0.4': - resolution: {integrity: sha512-xpKtQZqFOuAPfQDbePIh9f48YKfmULV7z9C+anPBSHiOG4P+T3ct7Cx2AZOoUeXbxiDkz7SONANy1bB7p2uysg==} - engines: {node: '>=20', pnpm: '>=8.6.0'} + '@thednp/dommatrix@3.1.2': + resolution: {integrity: sha512-wxRH2/Qdqd+JxFpjb5vw+ZMaij8Hqa/9Hgl41n2Jb+3WNRhdemrosK0FxEo/yEvhvHGW8D1tZ3oPH9N0m1QG+A==} '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -5437,14 +5291,6 @@ packages: '@tsconfig/svelte@5.0.8': resolution: {integrity: sha512-UkNnw1/oFEfecR8ypyHIQuWYdkPvHiwcQ78sh+ymIiYoF+uc5H1UBetbjyqT+vgGJ3qQN6nhucJviX6HesWtKQ==} - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tufjs/models@4.1.0': - resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} - engines: {node: ^20.17.0 || >=22.9.0} - '@tybys/wasm-util@0.10.3': resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} @@ -5490,6 +5336,9 @@ packages: '@types/fs-extra@8.1.5': resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + '@types/gensync@1.0.5': + resolution: {integrity: sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==} + '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} @@ -5508,6 +5357,9 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -5517,8 +5369,8 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/markdown-it@14.2.0': + resolution: {integrity: sha512-NoQ2yGlLWj4wpxMs+TYmRKk3thDrQ97agr7sFqfLsAlvoS8SNQuTrlObhFqG9iugdTtgOE9jpJ6FNM4ZGsa5xQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -5545,26 +5397,18 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@22.20.1': - resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} '@types/node@25.9.5': resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==} - '@types/node@26.1.1': - resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} + '@types/node@26.4.1': + resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==} '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} - peerDependencies: - '@types/react': ^18.0.0 - '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: @@ -5582,8 +5426,8 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/semver@7.8.0': + resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -5591,9 +5435,6 @@ packages: '@types/svg2ttf@5.0.1': resolution: {integrity: sha512-sbMTAySCMUUQYBlkfVcShKSbG9LxhGk0LdPetLak8m28WDuJhwJMVLcLzw7z/8uEyWkwtLaMxpT4R/+riYz6BA==} - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -5606,104 +5447,67 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.66.0': - resolution: {integrity: sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==} + '@typescript-eslint/eslint-plugin@8.69.0': + resolution: {integrity: sha512-t5jQTKPIgVW1PE6dR6H6Qz5gm8zjMlX5/2gRaOGd9eO6V7J+tQc6iWKukEe7dY8u9HyYasQ0yfF0/FSSTEO2gA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.66.0 + '@typescript-eslint/parser': ^8.69.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.66.0': - resolution: {integrity: sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==} + '@typescript-eslint/parser@8.69.0': + resolution: {integrity: sha512-l4b0DhWioGg6Gt2ebGlvfkFMOjRsauxtsnDRwUSRX1qHq3HdTfQHV8wW9zEXeciai6HfeaKOedQn2Zoofx3WBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.64.0': - resolution: {integrity: sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg==} + '@typescript-eslint/project-service@8.69.0': + resolution: {integrity: sha512-yi4obFrHMmnsesWehHbkg9zMA7Jt8cXT+mKM08G999pH1yT6nqgsHx7MYm0uY1wAj8CqiBXYRJ7WAT0QdQHQXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.66.0': - resolution: {integrity: sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==} + '@typescript-eslint/scope-manager@8.69.0': + resolution: {integrity: sha512-ewfspqWvSxKSOaplqAUNbaSFO0eB6w1EtQ+esfYFRm3614Ty4uNtExkcbgd6nWsXphbqKyf9ZYdbZdv2xEoWEQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.69.0': + resolution: {integrity: sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.64.0': - resolution: {integrity: sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.66.0': - resolution: {integrity: sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.64.0': - resolution: {integrity: sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/tsconfig-utils@8.66.0': - resolution: {integrity: sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.66.0': - resolution: {integrity: sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==} + '@typescript-eslint/type-utils@8.69.0': + resolution: {integrity: sha512-ZfoJAVg3JZndQEpEl9petVlxau3lRuElc4HRMuAlLCf8to04/iHz692RUSNmXKDjEuJmIL+KZ2/BsOcBc16dsA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.64.0': - resolution: {integrity: sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA==} + '@typescript-eslint/types@8.69.0': + resolution: {integrity: sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.66.0': - resolution: {integrity: sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.64.0': - resolution: {integrity: sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA==} + '@typescript-eslint/typescript-estree@8.69.0': + resolution: {integrity: sha512-AdFkgqck3Vudb/kWnxlyafU/4aBhHrbQ9locP2N4psXTy5mOBg0SHJumnLvx7r6g1gV4DKvUFwV2nJZBoqOD8w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/typescript-estree@8.66.0': - resolution: {integrity: sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.64.0': - resolution: {integrity: sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ==} + '@typescript-eslint/utils@8.69.0': + resolution: {integrity: sha512-tUbx60BBqQa31kXF5MCsOOLL5E/WzUuxIn7YpAvq+eaUlqvk8/NXnXMBNAdLCr0icjkzem7iUA5QqWHe/hJ1aw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.66.0': - resolution: {integrity: sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/visitor-keys@8.64.0': - resolution: {integrity: sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==} + '@typescript-eslint/visitor-keys@8.69.0': + resolution: {integrity: sha512-+rmdgPA+EXkNgKYvHvFfhrs35utXbwaC5PGpDquSXcoXQDKUA5UjV0LmTucG/4JXkM31BTu4TilHtrN8IVBe8w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.66.0': - resolution: {integrity: sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@ungap/structured-clone@1.3.3': - resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} '@unrs/resolver-binding-android-arm-eabi@1.12.2': resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} @@ -5825,8 +5629,8 @@ packages: cpu: [x64] os: [win32] - '@vercel/blob@2.6.1': - resolution: {integrity: sha512-KTJytw85j1XQBxjN5d6UXI7fIWNQe1jotn4nWN+0hePqLs+Qi1B3jHdQcSKFGF0m2rsy9uhPT6GOXMtHe3qNzg==} + '@vercel/blob@2.8.0': + resolution: {integrity: sha512-Nu+HWKpkgovCh/ezlG7wCVwF7RErTzLzZMbGKFBdGBCbTKyK+s5VXPLl+0+TpNEQPH8AVaGzOpIsXUOtkqylCQ==} engines: {node: '>=20.0.0'} '@vercel/cli-config@0.2.0': @@ -5836,8 +5640,8 @@ packages: resolution: {integrity: sha512-kQF8LGie/Hbdq9/psJxLE7owRTcqMQMhgybU04gCeR7cbQAr5t8OrjefDNColJv1QSSucFt4pLwRiARVmlOnug==} engines: {node: '>= 18'} - '@vercel/nft@1.10.2': - resolution: {integrity: sha512-w+WyX5Ulmj4dtTZrxaulqrjaLZHSbnPzx75SJsTNYmotKsqn1JlLnDJa+lz5hn90HJofhl/2MAtw0mCrgM3qYw==} + '@vercel/nft@1.11.0': + resolution: {integrity: sha512-m1QFg+U+3yPOnP1xSYJ73UIRxLOXdts1JOhiOiyPYqEsALgrXFFINvgUaD6R6iNvaBFAjHllBCbkfx4FuOdpaA==} engines: {node: '>=20'} hasBin: true @@ -5845,8 +5649,8 @@ packages: resolution: {integrity: sha512-r00laGW6Pv778RoR6M2NxX91ycSj+PBwVo+fOb9Bif+F0IyUKt25zrvBzfEzQpeAzbqOgPZyQibEWDdDFApd+A==} engines: {node: '>= 20'} - '@vitejs/plugin-basic-ssl@2.1.4': - resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} + '@vitejs/plugin-basic-ssl@2.3.0': + resolution: {integrity: sha512-bdyo8rB3NnQbikdMpHaML9Z1OZPBu6fFOBo+OtxsBlvMJtysWskmBcnbIDhUqgC8tcxNv/a+BcV5U+2nQMm1OQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} peerDependencies: vite: ^7.3.6 @@ -5857,6 +5661,12 @@ packages: peerDependencies: vite: ^7.3.6 + '@vitejs/plugin-react@5.2.0': + resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^7.3.6 + '@vitejs/plugin-vue@5.2.4': resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5975,9 +5785,6 @@ packages: '@vue/server-renderer@3.5.42': resolution: {integrity: sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==} - '@vue/shared@3.5.39': - resolution: {integrity: sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==} - '@vue/shared@3.5.42': resolution: {integrity: sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==} @@ -5991,16 +5798,16 @@ packages: '@vue/server-renderer': optional: true - '@vueuse/components@14.3.0': - resolution: {integrity: sha512-jnrJrecSfa8H+G6wtAwsCnMtKbKZDSpu5JZDuulZikWrHb6uuS5SyXP6M2b79tofxipm78VWDSzW+58pu1yglA==} + '@vueuse/components@14.4.0': + resolution: {integrity: sha512-USgxljmrGUTjtMJcOCbjU7SlRP6K1i5inM6JgMD8bOBn/oL4dK0XYTtNfWyuo0FgUhtCftIKXi+4vJ8ml+tmqw==} peerDependencies: vue: ^3.5.0 '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} - '@vueuse/core@14.3.0': - resolution: {integrity: sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==} + '@vueuse/core@14.4.0': + resolution: {integrity: sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==} peerDependencies: vue: ^3.5.0 @@ -6045,8 +5852,8 @@ packages: universal-cookie: optional: true - '@vueuse/integrations@14.3.0': - resolution: {integrity: sha512-76I5FT2ESvCmCaSwapI+a/u/CFtNXmzl9f9lNp1hRtx8vKB8hfiokJr8IvQqcQG5ckGXElyXK516b54ozV3MvA==} + '@vueuse/integrations@14.4.0': + resolution: {integrity: sha512-oJz9qTgczvA7L1nXQFRU7h8tQbOCoiceqvMMhT9XYMyOGTqLJ2rEa09PON+nD2t48sZUfeOmg4eaWJXV4sZb/w==} peerDependencies: async-validator: ^4 axios: ^1 @@ -6090,24 +5897,20 @@ packages: '@vueuse/metadata@12.8.2': resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} - '@vueuse/metadata@14.3.0': - resolution: {integrity: sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==} + '@vueuse/metadata@14.4.0': + resolution: {integrity: sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==} '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - '@vueuse/shared@14.3.0': - resolution: {integrity: sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==} + '@vueuse/shared@14.4.0': + resolution: {integrity: sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==} peerDependencies: vue: ^3.5.0 - '@xmldom/xmldom@0.9.10': - resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==} + '@xmldom/xmldom@0.9.12': + resolution: {integrity: sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==} engines: {node: '>=14.6'} - deprecated: this version has critical issues, please update to the latest version - - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} a-sync-waterfall@1.0.1: resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} @@ -6116,10 +5919,6 @@ packages: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} - abbrev@4.0.0: - resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} - engines: {node: ^20.17.0 || >=22.9.0} - abbrev@5.0.0: resolution: {integrity: sha512-/XrFJgzQQQHpti1raDJC6m4ws6aNktmjBlhk8Fdlk7LwCEuDoieEJJY9OFHjfiFJFFRM2tK+Ky/IsfbbmlMu1w==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} @@ -6159,6 +5958,10 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + agent-base@9.0.0: + resolution: {integrity: sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==} + engines: {node: '>= 20'} + ajv-cli@5.0.0: resolution: {integrity: sha512-LY4m6dUv44HTyhV+u2z5uX4EhPYTM38Iv1jdgDJJJCyOOuqB8KtZEGjPZ2T+sh5ZIJrXUfgErYx/j3gLd3+PlQ==} hasBin: true @@ -6179,29 +5982,21 @@ packages: ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} - algoliasearch@5.48.1: - resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} - engines: {node: '>= 14.0.0'} - - algoliasearch@5.55.2: - resolution: {integrity: sha512-OyacJsaeuLUvGWOynNqYc6sx88XvyoG39wMT8SYqL3l9wwaorDW/LPRbUPfhzw0bWsUWzNCZTnFYOrWFBKsUaw==} + algoliasearch@5.57.0: + resolution: {integrity: sha512-HpND7MBGctOAkd1GoQoDZCGoCpqNTS5NG1LuhElFet3RdLJkwnyTYZXZhXwtpAQPrI36fqQ3eT6KQrdKDTKu3A==} engines: {node: '>= 14.0.0'} am-i-vibing@0.4.0: resolution: {integrity: sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==} hasBin: true - angular-eslint@21.4.0: - resolution: {integrity: sha512-LH7bWmtJvsubzwPoztnl1pWgI5X0VrfGTUITGSYcwn2J+SXuN/avzrKrxJmhUiIrNvLtfV+18GG6xZS1IGZdKg==} + angular-eslint@22.2.0: + resolution: {integrity: sha512-66myS9hmanwiRlOiEwfF126jypqwiD+zc2/9dcq8zZjadXRa83Znf3KPp/4kSmSsWmDei9FgYArSmdOkPuMJQA==} peerDependencies: - '@angular/cli': '>= 21.0.0 < 22.0.0' - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + eslint: ^9.0.0 || ^10.0.0 typescript: '*' typescript-eslint: ^8.0.0 @@ -6223,8 +6018,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + ansi-regex@6.3.0: + resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -6282,6 +6077,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@3.0.1: + resolution: {integrity: sha512-nM4mHF/KM1v59ZNKX7zfusQz5wUAxR511YG8Vo6TyiV4aqhu++rbJW4v04xsWhpSsHFj66flT8P7znVpyO20xQ==} + aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -6333,12 +6131,12 @@ packages: ast-v8-to-istanbul@1.0.5: resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} - astro@7.1.0: - resolution: {integrity: sha512-jXHNZXpO0HOuANLwv5uLg5WFXFmIMyDTMlokIb8sv10y8QItOFaikwrqvp6+Pe0MSqvp+aO7V1SfVriFcCEKgA==} + astro@7.3.0: + resolution: {integrity: sha512-P7gtN3rZO62chxRslBxxLLRpwIfKUxx4B4dRMyTHZiW4B0uJyjxmzRr1fIqB7AOCA1JhyeRKoYgQQBLK/inQ/A==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: - '@astrojs/markdown-remark': 7.2.1 + '@astrojs/markdown-remark': ^7.3.0 peerDependenciesMeta: '@astrojs/markdown-remark': optional: true @@ -6406,8 +6204,8 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-jsx-dom-expressions@0.40.7: - resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==} + babel-plugin-jsx-dom-expressions@0.40.10: + resolution: {integrity: sha512-lxve6Y02YiZTldB7efKpnbf1BH00XCFZNYYW235jSGsYaJNFtHrYlKV6/O+miHbjqpIr9FTe5+0no4hofAMbfA==} peerDependencies: '@babel/core': ^7.20.12 @@ -6456,11 +6254,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-solid@1.9.12: - resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==} + babel-preset-solid@1.9.15: + resolution: {integrity: sha512-GBmg1OiPb+OwcH51XbDAKPtvrPfQW7rCJTJxcp8+yhtWwN+kqnbEJk2SgVybd+uhTxTKAvjaFyiQSr/eUZBwzg==} peerDependencies: '@babel/core': ^7.0.0 - solid-js: ^1.9.12 + solid-js: ^1.9.15 peerDependenciesMeta: solid-js: optional: true @@ -6475,28 +6273,28 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bare-events@2.9.1: - resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} + bare-events@2.9.2: + resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: bare-abort-controller: optional: true - bare-fs@4.7.4: - resolution: {integrity: sha512-y1kC+ffIx/tPLdTE693uNjHfzTfr+ravR5tvWlMXe25nELbkqV400S71qHDwbkAQ1FVEZobB1NFRzFbCCcyBCQ==} - engines: {bare: '>=1.16.0'} + bare-fs@4.8.1: + resolution: {integrity: sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg==} + engines: {bare: '>=1.28.0'} peerDependencies: bare-buffer: '*' peerDependenciesMeta: bare-buffer: optional: true - bare-path@3.1.1: - resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==} + bare-path@3.1.2: + resolution: {integrity: sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==} - bare-stream@2.13.3: - resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==} + bare-stream@2.13.4: + resolution: {integrity: sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==} peerDependencies: bare-abort-controller: '*' bare-buffer: '*' @@ -6509,14 +6307,14 @@ packages: bare-events: optional: true - bare-url@2.4.5: - resolution: {integrity: sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==} + bare-url@2.5.4: + resolution: {integrity: sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.43: - resolution: {integrity: sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==} + baseline-browser-mapping@2.11.20: + resolution: {integrity: sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==} engines: {node: '>=6.0.0'} hasBin: true @@ -6524,13 +6322,10 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} - beasties@0.4.1: - resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==} + beasties@0.4.3: + resolution: {integrity: sha512-fIIeLOcbAB/K1kb1HBVJoiq1alHL4RCYBSo5e7HzrNkkgMggXR1Vqt/Z9JWnkfe/qdCo66Ux3QRwZioAIBdWRA==} engines: {node: '>=18.0.0'} - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} @@ -6561,15 +6356,15 @@ packages: resolution: {integrity: sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==} engines: {node: '>=20.19.0'} - brace-expansion@1.1.16: - resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} - brace-expansion@2.1.2: - resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==} + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} - brace-expansion@5.0.7: - resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} - engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -6579,8 +6374,8 @@ packages: resolution: {integrity: sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==} engines: {node: '>= 10.16.0'} - browserslist@4.28.6: - resolution: {integrity: sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==} + browserslist@4.28.8: + resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6628,10 +6423,6 @@ packages: resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} engines: {node: ^18.17.0 || >=20.5.0} - cacache@20.0.4: - resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==} - engines: {node: ^20.17.0 || >=22.9.0} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -6668,8 +6459,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001805: - resolution: {integrity: sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==} + caniuse-lite@1.0.30001810: + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -6693,6 +6484,10 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@6.0.0: + resolution: {integrity: sha512-2uNTXIuTTxk7ciZgAU1BQcgnchcG0xXnrs6jzkQfj9SsRa9M2s5zE8WT96hS6KmG4MzWHSrvH43DF1m4XRkrFg==} + engines: {node: '>=22'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -6772,9 +6567,9 @@ packages: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} - cli-truncate@5.2.0: - resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} - engines: {node: '>=20'} + cli-truncate@6.1.1: + resolution: {integrity: sha512-06p9vyLahLa4zkGcgsGxU6iEkSOiuI4fhCH6Emhe2lPAcoUv73n72DnODsnHA+5wwXGnV0n9M9/qOQJSjYhFhw==} + engines: {node: '>=22'} cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} @@ -6816,9 +6611,6 @@ packages: colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - colors-cli@1.0.33: resolution: {integrity: sha512-PWGsmoJFdOB0t+BeHgmtuoRZUQucOLl5ii81NBzOOGVxlgE04muFNHlR5j8i8MKbOPELBl3243AI6lGBTj5ICQ==} hasBin: true @@ -6838,6 +6630,10 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -6857,8 +6653,8 @@ packages: resolution: {integrity: sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==} engines: {node: '>= 6'} - comment-parser@1.4.7: - resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==} + comment-parser@1.4.8: + resolution: {integrity: sha512-rKZTGo4fzKYna8UcL0isTg5wkBNla7bxTypLwZQXjIdi++IdP1OJ41rI5Mti3/jltkPujbu4i9LIARYA+zpotQ==} engines: {node: '>= 12.0.0'} commenting@1.1.0: @@ -6898,6 +6694,9 @@ packages: confbox@0.2.4: resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + confbox@0.3.1: + resolution: {integrity: sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==} + config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -6917,10 +6716,14 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - content-type@2.0.0: - resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} + content-type@2.1.0: + resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} engines: {node: '>=18'} + content-type@3.0.0: + resolution: {integrity: sha512-AIi5H6p0xk5uknXcN3/rmhP8jgp69OfSe/JuKiQAFprJ7UGw7mwj7m4XcmDzlrnJDG+cGpphAINGdU3g3g7kDw==} + engines: {node: '>=22'} + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -6944,24 +6747,25 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} - copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + copy-anything@4.1.0: + resolution: {integrity: sha512-ufbM3smX/Jbnpk5wcQjzd1MgBpzmqfNETUAyZNrGwU9foRlyHoGzMMBBCRzEhQLBjZfFDE1W2ufPXX2vdWkV8Q==} engines: {node: '>=18'} copy-file@11.1.0: resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} engines: {node: '>=18'} - core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} + core-js-compat@3.50.0: + resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} + engines: {node: '>=6.4.0'} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -7009,44 +6813,52 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} - cspell-config-lib@10.0.1: - resolution: {integrity: sha512-hMpo/0j6k7pbiqrLDOLJKD2IGP9XwhjKf2miiM6p84Xeo4nyuFZaxxDCQ68R851HSYFrrdltgpoipMbj1h2Tnw==} + crossws@0.4.12: + resolution: {integrity: sha512-aypfsr6t0uNvkqaZc6zvBfXzC6pLI0/sIulpkV6RwCVtZqG5ebBzv4weImKK0VNCj91Wl9F5j7p5WU4MNrybng==} + peerDependencies: + srvx: '>=0.11.5' + peerDependenciesMeta: + srvx: + optional: true + + cspell-config-lib@10.2.0: + resolution: {integrity: sha512-QweJ6dtHm1UkguapTm3Csra6p87HiOmLKiVRAxn75tW9Yojb5fGnqLxErO5sGQZvwgWAqQeT9lrqm3ohvCJjVw==} engines: {node: '>=22.18.0'} - cspell-dictionary@10.0.1: - resolution: {integrity: sha512-3cZ659vgsZWkzGQJR/sNqGDVt/OnvTSieLKI76V++4t1bHJfochb9ZrrwsuMsb1VPGiyqClUP1/O6WrefF/FVg==} + cspell-dictionary@10.2.0: + resolution: {integrity: sha512-5r7HBf3nkST6mwsFvRV51i3ETcqFuDQoYK03EqzZYTX4ZLVR/nGrRSOZuFW+d9yU3IKjLWgY14Ab4dDKmBcw7A==} engines: {node: '>=22.18.0'} - cspell-gitignore@10.0.1: - resolution: {integrity: sha512-wN23U61Mx6qPJN3CesOmBU9vnbJ0jQm/ylK0iaVui3CcnO7Zzl5qLu5mPHUzGQGm8yso6qjyxqo16Ho7LpZGOQ==} + cspell-gitignore@10.2.0: + resolution: {integrity: sha512-2/b64Niu5wNlUOW6N7QBRnU8dpnCdvRfZbOgcCO5f5m0OuIbrXTsnrfHJk25w/9M9H2yv2VS8LRKPWuxGXiZpA==} engines: {node: '>=22.18.0'} hasBin: true - cspell-glob@10.0.1: - resolution: {integrity: sha512-7bII9J3aSSpZDwhx7w+zfQXbMxHZQ3be0ilUp5bHrsjz6o07v/NqOHMGcwKdPn1sw2dxDz9sv057xE5pqXnSdw==} + cspell-glob@10.2.0: + resolution: {integrity: sha512-b6H3zFMkqM5OUVabAvdd4sqyziEo3fFlss73Jn2RsHY2h5PH8gOwM1WsWQOcbDSEn7tj5NsA9a3iETXMkY1thw==} engines: {node: '>=22.18.0'} - cspell-grammar@10.0.1: - resolution: {integrity: sha512-xC9AFYmaI9wsO//a7S5tdDGKGJVD5UEEsTg+Up2fi7lPfXIryisYmV6tePNL1SEg0idYss4ja8LUZ3Mib09BjQ==} + cspell-grammar@10.2.0: + resolution: {integrity: sha512-CrMM0Qoh9WuputdD08n3qrJKtzoLEZArT7QhMaeZkl58fARYqmx8JgtrE9X0+GSV4Uden0zVa5o4KcdXtXUSAQ==} engines: {node: '>=22.18.0'} hasBin: true - cspell-io@10.0.1: - resolution: {integrity: sha512-8C2ka07faxflnaqEBO3pektS21XViE/SEHT7F5ZD1ou7FyMR5u3xawTBJSczClfsxLt/WYeztBYrpmGAjmjksw==} + cspell-io@10.2.0: + resolution: {integrity: sha512-UqZcOCH+W9DhcjQGRiKJIwQaeNLGA+PKBHVmw4hvmBvuWGCH7uSiHuOeO+WrvJbolFDfZ9f7gV5ItmITgSANHg==} engines: {node: '>=22.18.0'} - cspell-lib@10.0.1: - resolution: {integrity: sha512-RpsIPiLzc4/YMW8BMRKpyJ81x439qjYWcqgdKeXnMkbKM88J9PexzutfFf/4v97v96KzfNitEzMpbI0uj8OeUg==} + cspell-lib@10.2.0: + resolution: {integrity: sha512-uIU4RtUzodzlS39O26Q1g0AxdHNB7CndkaN40Ekmb19kKrOf49umsXhRhdzrYc/uQ9dsp4AFp/mQI5Yc1MK1NA==} engines: {node: '>=22.18.0'} - cspell-trie-lib@10.0.1: - resolution: {integrity: sha512-BFvhalSkRQFjKrZ//FKK7fRGrZFpifnxB5AwCkzsIsBZqicsfafcQ1xP21qpb0QqyV/IomjNgviG+tRJs+0rMw==} + cspell-trie-lib@10.2.0: + resolution: {integrity: sha512-lvEfGc/SfNfkdq9LZYQENDMuPoILsLwo2o4QHqdyic65MvmL1fZLi77O/qgSJ4aKgVja0/A8cbsdtKnFuruHbw==} engines: {node: '>=22.18.0'} peerDependencies: - '@cspell/cspell-types': 10.0.1 + '@cspell/cspell-types': 10.2.0 - cspell@10.0.1: - resolution: {integrity: sha512-Gg6w/flT3fKfl3la62hfTnhtNnDQ+9mU7kUhVqw/axl/Ms4oENw0oJMkWFIoj4f6nL/SDPz7KcPXd2XbkKFNmQ==} + cspell@10.2.0: + resolution: {integrity: sha512-BZaciNlTSZ72IQtju46JlVXyXIMOdoqjU/i1KamisH1uYw1OO4HgG6T0Y8doB99s6v1WJH7W2RL2kqpfq7e1Kw==} engines: {node: '>=22.18.0'} hasBin: true @@ -7101,10 +6913,6 @@ packages: cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - cssstyle@5.3.7: - resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} - engines: {node: '>=20'} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -7115,9 +6923,9 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-urls@6.0.1: - resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} - engines: {node: '>=20'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} @@ -7219,18 +7027,14 @@ packages: resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.5.0: - resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} engines: {node: '>=18'} define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -7254,9 +7058,6 @@ packages: resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} engines: {node: '>=4'} - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -7272,11 +7073,8 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devalue@5.8.2: - resolution: {integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==} - - devalue@5.9.0: - resolution: {integrity: sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A==} + devalue@5.9.2: + resolution: {integrity: sha512-po4PAY5c53tw5XMocSnf8A/5OHhbbUftpr93aEN6BBoAdntUmK7vu7wOATqvt7cXO7m1Cl4gMVn6p7n6n4mj0w==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -7289,6 +7087,10 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} + engines: {node: '>=0.3.1'} + diffable-html@4.1.0: resolution: {integrity: sha512-++kyNek+YBLH8cLXS+iTj/Hiy2s5qkRJEJ8kgu/WHbFrVY2vz9xPFUT+fii2zGF0m1CaojDlQJjkfrCt7YWM1g==} @@ -7336,8 +7138,8 @@ packages: resolution: {integrity: sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==} engines: {node: '>=20.19.0'} - domino@2.1.7: - resolution: {integrity: sha512-3rcXhx0ixJV2nj8J0tljzejTF73A35LVVdnTQu79UAqTBFEgYPMgGtykMuu/BDqaOZphATku1ddRUn/RtqUHYQ==} + domino@2.1.8: + resolution: {integrity: sha512-qLkTcPRkqvifAB0bweVznkWgAu2hwin8An+HbLy0bH1ZtMyJzwXiHKMhynwR1Wq4PgBvEyg2Y749j4JJnlfDKg==} domutils@1.7.0: resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} @@ -7349,8 +7151,8 @@ packages: resolution: {integrity: sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==} engines: {node: '>=20.19.0'} - dot-prop@10.1.0: - resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} + dot-prop@10.2.0: + resolution: {integrity: sha512-BTJ9aZYL3vCfZlZOBLy9v8TUqWGQ0pzFnygKwFZt5udj6viBoFIBviKPUoZLDCPn1FoXffv6McQFDenrm5Krfw==} engines: {node: '>=20'} dotenv@16.6.1: @@ -7386,8 +7188,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.392: - resolution: {integrity: sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==} + electron-to-chromium@1.5.420: + resolution: {integrity: sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA==} element-to-path@1.2.1: resolution: {integrity: sha512-JNFZS0yI3Myywn/ltFj/yTihHNzMTYk0ycHcgcjlvA/dYMUjMIGqvbezPZeXN3U1Klp/aiigr2mpmhVRfudtbg==} @@ -7404,6 +7206,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -7493,8 +7299,8 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} @@ -7512,13 +7318,8 @@ packages: resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} engines: {node: '>= 0.4'} - esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} hasBin: true @@ -7591,8 +7392,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.8.0: - resolution: {integrity: sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==} + eslint@10.9.1: + resolution: {integrity: sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -7625,8 +7426,8 @@ packages: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} - esrap@2.3.4: - resolution: {integrity: sha512-CHnJXZDfBeOAjLIGNy/0BEsmDu5+irHgUXRW9pGptxCbO3uyjJ98crilzFgiBqizW94UodjX3GAPLg/dhEnUfA==} + esrap@2.3.6: + resolution: {integrity: sha512-yc0OC12UjPqLoc+fe+v5GNs4TOjAigUw3sTikfC+xeBPGUw7gDRz3DtYaqEhxyMVJojcSWJw7jT0QWR+CbuE/A==} peerDependencies: '@typescript-eslint/types': ^8.2.0 peerDependenciesMeta: @@ -7672,8 +7473,8 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@3.1.0: - resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} + eventsource-parser@3.1.1: + resolution: {integrity: sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==} engines: {node: '>=18.0.0'} eventsource@3.0.7: @@ -7698,8 +7499,8 @@ packages: exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - express-rate-limit@8.5.2: - resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} + express-rate-limit@8.7.0: + resolution: {integrity: sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -7708,8 +7509,8 @@ packages: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} - exsolve@1.1.0: - resolution: {integrity: sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==} + exsolve@1.1.1: + resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==} extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -7721,8 +7522,8 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-equals@6.0.2: - resolution: {integrity: sha512-sAjhj9ZhOxYCGiNMnZLaucOqf5ZeFnHNoKoAZiD9thhJ0N8RP85qJK759/97C/3L7NzzmGVB5uiX9AUpySZmUQ==} + fast-equals@6.0.3: + resolution: {integrity: sha512-IECu4C0fFZFoUC2cA2rDaNUuVIfWIZMwh3tY+ng924vOuD9OaUFFrcIrVwCKbV7TJDkGmrHfhwZ7R0AnHfVhyw==} engines: {node: '>=6.0.0'} fast-fifo@1.3.2: @@ -7747,14 +7548,14 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.3: - resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} + fast-uri@3.1.7: + resolution: {integrity: sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==} fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -7816,6 +7617,10 @@ packages: resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} engines: {node: '>=20'} + find-proc@0.1.0: + resolution: {integrity: sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==} + engines: {node: ^20.19.0 || >=22.12.0} + find-up-simple@1.0.1: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} @@ -7836,8 +7641,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} @@ -7846,12 +7651,12 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-estree@0.322.0: - resolution: {integrity: sha512-v7wiiFWSKbJ1HGVCRKhxl+6pQWTQV6P4c7XEfKjVlH71YkgQyJCq0AG5dhJDD/3/SkJgX/F9lvAj2rbrFzArdQ==} + flow-estree@0.330.0: + resolution: {integrity: sha512-IIEGATLNfih3R7AfKYI1ZstiV+RFjRuX1GhrB9gZBifhovHcyTag9IlvkFiSP2hM7G6i1HfAwjn6i3s+EN6SZQ==} engines: {node: '>=18'} - flow-parser@0.322.0: - resolution: {integrity: sha512-Qfd8N4sSuWmlf1qk5M60fi8JrvhNvj9fbwMsRkcnm3UhLYukkbm2CFkAhiTD3n4RVXb6TuCHFCp78TMXpO0zcA==} + flow-parser@0.330.0: + resolution: {integrity: sha512-ytk/NqSxCVNJ6cwlp/rHLot0bE4KGt0LAIcOU0F9QXwp9zdUI0EdDzKETLHVRVkmZj3bROT9v0YZVdD6yJC6gg==} engines: {node: '>=0.4.0'} focus-trap@7.8.0: @@ -7893,15 +7698,12 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - framer-motion@12.42.2: - resolution: {integrity: sha512-5XY9luDiu0oHfHBjpDthFMh0ES+122w6p/papSJBweMkO8Sn+PW2QaEgRblQBpWFnuvZS5qvarpt/hO2pjGmnw==} + framer-motion@13.2.0: + resolution: {integrity: sha512-9E33ebgMaO33w1nN/jEdW8z3/GO483fMi4rqbMG9rt83XgW9QLKRe4NcmJ8s+fQ3O34++UHrIQwlIWGIWTITjA==} peerDependencies: - '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true react: optional: true react-dom: @@ -7919,8 +7721,8 @@ packages: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fs-extra@11.3.6: - resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} + fs-extra@11.4.0: + resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==} engines: {node: '>=14.14'} fs-extra@8.1.0: @@ -8001,8 +7803,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} get-tsconfig@5.0.0-beta.4: resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==} @@ -8011,8 +7813,8 @@ packages: gifwrap@0.10.1: resolution: {integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==} - giget@3.3.0: - resolution: {integrity: sha512-gzi2D96p+AMfDcmJHGDj3KJ9NRiwvlFAU5yfa3ROwWZmFUjX4P43x3BcyRaOMMLto1vUo7C+86+MFhYTl6Ryiw==} + giget@3.3.1: + resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==} hasBin: true github-slugger@2.0.0: @@ -8026,9 +7828,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -8071,8 +7870,8 @@ packages: resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} - globby@16.2.1: - resolution: {integrity: sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==} + globby@16.2.4: + resolution: {integrity: sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==} engines: {node: '>=20'} gopd@1.2.0: @@ -8082,10 +7881,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - gzip-size@7.0.0: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8130,24 +7925,12 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - hast-util-from-html@2.0.3: - resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - - hast-util-from-parse5@8.0.3: - resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hastscript@9.0.1: - resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -8167,16 +7950,16 @@ packages: hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - hono@4.12.30: - resolution: {integrity: sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==} + hono@4.13.5: + resolution: {integrity: sha512-O6+/eCYRkzzzy0rPWwKLiGBR1nFuUPZynnwjxN1MBA62NNqbT0wQEzQyK2gSO5yDIDB336sXQleAhOHrzlYyKw==} engines: {node: '>=16.9.0'} hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - hosted-git-info@9.0.3: - resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} - engines: {node: ^20.17.0 || >=22.9.0} + hosted-git-info@10.1.1: + resolution: {integrity: sha512-DeOnSPAvOndYKfw075gt8yZzQ7S2hNztw34zBTfhIzLhmBTswIBg5/y+pqu/VD5cYWm5goAFTusDmUEmKZ0PEQ==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} @@ -8225,6 +8008,10 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + https-proxy-agent@9.1.0: + resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==} + engines: {node: '>= 20'} + httpxy@0.5.5: resolution: {integrity: sha512-uDjmnPyp1q4Sgzf3w+J/Fc6UqcCEj0x4Wjp7OqK5dGhNeDgpyrAmnS6ey8QWrX3SWDon2DMKf9sBa5X9+CVyMA==} @@ -8232,11 +8019,15 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} hasBin: true + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -8248,30 +8039,21 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@8.0.0: - resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} - engines: {node: ^20.17.0 || >=22.9.0} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - ignore@7.0.6: resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} engines: {node: '>= 4'} + ignore@7.0.8: + resolution: {integrity: sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==} + engines: {node: '>= 4'} + image-q@4.0.0: resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} - image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true - image-size@1.2.1: resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} @@ -8341,8 +8123,8 @@ packages: resolution: {integrity: sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==} engines: {node: '>=12.22.0'} - ip-address@10.2.0: - resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} + ip-address@10.7.0: + resolution: {integrity: sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -8507,10 +8289,6 @@ packages: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -8575,10 +8353,6 @@ packages: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} - is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} - engines: {node: '>=18'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -8604,10 +8378,6 @@ packages: resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} engines: {node: '>=18'} - isexe@4.0.0: - resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} - engines: {node: '>=20'} - isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -8691,8 +8461,8 @@ packages: jose@5.10.0: resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} - jose@6.2.3: - resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + jose@6.2.10: + resolution: {integrity: sha512-iiW7J9qRFlGxvCOIBDBDxFePQSn7ZMAnrYGhrrOo6siO/MIqwfyilLR27pkfDgUk+raLuzADS8A3S/KLBisc0g==} jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} @@ -8711,15 +8481,12 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - - js-yaml@3.15.0: - resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} + js-yaml@3.15.2: + resolution: {integrity: sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==} hasBin: true - js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true jsc-android@250231.0.0: @@ -8734,11 +8501,11 @@ packages: peerDependencies: '@babel/preset-env': ^7.1.6 - jsdom@27.4.0: - resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + jsdom@30.0.1: + resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} peerDependencies: - canvas: ^3.0.0 + canvas: ^3.2.3 peerDependenciesMeta: canvas: optional: true @@ -8754,10 +8521,6 @@ packages: json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-parse-even-better-errors@5.0.0: - resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} - engines: {node: ^20.17.0 || >=22.9.0} - json-schema-migrate@2.0.0: resolution: {integrity: sha512-r38SVTtojDRp4eD6WsCqiE0eNDt4v1WalBXb9cyZYw9ai5cGtBwzRNWjHzJl38w6TxFkXAIA7h+fyX3tnrAFhQ==} @@ -8773,8 +8536,8 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-with-bigint@3.5.10: - resolution: {integrity: sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==} + json-with-bigint@3.5.12: + resolution: {integrity: sha512-uwbF/wSSuOgC7qqlq27Xp5B6a2MHVug3t0idZdTqu0JnlFvgJuH7ju+KAk/J06C7GfhoYy2gnb9wz2INqcne7w==} json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -8794,10 +8557,6 @@ packages: jsonfile@6.2.1: resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -8834,8 +8593,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - less@4.6.7: - resolution: {integrity: sha512-o3UxHBPPVY1HtCXx15/z1NlknQiWyafRNbtLEv+6xFaDRI2g2xPKIH43do9dSwt8bGLTsjNSaifa48N3d6odsQ==} + less@4.9.1: + resolution: {integrity: sha512-orp15PfJvvNDIqJdVWzMI9Sjpjp3VTiw3sfvbB+67LlISTEn8uVT2EdYSuyl02BLvaftv6sdk9Umnxmm5rckmg==} engines: {node: '>=18'} hasBin: true @@ -8942,25 +8701,29 @@ packages: linkify-it@5.0.2: resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} - lint-staged@17.0.8: - resolution: {integrity: sha512-B2P/d+jVW0UXOQ0MVMLrB/9ydA1P+zz6jYfdrbbEd9ur3S2rcbduFWKiUCC02Sm5hbC8nrm7y24WuYMG54HfxA==} + linkify-it@6.1.0: + resolution: {integrity: sha512-wJ/TwpSDTLepCrQoYWYIExIKg5Zchex2Nn5yk2mFnB+6PtdkHtyLx742md9csRjjOnGkKIS/RrbY7l8D6gT9Vw==} + + lint-staged@17.4.1: + resolution: {integrity: sha512-FmJeudcalbSfg1du+JCfvi5vS6Qt08KgbfLWiHinbef+2JJwUZwAWVoaO1AcJVUTWPfk0t30PMQNwPAeCzYQ+Q==} engines: {node: '>=22.22.1'} hasBin: true - listhen@1.10.0: - resolution: {integrity: sha512-kfz4C0OrC6IpaVMtYDJtf6PFjurxe9NBBoDAh/o2p587INryFOO4DQ9OetbCdDrWFt1m1CJKvYrzkGsuPHw8nQ==} + listhen@1.10.1: + resolution: {integrity: sha512-6nt/86SkqUQSLW1ofz8MxC6RhRMqOl3ONISe6qqvJ3xj09aJWQx6DhgSZpugs3PX4PXdOas/WD6A9jx6J2N19A==} hasBin: true + peerDependencies: + '@parcel/watcher': ^2.5.6 + peerDependenciesMeta: + '@parcel/watcher': + optional: true - listr2@10.2.2: - resolution: {integrity: sha512-JtNtbZj8q5BnDMR7trpwvwk3RIrANtIVzEUm8w7amp6xelLgyuq+4WZoTH913XaQAoH/cNdYhaNzBPA2U3xbDw==} + listr2@11.0.0: + resolution: {integrity: sha512-8K88S0aSrcSXdJfiZtEy5BQMnR+TyjrCGLcgAvQs6ta0NEnIm0RJ72/Pv67Jvg07cfBhDbuN74V81lSSVYEFEw==} engines: {node: '>=22.13.0'} - listr2@9.0.5: - resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} - engines: {node: '>=20.0.0'} - - lmdb@3.5.1: - resolution: {integrity: sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==} + lmdb@3.5.6: + resolution: {integrity: sha512-j3uE8ReKNyUWDjhfEFSJqE/1DLtfTR5Z8yFzVHvBjAk37wNg7HdScjcv8ttPHRvrdgPQMPWxFFI0SsdBzI5lBw==} hasBin: true load-bmfont@1.4.2: @@ -9004,9 +8767,9 @@ packages: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} + log-update@8.0.0: + resolution: {integrity: sha512-lddSgOt3bPASrylL54ZSpy8nBHns+vBVSoILlVOx+dei300pnLRN958rj/EdlVLKuWlSESU3qdnDZdAI7FXYGg==} + engines: {node: '>=22'} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -9032,11 +8795,14 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magic-string@1.2.0: - resolution: {integrity: sha512-ptco+HFxTLgjafSLim2LojBSwfg5feBjd+SqyiwdGkzC38UPdZy3zgrHMI2CoTf5fJL38tbHMYWVzIH8BxGqJw==} + magic-string@1.0.0: + resolution: {integrity: sha512-CGvjzMN08iv6w1mm4/x3Gh1hLb4VnyRUA15FFpl6CsCIGGoe36k7kY5KNz9QDbSBN5I/fWHM6ZlIkUTa5xdUEA==} - magicast@0.5.3: - resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + magic-string@1.2.3: + resolution: {integrity: sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==} + + magicast@0.5.4: + resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -9057,10 +8823,6 @@ packages: resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} engines: {node: ^18.17.0 || >=20.5.0} - make-fetch-happen@15.0.6: - resolution: {integrity: sha512-Je0fLJ0F5atA7F+eIlLzk+Wkcl57JDf4kf+EW8xiP5E31xOQxkIxTbgf1Oi1Lw9tRI9UEMRdI5Vz2xTzoNU1Jw==} - engines: {node: ^20.17.0 || >=22.9.0} - makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -9070,8 +8832,12 @@ packages: markdown-it-container@4.0.0: resolution: {integrity: sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==} - markdown-it@14.3.0: - resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} + markdown-it@14.3.1: + resolution: {integrity: sha512-4Ej49aYTDFIQ+uBkfX8GBvJGccoARxxPep+7aWTs55ozbjQJpW9M26Fe53vnGgvLeVzva/amzjQQaQu9w0vMhA==} + hasBin: true + + markdown-it@15.0.1: + resolution: {integrity: sha512-9/7gE95FNPkfUWrjJIoHZza2iLmuJlPD0UNMxPi7bxUrbCR525YZY0r+zyfes0dZI5ZZ/uNIXUJca0pJvtw41g==} hasBin: true markdown-title@1.0.2: @@ -9115,11 +8881,11 @@ packages: mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + mdurl@2.1.0: + resolution: {integrity: sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==} - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + media-typer@1.1.1: + resolution: {integrity: sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==} engines: {node: '>= 0.8'} memoize-one@5.2.1: @@ -9309,10 +9075,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -9324,8 +9086,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: @@ -9350,10 +9112,6 @@ packages: resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} engines: {node: ^18.17.0 || >=20.5.0} - minipass-fetch@5.0.2: - resolution: {integrity: sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==} - engines: {node: ^20.17.0 || >=22.9.0} - minipass-flush@1.0.7: resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} engines: {node: '>= 8'} @@ -9366,10 +9124,6 @@ packages: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} - minipass-sized@2.0.0: - resolution: {integrity: sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==} - engines: {node: '>=8'} - minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} @@ -9407,14 +9161,14 @@ packages: resolution: {integrity: sha512-OHpTRQwn2ezasILW8iKe+Yww1XsfWsZIpUOLF7RDb2g5GwO3trPaRwi7+8BDiJ7HFx2Kg2mfUdCBcVhwYlOz2g==} engines: {node: '>= 0.8.0'} - motion-dom@12.42.2: - resolution: {integrity: sha512-5gIMWLp/PycBtJRJWRgjxke5n8dlvkSn2DrYW+tr3XcqAZY1xZh6BJyooJXCM8wdfM7wfMjkBJNLge1CKPUIRA==} + motion-dom@13.2.0: + resolution: {integrity: sha512-N6gdSoWRDk0Rh/fVtlqUtLs+fEN3ELFZI3cn3IQE9Mnf3E+Mh8wjO6MstzCOPFh4Yf0L1as5m2eUyYWj8ylVSQ==} - motion-utils@12.39.0: - resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} + motion-utils@13.0.0: + resolution: {integrity: sha512-7DnN7TmbLcYXcG4RVadXIihWlyuM9afoUww8Y5Agg431kGKiuL2/OMyP4mJ5wLz+pvN3t5ySClLOaVXJ+wekRQ==} - motion-v@1.10.3: - resolution: {integrity: sha512-9Ewo/wwGv7FO3PqYJpllBF/Efc7tbeM1iinVrM73s0RUQrnXHwMZCaRX98u4lu0PQCrZghPPfCsQ14pWKIEbnQ==} + motion-v@2.4.0: + resolution: {integrity: sha512-kRDGMAZk3nvdjEO36Wo6pezSEIStGXGhVFiwo1QkUDsUg8mB5igjYPXyece8wtu2DrHhmFfA6Y1nOz07+5QH4A==} peerDependencies: '@vueuse/core': '>=10.0.0' vue: '>=3.0.0' @@ -9440,9 +9194,9 @@ packages: msgpackr@1.12.1: resolution: {integrity: sha512-4EUH9tQHnMmEgzW/MdAP0KIfa1T9AF+htl0ffe2n5vb2EKn9y2co8ccpgWko6S52Jy1PQZKwRnx5/KkYjtd9MQ==} - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -9450,8 +9204,8 @@ packages: nan@2.28.0: resolution: {integrity: sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==} - nanoid@3.3.16: - resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -9463,6 +9217,11 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + needle@2.9.1: + resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + needle@3.5.0: resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} engines: {node: '>= 4.4.x'} @@ -9476,15 +9235,15 @@ packages: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} + negotiator@1.1.0: + resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==} + engines: {node: '>=18'} neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - neotraverse@0.6.18: - resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + neotraverse@1.0.1: + resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} engines: {node: '>= 10'} next@16.3.4: @@ -9508,15 +9267,15 @@ packages: sass: optional: true - ng-packagr@21.2.5: - resolution: {integrity: sha512-WGF4DK6nOE3xKPj8miC3lw6I66n1wdBhnMl25zMExqFmzRk9jABwFj3eycellTiH4t4x+yHnuxS/im9DLTa9cg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + ng-packagr@22.1.1: + resolution: {integrity: sha512-jZzpQckw2SFvuYI3aWfYMefSVKKG/04E+vrX2KD6coMx7ciLBotVWuLc0331Fjb6XNmAVcsmgQ5NY/Lf+9Himw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': ^21.0.0 || ^21.2.0-next + '@angular/compiler-cli': ^22.0.0 || ^22.1.0-next || ^22.2.0-next tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: '>=5.9 <6.0' + typescript: '>=6.0 <6.1' peerDependenciesMeta: tailwindcss: optional: true @@ -9586,22 +9345,17 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - node-gyp@12.4.0: - resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-mock-http@1.0.4: - resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + node-mock-http@1.0.5: + resolution: {integrity: sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==} - node-releases@2.0.51: - resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + node-releases@2.0.54: + resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==} engines: {node: '>=18'} nopt@10.0.1: @@ -9614,42 +9368,13 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - nopt@9.0.0: - resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-bundled@5.0.0: - resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-install-checks@8.0.0: - resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-normalize-package-bin@5.0.0: - resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-package-arg@13.0.2: - resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-packlist@10.0.4: - resolution: {integrity: sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-pick-manifest@11.0.3: - resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-registry-fetch@19.1.1: - resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} - engines: {node: ^20.17.0 || >=22.9.0} + npm-package-arg@14.0.0: + resolution: {integrity: sha512-69XQh3k+dtGa1p+7RaR57IuG3rCko96xr/nUfN4yDYBXbTYICiWcOpsFKLN2GtGE9cyIljE+f1exnaYt9MvM+Q==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -9703,10 +9428,6 @@ packages: resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} - engines: {node: '>=12.20.0'} - obug@2.1.4: resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} @@ -9714,8 +9435,8 @@ packages: ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + ohash@2.0.12: + resolution: {integrity: sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==} omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} @@ -9752,25 +9473,34 @@ packages: oniguruma-to-es@4.3.6: resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - open@11.0.0: - resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + open@11.0.2: + resolution: {integrity: sha512-RWqF+pBSkqecEvCKOn8QYhaNdRMJDZRIrlS/7rTDdLHaPcfXGCZ/h8zb413NfvdeAV0MR7T1yJcA34/q+CSm1Q==} engines: {node: '>=20'} open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - openai@5.23.2: - resolution: {integrity: sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==} + openai@7.9.0: + resolution: {integrity: sha512-Qfx4qKmPllnilbuP6NgEj5KPUxLShYxrlRPWh3ZRQgNgs5B1V52PrfAdEQbW9MTGq7MquDYFMm+K/KXxiY736w==} + engines: {node: '>=22.0.0'} hasBin: true peerDependencies: - ws: ^8.18.0 - zod: ^3.23.8 + '@aws-sdk/credential-provider-node': '>=3.972.0 <4' + '@smithy/hash-node': '>=4.3.0 <5' + '@smithy/signature-v4': '>=5.4.0 <6' + undici: '>=5 <9' + ws: ^8.21.0 + zod: ^3.25 || ^4.0 peerDependenciesMeta: + '@aws-sdk/credential-provider-node': + optional: true + '@smithy/hash-node': + optional: true + '@smithy/signature-v4': + optional: true + undici: + optional: true ws: optional: true zod: @@ -9780,10 +9510,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@9.3.0: - resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} - engines: {node: '>=20'} - ora@9.4.1: resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} engines: {node: '>=20'} @@ -9798,8 +9524,8 @@ packages: oslllo-potrace@3.0.0: resolution: {integrity: sha512-ruH77xpa31SGnXuBJB54XYmlvZnsHlfrUgLFiEK6NxvTgsEZ6IAlfVxOkGnzhJq/73H5Nz9feoa4tLkJRsxYAg==} - oslllo-svg-fixer@5.0.0: - resolution: {integrity: sha512-MhHj7c+w1VajyACTELp9OehnveI0T4P5sSqL5g+urdqAf1dhwOfCpFoLRI16BDYR2EezCPFzKu1TTJG6bXBjFw==} + oslllo-svg-fixer@6.0.1: + resolution: {integrity: sha512-I7s0ofAf0Y4U2JzSHTePATg8txiqOY7Fc+dX1m+PeXZqPuUs42708lgUhDSX9JmoHta3THvugW8Mi4fQtkbBPA==} engines: {node: '>=18.0.0'} hasBin: true @@ -9813,10 +9539,17 @@ packages: outvariant@1.4.0: resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-parser@0.142.0: + resolution: {integrity: sha512-kKR+jPiRJYJDexVoziIg/FVGvr1fT1FZSSJOk6tVoMKKSlsf1Cso+cgGCJkOEDWOP174vRntCPFKg+AS7InWvw==} + engines: {node: ^20.19.0 || >=22.12.0} + p-event@6.0.1: resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} engines: {node: '>=16.17'} @@ -9833,8 +9566,8 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@7.3.1: - resolution: {integrity: sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q==} + p-limit@7.3.2: + resolution: {integrity: sha512-Ll0w3fU24vYpXoZmjjZIee6bJQDgG0oAyo1PdmFYI8UDwJJddaHAypxIH9avUu+t+lSsAwKVsb1jDCMIIChliw==} engines: {node: '>=20'} p-locate@3.0.0: @@ -9849,16 +9582,16 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.5: - resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==} + p-map@7.0.7: + resolution: {integrity: sha512-VaWRu2i4FJNRtiRWCuuQRgfQ1B7a6+gMSrO+3j0EQi/k0ULfS9kosRxGoiqwzIjZTDI02tGfk5mXXltLg6QtfQ==} engines: {node: '>=18'} - p-memoize@7.1.1: - resolution: {integrity: sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==} - engines: {node: '>=14.16'} + p-memoize@8.0.0: + resolution: {integrity: sha512-jdZ10MCxavHoIHwJ5oweOtYy6ElPixEHaMkz0AuaEMovR1MRpVvYFzIEHRxgMEpXYzNpRVByFAniAzwmd1/uug==} + engines: {node: '>=20'} - p-queue@9.3.2: - resolution: {integrity: sha512-pCsnA4piiqkrwAJ555Xh/lc717SijJrTBr96P1q6BRnUdm2XPB4v91oiXVAUr5HbIbXW4D8kIslfJUE28Rud6A==} + p-queue@9.3.3: + resolution: {integrity: sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==} engines: {node: '>=20'} p-timeout@6.1.4: @@ -9876,18 +9609,13 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.7.0: - resolution: {integrity: sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==} + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} package-name-regex@2.0.6: resolution: {integrity: sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==} engines: {node: '>=12'} - pacote@21.5.1: - resolution: {integrity: sha512-KvcJ9iy3crysCsgqc4+PknH/w6jkrp8JN36mpZBPwNaDRwTfMZD37YzRazNstiZUOhuF5pno9f78n9mEJBavwg==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -9915,8 +9643,8 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse5-html-rewriting-stream@8.0.0: - resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} + parse5-html-rewriting-stream@8.0.1: + resolution: {integrity: sha512-NaRku2aMpUN1Sh1Gyk1KWUh2A7EJx2c6qYzvwsPtqhoHoaURshdrceYK3LunVCm3WHhm6FS7Vcczbvdh3/UIVw==} parse5-htmlparser2-tree-adapter@7.1.0: resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} @@ -9977,9 +9705,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -10008,14 +9733,14 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - picomatch@4.0.5: resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -10024,13 +9749,17 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - piscina@4.9.3: - resolution: {integrity: sha512-3e3ka9QCE8RJ5I9uszdAADZnkcYi21cqmF3gxox3u884N72qpFHCsIVhHt8cEQ9t3Auq/NqoiCEuhxlxxQuDWA==} + piscina@4.9.4: + resolution: {integrity: sha512-RyBDr2VheQ8ZfH3N8SzQZHztqVyOtadTwLnUYof6gdj5161/eu2wNhCbGl5GHnNKDpnkicJYpKtL2J+y/gk6XA==} piscina@5.2.0: resolution: {integrity: sha512-DszUCKeVN/5G5QKo6jAVHL8fmKnkJvQ0ACiVgY7YGCq3TUB2oznAOayvZPIAdEThvhczkXR+qm3IHsNXpFCYfA==} engines: {node: '>=20.x'} + piscina@5.3.2: + resolution: {integrity: sha512-vv7l/mM7B9WgrhDaudIqv1x6v4LOBRYYmpWGdWushhpbCmVHp11sUB2v4hj1CAeTGXVxuZFz6xOU1RalAiPKfQ==} + engines: {node: '>=20.x'} + pixelmatch@4.0.2: resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} hasBin: true @@ -10050,8 +9779,8 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.3.1: - resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + pkg-types@2.3.2: + resolution: {integrity: sha512-v0sVXzj7oPGysr543YYZLYbcJNJsKikSsp/fFzoxQ12ewY3ZZr7oCPC8y7OlmxfYB3QPvriXmuPD8KZggE1vqg==} playwright-core@1.58.2: resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} @@ -10088,25 +9817,21 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss@8.5.19: - resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.23: resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.27: + resolution: {integrity: sha512-79Iho8QeYyooJ8e9lCRyTVlyTAkS/kXBYKff6TMzS3kEWGQ8Ds5UEtXpGrSUDLUWok6QTvxeYy0GO8fopHnaSA==} + engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} - preact@10.29.7: - resolution: {integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==} - peerDependencies: - preact-render-to-string: '>=5' - peerDependenciesMeta: - preact-render-to-string: - optional: true + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} + engines: {node: '>=20'} preact@10.29.8: resolution: {integrity: sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==} @@ -10124,28 +9849,13 @@ packages: resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} engines: {node: ^14.15.0 || >=16.0.0} - prettier@2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} engines: {node: '>=14'} hasBin: true - prettier@3.9.5: - resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} - engines: {node: '>=14'} - hasBin: true - - pretty-bytes@7.1.0: - resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} + pretty-bytes@7.1.2: + resolution: {integrity: sha512-spZIOSORH9joSPGN0L/tYfvINH+xbOpnI3kdcEkq0mzGMjFvDZzyRVbqEOV0wACF0gggdKE9RWO2mosGsBh/Rg==} engines: {node: '>=20'} pretty-format@27.5.1: @@ -10160,13 +9870,16 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} + probe-image-size@7.4.0: + resolution: {integrity: sha512-cdEprVtZxV+awMde9X+4jILBFYh4CARxVrQaMl4wY4YcPWbul9jntXrIW95NInBDyJwcVUP3U0T6yukN8rMBaQ==} + proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} - proc-log@6.1.0: - resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} - engines: {node: ^20.17.0 || >=22.9.0} + proc-log@7.0.0: + resolution: {integrity: sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} process-ancestry@0.1.0: resolution: {integrity: sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==} @@ -10196,6 +9909,15 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-agent-negotiate@1.1.0: + resolution: {integrity: sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==} + engines: {node: '>= 20'} + peerDependencies: + kerberos: ^2.0.0 + peerDependenciesMeta: + kerberos: + optional: true + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -10207,8 +9929,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.15.3: - resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} quansync@0.2.11: @@ -10235,17 +9957,12 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} - rc9@3.0.1: - resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + rc9@3.1.0: + resolution: {integrity: sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==} react-devtools-core@5.3.2: resolution: {integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==} - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -10301,10 +10018,6 @@ packages: react-dom: optional: true - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -10484,8 +10197,13 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-rc.4: - resolution: {integrity: sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==} + rolldown@1.2.0: + resolution: {integrity: sha512-u7tgm5l4Yw1iTqUL4EcYOAt7fFvCgQMLeidrnD4GALlC6aOznCjezYajgxeyKw27u0Q5N7fwgCzjVyPIWzwuBA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rolldown@1.2.7: + resolution: {integrity: sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -10500,6 +10218,17 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 || ^6.0 + rollup-plugin-dts@6.5.1: + resolution: {integrity: sha512-jODTXp3H7MK/Ur/ErtsrQ0G1GvaCmc3du+y5pNrdBMf6d7HlL2Nd/N6TkEr+f75CkUj01zEoEd7y2elH0eHi1Q==} + engines: {node: '>=20'} + peerDependencies: + '@typescript/typescript6': ^6 + rollup: ^3 || ^4 + typescript: ^4.5 || ^5 || ^6 || ^7 + peerDependenciesMeta: + '@typescript/typescript6': + optional: true + rollup-plugin-esbuild@6.2.1: resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} engines: {node: '>=14.18.0'} @@ -10524,21 +10253,8 @@ packages: peerDependencies: rollup: ^3.0.0||^4.0.0 - rollup-plugin-visualizer@6.0.11: - resolution: {integrity: sha512-TBwVHVY7buHjIKVLqr9scTVFwqZqMXINcCphPwIWKPDCOBIa+jCQfafvbjRJDZgXdq/A996Dy6yGJ/+/NtAXDQ==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - rolldown: 1.x || ^1.0.0-beta - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rolldown: - optional: true - rollup: - optional: true - - rollup-plugin-visualizer@7.0.1: - resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} + rollup-plugin-visualizer@7.1.1: + resolution: {integrity: sha512-ThaGiHTU8XW02OkK80TrTHATraJmM9OAduU4otal+7gyXLpYEtmGBLfx5kW+EHvvLwn03YGW2NnwKUIqsYlJAA==} engines: {node: '>=22'} hasBin: true peerDependencies: @@ -10550,8 +10266,8 @@ packages: rollup: optional: true - rollup@4.62.2: - resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} + rollup@4.63.1: + resolution: {integrity: sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -10617,19 +10333,19 @@ packages: engines: {node: '>=20.19.0'} hasBin: true - sass@1.97.3: - resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} - engines: {node: '>=14.0.0'} + sass@1.103.1: + resolution: {integrity: sha512-9icZURbP51S6S0QGoyaeqk9uB06GNWxsFYWfH5RgpFgqK5FA8tJcM3AdVxrZEVJ7dz+L87nG95gBKf4VuaMHGw==} + engines: {node: '>=20.19.0'} hasBin: true - satteri@0.9.5: - resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} + satteri@0.10.5: + resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + sax@1.6.1: + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} engines: {node: '>=11.0.0'} saxes@6.0.0: @@ -10676,12 +10392,12 @@ packages: resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} engines: {node: '>=0.10.0'} - serialize-javascript@7.0.7: - resolution: {integrity: sha512-YAy8Od6KV+uuwUuU50np8fGB/Aues6Y0nAhA9y/hId74PlKUcme4pXcBD46NWKr1Q4osN/iseZ17YqO1XfmI8g==} + serialize-javascript@7.1.1: + resolution: {integrity: sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ==} engines: {node: '>=20.0.0'} - seroval-plugins@1.5.5: - resolution: {integrity: sha512-+BDhqYM6CEn3x09v44dpa9p6974FuUB2dxk+Ctn04k0cO1Zt6QODTXfmEZK0eBaTe/fJBvP4NMGuNJ+R8T+QMg==} + seroval-plugins@1.5.6: + resolution: {integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 @@ -10692,8 +10408,8 @@ packages: peerDependencies: seroval: ^1.0 - seroval@1.5.5: - resolution: {integrity: sha512-bSjOuPcwPKLSJNhr9+bZxA20nQxVle5J5MNsYRVE6cIg7KpRLXGupymePavu0jrxlPiPsr4xGZSB8yUY2sH2sw==} + seroval@1.5.6: + resolution: {integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==} engines: {node: '>=10'} seroval@1.6.4: @@ -10733,10 +10449,6 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.35.4: resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} engines: {node: '>=20.9.0'} @@ -10761,11 +10473,8 @@ packages: shiki@2.5.0: resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} - shiki@3.23.0: - resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} - - shiki@4.3.1: - resolution: {integrity: sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==} + shiki@4.4.3: + resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==} engines: {node: '>=20'} side-channel-list@1.0.1: @@ -10794,10 +10503,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sigstore@4.1.1: - resolution: {integrity: sha512-endqECJkfhozrXMK5ngu/UAA0xVcVEFdnHJCElGaExypjW+HK5i6zu3NteLoaX/iFbRUbC3+DjttQs0GARr+5w==} - engines: {node: ^20.17.0 || >=22.9.0} - simple-code-frame@1.3.0: resolution: {integrity: sha512-MB4pQmETUBlNs62BBeRjIFGeuy/x6gGKh7+eRUemn1rCFhqo7K+4slPqsyizCbcbYLnaYqaoZ2FWsZ/jN06D8w==} @@ -10811,9 +10516,9 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sitemap@7.1.3: - resolution: {integrity: sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} hasBin: true slash@3.0.0: @@ -10824,13 +10529,9 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} - engines: {node: '>=18'} - - slice-ansi@8.0.0: - resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} - engines: {node: '>=20'} + slice-ansi@9.0.0: + resolution: {integrity: sha512-SO/3iYL5S3W57LLEniscOGPZgOqZUPCx6d3dB+52B80yJ0XstzsC/eV8gnA4tM3MHDrKz+OCFSLNjswdSC+/bA==} + engines: {node: '>=22'} smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} @@ -10840,20 +10541,20 @@ packages: resolution: {integrity: sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==} engines: {node: '>=20.0.0'} - smol-toml@1.7.0: - resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} + smol-toml@1.8.0: + resolution: {integrity: sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==} engines: {node: '>= 18'} socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.9: - resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} + socks@2.8.10: + resolution: {integrity: sha512-e0VyvkVTwVYViNovRkZ9aodhxVlyoMn7eJhVUPxZ+eK9P/7CBkxvvsBOHqFPEH416726W8tLXXXjKwqgTErrCQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - solid-js@1.9.14: - resolution: {integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==} + solid-js@1.9.15: + resolution: {integrity: sha512-EeiY2xfpZJqPLjXspVEKjAII4yv8NyG//NxZ3IpOFHdUNnnTyL0uJOeS9LWGvA7cFCz5y94cjFwYlmw5Luncsg==} solid-refresh@0.6.3: resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} @@ -10883,6 +10584,10 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + source-map@0.8.0: + resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==} + engines: {node: '>= 12'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -10895,9 +10600,6 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-expression-validate@2.0.0: resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} @@ -10922,14 +10624,15 @@ packages: engines: {node: '>=20.16.0'} hasBin: true + srvx@1.0.1: + resolution: {integrity: sha512-3XQNsxNBTY5SlfeeUsciNrmvG4oOPwWns7Vc+lZCBJvMMu0U8ZUgCzgJjZLac8dowsZNJ44X93isrkjIIdtJ/A==} + engines: {node: '>=20.16.0'} + hasBin: true + ssri@12.0.0: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} - ssri@13.0.1: - resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} - engines: {node: ^20.17.0 || >=22.9.0} - stable-hash-x@0.2.0: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} @@ -10977,8 +10680,11 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - streamx@2.28.0: - resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} + stream-parser@0.3.1: + resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} + + streamx@2.28.1: + resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==} strict-event-emitter@0.4.6: resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} @@ -11032,10 +10738,6 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -11048,8 +10750,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + strip-literal@4.0.0: + resolution: {integrity: sha512-PaqAvfUZKBwc/SLmNZtHmzK+v19Z4O4eS3cKPeGvbIv/U3pnyEq4Tuw3/4v/FwfM8VQaEawsyCcOQ0P+kpwWWw==} strtok3@6.3.0: resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} @@ -11148,28 +10850,27 @@ packages: typescript: optional: true - svelte2tsx@0.7.57: - resolution: {integrity: sha512-nQo0xEfUpSVjfkxan2UmC6Wl9UZVe9+/pglUiyBNMJ7KDQ9DDooucmXdToBOvzSfgYjj/kMYwf6CTTDz/z048w==} + svelte2tsx@0.7.61: + resolution: {integrity: sha512-EpQ/+UHITBULeUojx/LLD3uTYasZXcX1BrqlrzfLUnT9vdUhaOWK59a3ryWcFU8L0sY1SP+gRhJ2Beiis98+qw==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 || ^6.0.0 - svelte@5.56.9: - resolution: {integrity: sha512-VT8kSnlEg8069w7AiCcAk3Yf5xvMnrGTagVOmU/OpOLHaHnNqXhWZCH/4EVga/bT/HtWhvE6/fHrXLErx7OnJA==} + svelte@5.57.0: + resolution: {integrity: sha512-NdbDn7fl4be1ViUG0oq/lvG6OZy3oENolV2ONjiqqsfVoeAfzaQAKUcEX3MrQod/Bebv1PgwET9rfXhgn9s4Kg==} engines: {node: '>=18'} - svg-path-commander@2.2.1: - resolution: {integrity: sha512-hZ9GOFBT/J31fTu3UCj+dZs1w4ZqiGCG/nQpFm1CEQ/EPFj9x3pHXPi6EjYuZmPlua7K8CdFc2+HxndiZ/Q3+g==} - engines: {node: '>=16', pnpm: '>=8.6.0'} - - svg-pathdata@6.0.3: - resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} - engines: {node: '>=12.0.0'} + svg-path-commander@2.3.3: + resolution: {integrity: sha512-eeNMlh4JHxAG0820MwHM7A4UD3PRMFALNORZbEwCJx5O1Uhn2CWnLBNxHXWGdahiJVtSsG8VKoW+HzLtY73J/A==} svg-pathdata@7.2.0: resolution: {integrity: sha512-qd+AxqMpfRrRQaWb2SrNFvn69cvl6piqY8TxhYl2Li1g4/LO5F9NJb5wI4vNwRryqgSgD43gYKLm/w3ag1bKvQ==} engines: {node: '>=20.11.1'} + svg-pathdata@9.0.0: + resolution: {integrity: sha512-h9FuqmNsgDKq2hQBqTMOWjZwqdZOnWijZmcg6FL4iSmH6VvRnobhHrBQSdOiP0W9nwgv0qiW5vQ3//Arrmp19g==} + engines: {node: '>=24.14.0'} + svg2ttf@6.1.0: resolution: {integrity: sha512-EjxgcmhKcBpx/3fR1hPwVtJAbUc/ZsDpwOTF74SI3PbzCg4pDHnxVmoSuqgEqxVJGqqkSCI6+82cucpn2D5aOw==} hasBin: true @@ -11179,13 +10880,13 @@ packages: engines: {node: '>=20.11.1'} hasBin: true - svgo@3.3.4: - resolution: {integrity: sha512-GsNRis4e8jxn2Y9ENz/8lbJ93CstG8svtMnuRaHbiF2LTJ5tK0/q3t/URPq9Zc7zVWBJnNnJMIp6bevK7bSmNg==} + svgo@3.3.5: + resolution: {integrity: sha512-8SQMzdrvWaD8deUmrnYB+ASyxBVgWUOilg+A75nE/76WdLpj6LopCwiAVvkzkcqy/9b7t2Mg7faFLjg0ZRcZ3w==} engines: {node: '>=14.0.0'} hasBin: true - svgo@4.0.2: - resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==} + svgo@4.1.0: + resolution: {integrity: sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==} engines: {node: '>=16'} hasBin: true @@ -11215,11 +10916,11 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tar-stream@3.2.0: - resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} + tar-stream@3.2.1: + resolution: {integrity: sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ==} - tar@7.5.20: - resolution: {integrity: sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==} + tar@7.5.22: + resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} engines: {node: '>=18'} teex@1.0.1: @@ -11229,8 +10930,8 @@ packages: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} - terser@5.49.0: - resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} + terser@5.51.2: + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} engines: {node: '>=10'} hasBin: true @@ -11271,27 +10972,23 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} - tldts-core@7.4.8: - resolution: {integrity: sha512-c1P7u0EhACHj7lPy4MJm8iTFEU8+nB0LCtddH0fhP7noaVoXAqafMtOOeX+ulpuPBqnrRgRhw494RICT3mbhnw==} + tldts-core@7.4.11: + resolution: {integrity: sha512-CW3WN2rIIE/Of21mulhgnGOwoDyEFNygyIBOONSdyAuSATgMMUCpLeUlB+E8sAwA5xRV9hYPl+kyZ9citHCaKg==} - tldts@7.4.8: - resolution: {integrity: sha512-htwgN/8KRB3z3vnC0BOETVh2m499g5GmyTK9Wq5JBLX3FNz6tSBveAd+fQhzy9hkjif8vy2jwDMR1sGhLtZl2A==} + tldts@7.4.11: + resolution: {integrity: sha512-aBiNayCfTQxuIJBm06M+xR14cYaYlDlSXZbgsnKzKNxDKUVq7KFwTjwBSsb7m9Y5xO8WfPnBc63WaYFMTGlvqw==} hasBin: true tmpl@1.0.5: @@ -11309,8 +11006,8 @@ packages: resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} engines: {node: '>=10'} - tokenx@1.3.0: - resolution: {integrity: sha512-NLdXTEZkKiO0gZuLtMoZKjCXTREXeZZt8nnnNeyoXtNZAfG/GKGSbQtLU5STspc0rMSwcA+UJfWZkbNU01iKmQ==} + tokenx@1.6.0: + resolution: {integrity: sha512-CKTjk345ajvBAUp5xUI9a5KKN0zU0lBueVHQbCskH1Hp6WkUKsPW2qGCYNs0pxNyfzxfo+IIjdt2W4sMbw/qBw==} toml-eslint-parser@0.10.1: resolution: {integrity: sha512-9mjy3frhioGIVGcwamlVlUyJ9x+WHw/TXiz9R4YOlmsIuBN43r9Dp8HZ35SF9EKjHrn3BUZj04CF+YqZ2oJ+7w==} @@ -11379,10 +11076,6 @@ packages: resolution: {integrity: sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg==} hasBin: true - tuf-js@4.1.0: - resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} - engines: {node: ^20.17.0 || >=22.9.0} - tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} @@ -11399,12 +11092,12 @@ packages: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} - type-fest@5.8.0: - resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} + type-fest@5.9.0: + resolution: {integrity: sha512-yANm3Jr3GiJ1qgJlxGAVxTOIcEOk1rhQHamlXtnrCK7EHP4HeM9OGxtMg/W7HFdrVzw/ZWJKGVIJusVH85sLtw==} engines: {node: '>=20'} type-is@2.1.0: @@ -11427,18 +11120,13 @@ packages: resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} engines: {node: '>= 0.4'} - typescript-eslint@8.66.0: - resolution: {integrity: sha512-QlEbBPz/RuJ1XUHj29nm3t0F/O/cSlEnntozqPOYHnnTGAXFamnMBu5i9Vn6vhUPHGAjR+Vl+5J8vPN/BMUrJw==} + typescript-eslint@8.69.0: + resolution: {integrity: sha512-B3MltX0VqjUBNEe3b3sSuiRbfa6XrfHFtBiPamjT5AsW/dfq+y+bc0wyuS9DxAS1LyzCxRp2+rxzpLUvqM2BvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -11447,6 +11135,9 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + uc.micro@3.0.0: + resolution: {integrity: sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==} + ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} @@ -11466,8 +11157,8 @@ packages: unctx@2.5.0: resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} @@ -11475,13 +11166,13 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - undici@6.27.0: - resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} + undici@6.28.0: + resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==} engines: {node: '>=18.17'} - undici@7.28.0: - resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} - engines: {node: '>=20.18.1'} + undici@8.10.1: + resolution: {integrity: sha512-YQ3WlbqjYMmNpdvDH64jAgLjxuAR9+649calDWhbshYaeQGO2bR4nI94ORJmwI3J9YhoKQnpyGOK+0zlWS5N5Q==} + engines: {node: '>=22.19.0'} unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} @@ -11509,11 +11200,11 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unifont@0.7.4: - resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==} + unifont@0.7.5: + resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==} - unimport@6.3.0: - resolution: {integrity: sha512-M+Dxk5W9WRd+8j56W9tp8lGW/dmMc7g5zj7BWQnEjKQhryBstqsi1V0izb0zHwSkEN8cSYV7K75/bykairV2tA==} + unimport@6.4.0: + resolution: {integrity: sha512-JJOOuNMFq8b4ZPBKwQUxEcba4MplskDzYI1Lvrf8rJfWphZTWvPNXWa493qsPngHUmub89w6C7j+SeLWTE/UIQ==} engines: {node: '>=18.12.0'} peerDependencies: oxc-parser: '*' @@ -11550,9 +11241,6 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} @@ -11678,8 +11366,8 @@ packages: uploadthing: optional: true - untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + untun@0.2.2: + resolution: {integrity: sha512-+NnOJcSiEtYsVgJmXUzQbJeRAFXJC4yPJYuh6kF9B0Rm6zunXcs/3GZOTllyocSbUDIxD6Bj7e/4ATw7sph1Sw==} hasBin: true untyped@2.0.0: @@ -11689,8 +11377,8 @@ packages: unwasm@0.5.3: resolution: {integrity: sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==} - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + update-browserslist-db@1.3.2: + resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -11727,9 +11415,9 @@ packages: typescript: optional: true - validate-npm-package-name@7.0.2: - resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} - engines: {node: ^20.17.0 || >=22.9.0} + validate-npm-package-name@8.0.0: + resolution: {integrity: sha512-SCv6OOV6Xj2/3cXy3dGmADluJTNcL3o7hZAglNPTe+WYuEuvxgJzxPrSDLZhF+CwyQOubqgecjMmTJGMVLWjYQ==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} validator@13.15.35: resolution: {integrity: sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==} @@ -11739,19 +11427,16 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-plugin-solid@2.11.12: - resolution: {integrity: sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==} + vite-plugin-solid@2.11.14: + resolution: {integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==} peerDependencies: - '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.0.0 || ^7.0.0 solid-js: ^1.7.2 vite: ^7.3.6 peerDependenciesMeta: @@ -11811,16 +11496,16 @@ packages: vite: optional: true - vitepress-plugin-group-icons@1.7.5: - resolution: {integrity: sha512-QzcroUuIiVKyXpmEiiHVbfRTQIy9Zbwxpk5JC/zavO8mavitwumz2RZWlwTchMCCHducYyPptkYvXvdnNUWkog==} + vitepress-plugin-group-icons@1.7.6: + resolution: {integrity: sha512-fXSpQAYHpFpEsZLKWQAwbRx/+0uRSHmY58YNAQcz0AVirGsM6w22jtSmQhOGLEj8ZKyeRtTJrpx6otUI6wvoaQ==} peerDependencies: vite: ^7.3.6 peerDependenciesMeta: vite: optional: true - vitepress-plugin-llms@1.13.3: - resolution: {integrity: sha512-C6bygRzuVp54kveM6pngVNg4H9sKMx7K67iwoO4PUzBK22NiXF9SoFm/WdjKp2fJrMcOabKtQMuyNFF20c2Anw==} + vitepress-plugin-llms@1.13.5: + resolution: {integrity: sha512-CTiDkKRs0h64J5rdiICdHmXH4pM1gBu2S/MJ+OxSAm+vM72srBkHr86ZubzfMJbGJh4AMVKff4R3oCu8etI1ww==} engines: {node: '>=18'} vitepress@1.6.4: @@ -11896,28 +11581,17 @@ packages: vscode-css-languageservice@6.3.10: resolution: {integrity: sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==} - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + vscode-languageserver-textdocument@1.0.14: + resolution: {integrity: sha512-EQyqJMi552E4ZTf46izQ4Fj6XquqxCySR3J5ZSD1SisMf6RfpeOWHxGBE8Gr6V0/3GHIGdAzDn8F8+1nTGCnoQ==} vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vscode-uri@3.2.0: + resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} - vue-component-type-helpers@3.3.9: - resolution: {integrity: sha512-3c/UfMe0SqyEfcGTyH7mfshHagJ9QTCbppCb0/uGpHZpFug7+If3GeGZN7I0YheKEExemx3xldQPoO7PQSOLQg==} - - vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true + vue-component-type-helpers@3.3.11: + resolution: {integrity: sha512-LwcxzeliO9fkQcpJG0PoX8X5kmAhKmH9wkpDLxNabwzkQ9Zeib2YVHwFV4pcWmMLfXVfjr/dSV+DaJ3cIPgSNA==} vue@3.5.42: resolution: {integrity: sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==} @@ -11937,16 +11611,13 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.5.1: - resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + watchpack@2.5.2: + resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==} engines: {node: '>=10.13.0'} weak-lru-cache@1.2.2: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -11977,9 +11648,13 @@ packages: resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} - whatwg-url@15.1.0: - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} - engines: {node: '>=20'} + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + whatwg-url@17.1.0: + resolution: {integrity: sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==} + engines: {node: ^22.14.0 || >=24.0.0} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -12010,11 +11685,6 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - which@6.0.1: - resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -12024,14 +11694,10 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@10.0.0: - resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} + wrap-ansi@10.0.1: + resolution: {integrity: sha512-M0N4xzyzosiIok3svYlEo1sdLZts/8FPgYH/GPC3wvlmPoRvnoManGMrE54waYj3tISA8w6lsdesfVv67qSr8Q==} engines: {node: '>=20'} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -12054,8 +11720,8 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@6.2.5: - resolution: {integrity: sha512-T7pPl+DnmNrKRuttAIQwueReX5GqsedYEWp3/H//CG35+DyUOe1+/voAeE8idxgfLsQf2tO+rdtBd1FnPopgTQ==} + ws@6.2.6: + resolution: {integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -12065,8 +11731,8 @@ packages: utf-8-validate: optional: true - ws@7.5.12: - resolution: {integrity: sha512-1xGnbYN3zbog9CwuNDQULNRrTCLIn46/WmpR1f0w6PsCYQHkylZr5vkd6kfMZYV6pRnQkcPNRyiA8LsrNKyhpg==} + ws@7.5.13: + resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12077,8 +11743,8 @@ packages: utf-8-validate: optional: true - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12089,8 +11755,8 @@ packages: utf-8-validate: optional: true - wsl-utils@0.3.1: - resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + wsl-utils@1.0.0: + resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==} engines: {node: '>=20'} xdg-app-paths@5.5.1: @@ -12194,8 +11860,8 @@ packages: resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} engines: {node: '>=12'} - yargs@18.0.0: - resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + yargs@18.1.0: + resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} yerror@8.0.0: @@ -12214,12 +11880,8 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - yoctocolors-cjs@2.1.3: - resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} - engines: {node: '>=18'} - - yoctocolors@2.1.2: - resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + yoctocolors@2.2.0: + resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} engines: {node: '>=18'} youch-core@0.3.3: @@ -12228,8 +11890,8 @@ packages: youch@4.1.1: resolution: {integrity: sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==} - zimmerframe@1.1.4: - resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + zimmerframe@1.1.5: + resolution: {integrity: sha512-msJxIvYDYcoNL+PJsu+7qmpDWsYmAxTY+2TNYXXF0hzBzBk0BMecOqDOG/EckUoKCuKwObfbugIl8QpqHDXeFA==} zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} @@ -12240,24 +11902,24 @@ packages: peerDependencies: zod: ^3.25.28 || ^4 - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.11: resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zod@4.5.4: + resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - '@acemir/cssom@0.9.31': {} + '@11ty/gray-matter@2.1.0': + dependencies: + js-yaml: 4.3.2 + section-matter: 1.0.0 '@actions/core@3.0.1': dependencies: @@ -12271,318 +11933,211 @@ snapshots: '@actions/github@9.1.1': dependencies: '@actions/http-client': 3.0.2 - '@octokit/core': 7.0.6 - '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) - '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) - '@octokit/request': 10.0.11 - '@octokit/request-error': 7.1.0 - undici: 6.27.0 + '@octokit/core': 7.0.8 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.8) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.8) + '@octokit/request': 10.0.16 + '@octokit/request-error': 7.1.2 + undici: 6.28.0 '@actions/http-client@3.0.2': dependencies: tunnel: 0.0.6 - undici: 6.27.0 + undici: 6.28.0 '@actions/http-client@4.0.1': dependencies: tunnel: 0.0.6 - undici: 6.27.0 + undici: 6.28.0 '@actions/io@3.0.2': {} '@adobe/css-tools@4.5.0': {} - '@algolia/abtesting@1.14.1': + '@algolia/abtesting@1.23.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/abtesting@1.21.2': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0)(search-insights@2.8.2)': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 - - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2)(search-insights@2.8.2)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2)(search-insights@2.8.2) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0)(search-insights@2.8.2) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2)(search-insights@2.8.2)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0)(search-insights@2.8.2)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0) search-insights: 2.8.2 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2) - '@algolia/client-search': 5.55.2 - algoliasearch: 5.55.2 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0) + '@algolia/client-search': 5.57.0 + algoliasearch: 5.57.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0)': dependencies: - '@algolia/client-search': 5.55.2 - algoliasearch: 5.55.2 + '@algolia/client-search': 5.57.0 + algoliasearch: 5.57.0 - '@algolia/client-abtesting@5.48.1': + '@algolia/client-abtesting@5.57.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-abtesting@5.55.2': + '@algolia/client-analytics@5.57.0': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-analytics@5.48.1': + '@algolia/client-common@5.57.0': {} + + '@algolia/client-insights@5.57.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-analytics@5.55.2': + '@algolia/client-personalization@5.57.0': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-common@5.48.1': {} - - '@algolia/client-common@5.55.2': {} - - '@algolia/client-insights@5.48.1': + '@algolia/client-query-suggestions@5.57.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-insights@5.55.2': + '@algolia/client-search@5.57.0': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-personalization@5.48.1': + '@algolia/ingestion@1.57.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-personalization@5.55.2': + '@algolia/monitoring@1.57.0': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-query-suggestions@5.48.1': + '@algolia/recommend@5.57.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 - '@algolia/client-query-suggestions@5.55.2': + '@algolia/requester-browser-xhr@5.57.0': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 + '@algolia/client-common': 5.57.0 - '@algolia/client-search@5.48.1': + '@algolia/requester-fetch@5.57.0': dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 + '@algolia/client-common': 5.57.0 - '@algolia/client-search@5.55.2': + '@algolia/requester-node-http@5.57.0': dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 - - '@algolia/ingestion@1.48.1': - dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 - - '@algolia/ingestion@1.55.2': - dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 - - '@algolia/monitoring@1.48.1': - dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 - - '@algolia/monitoring@1.55.2': - dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 - - '@algolia/recommend@5.48.1': - dependencies: - '@algolia/client-common': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 - - '@algolia/recommend@5.55.2': - dependencies: - '@algolia/client-common': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 - - '@algolia/requester-browser-xhr@5.48.1': - dependencies: - '@algolia/client-common': 5.48.1 - - '@algolia/requester-browser-xhr@5.55.2': - dependencies: - '@algolia/client-common': 5.55.2 - - '@algolia/requester-fetch@5.48.1': - dependencies: - '@algolia/client-common': 5.48.1 - - '@algolia/requester-fetch@5.55.2': - dependencies: - '@algolia/client-common': 5.55.2 - - '@algolia/requester-node-http@5.48.1': - dependencies: - '@algolia/client-common': 5.48.1 - - '@algolia/requester-node-http@5.55.2': - dependencies: - '@algolia/client-common': 5.55.2 + '@algolia/client-common': 5.57.0 '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2102.19(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/core@21.2.19(chokidar@5.0.0)': + '@angular-devkit/core@22.1.7(chokidar@5.0.0)': dependencies: - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) jsonc-parser: 3.3.1 - picomatch: 4.0.4 + picomatch: 4.0.5 rxjs: 7.8.2 source-map: 0.7.6 optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@21.2.19(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) jsonc-parser: 3.3.1 - magic-string: 0.30.21 - ora: 9.3.0 + magic-string: 1.0.0 + ora: 9.4.1 rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-eslint/builder@21.4.0(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': + '@angular-eslint/builder@22.2.0(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@angular-devkit/architect': 0.2102.19(chokidar@5.0.0) - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) - '@angular/cli': 21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 + '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) + typescript: 6.0.3 transitivePeerDependencies: - chokidar - '@angular-eslint/bundled-angular-compiler@21.4.0': {} + '@angular-eslint/bundled-angular-compiler@22.2.0': {} - '@angular-eslint/eslint-plugin-template@21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@typescript-eslint/types@8.64.0)(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': + '@angular-eslint/eslint-plugin-template@22.2.0(@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3))(@typescript-eslint/types@8.69.0)(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - '@angular-eslint/template-parser': 21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/utils': 21.4.0(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@typescript-eslint/types': 8.64.0 - '@typescript-eslint/utils': 8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@angular-eslint/bundled-angular-compiler': 22.2.0 + '@angular-eslint/template-parser': 22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@angular-eslint/utils': 22.2.0(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) aria-query: 5.3.2 axobject-query: 4.1.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) + typescript: 6.0.3 - '@angular-eslint/eslint-plugin-template@21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@typescript-eslint/types@8.66.0)(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': + '@angular-eslint/eslint-plugin@22.2.0(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - '@angular-eslint/template-parser': 21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/utils': 21.4.0(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - aria-query: 5.3.2 - axobject-query: 4.1.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 + '@angular-eslint/bundled-angular-compiler': 22.2.0 + '@angular-eslint/utils': 22.2.0(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 - '@angular-eslint/eslint-plugin@21.4.0(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': + '@angular-eslint/schematics@22.2.0(@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3))(@typescript-eslint/types@8.69.0)(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - '@angular-eslint/utils': 21.4.0(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@typescript-eslint/utils': 8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - - '@angular-eslint/eslint-plugin@21.4.0(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - '@angular-eslint/utils': 21.4.0(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - - '@angular-eslint/schematics@21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(@typescript-eslint/types@8.64.0)(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': - dependencies: - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.19(chokidar@5.0.0) - '@angular-eslint/eslint-plugin': 21.4.0(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/eslint-plugin-template': 21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@typescript-eslint/types@8.64.0)(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular/cli': 21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2) - ignore: 7.0.5 + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-eslint/eslint-plugin': 22.2.0(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@angular-eslint/eslint-plugin-template': 22.2.0(@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3))(@typescript-eslint/types@8.69.0)(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + ignore: 7.0.6 semver: 7.8.5 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -12593,93 +12148,68 @@ snapshots: - eslint - typescript - '@angular-eslint/schematics@21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(@typescript-eslint/types@8.66.0)(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': + '@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.19(chokidar@5.0.0) - '@angular-eslint/eslint-plugin': 21.4.0(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/eslint-plugin-template': 21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@typescript-eslint/types@8.66.0)(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular/cli': 21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2) - ignore: 7.0.5 - semver: 7.8.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@angular-eslint/template-parser' - - '@typescript-eslint/types' - - '@typescript-eslint/utils' - - chokidar - - eslint - - typescript - - '@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + '@angular-eslint/bundled-angular-compiler': 22.2.0 + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) eslint-scope: 9.1.2 - typescript: 5.9.3 + typescript: 6.0.3 - '@angular-eslint/utils@21.4.0(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': + '@angular-eslint/utils@22.2.0(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - '@typescript-eslint/utils': 8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 + '@angular-eslint/bundled-angular-compiler': 22.2.0 + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) + typescript: 6.0.3 - '@angular-eslint/utils@21.4.0(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 21.4.0 - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 - - '@angular/build@21.2.19(e343b82913a2fd05679d0f3ed92b548d)': + '@angular/build@22.1.7(b556f1a6e72e2d9b777c6a017606beff)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2102.19(chokidar@5.0.0) - '@angular/compiler': 21.2.19 - '@angular/compiler-cli': 21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3) - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-annotate-as-pure': 7.27.3 + '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular/compiler': 22.1.5 + '@angular/compiler-cli': 22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3) + '@babel/core': 8.0.1 + '@babel/helper-annotate-as-pure': 8.0.0 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.21(@types/node@26.1.1) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - beasties: 0.4.1 - browserslist: 4.28.6 - esbuild: 0.28.1 - https-proxy-agent: 7.0.6(supports-color@10.2.2) - istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) + '@inquirer/confirm': 6.1.1(@types/node@26.4.1) + '@vitejs/plugin-basic-ssl': 2.3.0(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + beasties: 0.4.3 + browserslist: 4.28.8 + esbuild: 0.28.2 + https-proxy-agent: 9.1.0(supports-color@10.2.2) jsonc-parser: 3.3.1 - listr2: 9.0.5 - magic-string: 0.30.21 + listr2: 11.0.0 + magic-string: 1.0.0 mrmime: 2.0.1 - parse5-html-rewriting-stream: 8.0.0 - picomatch: 4.0.4 + oxc-parser: 0.142.0 + parse5-html-rewriting-stream: 8.0.1 + picomatch: 4.0.5 piscina: 5.2.0 - rolldown: 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) - sass: 1.97.3 + rolldown: 1.2.0 + sass: 1.101.0 semver: 7.8.5 source-map-support: 0.5.21 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tslib: 2.8.1 - typescript: 5.9.3 - undici: 7.28.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - watchpack: 2.5.1 + typescript: 6.0.3 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + watchpack: 2.5.2 optionalDependencies: - '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) - '@angular/platform-browser': 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)) - '@angular/platform-server': 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@21.2.19)(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2) - less: 4.6.7 - lmdb: 3.5.1 - ng-packagr: 21.2.5(@angular/compiler-cli@21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) - postcss: 8.5.19 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) + '@angular/platform-server': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@22.1.5)(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2) + istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) + less: 4.9.1(supports-color@10.2.2) + lmdb: 3.5.6 + ng-packagr: 22.1.1(@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3))(supports-color@10.2.2)(tslib@2.8.1)(typescript@6.0.3) + postcss: 8.5.27 + rollup: 4.63.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - '@types/node' - chokidar - jiti + - kerberos - lightningcss - sass-embedded - stylus @@ -12689,195 +12219,186 @@ snapshots: - tsx - yaml - '@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.7(@types/node@26.4.1)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2102.19(chokidar@5.0.0) - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.19(chokidar@5.0.0) - '@inquirer/prompts': 7.10.1(@types/node@26.1.1) - '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@26.1.1))(@types/node@26.1.1)(listr2@9.0.5) - '@modelcontextprotocol/sdk': 1.26.0(supports-color@10.2.2)(zod@4.3.6) - '@schematics/angular': 21.2.19(chokidar@5.0.0) - '@yarnpkg/lockfile': 1.1.0 - algoliasearch: 5.48.1 - ini: 6.0.0 + '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@inquirer/prompts': 8.5.2(@types/node@26.4.1) + '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@26.4.1))(@types/node@26.4.1)(listr2@11.0.0) + '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) + '@schematics/angular': 22.1.7(chokidar@5.0.0) jsonc-parser: 3.3.1 - listr2: 9.0.5 - npm-package-arg: 13.0.2 - pacote: 21.5.1(supports-color@10.2.2) - parse5-html-rewriting-stream: 8.0.0 + listr2: 11.0.0 + npm-package-arg: 14.0.0 + parse5-html-rewriting-stream: 8.0.1 semver: 7.8.5 - yargs: 18.0.0 - zod: 4.3.6 + yargs: 18.1.0 + zod: 4.4.3 transitivePeerDependencies: - '@cfworker/json-schema' - '@types/node' - chokidar - supports-color - '@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2)': + '@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3)': + '@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3)': dependencies: - '@angular/compiler': 21.2.19 - '@babel/core': 7.29.7(supports-color@10.2.2) - '@jridgewell/sourcemap-codec': 1.5.5 + '@angular/compiler': 22.1.5 + '@babel/core': 8.0.1 + '@jridgewell/sourcemap-codec': 1.6.0 chokidar: 5.0.0 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 semver: 7.8.5 tslib: 2.8.1 - yargs: 18.0.0 + yargs: 18.1.0 optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + typescript: 6.0.3 - '@angular/compiler@21.2.19': + '@angular/compiler@22.1.5': dependencies: tslib: 2.8.1 - '@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)': + '@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.2.19 + '@angular/compiler': 22.1.5 - '@angular/forms@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2)': + '@angular/forms@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) - '@angular/platform-browser': 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 + zod: 4.5.4 - '@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))': + '@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))': dependencies: - '@angular/common': 21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) tslib: 2.8.1 - '@angular/platform-server@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@21.2.19)(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2)': + '@angular/platform-server@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@22.1.5)(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/compiler': 21.2.19 - '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) - '@angular/platform-browser': 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/compiler': 22.1.5 + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(@angular/platform-browser@21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)))(rxjs@7.8.2)': + '@angular/router@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/core': 21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2) - '@angular/platform-browser': 21.2.19(@angular/common@21.2.19(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.19(@angular/compiler@21.2.19)(rxjs@7.8.2)) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) rxjs: 7.8.2 tslib: 2.8.1 '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.7.0 - tinyexec: 1.2.4 + package-manager-detector: 1.8.0 + tinyexec: 1.3.1 - '@asamuzakjp/css-color@4.1.2': + '@asamuzakjp/css-color@6.0.7': dependencies: - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 lru-cache: 11.5.2 - '@asamuzakjp/dom-selector@6.8.1': + '@asamuzakjp/dom-selector@8.3.2': dependencies: - '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 lru-cache: 11.5.2 - '@asamuzakjp/nwsapi@2.3.9': {} - - '@astrojs/compiler-binding-darwin-arm64@0.3.1': + '@astrojs/compiler-binding-darwin-arm64@0.4.0': optional: true - '@astrojs/compiler-binding-darwin-x64@0.3.1': + '@astrojs/compiler-binding-darwin-x64@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-musl@0.3.1': + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-wasm32-wasi@0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@astrojs/compiler-binding-wasm32-wasi@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' optional: true - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding@0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@astrojs/compiler-binding@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': optionalDependencies: - '@astrojs/compiler-binding-darwin-arm64': 0.3.1 - '@astrojs/compiler-binding-darwin-x64': 0.3.1 - '@astrojs/compiler-binding-linux-arm64-gnu': 0.3.1 - '@astrojs/compiler-binding-linux-arm64-musl': 0.3.1 - '@astrojs/compiler-binding-linux-x64-gnu': 0.3.1 - '@astrojs/compiler-binding-linux-x64-musl': 0.3.1 - '@astrojs/compiler-binding-wasm32-wasi': 0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) - '@astrojs/compiler-binding-win32-arm64-msvc': 0.3.1 - '@astrojs/compiler-binding-win32-x64-msvc': 0.3.1 + '@astrojs/compiler-binding-darwin-arm64': 0.4.0 + '@astrojs/compiler-binding-darwin-x64': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-musl': 0.4.0 + '@astrojs/compiler-binding-linux-x64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-x64-musl': 0.4.0 + '@astrojs/compiler-binding-wasm32-wasi': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + '@astrojs/compiler-binding-win32-arm64-msvc': 0.4.0 + '@astrojs/compiler-binding-win32-x64-msvc': 0.4.0 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' - '@astrojs/compiler-rs@0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@astrojs/compiler-rs@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': dependencies: - '@astrojs/compiler-binding': 0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@astrojs/compiler-binding': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' '@astrojs/compiler@2.13.1': {} - '@astrojs/internal-helpers@0.10.1': + '@astrojs/internal-helpers@0.11.0': dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - js-yaml: 4.3.0 - picomatch: 4.0.5 + js-yaml: 4.3.2 + picomatch: 4.0.7 retext-smartypants: 6.2.0 - shiki: 4.3.1 - smol-toml: 1.7.0 + shiki: 4.4.3 + smol-toml: 1.8.0 unified: 11.0.5 - '@astrojs/markdown-satteri@0.3.4': + '@astrojs/markdown-satteri@0.4.0': dependencies: - '@astrojs/internal-helpers': 0.10.1 + '@astrojs/internal-helpers': 0.11.0 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - satteri: 0.9.5 + satteri: 0.10.5 '@astrojs/prism@4.0.2': dependencies: @@ -12888,17 +12409,17 @@ snapshots: ci-info: 4.4.0 dset: 3.1.4 is-docker: 4.0.0 - package-manager-detector: 1.7.0 + package-manager-detector: 1.8.0 - '@astrojs/ts-plugin@1.10.10(typescript@5.9.3)': + '@astrojs/ts-plugin@1.10.11(typescript@6.0.3)': dependencies: '@astrojs/compiler': 2.13.1 '@astrojs/yaml2ts': 0.2.4 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@volar/language-core': 2.4.28 - '@volar/typescript': 2.4.28(typescript@5.9.3) + '@volar/typescript': 2.4.28(typescript@6.0.3) semver: 7.8.5 - vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-textdocument: 1.0.14 transitivePeerDependencies: - typescript @@ -12918,18 +12439,25 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@8.0.0': + dependencies: + '@babel/helper-validator-identifier': 8.0.4 + js-tokens: 10.0.0 + '@babel/compat-data@7.29.7': {} + '@babel/compat-data@8.0.0': {} + '@babel/core@7.29.7(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helpers': 7.29.7 '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -12940,7 +12468,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.7': + '@babel/core@8.0.1': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/generator': 8.0.0 + '@babel/helper-compilation-targets': 8.0.0 + '@babel/helpers': 8.0.0 + '@babel/parser': 8.0.4 + '@babel/template': 8.0.0 + '@babel/traverse': 8.0.4 + '@babel/types': 8.0.4 + '@types/gensync': 1.0.5 + convert-source-map: 2.0.0 + empathic: 2.0.1 + gensync: 1.0.0-beta.2 + import-meta-resolve: 4.2.0 + json5: 2.2.3 + obug: 2.1.4 + semver: 7.8.5 + + '@babel/generator@7.29.8': dependencies: '@babel/parser': 7.29.8 '@babel/types': 7.29.8 @@ -12948,22 +12495,39 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.27.3': + '@babel/generator@8.0.0': dependencies: - '@babel/types': 7.29.8 + '@babel/parser': 8.0.4 + '@babel/types': 8.0.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.29.7': dependencies: '@babel/types': 7.29.8 + '@babel/helper-annotate-as-pure@8.0.0': + dependencies: + '@babel/types': 8.0.4 + '@babel/helper-compilation-targets@7.29.7': dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.6 + browserslist: 4.28.8 lru-cache: 5.1.1 semver: 7.8.5 + '@babel/helper-compilation-targets@8.0.0': + dependencies: + '@babel/compat-data': 8.0.0 + '@babel/helper-validator-option': 8.0.0 + browserslist: 4.28.8 + lru-cache: 11.5.2 + semver: 7.8.5 + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -12972,7 +12536,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) semver: 7.8.5 transitivePeerDependencies: - supports-color @@ -12997,9 +12561,11 @@ snapshots: '@babel/helper-globals@7.29.7': {} + '@babel/helper-globals@8.0.0': {} + '@babel/helper-member-expression-to-functions@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -13010,7 +12576,7 @@ snapshots: '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -13020,7 +12586,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13035,7 +12601,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-wrap-function': 7.29.7(supports-color@10.2.2) - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13044,13 +12610,13 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2) '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -13061,14 +12627,20 @@ snapshots: '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-string-parser@8.0.0': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-identifier@8.0.4': {} + '@babel/helper-validator-option@7.29.7': {} + '@babel/helper-validator-option@8.0.0': {} + '@babel/helper-wrap-function@7.29.7(supports-color@10.2.2)': dependencies: '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -13078,15 +12650,24 @@ snapshots: '@babel/template': 7.29.7 '@babel/types': 7.29.8 + '@babel/helpers@8.0.0': + dependencies: + '@babel/template': 8.0.0 + '@babel/types': 8.0.4 + '@babel/parser@7.29.8': dependencies: '@babel/types': 7.29.8 + '@babel/parser@8.0.4': + dependencies: + '@babel/types': 8.0.4 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13121,7 +12702,7 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13278,7 +12859,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13325,7 +12906,7 @@ snapshots: '@babel/helper-globals': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13339,7 +12920,7 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13402,7 +12983,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13442,13 +13023,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-transform-modules-systemjs@7.29.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13488,7 +13069,7 @@ snapshots: '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -13573,7 +13154,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': + '@babel/plugin-transform-regenerator@7.29.8(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 @@ -13606,7 +13187,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-transform-spread@7.29.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 @@ -13705,7 +13286,7 @@ snapshots: '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -13719,11 +13300,11 @@ snapshots: '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) + '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -13735,7 +13316,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - core-js-compat: 3.49.0 + core-js-compat: 3.50.0 semver: 7.8.5 transitivePeerDependencies: - supports-color @@ -13782,10 +13363,16 @@ snapshots: '@babel/parser': 7.29.8 '@babel/types': 7.29.8 - '@babel/traverse@7.29.7(supports-color@10.2.2)': + '@babel/template@8.0.0': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/parser': 8.0.4 + '@babel/types': 8.0.4 + + '@babel/traverse@7.29.8(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 '@babel/parser': 7.29.8 '@babel/template': 7.29.7 @@ -13794,44 +13381,63 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@8.0.4': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/generator': 8.0.0 + '@babel/helper-globals': 8.0.0 + '@babel/parser': 8.0.4 + '@babel/template': 8.0.0 + '@babel/types': 8.0.4 + obug: 2.1.4 + '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@babel/types@8.0.4': + dependencies: + '@babel/helper-string-parser': 8.0.0 + '@babel/helper-validator-identifier': 8.0.4 + '@bcoe/v8-coverage@1.0.2': {} '@blazediff/core@1.9.1': {} - '@bruits/satteri-darwin-arm64@0.9.5': + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@bruits/satteri-darwin-arm64@0.10.5': optional: true - '@bruits/satteri-darwin-x64@0.9.5': + '@bruits/satteri-darwin-x64@0.10.5': optional: true - '@bruits/satteri-linux-arm64-gnu@0.9.5': + '@bruits/satteri-linux-arm64-gnu@0.10.5': optional: true - '@bruits/satteri-linux-arm64-musl@0.9.5': + '@bruits/satteri-linux-arm64-musl@0.10.5': optional: true - '@bruits/satteri-linux-x64-gnu@0.9.5': + '@bruits/satteri-linux-x64-gnu@0.10.5': optional: true - '@bruits/satteri-linux-x64-musl@0.9.5': + '@bruits/satteri-linux-x64-musl@0.10.5': optional: true - '@bruits/satteri-wasm32-wasi@0.9.5': + '@bruits/satteri-wasm32-wasi@0.10.5': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@bruits/satteri-win32-arm64-msvc@0.9.5': + '@bruits/satteri-win32-arm64-msvc@0.10.5': optional: true - '@bruits/satteri-win32-x64-msvc@0.9.5': + '@bruits/satteri-win32-x64-msvc@0.10.5': optional: true '@capsizecss/unpack@4.0.1': @@ -13855,35 +13461,35 @@ snapshots: '@codemirror/autocomplete@6.20.3': dependencies: '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 '@lezer/common': 1.5.2 - '@codemirror/commands@6.10.4': + '@codemirror/commands@6.11.0': dependencies: '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 '@lezer/common': 1.5.2 '@codemirror/lang-css@6.3.1': dependencies: '@codemirror/autocomplete': 6.20.3 '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 + '@codemirror/state': 6.7.2 '@lezer/common': 1.5.2 - '@lezer/css': 1.3.4 + '@lezer/css': 1.3.6 - '@codemirror/lang-html@6.4.11': + '@codemirror/lang-html@6.4.12': dependencies: '@codemirror/autocomplete': 6.20.3 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-javascript': 6.2.5 '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 '@lezer/common': 1.5.2 - '@lezer/css': 1.3.4 + '@lezer/css': 1.3.6 '@lezer/html': 1.3.13 '@codemirror/lang-javascript@6.2.5': @@ -13891,15 +13497,15 @@ snapshots: '@codemirror/autocomplete': 6.20.3 '@codemirror/language': 6.12.4 '@codemirror/lint': 6.9.7 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 '@lezer/common': 1.5.2 '@lezer/javascript': 1.5.4 '@codemirror/language@6.12.4': dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.10 @@ -13907,24 +13513,24 @@ snapshots: '@codemirror/lint@6.9.7': dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 crelt: 1.0.7 - '@codemirror/state@6.7.1': + '@codemirror/state@6.7.2': dependencies: - '@marijn/find-cluster-break': 1.0.3 + '@marijn/find-cluster-break': 1.0.4 - '@codemirror/view@6.43.6': + '@codemirror/view@6.43.11': dependencies: - '@codemirror/state': 6.7.1 + '@codemirror/state': 6.7.2 crelt: 1.0.7 style-mod: 4.1.3 w3c-keyname: 2.2.8 '@codesandbox/nodebox@0.1.8': dependencies: - outvariant: 1.4.0 + outvariant: 1.4.3 strict-event-emitter: 0.4.6 '@codesandbox/sandpack-client@2.19.8': @@ -13939,14 +13545,14 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@cspell/cspell-bundled-dicts@10.0.1': + '@cspell/cspell-bundled-dicts@10.2.0': dependencies: '@cspell/dict-ada': 4.1.1 '@cspell/dict-al': 1.1.1 '@cspell/dict-aws': 4.0.17 '@cspell/dict-bash': 4.2.3 '@cspell/dict-companies': 3.2.12 - '@cspell/dict-cpp': 7.0.2 + '@cspell/dict-cpp': 7.1.0 '@cspell/dict-cryptocurrencies': 5.0.5 '@cspell/dict-csharp': 4.0.8 '@cspell/dict-css': 4.1.2 @@ -13956,9 +13562,9 @@ snapshots: '@cspell/dict-docker': 1.1.17 '@cspell/dict-dotnet': 5.0.13 '@cspell/dict-elixir': 4.0.8 - '@cspell/dict-en-common-misspellings': 2.1.13 - '@cspell/dict-en-gb-mit': 3.1.25 - '@cspell/dict-en_us': 4.4.36 + '@cspell/dict-en-common-misspellings': 2.2.0 + '@cspell/dict-en-gb-mit': 3.1.26 + '@cspell/dict-en_us': 4.4.37 '@cspell/dict-filetypes': 3.0.18 '@cspell/dict-flutter': 1.1.1 '@cspell/dict-fonts': 4.0.6 @@ -13966,10 +13572,10 @@ snapshots: '@cspell/dict-fullstack': 3.2.9 '@cspell/dict-gaming-terms': 1.1.2 '@cspell/dict-git': 3.1.0 - '@cspell/dict-golang': 6.0.26 + '@cspell/dict-golang': 6.0.27 '@cspell/dict-google': 1.0.9 '@cspell/dict-haskell': 4.0.6 - '@cspell/dict-html': 4.0.15 + '@cspell/dict-html': 4.0.16 '@cspell/dict-html-symbol-entities': 4.0.5 '@cspell/dict-java': 5.0.12 '@cspell/dict-julia': 1.1.1 @@ -13979,20 +13585,20 @@ snapshots: '@cspell/dict-lorem-ipsum': 4.0.5 '@cspell/dict-lua': 4.0.8 '@cspell/dict-makefile': 1.0.5 - '@cspell/dict-markdown': 2.0.17(@cspell/dict-css@4.1.2)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.15)(@cspell/dict-typescript@3.2.3) - '@cspell/dict-monkeyc': 1.0.12 + '@cspell/dict-markdown': 2.0.18(@cspell/dict-css@4.1.2)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.16)(@cspell/dict-typescript@3.2.3) + '@cspell/dict-monkeyc': 1.1.0 '@cspell/dict-node': 5.0.9 - '@cspell/dict-npm': 5.2.43 + '@cspell/dict-npm': 5.2.48 '@cspell/dict-php': 4.1.1 '@cspell/dict-powershell': 5.0.15 '@cspell/dict-public-licenses': 2.0.16 - '@cspell/dict-python': 4.2.29 + '@cspell/dict-python': 4.5.0 '@cspell/dict-r': 2.1.1 - '@cspell/dict-ruby': 5.1.1 + '@cspell/dict-ruby': 5.1.2 '@cspell/dict-rust': 4.1.2 '@cspell/dict-scala': 5.0.9 '@cspell/dict-shell': 1.2.0 - '@cspell/dict-software-terms': 5.2.4 + '@cspell/dict-software-terms': 5.4.2 '@cspell/dict-sql': 2.2.1 '@cspell/dict-svelte': 1.0.7 '@cspell/dict-swift': 2.0.6 @@ -14001,25 +13607,25 @@ snapshots: '@cspell/dict-vue': 3.0.5 '@cspell/dict-zig': 1.0.0 - '@cspell/cspell-json-reporter@10.0.1': + '@cspell/cspell-json-reporter@10.2.0': dependencies: - '@cspell/cspell-types': 10.0.1 + '@cspell/cspell-types': 10.2.0 - '@cspell/cspell-performance-monitor@10.0.1': {} + '@cspell/cspell-performance-monitor@10.2.0': {} - '@cspell/cspell-pipe@10.0.1': {} + '@cspell/cspell-pipe@10.2.0': {} - '@cspell/cspell-resolver@10.0.1': + '@cspell/cspell-resolver@10.2.0': dependencies: global-directory: 5.0.0 - '@cspell/cspell-service-bus@10.0.1': {} + '@cspell/cspell-service-bus@10.2.0': {} - '@cspell/cspell-types@10.0.1': {} + '@cspell/cspell-types@10.2.0': {} - '@cspell/cspell-worker@10.0.1': + '@cspell/cspell-worker@10.2.0': dependencies: - cspell-lib: 10.0.1 + cspell-lib: 10.2.0 '@cspell/dict-ada@4.1.1': {} @@ -14033,7 +13639,7 @@ snapshots: '@cspell/dict-companies@3.2.12': {} - '@cspell/dict-cpp@7.0.2': {} + '@cspell/dict-cpp@7.1.0': {} '@cspell/dict-cryptocurrencies@5.0.5': {} @@ -14053,11 +13659,11 @@ snapshots: '@cspell/dict-elixir@4.0.8': {} - '@cspell/dict-en-common-misspellings@2.1.13': {} + '@cspell/dict-en-common-misspellings@2.2.0': {} - '@cspell/dict-en-gb-mit@3.1.25': {} + '@cspell/dict-en-gb-mit@3.1.26': {} - '@cspell/dict-en_us@4.4.36': {} + '@cspell/dict-en_us@4.4.37': {} '@cspell/dict-filetypes@3.0.18': {} @@ -14073,7 +13679,7 @@ snapshots: '@cspell/dict-git@3.1.0': {} - '@cspell/dict-golang@6.0.26': {} + '@cspell/dict-golang@6.0.27': {} '@cspell/dict-google@1.0.9': {} @@ -14081,7 +13687,7 @@ snapshots: '@cspell/dict-html-symbol-entities@4.0.5': {} - '@cspell/dict-html@4.0.15': {} + '@cspell/dict-html@4.0.16': {} '@cspell/dict-java@5.0.12': {} @@ -14099,18 +13705,18 @@ snapshots: '@cspell/dict-makefile@1.0.5': {} - '@cspell/dict-markdown@2.0.17(@cspell/dict-css@4.1.2)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.15)(@cspell/dict-typescript@3.2.3)': + '@cspell/dict-markdown@2.0.18(@cspell/dict-css@4.1.2)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.16)(@cspell/dict-typescript@3.2.3)': dependencies: '@cspell/dict-css': 4.1.2 - '@cspell/dict-html': 4.0.15 + '@cspell/dict-html': 4.0.16 '@cspell/dict-html-symbol-entities': 4.0.5 '@cspell/dict-typescript': 3.2.3 - '@cspell/dict-monkeyc@1.0.12': {} + '@cspell/dict-monkeyc@1.1.0': {} '@cspell/dict-node@5.0.9': {} - '@cspell/dict-npm@5.2.43': {} + '@cspell/dict-npm@5.2.48': {} '@cspell/dict-php@4.1.1': {} @@ -14118,13 +13724,13 @@ snapshots: '@cspell/dict-public-licenses@2.0.16': {} - '@cspell/dict-python@4.2.29': + '@cspell/dict-python@4.5.0': dependencies: '@cspell/dict-data-science': 2.0.16 '@cspell/dict-r@2.1.1': {} - '@cspell/dict-ruby@5.1.1': {} + '@cspell/dict-ruby@5.1.2': {} '@cspell/dict-rust@4.1.2': {} @@ -14132,7 +13738,7 @@ snapshots: '@cspell/dict-shell@1.2.0': {} - '@cspell/dict-software-terms@5.2.4': {} + '@cspell/dict-software-terms@5.4.2': {} '@cspell/dict-sql@2.2.1': {} @@ -14148,35 +13754,35 @@ snapshots: '@cspell/dict-zig@1.0.0': {} - '@cspell/dynamic-import@10.0.1': + '@cspell/dynamic-import@10.2.0': dependencies: - '@cspell/url': 10.0.1 + '@cspell/url': 10.2.0 import-meta-resolve: 4.2.0 - '@cspell/filetypes@10.0.1': {} + '@cspell/filetypes@10.2.0': {} - '@cspell/rpc@10.0.1': {} + '@cspell/rpc@10.2.0': {} - '@cspell/strong-weak-map@10.0.1': {} + '@cspell/strong-weak-map@10.2.0': {} - '@cspell/url@10.0.1': {} + '@cspell/url@10.2.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 optional: true - '@csstools/color-helpers@6.1.0': {} + '@csstools/color-helpers@6.1.1': {} - '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-color-parser@4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 6.1.0 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/color-helpers': 6.1.1 + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -14184,7 +13790,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.6(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.12(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -14192,10 +13798,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.55.2)(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.8.2)': + '@docsearch/js@3.8.2(@algolia/client-search@5.57.0)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.8.2)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.55.2)(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.8.2) - preact: 10.29.7 + '@docsearch/react': 3.8.2(@algolia/client-search@5.57.0)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.8.2) + preact: 10.29.8 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -14204,16 +13810,16 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.55.2)(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.8.2)': + '@docsearch/react@3.8.2(@algolia/client-search@5.57.0)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.8.2)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2)(search-insights@2.8.2) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.55.2)(algoliasearch@5.55.2) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0)(search-insights@2.8.2) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.57.0)(algoliasearch@5.57.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.55.2 + algoliasearch: 5.57.0 optionalDependencies: '@types/react': 18.3.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) search-insights: 2.8.2 transitivePeerDependencies: - '@algolia/client-search' @@ -14266,180 +13872,102 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.27.2': + '@esbuild/aix-ppc64@0.28.2': optional: true - '@esbuild/aix-ppc64@0.28.1': + '@esbuild/android-arm64@0.28.2': optional: true - '@esbuild/android-arm64@0.27.2': + '@esbuild/android-arm@0.28.2': optional: true - '@esbuild/android-arm64@0.28.1': + '@esbuild/android-x64@0.28.2': optional: true - '@esbuild/android-arm@0.27.2': + '@esbuild/darwin-arm64@0.28.2': optional: true - '@esbuild/android-arm@0.28.1': + '@esbuild/darwin-x64@0.28.2': optional: true - '@esbuild/android-x64@0.27.2': + '@esbuild/freebsd-arm64@0.28.2': optional: true - '@esbuild/android-x64@0.28.1': + '@esbuild/freebsd-x64@0.28.2': optional: true - '@esbuild/darwin-arm64@0.27.2': + '@esbuild/linux-arm64@0.28.2': optional: true - '@esbuild/darwin-arm64@0.28.1': + '@esbuild/linux-arm@0.28.2': optional: true - '@esbuild/darwin-x64@0.27.2': + '@esbuild/linux-ia32@0.28.2': optional: true - '@esbuild/darwin-x64@0.28.1': + '@esbuild/linux-loong64@0.28.2': optional: true - '@esbuild/freebsd-arm64@0.27.2': + '@esbuild/linux-mips64el@0.28.2': optional: true - '@esbuild/freebsd-arm64@0.28.1': + '@esbuild/linux-ppc64@0.28.2': optional: true - '@esbuild/freebsd-x64@0.27.2': + '@esbuild/linux-riscv64@0.28.2': optional: true - '@esbuild/freebsd-x64@0.28.1': + '@esbuild/linux-s390x@0.28.2': optional: true - '@esbuild/linux-arm64@0.27.2': + '@esbuild/linux-x64@0.28.2': optional: true - '@esbuild/linux-arm64@0.28.1': + '@esbuild/netbsd-arm64@0.28.2': optional: true - '@esbuild/linux-arm@0.27.2': + '@esbuild/netbsd-x64@0.28.2': optional: true - '@esbuild/linux-arm@0.28.1': + '@esbuild/openbsd-arm64@0.28.2': optional: true - '@esbuild/linux-ia32@0.27.2': + '@esbuild/openbsd-x64@0.28.2': optional: true - '@esbuild/linux-ia32@0.28.1': + '@esbuild/openharmony-arm64@0.28.2': optional: true - '@esbuild/linux-loong64@0.27.2': + '@esbuild/sunos-x64@0.28.2': optional: true - '@esbuild/linux-loong64@0.28.1': + '@esbuild/win32-arm64@0.28.2': optional: true - '@esbuild/linux-mips64el@0.27.2': + '@esbuild/win32-ia32@0.28.2': optional: true - '@esbuild/linux-mips64el@0.28.1': + '@esbuild/win32-x64@0.28.2': optional: true - '@esbuild/linux-ppc64@0.27.2': - optional: true - - '@esbuild/linux-ppc64@0.28.1': - optional: true - - '@esbuild/linux-riscv64@0.27.2': - optional: true - - '@esbuild/linux-riscv64@0.28.1': - optional: true - - '@esbuild/linux-s390x@0.27.2': - optional: true - - '@esbuild/linux-s390x@0.28.1': - optional: true - - '@esbuild/linux-x64@0.27.2': - optional: true - - '@esbuild/linux-x64@0.28.1': - optional: true - - '@esbuild/netbsd-arm64@0.27.2': - optional: true - - '@esbuild/netbsd-arm64@0.28.1': - optional: true - - '@esbuild/netbsd-x64@0.27.2': - optional: true - - '@esbuild/netbsd-x64@0.28.1': - optional: true - - '@esbuild/openbsd-arm64@0.27.2': - optional: true - - '@esbuild/openbsd-arm64@0.28.1': - optional: true - - '@esbuild/openbsd-x64@0.27.2': - optional: true - - '@esbuild/openbsd-x64@0.28.1': - optional: true - - '@esbuild/openharmony-arm64@0.27.2': - optional: true - - '@esbuild/openharmony-arm64@0.28.1': - optional: true - - '@esbuild/sunos-x64@0.27.2': - optional: true - - '@esbuild/sunos-x64@0.28.1': - optional: true - - '@esbuild/win32-arm64@0.27.2': - optional: true - - '@esbuild/win32-arm64@0.28.1': - optional: true - - '@esbuild/win32-ia32@0.27.2': - optional: true - - '@esbuild/win32-ia32@0.28.1': - optional: true - - '@esbuild/win32-x64@0.27.2': - optional: true - - '@esbuild/win32-x64@0.28.1': - optional: true - - '@eslint-community/eslint-utils@4.9.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.1.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))': + '@eslint/compat@2.1.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))': dependencies: '@eslint/core': 1.2.1 optionalDependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) '@eslint/config-array@0.23.5(supports-color@10.2.2)': dependencies: '@eslint/object-schema': 3.0.5 debug: 4.4.3(supports-color@10.2.2) - minimatch: 10.2.5 + minimatch: 10.2.6 transitivePeerDependencies: - supports-color @@ -14455,7 +13983,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.6(supports-color@10.2.2)': + '@eslint/eslintrc@3.3.7(supports-color@10.2.2)': dependencies: ajv: 6.15.0 debug: 4.4.3(supports-color@10.2.2) @@ -14463,15 +13991,15 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.3.0 + js-yaml: 4.3.2 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@10.0.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))': + '@eslint/js@10.0.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))': optionalDependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) '@eslint/js@9.39.5': {} @@ -14500,63 +14028,58 @@ snapshots: '@floating-ui/utils@0.2.12': {} - '@floating-ui/vue@1.1.11(vue@3.5.42(typescript@6.0.3))': + '@floating-ui/vue@2.0.1(vue@3.5.42(typescript@6.0.3))': dependencies: '@floating-ui/dom': 1.8.0 '@floating-ui/utils': 0.2.12 - vue-demi: 0.14.10(vue@3.5.42(typescript@6.0.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@gar/promise-retry@1.0.3': {} + vue: 3.5.42(typescript@6.0.3) '@harperfast/extended-iterable@1.0.3': optional: true '@headlessui/vue@1.7.23(vue@3.5.42(typescript@6.0.3))': dependencies: - '@tanstack/vue-virtual': 3.13.32(vue@3.5.42(typescript@6.0.3)) + '@tanstack/vue-virtual': 3.13.36(vue@3.5.42(typescript@6.0.3)) vue: 3.5.42(typescript@6.0.3) - '@hono/node-server@1.19.14(hono@4.12.30)': + '@hono/node-server@2.1.1(hono@4.13.5)': dependencies: - hono: 4.12.30 + hono: 4.13.5 - '@html-eslint/core@0.60.0': + '@html-eslint/core@0.65.0': dependencies: - '@html-eslint/types': 0.60.0 + '@html-eslint/types': 0.65.0 html-standard: 0.0.13 - '@html-eslint/eslint-plugin@0.60.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))': + '@html-eslint/eslint-plugin@0.65.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))': dependencies: '@eslint/plugin-kit': 0.4.1 - '@html-eslint/core': 0.60.0 - '@html-eslint/parser': 0.60.0 - '@html-eslint/template-parser': 0.60.0 - '@html-eslint/template-syntax-parser': 0.60.0 - '@html-eslint/types': 0.60.0 - '@rviscomi/capo.js': 2.2.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + '@html-eslint/core': 0.65.0 + '@html-eslint/parser': 0.65.0 + '@html-eslint/template-parser': 0.65.0 + '@html-eslint/template-syntax-parser': 0.65.0 + '@html-eslint/types': 0.65.0 + '@rviscomi/capo.js': 2.3.0 + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) html-standard: 0.0.13 - '@html-eslint/parser@0.60.0': + '@html-eslint/parser@0.65.0': dependencies: - '@html-eslint/template-syntax-parser': 0.60.0 - '@html-eslint/types': 0.60.0 + '@html-eslint/template-syntax-parser': 0.65.0 + '@html-eslint/types': 0.65.0 css-tree: 3.2.1 es-html-parser: 0.3.1 - '@html-eslint/template-parser@0.60.0': + '@html-eslint/template-parser@0.65.0': dependencies: - '@html-eslint/types': 0.60.0 + '@html-eslint/types': 0.65.0 es-html-parser: 0.3.1 - '@html-eslint/template-syntax-parser@0.60.0': + '@html-eslint/template-syntax-parser@0.65.0': dependencies: - '@html-eslint/types': 0.60.0 + '@html-eslint/types': 0.65.0 - '@html-eslint/types@0.60.0': + '@html-eslint/types@0.65.0': dependencies: '@types/css-tree': 2.3.11 '@types/estree': 1.0.9 @@ -14578,15 +14101,15 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@iconify-json/logos@1.2.11': + '@iconify-json/logos@1.2.13': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.90': + '@iconify-json/simple-icons@1.2.94': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.67': + '@iconify-json/vscode-icons@1.2.76': dependencies: '@iconify/types': 2.0.0 @@ -14600,21 +14123,11 @@ snapshots: '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - optional: true - '@img/sharp-darwin-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.3.3 optional: true - '@img/sharp-darwin-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - optional: true - '@img/sharp-darwin-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.3.3 @@ -14625,151 +14138,76 @@ snapshots: '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': - optional: true - '@img/sharp-libvips-darwin-arm64@1.3.3': optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': - optional: true - '@img/sharp-libvips-darwin-x64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': - optional: true - '@img/sharp-libvips-linux-arm64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': - optional: true - '@img/sharp-libvips-linux-arm@1.3.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': - optional: true - '@img/sharp-libvips-linux-ppc64@1.3.3': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': - optional: true - '@img/sharp-libvips-linux-riscv64@1.3.3': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': - optional: true - '@img/sharp-libvips-linux-s390x@1.3.3': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': - optional: true - '@img/sharp-libvips-linux-x64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - optional: true - '@img/sharp-libvips-linuxmusl-x64@1.3.3': optional: true - '@img/sharp-linux-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - optional: true - '@img/sharp-linux-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.3.3 optional: true - '@img/sharp-linux-arm@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - optional: true - '@img/sharp-linux-arm@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.3.3 optional: true - '@img/sharp-linux-ppc64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - optional: true - '@img/sharp-linux-ppc64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.3.3 optional: true - '@img/sharp-linux-riscv64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - optional: true - '@img/sharp-linux-riscv64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-riscv64': 1.3.3 optional: true - '@img/sharp-linux-s390x@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - optional: true - '@img/sharp-linux-s390x@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.3.3 optional: true - '@img/sharp-linux-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - optional: true - '@img/sharp-linux-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.3.3 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - optional: true - '@img/sharp-linuxmusl-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - optional: true - '@img/sharp-linuxmusl-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.3.3 optional: true - '@img/sharp-wasm32@0.34.5': - dependencies: - '@emnapi/runtime': 1.11.2 - optional: true - '@img/sharp-wasm32@0.35.4': dependencies: '@emnapi/runtime': 1.11.3 @@ -14780,148 +14218,152 @@ snapshots: '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-win32-arm64@0.34.5': - optional: true - '@img/sharp-win32-arm64@0.35.4': optional: true - '@img/sharp-win32-ia32@0.34.5': - optional: true - '@img/sharp-win32-ia32@0.35.4': optional: true - '@img/sharp-win32-x64@0.34.5': - optional: true - '@img/sharp-win32-x64@0.35.4': optional: true - '@inquirer/ansi@1.0.2': {} + '@inquirer/ansi@2.0.8': {} - '@inquirer/checkbox@4.3.2(@types/node@26.1.1)': + '@inquirer/checkbox@5.2.4(@types/node@26.4.1)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@26.1.1) - yoctocolors-cjs: 2.1.3 + '@inquirer/ansi': 2.0.8 + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/confirm@5.1.21(@types/node@26.1.1)': + '@inquirer/confirm@6.1.1(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/core@10.3.2(@types/node@26.1.1)': + '@inquirer/confirm@6.3.1(@types/node@26.4.1)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@26.1.1) + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) + optionalDependencies: + '@types/node': 26.4.1 + + '@inquirer/core@11.2.1(@types/node@26.4.1)': + dependencies: + '@inquirer/ansi': 2.0.8 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1(@types/node@26.4.1) cli-width: 4.1.0 - mute-stream: 2.0.0 + fast-wrap-ansi: 0.2.2 + mute-stream: 3.0.0 signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/editor@4.2.23(@types/node@26.1.1)': + '@inquirer/core@12.0.2(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/external-editor': 1.0.3(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) + '@inquirer/ansi': 2.0.8 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1(@types/node@26.4.1) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.2 + mute-stream: 3.0.0 + signal-exit: 4.1.0 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/expand@4.0.23(@types/node@26.1.1)': + '@inquirer/editor@5.3.2(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) - yoctocolors-cjs: 2.1.3 + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/external-editor': 3.0.5(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/external-editor@1.0.3(@types/node@26.1.1)': + '@inquirer/expand@5.1.4(@types/node@26.4.1)': + dependencies: + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) + optionalDependencies: + '@types/node': 26.4.1 + + '@inquirer/external-editor@3.0.5(@types/node@26.4.1)': dependencies: chardet: 2.2.0 iconv-lite: 0.7.3 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/figures@1.0.15': {} + '@inquirer/figures@2.0.9': {} - '@inquirer/input@4.3.1(@types/node@26.1.1)': + '@inquirer/input@5.1.5(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/number@3.0.23(@types/node@26.1.1)': + '@inquirer/number@4.2.2(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/password@4.0.23(@types/node@26.1.1)': + '@inquirer/password@5.2.1(@types/node@26.4.1)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) + '@inquirer/ansi': 2.0.8 + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/prompts@7.10.1(@types/node@26.1.1)': + '@inquirer/prompts@8.5.2(@types/node@26.4.1)': dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@26.1.1) - '@inquirer/confirm': 5.1.21(@types/node@26.1.1) - '@inquirer/editor': 4.2.23(@types/node@26.1.1) - '@inquirer/expand': 4.0.23(@types/node@26.1.1) - '@inquirer/input': 4.3.1(@types/node@26.1.1) - '@inquirer/number': 3.0.23(@types/node@26.1.1) - '@inquirer/password': 4.0.23(@types/node@26.1.1) - '@inquirer/rawlist': 4.1.11(@types/node@26.1.1) - '@inquirer/search': 3.2.2(@types/node@26.1.1) - '@inquirer/select': 4.4.2(@types/node@26.1.1) + '@inquirer/checkbox': 5.2.4(@types/node@26.4.1) + '@inquirer/confirm': 6.3.1(@types/node@26.4.1) + '@inquirer/editor': 5.3.2(@types/node@26.4.1) + '@inquirer/expand': 5.1.4(@types/node@26.4.1) + '@inquirer/input': 5.1.5(@types/node@26.4.1) + '@inquirer/number': 4.2.2(@types/node@26.4.1) + '@inquirer/password': 5.2.1(@types/node@26.4.1) + '@inquirer/rawlist': 5.3.4(@types/node@26.4.1) + '@inquirer/search': 4.3.2(@types/node@26.4.1) + '@inquirer/select': 5.2.4(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/rawlist@4.1.11(@types/node@26.1.1)': + '@inquirer/rawlist@5.3.4(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) - yoctocolors-cjs: 2.1.3 + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/search@3.2.2(@types/node@26.1.1)': + '@inquirer/search@4.3.2(@types/node@26.4.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@26.1.1) - yoctocolors-cjs: 2.1.3 + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/select@4.4.2(@types/node@26.1.1)': + '@inquirer/select@5.2.4(@types/node@26.4.1)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@26.1.1) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@26.1.1) - yoctocolors-cjs: 2.1.3 + '@inquirer/ansi': 2.0.8 + '@inquirer/core': 12.0.2(@types/node@26.4.1) + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1(@types/node@26.4.1) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@inquirer/type@3.0.10(@types/node@26.1.1)': + '@inquirer/type@4.1.1(@types/node@26.4.1)': optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@ioredis/commands@1.10.0': {} @@ -14947,7 +14389,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.15.0 + js-yaml: 3.15.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.6': {} @@ -14960,21 +14402,21 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 26.1.1 + '@types/node': 26.4.1 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 26.1.1 + '@types/node': 26.4.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.27.10 + '@sinclair/typebox': 0.27.12 '@jest/transform@29.7.0(supports-color@10.2.2)': dependencies: @@ -15001,7 +14443,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -15223,7 +14665,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -15238,17 +14680,17 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 optional: true '@kwsites/file-exists@1.1.1(supports-color@10.2.2)': @@ -15261,7 +14703,7 @@ snapshots: '@lezer/common@1.5.2': {} - '@lezer/css@1.3.4': + '@lezer/css@1.3.6': dependencies: '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 @@ -15287,37 +14729,35 @@ snapshots: dependencies: '@lezer/common': 1.5.2 - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@26.1.1))(@types/node@26.1.1)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@4.2.5(@inquirer/prompts@8.5.2(@types/node@26.4.1))(@types/node@26.4.1)(listr2@11.0.0)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@26.1.1) - '@inquirer/type': 3.0.10(@types/node@26.1.1) - listr2: 9.0.5 + '@inquirer/prompts': 8.5.2(@types/node@26.4.1) + '@inquirer/type': 4.1.1(@types/node@26.4.1) + listr2: 11.0.0 transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.5.1': + '@lmdb/lmdb-darwin-arm64@3.5.6': optional: true - '@lmdb/lmdb-darwin-x64@3.5.1': + '@lmdb/lmdb-darwin-x64@3.5.6': optional: true - '@lmdb/lmdb-linux-arm64@3.5.1': + '@lmdb/lmdb-linux-arm64@3.5.6': optional: true - '@lmdb/lmdb-linux-arm@3.5.1': + '@lmdb/lmdb-linux-arm@3.5.6': optional: true - '@lmdb/lmdb-linux-x64@3.5.1': + '@lmdb/lmdb-linux-x64@3.5.6': optional: true - '@lmdb/lmdb-win32-arm64@3.5.1': + '@lmdb/lmdb-win32-arm64@3.5.6': optional: true - '@lmdb/lmdb-win32-x64@3.5.1': + '@lmdb/lmdb-win32-x64@3.5.6': optional: true - '@lucide/helpers@1.0.0': {} - '@mapbox/node-pre-gyp@2.0.3(encoding@0.1.13)(supports-color@10.2.2)': dependencies: consola: 3.4.2 @@ -15326,32 +14766,32 @@ snapshots: node-fetch: 2.7.0(encoding@0.1.13) nopt: 8.1.0 semver: 7.8.5 - tar: 7.5.20 + tar: 7.5.22 transitivePeerDependencies: - encoding - supports-color - '@marijn/find-cluster-break@1.0.3': {} + '@marijn/find-cluster-break@1.0.4': {} - '@modelcontextprotocol/sdk@1.26.0(supports-color@10.2.2)(zod@4.3.6)': + '@modelcontextprotocol/sdk@1.30.0(supports-color@10.2.2)(zod@4.4.3)': dependencies: - '@hono/node-server': 1.19.14(hono@4.12.30) + '@hono/node-server': 2.1.1(hono@4.13.5) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 cors: 2.8.6 cross-spawn: 7.0.5 eventsource: 3.0.7 - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 express: 5.2.1(supports-color@10.2.2) - express-rate-limit: 8.5.2(express@5.2.1(supports-color@10.2.2)) - hono: 4.12.30 - jose: 6.2.3 + express-rate-limit: 8.7.0(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2) + hono: 4.13.5 + jose: 6.2.10 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 4.3.6 - zod-to-json-schema: 3.25.2(zod@4.3.6) + zod: 4.4.3 + zod-to-json-schema: 3.25.2(zod@4.4.3) transitivePeerDependencies: - supports-color @@ -15373,6 +14813,9 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': optional: true + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + '@napi-rs/nice-android-arm-eabi@1.1.1': optional: true @@ -15445,28 +14888,28 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: '@emnapi/core': 1.11.2 '@emnapi/runtime': 1.11.2 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.2 '@emnapi/runtime': 1.11.3 @@ -15509,7 +14952,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 + fastq: 1.20.3 '@npmcli/agent@3.0.0(supports-color@10.2.2)': dependencies: @@ -15521,198 +14964,78 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/agent@4.0.2(supports-color@10.2.2)': - dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2(supports-color@10.2.2) - https-proxy-agent: 7.0.6(supports-color@10.2.2) - lru-cache: 11.5.2 - socks-proxy-agent: 8.0.5(supports-color@10.2.2) - transitivePeerDependencies: - - supports-color - '@npmcli/fs@4.0.0': dependencies: semver: 7.8.5 - '@npmcli/fs@5.0.0': - dependencies: - semver: 7.8.5 - - '@npmcli/git@7.0.2': - dependencies: - '@gar/promise-retry': 1.0.3 - '@npmcli/promise-spawn': 9.0.1 - ini: 6.0.0 - lru-cache: 11.5.2 - npm-pick-manifest: 11.0.3 - proc-log: 6.1.0 - semver: 7.8.5 - which: 6.0.1 - - '@npmcli/installed-package-contents@4.0.0': - dependencies: - npm-bundled: 5.0.0 - npm-normalize-package-bin: 5.0.0 - - '@npmcli/node-gyp@5.0.0': {} - - '@npmcli/package-json@7.0.5': - dependencies: - '@npmcli/git': 7.0.2 - glob: 13.0.6 - hosted-git-info: 9.0.3 - json-parse-even-better-errors: 5.0.0 - proc-log: 6.1.0 - semver: 7.8.5 - spdx-expression-parse: 4.0.0 - - '@npmcli/promise-spawn@9.0.1': - dependencies: - which: 6.0.1 - - '@npmcli/redact@4.0.0': {} - - '@npmcli/run-script@10.0.4': - dependencies: - '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.5 - '@npmcli/promise-spawn': 9.0.1 - node-gyp: 12.4.0 - proc-log: 6.1.0 - - '@octokit/auth-token@3.0.4': {} - '@octokit/auth-token@6.0.0': {} - '@octokit/core@4.2.4(encoding@0.1.13)': - dependencies: - '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6(encoding@0.1.13) - '@octokit/request': 6.2.8(encoding@0.1.13) - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/core@7.0.6': + '@octokit/core@7.0.8': dependencies: '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.3 - '@octokit/request': 10.0.11 - '@octokit/request-error': 7.1.0 - '@octokit/types': 16.0.0 + '@octokit/graphql': 9.0.5 + '@octokit/request': 10.0.16 + '@octokit/request-error': 7.1.2 + '@octokit/types': 18.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.3': + '@octokit/endpoint@11.0.5': dependencies: - '@octokit/types': 16.0.0 + '@octokit/types': 18.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@7.0.6': + '@octokit/graphql@9.0.5': dependencies: - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@5.0.6(encoding@0.1.13)': - dependencies: - '@octokit/request': 6.2.8(encoding@0.1.13) - '@octokit/types': 9.3.2 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/graphql@9.0.3': - dependencies: - '@octokit/request': 10.0.11 - '@octokit/types': 16.0.0 + '@octokit/request': 10.0.16 + '@octokit/types': 18.0.0 universal-user-agent: 7.0.3 - '@octokit/openapi-types@18.1.1': {} - '@octokit/openapi-types@27.0.0': {} - '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': + '@octokit/openapi-types@29.0.1': {} + + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.8)': dependencies: - '@octokit/core': 7.0.6 + '@octokit/core': 7.0.8 '@octokit/types': 16.0.0 - '@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))': + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.8)': dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/tsconfig': 1.0.2 - '@octokit/types': 9.3.2 + '@octokit/core': 7.0.8 - '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4(encoding@0.1.13))': + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.8)': dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - - '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)': - dependencies: - '@octokit/core': 7.0.6 + '@octokit/core': 7.0.8 '@octokit/types': 16.0.0 - '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))': + '@octokit/request-error@7.1.2': dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/types': 10.0.0 + '@octokit/types': 18.0.0 - '@octokit/request-error@3.0.3': + '@octokit/request@10.0.16': dependencies: - '@octokit/types': 9.3.2 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request-error@7.1.0': - dependencies: - '@octokit/types': 16.0.0 - - '@octokit/request@10.0.11': - dependencies: - '@octokit/endpoint': 11.0.3 - '@octokit/request-error': 7.1.0 - '@octokit/types': 16.0.0 - content-type: 2.0.0 - json-with-bigint: 3.5.10 + '@octokit/endpoint': 11.0.5 + '@octokit/request-error': 7.1.2 + '@octokit/types': 18.0.0 + content-type: 3.0.0 + json-with-bigint: 3.5.12 universal-user-agent: 7.0.3 - '@octokit/request@6.2.8(encoding@0.1.13)': + '@octokit/rest@22.0.1': dependencies: - '@octokit/endpoint': 7.0.6 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/rest@19.0.13(encoding@0.1.13)': - dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4(encoding@0.1.13)) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4(encoding@0.1.13)) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4(encoding@0.1.13)) - transitivePeerDependencies: - - encoding - - '@octokit/tsconfig@1.0.2': {} - - '@octokit/types@10.0.0': - dependencies: - '@octokit/openapi-types': 18.1.1 + '@octokit/core': 7.0.8 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.8) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.8) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.8) '@octokit/types@16.0.0': dependencies: '@octokit/openapi-types': 27.0.0 - '@octokit/types@9.3.2': + '@octokit/types@18.0.0': dependencies: - '@octokit/openapi-types': 18.1.1 + '@octokit/openapi-types': 29.0.1 '@one-ini/wasm@0.2.1': {} @@ -15737,72 +15060,138 @@ snapshots: '@oslojs/encoding@1.1.0': {} - '@oxc-project/types@0.113.0': {} - - '@parcel/watcher-android-arm64@2.5.6': + '@oxc-parser/binding-android-arm-eabi@0.142.0': optional: true - '@parcel/watcher-darwin-arm64@2.5.6': + '@oxc-parser/binding-android-arm64@0.142.0': optional: true - '@parcel/watcher-darwin-x64@2.5.6': + '@oxc-parser/binding-darwin-arm64@0.142.0': optional: true - '@parcel/watcher-freebsd-x64@2.5.6': + '@oxc-parser/binding-darwin-x64@0.142.0': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.6': + '@oxc-parser/binding-freebsd-x64@0.142.0': optional: true - '@parcel/watcher-linux-arm-musl@2.5.6': + '@oxc-parser/binding-linux-arm-gnueabihf@0.142.0': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.6': + '@oxc-parser/binding-linux-arm-musleabihf@0.142.0': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.6': + '@oxc-parser/binding-linux-arm64-gnu@0.142.0': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.6': + '@oxc-parser/binding-linux-arm64-musl@0.142.0': optional: true - '@parcel/watcher-linux-x64-musl@2.5.6': + '@oxc-parser/binding-linux-ppc64-gnu@0.142.0': optional: true - '@parcel/watcher-wasm@2.5.6': + '@oxc-parser/binding-linux-riscv64-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.142.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.142.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.142.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.142.0': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.142.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.142.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.142.0': + optional: true + + '@oxc-project/types@0.140.0': {} + + '@oxc-project/types@0.142.0': {} + + '@oxc-project/types@0.148.0': + optional: true + + '@parcel/watcher-android-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + + '@parcel/watcher-wasm@2.6.0': dependencies: is-glob: 4.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 - '@parcel/watcher-win32-arm64@2.5.6': + '@parcel/watcher-win32-arm64@2.6.0': optional: true - '@parcel/watcher-win32-ia32@2.5.6': + '@parcel/watcher-win32-x64@2.6.0': optional: true - '@parcel/watcher-win32-x64@2.5.6': - optional: true - - '@parcel/watcher@2.5.6': + '@parcel/watcher@2.6.0': dependencies: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.5 + picomatch: 4.0.7 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.6 - '@parcel/watcher-darwin-arm64': 2.5.6 - '@parcel/watcher-darwin-x64': 2.5.6 - '@parcel/watcher-freebsd-x64': 2.5.6 - '@parcel/watcher-linux-arm-glibc': 2.5.6 - '@parcel/watcher-linux-arm-musl': 2.5.6 - '@parcel/watcher-linux-arm64-glibc': 2.5.6 - '@parcel/watcher-linux-arm64-musl': 2.5.6 - '@parcel/watcher-linux-x64-glibc': 2.5.6 - '@parcel/watcher-linux-x64-musl': 2.5.6 - '@parcel/watcher-win32-arm64': 2.5.6 - '@parcel/watcher-win32-ia32': 2.5.6 - '@parcel/watcher-win32-x64': 2.5.6 + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + optional: true '@pkgjs/parseargs@0.11.0': optional: true @@ -15821,20 +15210,20 @@ snapshots: '@poppinss/exception@1.2.3': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.63.1)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vite-prerender-plugin: 0.5.12(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - zimmerframe: 1.1.4 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vite-prerender-plugin: 0.5.12(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + zimmerframe: 1.1.5 transitivePeerDependencies: - preact - rollup @@ -15842,21 +15231,21 @@ snapshots: '@prefresh/babel-plugin@0.5.3': {} - '@prefresh/core@1.5.10(preact@10.29.8)': + '@prefresh/core@1.5.11(preact@10.29.8)': dependencies: preact: 10.29.8 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.3 - '@prefresh/core': 1.5.10(preact@10.29.8) + '@prefresh/core': 1.5.11(preact@10.29.8) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.8 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -15904,10 +15293,10 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) + '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -15970,7 +15359,7 @@ snapshots: open: 7.4.2 selfsigned: 2.4.1 serve-static: 1.16.3(supports-color@10.2.2) - ws: 6.2.5 + ws: 6.2.6 transitivePeerDependencies: - bufferutil - supports-color @@ -16001,33 +15390,33 @@ snapshots: optionalDependencies: '@types/react': 18.3.31 - '@react-router/dev@8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@react-router/dev@8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3))(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/parser': 7.29.8 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 '@react-router/node': 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(typescript@6.0.3) '@remix-run/node-fetch-server': 0.14.1 babel-dead-code-elimination: 1.0.12(supports-color@10.2.2) chokidar: 5.0.0 dedent: 1.7.2 - es-module-lexer: 2.3.1 + es-module-lexer: 2.3.2 exit-hook: 5.1.0 isbot: 5.2.2 jsesc: 3.1.0 lodash: 4.18.1 - p-map: 7.0.5 + p-map: 7.0.7 pathe: 2.0.3 picocolors: 1.1.1 - pkg-types: 2.3.1 + pkg-types: 2.3.2 react-refresh: 0.18.0 react-router: 8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) semver: 7.8.5 tinyglobby: 0.2.17 valibot: 1.4.2(typescript@6.0.3) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) optionalDependencies: '@react-router/serve': 8.3.1(react-router@8.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(typescript@6.0.3) typescript: 6.0.3 @@ -16117,223 +15506,275 @@ snapshots: '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 '@resvg/resvg-js-win32-x64-msvc': 2.6.2 - '@rolldown/binding-android-arm64@1.0.0-rc.4': + '@rolldown/binding-android-arm-eabi@1.2.7': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.4': + '@rolldown/binding-android-arm64@1.2.0': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.4': + '@rolldown/binding-android-arm64@1.2.7': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.4': + '@rolldown/binding-darwin-arm64@1.2.0': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': + '@rolldown/binding-darwin-arm64@1.2.7': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': + '@rolldown/binding-darwin-x64@1.2.0': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': + '@rolldown/binding-darwin-x64@1.2.7': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': + '@rolldown/binding-freebsd-x64@1.2.0': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': + '@rolldown/binding-freebsd-x64@1.2.7': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': + '@rolldown/binding-linux-arm-gnueabihf@1.2.0': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + '@rolldown/binding-linux-arm-gnueabihf@1.2.7': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.0': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.7': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.0': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.7': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.0': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.7': + optional: true + + '@rolldown/binding-wasm32-wasi@1.2.0': dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': + '@rolldown/binding-win32-arm64-msvc@1.2.0': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': + '@rolldown/binding-win32-arm64-msvc@1.2.7': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.0': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.7': optional: true '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-rc.4': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} '@rolldown/pluginutils@1.0.1': {} - '@rollup/plugin-alias@6.0.0(rollup@4.62.2)': + '@rollup/plugin-alias@6.0.0(rollup@4.63.1)': optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/plugin-babel@6.1.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/babel__core@7.20.5)(rollup@4.62.2)(supports-color@10.2.2)': + '@rollup/plugin-babel@6.1.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/babel__core@7.20.5)(rollup@4.63.1)(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) optionalDependencies: '@types/babel__core': 7.20.5 - rollup: 4.62.2 + rollup: 4.63.1 transitivePeerDependencies: - supports-color - '@rollup/plugin-commonjs@29.0.3(rollup@4.62.2)': + '@rollup/plugin-commonjs@29.0.3(rollup@4.63.1)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.5) + fdir: 6.5.0(picomatch@4.0.7) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.5 + picomatch: 4.0.7 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/plugin-inject@5.0.5(rollup@4.62.2)': + '@rollup/plugin-inject@5.0.5(rollup@4.63.1)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/plugin-json@6.1.0(rollup@4.62.2)': + '@rollup/plugin-json@6.1.0(rollup@4.63.1)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.62.2)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.63.1)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.12 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/plugin-replace@6.0.3(rollup@4.62.2)': + '@rollup/plugin-replace@6.0.3(rollup@4.63.1)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) magic-string: 0.30.21 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/plugin-terser@1.0.0(rollup@4.62.2)': + '@rollup/plugin-terser@1.0.0(rollup@4.63.1)': dependencies: - serialize-javascript: 7.0.7 + serialize-javascript: 7.1.1 smob: 1.6.2 - terser: 5.49.0 + terser: 5.51.2 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 picomatch: 2.3.2 - '@rollup/pluginutils@5.4.0(rollup@4.62.2)': + '@rollup/pluginutils@5.4.0(rollup@4.63.1)': dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.5 + picomatch: 4.0.7 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 - '@rollup/rollup-android-arm-eabi@4.62.2': + '@rollup/rollup-android-arm-eabi@4.63.1': optional: true - '@rollup/rollup-android-arm64@4.62.2': + '@rollup/rollup-android-arm64@4.63.1': optional: true - '@rollup/rollup-darwin-arm64@4.62.2': + '@rollup/rollup-darwin-arm64@4.63.1': optional: true - '@rollup/rollup-darwin-x64@4.62.2': + '@rollup/rollup-darwin-x64@4.63.1': optional: true - '@rollup/rollup-freebsd-arm64@4.62.2': + '@rollup/rollup-freebsd-arm64@4.63.1': optional: true - '@rollup/rollup-freebsd-x64@4.62.2': + '@rollup/rollup-freebsd-x64@4.63.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + '@rollup/rollup-linux-arm-gnueabihf@4.63.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.62.2': + '@rollup/rollup-linux-arm-musleabihf@4.63.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.62.2': + '@rollup/rollup-linux-arm64-gnu@4.63.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.62.2': + '@rollup/rollup-linux-arm64-musl@4.63.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.62.2': + '@rollup/rollup-linux-loong64-gnu@4.63.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.62.2': + '@rollup/rollup-linux-loong64-musl@4.63.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.62.2': + '@rollup/rollup-linux-ppc64-gnu@4.63.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.62.2': + '@rollup/rollup-linux-ppc64-musl@4.63.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.62.2': + '@rollup/rollup-linux-riscv64-gnu@4.63.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.62.2': + '@rollup/rollup-linux-riscv64-musl@4.63.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.62.2': + '@rollup/rollup-linux-s390x-gnu@4.63.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.62.2': + '@rollup/rollup-linux-x64-gnu@4.63.1': optional: true - '@rollup/rollup-linux-x64-musl@4.62.2': + '@rollup/rollup-linux-x64-musl@4.63.1': optional: true - '@rollup/rollup-openbsd-x64@4.62.2': + '@rollup/rollup-openbsd-x64@4.63.1': optional: true - '@rollup/rollup-openharmony-arm64@4.62.2': + '@rollup/rollup-openharmony-arm64@4.63.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.62.2': + '@rollup/rollup-win32-arm64-msvc@4.63.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.62.2': + '@rollup/rollup-win32-ia32-msvc@4.63.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.62.2': + '@rollup/rollup-win32-x64-gnu@4.63.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.62.2': + '@rollup/rollup-win32-x64-msvc@4.63.1': optional: true - '@rollup/wasm-node@4.62.2': + '@rollup/wasm-node@4.63.1': dependencies: '@types/estree': 1.0.9 optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 fsevents: 2.3.3 - '@rviscomi/capo.js@2.2.0': {} + '@rviscomi/capo.js@2.3.0': {} - '@schematics/angular@21.2.19(chokidar@5.0.0)': + '@schematics/angular@22.1.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.19(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) jsonc-parser: 3.3.1 + typescript: 6.0.3 transitivePeerDependencies: - chokidar @@ -16346,17 +15787,10 @@ snapshots: '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/core@3.23.0': + '@shikijs/core@4.4.3': dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - hast-util-to-html: 9.0.5 - - '@shikijs/core@4.3.1': - dependencies: - '@shikijs/primitive': 4.3.1 - '@shikijs/types': 4.3.1 + '@shikijs/primitive': 4.4.3 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 @@ -16367,15 +15801,9 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 3.1.1 - '@shikijs/engine-javascript@3.23.0': + '@shikijs/engine-javascript@4.4.3': dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.6 - - '@shikijs/engine-javascript@4.3.1': - dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 @@ -16384,31 +15812,22 @@ snapshots: '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.23.0': + '@shikijs/engine-oniguruma@4.4.3': dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - - '@shikijs/engine-oniguruma@4.3.1': - dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@2.5.0': dependencies: '@shikijs/types': 2.5.0 - '@shikijs/langs@3.23.0': + '@shikijs/langs@4.4.3': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.4.3 - '@shikijs/langs@4.3.1': + '@shikijs/primitive@4.4.3': dependencies: - '@shikijs/types': 4.3.1 - - '@shikijs/primitive@4.3.1': - dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -16416,13 +15835,9 @@ snapshots: dependencies: '@shikijs/types': 2.5.0 - '@shikijs/themes@3.23.0': + '@shikijs/themes@4.4.3': dependencies: - '@shikijs/types': 3.23.0 - - '@shikijs/themes@4.3.1': - dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.3 '@shikijs/transformers@2.5.0': dependencies: @@ -16434,57 +15849,20 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 - '@shikijs/types@3.23.0': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - '@shikijs/types@4.3.1': + '@shikijs/types@4.4.3': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 '@shikijs/vscode-textmate@10.0.2': {} - '@sigstore/bundle@4.0.0': - dependencies: - '@sigstore/protobuf-specs': 0.5.1 - - '@sigstore/core@3.2.1': {} - - '@sigstore/protobuf-specs@0.5.1': {} - - '@sigstore/sign@4.1.1(supports-color@10.2.2)': - dependencies: - '@gar/promise-retry': 1.0.3 - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.2.1 - '@sigstore/protobuf-specs': 0.5.1 - make-fetch-happen: 15.0.6(supports-color@10.2.2) - proc-log: 6.1.0 - transitivePeerDependencies: - - supports-color - - '@sigstore/tuf@4.0.2(supports-color@10.2.2)': - dependencies: - '@sigstore/protobuf-specs': 0.5.1 - tuf-js: 4.1.0(supports-color@10.2.2) - transitivePeerDependencies: - - supports-color - - '@sigstore/verify@3.1.1': - dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.2.1 - '@sigstore/protobuf-specs': 0.5.1 - '@simple-git/args-pathspec@1.0.3': {} '@simple-git/argv-parser@1.1.1': dependencies: '@simple-git/args-pathspec': 1.0.3 - '@sinclair/typebox@0.27.10': {} + '@sinclair/typebox@0.27.12': {} '@sindresorhus/is@7.2.0': {} @@ -16498,19 +15876,19 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@solidjs/router@0.11.5(solid-js@1.9.14)': + '@solidjs/router@0.11.5(solid-js@1.9.15)': dependencies: - solid-js: 1.9.14 + solid-js: 1.9.15 optional: true - '@solidjs/testing-library@0.8.10(@solidjs/router@0.11.5(solid-js@1.9.14))(solid-js@1.9.14)': + '@solidjs/testing-library@0.8.10(@solidjs/router@0.11.5(solid-js@1.9.15))(solid-js@1.9.15)': dependencies: '@testing-library/dom': 10.4.1 - solid-js: 1.9.14 + solid-js: 1.9.15 optionalDependencies: - '@solidjs/router': 0.11.5(solid-js@1.9.14) + '@solidjs/router': 0.11.5(solid-js@1.9.15) - '@speed-highlight/core@1.2.17': {} + '@speed-highlight/core@1.2.24': {} '@standard-schema/spec@1.1.0': {} @@ -16522,25 +15900,25 @@ snapshots: '@sveltejs/load-config@0.2.3': {} - '@sveltejs/package@2.5.8(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3)': + '@sveltejs/package@2.5.8(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3)': dependencies: chokidar: 5.0.0 kleur: 4.1.5 sade: 1.8.1 semver: 7.8.5 - svelte: 5.56.9(@typescript-eslint/types@8.66.0) - svelte2tsx: 0.7.57(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3) + svelte: 5.57.0(@typescript-eslint/types@8.69.0) + svelte2tsx: 0.7.61(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3) transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.57.0(@typescript-eslint/types@8.69.0))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: deepmerge: 4.3.1 - magic-string: 1.2.0 + magic-string: 1.2.3 obug: 2.1.4 - svelte: 5.56.9(@typescript-eslint/types@8.66.0) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + svelte: 5.57.0(@typescript-eslint/types@8.69.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@swc/core-darwin-arm64@1.7.23': optional: true @@ -16621,14 +15999,14 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - '@tanstack/react-start-rsc@0.1.48(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@tanstack/react-start-rsc@0.1.48(crossws@0.4.12(srvx@1.0.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/router-core': 1.171.27 '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) '@tanstack/start-client-core': 1.170.27 '@tanstack/start-fn-stubs': 1.162.0 - '@tanstack/start-plugin-core': 1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@tanstack/start-plugin-core': 1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(crossws@0.4.12(srvx@1.0.1))(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@tanstack/start-storage-context': 1.167.29 pathe: 2.0.3 react: 19.2.8 @@ -16647,31 +16025,31 @@ snapshots: - vite-plugin-solid - webpack - '@tanstack/react-start-server@1.167.37(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tanstack/react-start-server@1.167.37(crossws@0.4.12(srvx@1.0.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/router-core': 1.171.27 - '@tanstack/start-server-core': 1.169.31 + '@tanstack/start-server-core': 1.169.31(crossws@0.4.12(srvx@1.0.1)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) transitivePeerDependencies: - crossws - '@tanstack/react-start@1.168.49(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@tanstack/react-start@1.168.49(crossws@0.4.12(srvx@1.0.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-start-client': 1.168.30(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@tanstack/react-start-rsc': 0.1.48(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - '@tanstack/react-start-server': 1.167.37(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/react-start-rsc': 0.1.48(crossws@0.4.12(srvx@1.0.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + '@tanstack/react-start-server': 1.167.37(crossws@0.4.12(srvx@1.0.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) '@tanstack/start-client-core': 1.170.27 - '@tanstack/start-plugin-core': 1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - '@tanstack/start-server-core': 1.169.31 + '@tanstack/start-plugin-core': 1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(crossws@0.4.12(srvx@1.0.1))(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + '@tanstack/start-server-core': 1.169.31(crossws@0.4.12(srvx@1.0.1)) pathe: 2.0.3 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -16708,12 +16086,12 @@ snapshots: '@tanstack/virtual-file-routes': 1.162.0 jiti: 2.7.0 magic-string: 0.30.21 - prettier: 3.9.5 - zod: 4.4.3 + prettier: 3.9.6 + zod: 4.5.4 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@tanstack/router-plugin@1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/template': 7.29.7 @@ -16722,12 +16100,12 @@ snapshots: '@tanstack/router-generator': 1.167.33(supports-color@10.2.2) '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) chokidar: 5.0.0 - unplugin: 3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - zod: 4.4.3 + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + zod: 4.5.4 optionalDependencies: '@tanstack/react-router': 1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vite-plugin-solid: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vite-plugin-solid: 2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -16740,7 +16118,7 @@ snapshots: '@tanstack/router-utils@1.162.2(supports-color@10.2.2)': dependencies: - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/parser': 7.29.8 '@babel/types': 7.29.8 ansis: 4.3.1 @@ -16760,30 +16138,30 @@ snapshots: '@tanstack/start-fn-stubs@1.162.0': {} - '@tanstack/start-plugin-core@1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@tanstack/start-plugin-core@1.171.39(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(crossws@0.4.12(srvx@1.0.1))(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.8 '@tanstack/router-core': 1.171.27 '@tanstack/router-generator': 1.167.33(supports-color@10.2.2) - '@tanstack/router-plugin': 1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2)(vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@tanstack/router-plugin': 1.168.35(@tanstack/react-router@1.170.32(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(supports-color@10.2.2)(vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@tanstack/router-utils': 1.162.2(supports-color@10.2.2) - '@tanstack/start-server-core': 1.169.31 - exsolve: 1.1.0 + '@tanstack/start-server-core': 1.169.31(crossws@0.4.12(srvx@1.0.1)) + exsolve: 1.1.1 lightningcss: 1.33.0 pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 seroval: 1.6.4 source-map: 0.7.6 srvx: 0.11.22 tinyglobby: 0.2.17 ufo: 1.6.4 - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) xmlbuilder2: 4.0.3 - zod: 4.4.3 + zod: 4.5.4 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -16798,14 +16176,14 @@ snapshots: - vite-plugin-solid - webpack - '@tanstack/start-server-core@1.169.31': + '@tanstack/start-server-core@1.169.31(crossws@0.4.12(srvx@1.0.1))': dependencies: '@tanstack/history': 1.162.1 '@tanstack/router-core': 1.171.27 '@tanstack/start-client-core': 1.170.27 '@tanstack/start-storage-context': 1.167.29 fetchdts: 0.1.7 - h3-v2: h3@2.0.1-rc.20 + h3-v2: h3@2.0.1-rc.20(crossws@0.4.12(srvx@1.0.1)) seroval: 1.6.4 transitivePeerDependencies: - crossws @@ -16816,13 +16194,13 @@ snapshots: '@tanstack/store@0.9.3': {} - '@tanstack/virtual-core@3.17.4': {} + '@tanstack/virtual-core@3.17.8': {} '@tanstack/virtual-file-routes@1.162.0': {} - '@tanstack/vue-virtual@3.13.32(vue@3.5.42(typescript@6.0.3))': + '@tanstack/vue-virtual@3.13.36(vue@3.5.42(typescript@6.0.3))': dependencies: - '@tanstack/virtual-core': 3.17.4 + '@tanstack/virtual-core': 3.17.8 vue: 3.5.42(typescript@6.0.3) '@testing-library/dom@10.4.1': @@ -16858,66 +16236,59 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.9.1': + '@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10)': dependencies: '@adobe/css-tools': 4.5.0 + '@testing-library/dom': 10.4.1 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 + optionalDependencies: + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@testing-library/preact@3.2.4(preact@10.29.8)': dependencies: '@testing-library/dom': 8.20.1 preact: 10.29.8 - '@testing-library/react@14.3.1(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@testing-library/react@16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.29.7 - '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.3.7(@types/react@18.3.31) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@testing-library/react@14.3.1(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.29.7 - '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.3.7(@types/react@18.3.31) + '@testing-library/dom': 10.4.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' + optionalDependencies: + '@types/react': 18.3.31 + '@types/react-dom': 19.2.3(@types/react@18.3.31) - '@testing-library/svelte-core@1.1.3(svelte@5.56.9(@typescript-eslint/types@8.66.0))': + '@testing-library/svelte-core@1.1.3(svelte@5.57.0(@typescript-eslint/types@8.69.0))': dependencies: - svelte: 5.56.9(@typescript-eslint/types@8.66.0) + svelte: 5.57.0(@typescript-eslint/types@8.69.0) - '@testing-library/svelte@5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@testing-library/svelte@5.4.2(svelte@5.57.0(@typescript-eslint/types@8.69.0))(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@testing-library/dom': 10.4.1 - '@testing-library/svelte-core': 1.1.3(svelte@5.56.9(@typescript-eslint/types@8.66.0)) - svelte: 5.56.9(@typescript-eslint/types@8.66.0) + '@testing-library/svelte-core': 1.1.3(svelte@5.57.0(@typescript-eslint/types@8.69.0)) + svelte: 5.57.0(@typescript-eslint/types@8.69.0) optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) - '@testing-library/vue@8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3))': + '@testing-library/vue@8.1.0(@vue/compiler-dom@3.5.42)(@vue/compiler-sfc@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@6.0.3))': dependencies: '@babel/runtime': 7.29.7 '@testing-library/dom': 9.3.4 - '@vue/test-utils': 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3)) - vue: 3.5.42(typescript@5.9.3) + '@vue/test-utils': 2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@6.0.3)) + vue: 3.5.42(typescript@6.0.3) optionalDependencies: '@vue/compiler-sfc': 3.5.42 transitivePeerDependencies: - '@vue/compiler-dom' - '@vue/server-renderer' - '@thednp/dommatrix@3.0.4': {} + '@thednp/dommatrix@3.1.2': {} '@tokenizer/token@0.3.0': {} @@ -16935,13 +16306,6 @@ snapshots: '@tsconfig/svelte@5.0.8': {} - '@tufjs/canonical-json@2.0.0': {} - - '@tufjs/models@4.1.0': - dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 10.2.5 - '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 @@ -16994,20 +16358,22 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@types/fs-extra@8.1.5': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 + + '@types/gensync@1.0.5': {} '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@types/hast@3.0.5': dependencies: @@ -17023,15 +16389,17 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/jsesc@2.5.1': {} + '@types/json-schema@7.0.15': {} '@types/jsonfile@6.1.4': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@types/linkify-it@5.0.0': {} - '@types/markdown-it@14.1.2': + '@types/markdown-it@14.2.0': dependencies: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 @@ -17056,29 +16424,28 @@ snapshots: '@types/node-forge@1.3.14': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 '@types/node@16.9.1': {} - '@types/node@17.0.45': {} - - '@types/node@22.20.1': + '@types/node@24.13.3': dependencies: - undici-types: 6.21.0 + undici-types: 7.18.2 '@types/node@25.9.5': dependencies: undici-types: 7.24.6 - '@types/node@26.1.1': + '@types/node@26.4.1': dependencies: undici-types: 8.3.0 '@types/prop-types@15.7.15': {} - '@types/react-dom@18.3.7(@types/react@18.3.31)': + '@types/react-dom@19.2.3(@types/react@18.3.31)': dependencies: '@types/react': 18.3.31 + optional: true '@types/react-dom@19.2.3(@types/react@19.2.18)': dependencies: @@ -17097,17 +16464,15 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 - '@types/semver@7.7.1': {} + '@types/semver@7.8.0': {} '@types/stack-utils@2.0.3': {} '@types/svg2ttf@5.0.1': optional: true - '@types/trusted-types@2.0.7': {} - '@types/unist@3.0.3': {} '@types/web-bluetooth@0.0.21': {} @@ -17118,177 +16483,74 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/type-utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.66.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - ignore: 7.0.6 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/type-utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.66.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - ignore: 7.0.6 + '@typescript-eslint/parser': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.69.0 + '@typescript-eslint/type-utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.69.0 + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) + ignore: 7.0.8 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.66.0 + '@typescript-eslint/scope-manager': 8.69.0 + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.69.0 debug: 4.4.3(supports-color@10.2.2) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.66.0 - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.64.0(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.69.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@5.9.3) - '@typescript-eslint/types': 8.66.0 - debug: 4.4.3(supports-color@10.2.2) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.66.0(supports-color@10.2.2)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@5.9.3) - '@typescript-eslint/types': 8.66.0 - debug: 4.4.3(supports-color@10.2.2) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.66.0(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3) - '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/tsconfig-utils': 8.69.0(typescript@6.0.3) + '@typescript-eslint/types': 8.69.0 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.64.0': + '@typescript-eslint/scope-manager@8.69.0': dependencies: - '@typescript-eslint/types': 8.64.0 - '@typescript-eslint/visitor-keys': 8.64.0 + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/visitor-keys': 8.69.0 - '@typescript-eslint/scope-manager@8.66.0': - dependencies: - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/visitor-keys': 8.66.0 - - '@typescript-eslint/tsconfig-utils@8.64.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/tsconfig-utils@8.66.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/tsconfig-utils@8.66.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.69.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.64.0': {} + '@typescript-eslint/types@8.69.0': {} - '@typescript-eslint/types@8.66.0': {} - - '@typescript-eslint/typescript-estree@8.64.0(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.69.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.64.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@5.9.3) - '@typescript-eslint/types': 8.64.0 - '@typescript-eslint/visitor-keys': 8.64.0 + '@typescript-eslint/project-service': 8.69.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.69.0(typescript@6.0.3) + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/visitor-keys': 8.69.0 debug: 4.4.3(supports-color@10.2.2) - minimatch: 10.2.5 - semver: 7.8.5 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.66.0(supports-color@10.2.2)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.66.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@5.9.3) - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/visitor-keys': 8.66.0 - debug: 4.4.3(supports-color@10.2.2) - minimatch: 10.2.5 - semver: 7.8.5 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.66.0(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/project-service': 8.66.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3) - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/visitor-keys': 8.66.0 - debug: 4.4.3(supports-color@10.2.2) - minimatch: 10.2.5 + minimatch: 10.2.6 semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -17296,50 +16558,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.64.0 - '@typescript-eslint/types': 8.64.0 - '@typescript-eslint/typescript-estree': 8.64.0(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.69.0 + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.64.0': + '@typescript-eslint/visitor-keys@8.69.0': dependencies: - '@typescript-eslint/types': 8.64.0 + '@typescript-eslint/types': 8.69.0 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.66.0': - dependencies: - '@typescript-eslint/types': 8.66.0 - eslint-visitor-keys: 5.0.1 - - '@ungap/structured-clone@1.3.3': {} + '@ungap/structured-clone@1.4.0': {} '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -17399,7 +16634,7 @@ snapshots: dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': @@ -17411,14 +16646,14 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.12.2': optional: true - '@vercel/blob@2.6.1': + '@vercel/blob@2.8.0': dependencies: '@vercel/oidc': 3.8.0 async-retry: 1.3.3 is-buffer: 2.0.5 is-node-process: 1.2.0 throttleit: 2.1.0 - undici: 6.27.0 + undici: 6.28.0 '@vercel/cli-config@0.2.0': dependencies: @@ -17429,10 +16664,10 @@ snapshots: dependencies: execa: 5.1.1 - '@vercel/nft@1.10.2(encoding@0.1.13)(rollup@4.62.2)(supports-color@10.2.2)': + '@vercel/nft@1.11.0(encoding@0.1.13)(rollup@4.63.1)(supports-color@10.2.2)': dependencies: '@mapbox/node-pre-gyp': 2.0.3(encoding@0.1.13)(supports-color@10.2.2) - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) acorn: 8.18.0 acorn-import-attributes: 1.9.5(acorn@8.18.0) async-sema: 3.1.1 @@ -17441,7 +16676,7 @@ snapshots: glob: 13.0.6 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.5 + picomatch: 4.0.7 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -17454,11 +16689,11 @@ snapshots: '@vercel/cli-exec': 1.0.0 jose: 5.10.0 - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitejs/plugin-basic-ssl@2.3.0(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) - '@vitejs/plugin-react@4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitejs/plugin-react@4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -17466,87 +16701,99 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.7.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitejs/plugin-react@5.2.0(supports-color@10.2.2)(vite@7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@rolldown/pluginutils': 1.0.0-beta.27 + '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + react-refresh: 0.18.0 + vite: 7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': + '@vitejs/plugin-react@5.2.0(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) + '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) + '@rolldown/pluginutils': 1.0.0-rc.3 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.2.4(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': + dependencies: + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) - '@vitejs/plugin-vue@6.0.8(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.8(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vue: 3.5.42(typescript@5.9.3) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vue: 3.5.42(typescript@6.0.3) - '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) playwright: 1.58.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) playwright: 1.58.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - ws: 8.21.1 + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + ws: 8.21.3 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) - ws: 8.21.1 + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) + ws: 8.21.3 transitivePeerDependencies: - bufferutil - msw @@ -17561,13 +16808,13 @@ snapshots: istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 - magicast: 0.5.3 + magicast: 0.5.4 obug: 2.1.4 std-env: 4.2.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect@4.1.10': dependencies: @@ -17576,27 +16823,27 @@ snapshots: '@vitest/spy': 4.1.10 '@vitest/utils': 4.1.10 chai: 6.2.2 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) - '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 '@vitest/runner@4.1.10': dependencies: @@ -17616,18 +16863,18 @@ snapshots: dependencies: '@vitest/utils': 4.1.10 fflate: 0.8.3 - flatted: 3.4.2 + flatted: 3.4.4 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/utils@4.1.10': dependencies: '@vitest/pretty-format': 4.1.10 convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 '@volar/language-core@2.4.28': dependencies: @@ -17635,13 +16882,13 @@ snapshots: '@volar/source-map@2.4.28': {} - '@volar/typescript@2.4.28(typescript@5.9.3)': + '@volar/typescript@2.4.28(typescript@6.0.3)': dependencies: '@volar/language-core': 2.4.28 path-browserify: 1.0.1 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 '@vscode/l10n@0.0.18': {} @@ -17667,7 +16914,7 @@ snapshots: '@vue/shared': 3.5.42 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.23 + postcss: 8.5.27 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.42': @@ -17715,23 +16962,21 @@ snapshots: '@vue/runtime-dom': 3.5.42 '@vue/shared': 3.5.42 - '@vue/shared@3.5.39': {} - '@vue/shared@3.5.42': {} - '@vue/test-utils@2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@5.9.3))': + '@vue/test-utils@2.5.0(@vue/compiler-dom@3.5.42)(@vue/server-renderer@3.5.42)(vue@3.5.42(typescript@6.0.3))': dependencies: '@vue/compiler-dom': 3.5.42 js-beautify: 2.0.3 - vue: 3.5.42(typescript@5.9.3) - vue-component-type-helpers: 3.3.9 + vue: 3.5.42(typescript@6.0.3) + vue-component-type-helpers: 3.3.11 optionalDependencies: '@vue/server-renderer': 3.5.42 - '@vueuse/components@14.3.0(vue@3.5.42(typescript@6.0.3))': + '@vueuse/components@14.4.0(vue@3.5.42(typescript@6.0.3))': dependencies: - '@vueuse/core': 14.3.0(vue@3.5.42(typescript@6.0.3)) - '@vueuse/shared': 14.3.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/core': 14.4.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/shared': 14.4.0(vue@3.5.42(typescript@6.0.3)) vue: 3.5.42(typescript@6.0.3) '@vueuse/core@12.8.2(typescript@6.0.3)': @@ -17743,11 +16988,11 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/core@14.3.0(vue@3.5.42(typescript@6.0.3))': + '@vueuse/core@14.4.0(vue@3.5.42(typescript@6.0.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.3.0 - '@vueuse/shared': 14.3.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/metadata': 14.4.0 + '@vueuse/shared': 14.4.0(vue@3.5.42(typescript@6.0.3)) vue: 3.5.42(typescript@6.0.3) '@vueuse/integrations@12.8.2(focus-trap@7.8.0)(fuse.js@7.5.0)(typescript@6.0.3)': @@ -17761,10 +17006,10 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/integrations@14.3.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.42(typescript@6.0.3))': + '@vueuse/integrations@14.4.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.42(typescript@6.0.3))': dependencies: - '@vueuse/core': 14.3.0(vue@3.5.42(typescript@6.0.3)) - '@vueuse/shared': 14.3.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/core': 14.4.0(vue@3.5.42(typescript@6.0.3)) + '@vueuse/shared': 14.4.0(vue@3.5.42(typescript@6.0.3)) vue: 3.5.42(typescript@6.0.3) optionalDependencies: focus-trap: 7.8.0 @@ -17772,7 +17017,7 @@ snapshots: '@vueuse/metadata@12.8.2': {} - '@vueuse/metadata@14.3.0': {} + '@vueuse/metadata@14.4.0': {} '@vueuse/shared@12.8.2(typescript@6.0.3)': dependencies: @@ -17780,20 +17025,16 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/shared@14.3.0(vue@3.5.42(typescript@6.0.3))': + '@vueuse/shared@14.4.0(vue@3.5.42(typescript@6.0.3))': dependencies: vue: 3.5.42(typescript@6.0.3) - '@xmldom/xmldom@0.9.10': {} - - '@yarnpkg/lockfile@1.1.0': {} + '@xmldom/xmldom@0.9.12': {} a-sync-waterfall@1.0.1: {} abbrev@3.0.1: {} - abbrev@4.0.0: {} - abbrev@5.0.0: {} abort-controller@3.0.0: @@ -17808,7 +17049,7 @@ snapshots: accepts@2.0.0: dependencies: mime-types: 3.0.2 - negotiator: 1.0.0 + negotiator: 1.1.0 acorn-import-attributes@1.9.5(acorn@8.18.0): dependencies: @@ -17827,21 +17068,19 @@ snapshots: agent-base@7.1.4: {} - ajv-cli@5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3)): + agent-base@9.0.0: {} + + ajv-cli@5.0.0(ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.4.1)(typescript@6.0.3)): dependencies: ajv: 8.20.0 fast-json-patch: 3.1.1 glob: 7.2.3 - js-yaml: 3.15.0 + js-yaml: 3.15.2 json-schema-migrate: 2.0.0 json5: 2.2.3 minimist: 1.2.8 optionalDependencies: - ts-node: 10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3) - - ajv-formats@3.0.1(ajv@8.18.0): - optionalDependencies: - ajv: 8.18.0 + ts-node: 10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.4.1)(typescript@6.0.3) ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: @@ -17854,73 +17093,48 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.3 + fast-uri: 3.1.7 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.48.1: + algoliasearch@5.57.0: dependencies: - '@algolia/abtesting': 1.14.1 - '@algolia/client-abtesting': 5.48.1 - '@algolia/client-analytics': 5.48.1 - '@algolia/client-common': 5.48.1 - '@algolia/client-insights': 5.48.1 - '@algolia/client-personalization': 5.48.1 - '@algolia/client-query-suggestions': 5.48.1 - '@algolia/client-search': 5.48.1 - '@algolia/ingestion': 1.48.1 - '@algolia/monitoring': 1.48.1 - '@algolia/recommend': 5.48.1 - '@algolia/requester-browser-xhr': 5.48.1 - '@algolia/requester-fetch': 5.48.1 - '@algolia/requester-node-http': 5.48.1 - - algoliasearch@5.55.2: - dependencies: - '@algolia/abtesting': 1.21.2 - '@algolia/client-abtesting': 5.55.2 - '@algolia/client-analytics': 5.55.2 - '@algolia/client-common': 5.55.2 - '@algolia/client-insights': 5.55.2 - '@algolia/client-personalization': 5.55.2 - '@algolia/client-query-suggestions': 5.55.2 - '@algolia/client-search': 5.55.2 - '@algolia/ingestion': 1.55.2 - '@algolia/monitoring': 1.55.2 - '@algolia/recommend': 5.55.2 - '@algolia/requester-browser-xhr': 5.55.2 - '@algolia/requester-fetch': 5.55.2 - '@algolia/requester-node-http': 5.55.2 + '@algolia/abtesting': 1.23.0 + '@algolia/client-abtesting': 5.57.0 + '@algolia/client-analytics': 5.57.0 + '@algolia/client-common': 5.57.0 + '@algolia/client-insights': 5.57.0 + '@algolia/client-personalization': 5.57.0 + '@algolia/client-query-suggestions': 5.57.0 + '@algolia/client-search': 5.57.0 + '@algolia/ingestion': 1.57.0 + '@algolia/monitoring': 1.57.0 + '@algolia/recommend': 5.57.0 + '@algolia/requester-browser-xhr': 5.57.0 + '@algolia/requester-fetch': 5.57.0 + '@algolia/requester-node-http': 5.57.0 am-i-vibing@0.4.0: dependencies: process-ancestry: 0.1.0 - angular-eslint@21.4.0(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript-eslint@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(typescript@5.9.3): + angular-eslint@22.2.0(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript-eslint@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(typescript@6.0.3): dependencies: - '@angular-devkit/core': 21.2.19(chokidar@5.0.0) - '@angular-devkit/schematics': 21.2.19(chokidar@5.0.0) - '@angular-eslint/builder': 21.4.0(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/eslint-plugin': 21.4.0(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/eslint-plugin-template': 21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@typescript-eslint/types@8.64.0)(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/schematics': 21.4.0(@angular-eslint/template-parser@21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3))(@angular/cli@21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2))(@typescript-eslint/types@8.64.0)(@typescript-eslint/utils@8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3))(chokidar@5.0.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular-eslint/template-parser': 21.4.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@5.9.3) - '@angular/cli': 21.2.19(@types/node@26.1.1)(chokidar@5.0.0)(supports-color@10.2.2) - '@typescript-eslint/types': 8.64.0 - '@typescript-eslint/utils': 8.64.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 - typescript-eslint: 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-eslint/builder': 22.2.0(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@angular-eslint/eslint-plugin': 22.2.0(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@angular-eslint/eslint-plugin-template': 22.2.0(@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3))(@typescript-eslint/types@8.69.0)(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@angular-eslint/schematics': 22.2.0(@angular-eslint/template-parser@22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3))(@typescript-eslint/types@8.69.0)(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(chokidar@5.0.0)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@angular-eslint/template-parser': 22.2.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) + '@typescript-eslint/types': 8.69.0 + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) + typescript: 6.0.3 + typescript-eslint: 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) transitivePeerDependencies: - chokidar - supports-color @@ -17937,7 +17151,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.2.2: {} + ansi-regex@6.3.0: {} ansi-styles@4.3.0: dependencies: @@ -17982,7 +17196,7 @@ snapshots: buffer-crc32: 1.0.0 readable-stream: 4.7.0 readdir-glob: 1.1.3 - tar-stream: 3.2.0 + tar-stream: 3.2.1 zip-stream: 6.0.1 transitivePeerDependencies: - bare-abort-controller @@ -18000,6 +17214,8 @@ snapshots: argparse@2.0.1: {} + argparse@3.0.1: {} + aria-query@5.1.3: dependencies: deep-equal: 2.2.3 @@ -18056,63 +17272,63 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - astro@7.1.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(rollup@4.62.2)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): + astro@7.3.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@26.4.1)(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0): dependencies: - '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) - '@astrojs/internal-helpers': 0.10.1 - '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/markdown-satteri': 0.4.0 '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.1 '@clack/prompts': 1.7.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) am-i-vibing: 0.4.0 aria-query: 5.3.2 axobject-query: 4.1.0 ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 2.0.0 - cookie: 1.1.1 - devalue: 5.8.2 - diff: 8.0.4 + cookie: 2.0.1 + devalue: 5.9.2 + diff: 9.0.0 dset: 3.1.4 - es-module-lexer: 2.3.1 - esbuild: 0.28.1 + es-module-lexer: 2.3.2 + esbuild: 0.28.2 + find-proc: 0.1.0 flattie: 1.1.1 fontace: 0.4.1 get-tsconfig: 5.0.0-beta.4 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 - js-yaml: 4.3.0 + js-yaml: 4.3.2 jsonc-parser: 3.3.1 - magic-string: 0.30.21 - magicast: 0.5.3 + magic-string: 1.2.3 + magicast: 0.5.4 mrmime: 2.0.1 - neotraverse: 0.6.18 + neotraverse: 1.0.1 obug: 2.1.4 - p-limit: 7.3.1 - p-queue: 9.3.2 - package-manager-detector: 1.7.0 + p-limit: 7.3.2 + p-queue: 9.3.3 + package-manager-detector: 1.8.0 piccolore: 0.1.3 - picomatch: 4.0.5 + picomatch: 4.0.7 semver: 7.8.5 - shiki: 4.3.1 - smol-toml: 1.7.0 - svgo: 4.0.2 + shiki: 4.4.3 + smol-toml: 1.8.0 + svgo: 4.1.0 tinyclip: 0.1.15 - tinyexec: 1.2.4 + tinyexec: 1.3.1 tinyglobby: 0.2.17 ultrahtml: 1.7.0 - unifont: 0.7.4 - unstorage: 1.17.5(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + unifont: 0.7.5 + unstorage: 1.17.5(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 - zod: 4.4.3 + zod: 4.5.4 optionalDependencies: - sharp: 0.34.5 + sharp: 0.35.4(@types/node@26.4.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18138,7 +17354,6 @@ snapshots: - jiti - less - lightningcss - - rollup - sass - sass-embedded - stylus @@ -18190,7 +17405,7 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/parser': 7.29.8 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -18225,7 +17440,7 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 - babel-plugin-jsx-dom-expressions@0.40.7(@babel/core@7.29.7(supports-color@10.2.2)): + babel-plugin-jsx-dom-expressions@0.40.10(@babel/core@7.29.7(supports-color@10.2.2)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.18.6 @@ -18247,7 +17462,7 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - core-js-compat: 3.49.0 + core-js-compat: 3.50.0 transitivePeerDependencies: - supports-color @@ -18255,7 +17470,7 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - core-js-compat: 3.49.0 + core-js-compat: 3.50.0 transitivePeerDependencies: - supports-color @@ -18309,12 +17524,12 @@ snapshots: babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@10.2.2)) - babel-preset-solid@1.9.12(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.14): + babel-preset-solid@1.9.15(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.15): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - babel-plugin-jsx-dom-expressions: 0.40.7(@babel/core@7.29.7(supports-color@10.2.2)) + babel-plugin-jsx-dom-expressions: 0.40.10(@babel/core@7.29.7(supports-color@10.2.2)) optionalDependencies: - solid-js: 1.9.14 + solid-js: 1.9.15 bail@2.0.2: {} @@ -18322,44 +17537,44 @@ snapshots: balanced-match@4.0.4: {} - bare-events@2.9.1: {} + bare-events@2.9.2: {} - bare-fs@4.7.4: + bare-fs@4.8.1: dependencies: - bare-events: 2.9.1 - bare-path: 3.1.1 - bare-stream: 2.13.3(bare-events@2.9.1) - bare-url: 2.4.5 + bare-events: 2.9.2 + bare-path: 3.1.2 + bare-stream: 2.13.4(bare-events@2.9.2) + bare-url: 2.5.4 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a - bare-path@3.1.1: {} + bare-path@3.1.2: {} - bare-stream@2.13.3(bare-events@2.9.1): + bare-stream@2.13.4(bare-events@2.9.2): dependencies: b4a: 1.8.1 - streamx: 2.28.0 + streamx: 2.28.1 teex: 1.0.1 optionalDependencies: - bare-events: 2.9.1 + bare-events: 2.9.2 transitivePeerDependencies: - react-native-b4a - bare-url@2.4.5: + bare-url@2.5.4: dependencies: - bare-path: 3.1.1 + bare-path: 3.1.2 base64-js@1.5.1: {} - baseline-browser-mapping@2.10.43: {} + baseline-browser-mapping@2.11.20: {} basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 - beasties@0.4.1: + beasties@0.4.3: dependencies: css-select: 6.0.0 css-what: 7.0.0 @@ -18367,11 +17582,9 @@ snapshots: domhandler: 5.0.3 htmlparser2: 10.1.0 picocolors: 1.1.1 - postcss: 8.5.19 + postcss: 8.5.27 postcss-media-query-parser: 0.2.3 - postcss-safe-parser: 7.0.1(postcss@8.5.19) - - before-after-hook@2.2.3: {} + postcss-safe-parser: 7.0.1(postcss@8.5.27) before-after-hook@4.0.0: {} @@ -18393,12 +17606,12 @@ snapshots: body-parser@2.3.0(supports-color@10.2.2): dependencies: bytes: 3.1.2 - content-type: 2.0.0 + content-type: 2.1.0 debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.1 iconv-lite: 0.7.3 on-finished: 2.4.1 - qs: 6.15.3 + qs: 6.16.0 raw-body: 3.0.2 type-is: 2.1.0 transitivePeerDependencies: @@ -18408,16 +17621,16 @@ snapshots: boolbase@2.0.0: {} - brace-expansion@1.1.16: + brace-expansion@1.1.18: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.2: + brace-expansion@2.1.4: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.7: + brace-expansion@5.0.9: dependencies: balanced-match: 4.0.4 @@ -18429,13 +17642,13 @@ snapshots: dependencies: duplexer: 0.1.1 - browserslist@4.28.6: + browserslist@4.28.8: dependencies: - baseline-browser-mapping: 2.10.43 - caniuse-lite: 1.0.30001805 - electron-to-chromium: 1.5.392 - node-releases: 2.0.51 - update-browserslist-db: 1.2.3(browserslist@4.28.6) + baseline-browser-mapping: 2.11.20 + caniuse-lite: 1.0.30001810 + electron-to-chromium: 1.5.420 + node-releases: 2.0.54 + update-browserslist-db: 1.3.2(browserslist@4.28.8) bser@2.1.1: dependencies: @@ -18468,22 +17681,22 @@ snapshots: bytes@3.1.2: {} - c12@3.3.4(magicast@0.5.3): + c12@3.3.4(magicast@0.5.4): dependencies: chokidar: 5.0.0 confbox: 0.2.4 defu: 6.1.7 dotenv: 17.4.2 - exsolve: 1.1.0 - giget: 3.3.0 + exsolve: 1.1.1 + giget: 3.3.1 jiti: 2.7.0 - ohash: 2.0.11 + ohash: 2.0.12 pathe: 2.0.3 perfect-debounce: 2.1.0 - pkg-types: 2.3.1 - rc9: 3.0.1 + pkg-types: 2.3.2 + rc9: 3.1.0 optionalDependencies: - magicast: 0.5.3 + magicast: 0.5.4 cacache@19.0.1: dependencies: @@ -18495,24 +17708,11 @@ snapshots: minipass-collect: 2.0.1 minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 - p-map: 7.0.5 + p-map: 7.0.7 ssri: 12.0.0 - tar: 7.5.20 + tar: 7.5.22 unique-filename: 4.0.0 - cacache@20.0.4: - dependencies: - '@npmcli/fs': 5.0.0 - fs-minipass: 3.0.3 - glob: 13.0.6 - lru-cache: 11.5.2 - minipass: 7.1.3 - minipass-collect: 2.0.1 - minipass-flush: 1.0.7 - minipass-pipeline: 1.2.4 - p-map: 7.0.5 - ssri: 13.0.1 - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -18546,7 +17746,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001805: {} + caniuse-lite@1.0.30001810: {} ccount@2.0.1: {} @@ -18569,6 +17769,8 @@ snapshots: chalk@5.6.2: {} + chalk@6.0.0: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -18597,7 +17799,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 6.27.0 + undici: 6.28.0 whatwg-mimetype: 4.0.0 chokidar@3.6.0: @@ -18625,7 +17827,7 @@ snapshots: chrome-launcher@0.15.2(supports-color@10.2.2): dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@10.2.2) @@ -18634,7 +17836,7 @@ snapshots: chromium-edge-launcher@0.2.0(supports-color@10.2.2): dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@10.2.2) @@ -18673,9 +17875,9 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - cli-truncate@5.2.0: + cli-truncate@6.1.1: dependencies: - slice-ansi: 8.0.0 + slice-ansi: 9.0.0 string-width: 8.2.2 cli-width@4.1.0: {} @@ -18718,8 +17920,6 @@ snapshots: colorette@1.4.0: {} - colorette@2.0.20: {} - colors-cli@1.0.33: {} comma-separated-tokens@2.0.3: {} @@ -18730,6 +17930,8 @@ snapshots: commander@14.0.3: {} + commander@15.0.0: {} + commander@2.20.3: {} commander@4.1.1: {} @@ -18743,7 +17945,7 @@ snapshots: array-timsort: 1.0.3 esprima: 4.0.1 - comment-parser@1.4.7: {} + comment-parser@1.4.8: {} commenting@1.1.0: {} @@ -18785,6 +17987,8 @@ snapshots: confbox@0.2.4: {} + confbox@0.3.1: {} + config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -18805,7 +18009,9 @@ snapshots: content-type@1.0.5: {} - content-type@2.0.0: {} + content-type@2.1.0: {} + + content-type@3.0.0: {} convert-source-map@1.9.0: {} @@ -18821,24 +18027,22 @@ snapshots: cookie@0.7.2: {} - cookie@1.1.1: {} + cookie@2.0.1: {} copy-anything@3.0.5: dependencies: is-what: 4.1.16 - copy-anything@4.0.5: - dependencies: - is-what: 5.5.0 + copy-anything@4.1.0: {} copy-file@11.1.0: dependencies: graceful-fs: 4.2.11 p-event: 6.0.1 - core-js-compat@3.49.0: + core-js-compat@3.50.0: dependencies: - browserslist: 4.28.6 + browserslist: 4.28.8 core-util-is@1.0.3: {} @@ -18851,23 +18055,23 @@ snapshots: dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 - js-yaml: 3.15.0 + js-yaml: 3.15.2 parse-json: 4.0.0 cpy-cli@7.0.0: dependencies: cpy: 13.2.3 - globby: 16.2.1 + globby: 16.2.4 meow: 14.1.0 cpy@13.2.3: dependencies: copy-file: 11.1.0 - globby: 16.2.1 + globby: 16.2.4 junk: 4.0.1 micromatch: 4.0.8 p-filter: 4.1.0 - p-map: 7.0.5 + p-map: 7.0.7 crc-32@1.2.2: {} @@ -18893,93 +18097,97 @@ snapshots: dependencies: uncrypto: 0.1.3 - cspell-config-lib@10.0.1: + crossws@0.4.12(srvx@1.0.1): + optionalDependencies: + srvx: 1.0.1 + + cspell-config-lib@10.2.0: dependencies: - '@cspell/cspell-types': 10.0.1 + '@cspell/cspell-types': 10.2.0 comment-json: 5.0.0 - smol-toml: 1.7.0 + smol-toml: 1.8.0 yaml: 2.9.0 - cspell-dictionary@10.0.1: + cspell-dictionary@10.2.0: dependencies: - '@cspell/cspell-performance-monitor': 10.0.1 - '@cspell/cspell-pipe': 10.0.1 - '@cspell/cspell-types': 10.0.1 - cspell-trie-lib: 10.0.1(@cspell/cspell-types@10.0.1) - fast-equals: 6.0.2 + '@cspell/cspell-performance-monitor': 10.2.0 + '@cspell/cspell-pipe': 10.2.0 + '@cspell/cspell-types': 10.2.0 + cspell-trie-lib: 10.2.0(@cspell/cspell-types@10.2.0) + fast-equals: 6.0.3 - cspell-gitignore@10.0.1: + cspell-gitignore@10.2.0: dependencies: - '@cspell/url': 10.0.1 - cspell-glob: 10.0.1 - cspell-io: 10.0.1 + '@cspell/url': 10.2.0 + cspell-glob: 10.2.0 + cspell-io: 10.2.0 - cspell-glob@10.0.1: + cspell-glob@10.2.0: dependencies: - '@cspell/url': 10.0.1 - picomatch: 4.0.5 + '@cspell/url': 10.2.0 + picomatch: 4.0.7 - cspell-grammar@10.0.1: + cspell-grammar@10.2.0: dependencies: - '@cspell/cspell-pipe': 10.0.1 - '@cspell/cspell-types': 10.0.1 + '@cspell/cspell-pipe': 10.2.0 + '@cspell/cspell-types': 10.2.0 - cspell-io@10.0.1: + cspell-io@10.2.0: dependencies: - '@cspell/cspell-service-bus': 10.0.1 - '@cspell/url': 10.0.1 + '@cspell/cspell-service-bus': 10.2.0 + '@cspell/url': 10.2.0 - cspell-lib@10.0.1: + cspell-lib@10.2.0: dependencies: - '@cspell/cspell-bundled-dicts': 10.0.1 - '@cspell/cspell-performance-monitor': 10.0.1 - '@cspell/cspell-pipe': 10.0.1 - '@cspell/cspell-resolver': 10.0.1 - '@cspell/cspell-types': 10.0.1 - '@cspell/dynamic-import': 10.0.1 - '@cspell/filetypes': 10.0.1 - '@cspell/rpc': 10.0.1 - '@cspell/strong-weak-map': 10.0.1 - '@cspell/url': 10.0.1 - cspell-config-lib: 10.0.1 - cspell-dictionary: 10.0.1 - cspell-glob: 10.0.1 - cspell-grammar: 10.0.1 - cspell-io: 10.0.1 - cspell-trie-lib: 10.0.1(@cspell/cspell-types@10.0.1) + '@cspell/cspell-bundled-dicts': 10.2.0 + '@cspell/cspell-performance-monitor': 10.2.0 + '@cspell/cspell-pipe': 10.2.0 + '@cspell/cspell-resolver': 10.2.0 + '@cspell/cspell-types': 10.2.0 + '@cspell/dynamic-import': 10.2.0 + '@cspell/filetypes': 10.2.0 + '@cspell/rpc': 10.2.0 + '@cspell/strong-weak-map': 10.2.0 + '@cspell/url': 10.2.0 + cspell-config-lib: 10.2.0 + cspell-dictionary: 10.2.0 + cspell-glob: 10.2.0 + cspell-grammar: 10.2.0 + cspell-io: 10.2.0 + cspell-trie-lib: 10.2.0(@cspell/cspell-types@10.2.0) env-paths: 4.0.0 gensequence: 8.0.8 import-fresh: 4.0.0 resolve-from: 5.0.0 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-languageserver-textdocument: 1.0.14 + vscode-uri: 3.2.0 xdg-basedir: 5.1.0 - cspell-trie-lib@10.0.1(@cspell/cspell-types@10.0.1): + cspell-trie-lib@10.2.0(@cspell/cspell-types@10.2.0): dependencies: - '@cspell/cspell-types': 10.0.1 + '@cspell/cspell-types': 10.2.0 - cspell@10.0.1: + cspell@10.2.0: dependencies: - '@cspell/cspell-json-reporter': 10.0.1 - '@cspell/cspell-performance-monitor': 10.0.1 - '@cspell/cspell-pipe': 10.0.1 - '@cspell/cspell-types': 10.0.1 - '@cspell/cspell-worker': 10.0.1 - '@cspell/dynamic-import': 10.0.1 - '@cspell/url': 10.0.1 - ansi-regex: 6.2.2 - chalk: 5.6.2 + '@cspell/cspell-json-reporter': 10.2.0 + '@cspell/cspell-performance-monitor': 10.2.0 + '@cspell/cspell-pipe': 10.2.0 + '@cspell/cspell-types': 10.2.0 + '@cspell/cspell-worker': 10.2.0 + '@cspell/dynamic-import': 10.2.0 + '@cspell/url': 10.2.0 + ansi-regex: 6.3.0 + chalk: 6.0.0 chalk-template: 1.1.2 - commander: 14.0.3 - cspell-config-lib: 10.0.1 - cspell-dictionary: 10.0.1 - cspell-gitignore: 10.0.1 - cspell-glob: 10.0.1 - cspell-io: 10.0.1 - cspell-lib: 10.0.1 + commander: 15.0.0 + cspell-config-lib: 10.2.0 + cspell-dictionary: 10.2.0 + cspell-gitignore: 10.2.0 + cspell-glob: 10.2.0 + cspell-io: 10.2.0 + cspell-lib: 10.2.0 fast-json-stable-stringify: 2.1.0 - flatted: 3.4.2 + flatted: 3.4.4 semver: 7.8.5 tinyglobby: 0.2.17 @@ -19048,23 +18256,18 @@ snapshots: cssom@0.5.0: {} - cssstyle@5.3.7: - dependencies: - '@asamuzakjp/css-color': 4.1.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.6(css-tree@3.2.1) - css-tree: 3.2.1 - lru-cache: 11.5.2 - csstype@3.2.3: {} cubic2quad@1.2.1: {} data-uri-to-buffer@4.0.1: {} - data-urls@6.0.1: + data-urls@7.0.0: dependencies: whatwg-mimetype: 5.0.0 - whatwg-url: 15.1.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' data-view-buffer@1.0.2: dependencies: @@ -19153,7 +18356,7 @@ snapshots: default-browser-id@5.0.1: {} - default-browser@5.5.0: + default-browser@5.5.1: dependencies: bundle-name: 4.1.0 default-browser-id: 5.0.1 @@ -19164,8 +18367,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} define-properties@1.2.1: @@ -19182,8 +18383,6 @@ snapshots: dependency-graph@1.0.0: {} - deprecation@2.3.1: {} - dequal@2.0.3: {} destr@2.0.5: {} @@ -19192,9 +18391,7 @@ snapshots: detect-libc@2.1.2: {} - devalue@5.8.2: {} - - devalue@5.9.0: {} + devalue@5.9.2: {} devlop@1.1.0: dependencies: @@ -19205,6 +18402,8 @@ snapshots: diff@8.0.4: {} + diff@9.0.0: {} + diffable-html@4.1.0: dependencies: htmlparser2: 3.10.1 @@ -19254,7 +18453,7 @@ snapshots: dependencies: domelementtype: 3.0.0 - domino@2.1.7: {} + domino@2.1.8: {} domutils@1.7.0: dependencies: @@ -19273,9 +18472,9 @@ snapshots: domelementtype: 3.0.0 domhandler: 6.0.1 - dot-prop@10.1.0: + dot-prop@10.2.0: dependencies: - type-fest: 5.8.0 + type-fest: 5.9.0 dotenv@16.6.1: {} @@ -19299,12 +18498,12 @@ snapshots: dependencies: '@one-ini/wasm': 0.2.1 commander: 14.0.3 - minimatch: 10.2.5 + minimatch: 10.2.6 semver: 7.8.5 ee-first@1.1.1: {} - electron-to-chromium@1.5.392: {} + electron-to-chromium@1.5.420: {} element-to-path@1.2.1: {} @@ -19316,6 +18515,8 @@ snapshots: emoji-regex@9.2.2: {} + empathic@2.0.1: {} + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -19453,7 +18654,7 @@ snapshots: es-module-lexer@1.7.0: {} - es-module-lexer@2.3.1: {} + es-module-lexer@2.3.2: {} es-object-atoms@1.1.2: dependencies: @@ -19482,63 +18683,34 @@ snapshots: is-symbol: 1.1.1 optional: true - esbuild@0.27.2: + esbuild@0.28.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 - - esbuild@0.28.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 escalade@3.2.0: {} @@ -19552,13 +18724,13 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)): + eslint-config-prettier@10.1.8(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)): dependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) eslint-import-context@0.1.9(unrs-resolver@1.12.2): dependencies: - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.3 stable-hash-x: 0.2.0 optionalDependencies: unrs-resolver: 1.12.2 @@ -19572,12 +18744,12 @@ snapshots: - supports-color optional: true - eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10(supports-color@10.2.2))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): + eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10(supports-color@10.2.2))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: - '@typescript-eslint/types': 8.66.0 - comment-parser: 1.4.7 + '@typescript-eslint/types': 8.69.0 + comment-parser: 1.4.8 debug: 4.4.3(supports-color@10.2.2) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) eslint-import-context: 0.1.9(unrs-resolver@1.12.2) is-glob: 4.0.3 minimatch: 9.0.9 @@ -19585,7 +18757,7 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.12.2 optionalDependencies: - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) eslint-import-resolver-node: 0.3.10(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -19603,9 +18775,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2): + eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-helpers': 0.7.0 @@ -19632,7 +18804,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.5 + minimatch: 10.2.6 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -19666,11 +18838,11 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.3.4(@typescript-eslint/types@8.66.0): + esrap@2.3.6(@typescript-eslint/types@8.69.0): dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 optionalDependencies: - '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/types': 8.69.0 esrecurse@4.3.0: dependencies: @@ -19696,17 +18868,17 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.9.1 + bare-events: 2.9.2 transitivePeerDependencies: - bare-abort-controller events@3.3.0: {} - eventsource-parser@3.1.0: {} + eventsource-parser@3.1.1: {} eventsource@3.0.7: dependencies: - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 execa@5.1.1: dependencies: @@ -19728,10 +18900,13 @@ snapshots: exponential-backoff@3.1.3: {} - express-rate-limit@8.5.2(express@5.2.1(supports-color@10.2.2)): + express-rate-limit@8.7.0(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2): dependencies: + debug: 4.4.3(supports-color@10.2.2) express: 5.2.1(supports-color@10.2.2) - ip-address: 10.2.0 + ip-address: 10.7.0 + transitivePeerDependencies: + - supports-color express@5.2.1(supports-color@10.2.2): dependencies: @@ -19755,7 +18930,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.15.3 + qs: 6.16.0 range-parser: 1.3.0 router: 2.2.0(supports-color@10.2.2) send: 1.2.1(supports-color@10.2.2) @@ -19766,7 +18941,7 @@ snapshots: transitivePeerDependencies: - supports-color - exsolve@1.1.0: {} + exsolve@1.1.1: {} extend-shallow@2.0.1: dependencies: @@ -19776,7 +18951,7 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-equals@6.0.2: {} + fast-equals@6.0.3: {} fast-fifo@1.3.2: {} @@ -19800,13 +18975,13 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 - fast-uri@3.1.3: {} + fast-uri@3.1.7: {} fast-wrap-ansi@0.2.2: dependencies: fast-string-width: 3.0.2 - fastq@1.20.1: + fastq@1.20.3: dependencies: reusify: 1.1.0 @@ -19818,9 +18993,9 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 fetch-blob@3.2.0: dependencies: @@ -19883,6 +19058,8 @@ snapshots: common-path-prefix: 3.0.0 pkg-dir: 8.0.0 + find-proc@0.1.0: {} + find-up-simple@1.0.1: {} find-up@3.0.0: @@ -19901,20 +19078,20 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.2 + flatted: 3.4.4 keyv: 4.5.4 - flatted@3.4.2: {} + flatted@3.4.4: {} flattie@1.1.1: {} flow-enums-runtime@0.0.6: {} - flow-estree@0.322.0: {} + flow-estree@0.330.0: {} - flow-parser@0.322.0: + flow-parser@0.330.0: dependencies: - flow-estree: 0.322.0 + flow-estree: 0.330.0 focus-trap@7.8.0: dependencies: @@ -19949,14 +19126,14 @@ snapshots: forwarded@0.2.0: {} - framer-motion@12.42.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + framer-motion@13.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - motion-dom: 12.42.2 - motion-utils: 12.39.0 + motion-dom: 13.2.0 + motion-utils: 13.0.0 tslib: 2.8.1 optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) fresh@0.5.2: {} @@ -19968,7 +19145,7 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 - fs-extra@11.3.6: + fs-extra@11.4.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.1 @@ -20053,7 +19230,7 @@ snapshots: get-intrinsic: 1.3.0 optional: true - get-tsconfig@4.14.0: + get-tsconfig@4.14.3: dependencies: resolve-pkg-maps: 1.0.0 @@ -20066,7 +19243,7 @@ snapshots: image-q: 4.0.0 omggif: 1.0.10 - giget@3.3.0: {} + giget@3.3.1: {} github-slugger@2.0.0: {} @@ -20078,8 +19255,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.5.0: dependencies: foreground-child: 3.3.1 @@ -20093,14 +19268,14 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.2.3 - minimatch: 10.2.5 + minimatch: 10.2.6 minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 2.0.2 glob@13.0.6: dependencies: - minimatch: 10.2.5 + minimatch: 10.2.6 minipass: 7.1.3 path-scurry: 2.0.2 @@ -20143,12 +19318,13 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@16.2.1: + globby@16.2.4: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 - ignore: 7.0.6 + ignore: 7.0.8 is-path-inside: 4.0.0 + micromatch: 4.0.8 slash: 5.1.0 unicorn-magic: 0.4.0 @@ -20156,13 +19332,6 @@ snapshots: graceful-fs@4.2.11: {} - gray-matter@4.0.3: - dependencies: - js-yaml: 3.15.0 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - gzip-size@7.0.0: dependencies: duplexer: 0.1.2 @@ -20174,15 +19343,17 @@ snapshots: defu: 6.1.7 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.4 + node-mock-http: 1.0.5 radix3: 1.1.2 ufo: 1.6.4 uncrypto: 0.1.3 - h3@2.0.1-rc.20: + h3@2.0.1-rc.20(crossws@0.4.12(srvx@1.0.1)): dependencies: rou3: 0.8.1 srvx: 0.11.22 + optionalDependencies: + crossws: 0.4.12(srvx@1.0.1) has-bigints@1.1.0: {} @@ -20207,30 +19378,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hast-util-from-html@2.0.3: - dependencies: - '@types/hast': 3.0.5 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.3 - parse5: 7.3.0 - vfile: 6.0.3 - vfile-message: 4.0.3 - - hast-util-from-parse5@8.0.3: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 9.0.1 - property-information: 7.2.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.5 - hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.5 @@ -20249,14 +19396,6 @@ snapshots: dependencies: '@types/hast': 3.0.5 - hastscript@9.0.1: - dependencies: - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - he@1.2.0: {} hermes-estree@0.23.1: {} @@ -20273,11 +19412,11 @@ snapshots: hey-listen@1.0.8: {} - hono@4.12.30: {} + hono@4.13.5: {} hookable@5.5.3: {} - hosted-git-info@9.0.3: + hosted-git-info@10.1.1: dependencies: lru-cache: 11.5.2 @@ -20296,7 +19435,7 @@ snapshots: html-standard@0.0.13: dependencies: vscode-css-languageservice: 6.3.10 - vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-textdocument: 1.0.14 html-void-elements@3.0.0: {} @@ -20349,11 +19488,25 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@9.1.0(supports-color@10.2.2): + dependencies: + agent-base: 9.0.0 + debug: 4.4.3(supports-color@10.2.2) + proxy-agent-negotiate: 1.1.0 + transitivePeerDependencies: + - kerberos + - supports-color + httpxy@0.5.5: {} human-signals@2.1.0: {} - husky@8.0.3: {} + husky@9.1.7: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + optional: true iconv-lite@0.6.3: dependencies: @@ -20365,23 +19518,16 @@ snapshots: ieee754@1.2.1: {} - ignore-walk@8.0.0: - dependencies: - minimatch: 10.2.5 - ignore@5.3.2: {} - ignore@7.0.5: {} - ignore@7.0.6: {} + ignore@7.0.8: {} + image-q@4.0.0: dependencies: '@types/node': 16.9.1 - image-size@0.5.5: - optional: true - image-size@1.2.1: dependencies: queue: 6.0.2 @@ -20451,7 +19597,7 @@ snapshots: transitivePeerDependencies: - supports-color - ip-address@10.2.0: {} + ip-address@10.7.0: {} ipaddr.js@1.9.1: {} @@ -20592,8 +19738,6 @@ snapshots: is-plain-object@3.0.1: {} - is-plain-object@5.0.0: {} - is-potential-custom-element-name@1.0.1: {} is-promise@4.0.0: {} @@ -20655,8 +19799,6 @@ snapshots: is-what@4.1.16: {} - is-what@5.5.0: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -20675,8 +19817,6 @@ snapshots: isexe@3.1.5: {} - isexe@4.0.0: {} - isobject@3.0.1: {} isomorphic-fetch@3.0.0(encoding@0.1.13): @@ -20707,6 +19847,7 @@ snapshots: semver: 7.8.5 transitivePeerDependencies: - supports-color + optional: true istanbul-lib-report@3.0.1: dependencies: @@ -20734,7 +19875,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 26.1.1 + '@types/node': 26.4.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -20744,7 +19885,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 26.1.1 + '@types/node': 26.4.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20771,7 +19912,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 26.1.1 + '@types/node': 26.4.1 jest-util: 29.7.0 jest-regex-util@29.6.3: {} @@ -20783,7 +19924,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 26.1.1 + '@types/node': 26.4.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -20800,7 +19941,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -20819,7 +19960,7 @@ snapshots: jose@5.10.0: {} - jose@6.2.3: {} + jose@6.2.10: {} jpeg-js@0.4.4: {} @@ -20837,14 +19978,12 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - - js-yaml@3.15.0: + js-yaml@3.15.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.3.0: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 @@ -20866,7 +20005,7 @@ snapshots: '@babel/register': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) babel-core: 7.0.0-bridge.0(@babel/core@7.29.7(supports-color@10.2.2)) chalk: 4.1.2 - flow-parser: 0.322.0 + flow-parser: 0.330.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -20877,33 +20016,31 @@ snapshots: transitivePeerDependencies: - supports-color - jsdom@27.4.0(supports-color@10.2.2): + jsdom@30.0.1: dependencies: - '@acemir/cssom': 0.9.31 - '@asamuzakjp/dom-selector': 6.8.1 + '@asamuzakjp/css-color': 6.0.7 + '@asamuzakjp/dom-selector': 8.3.2 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.12(css-tree@3.2.1) '@exodus/bytes': 1.15.1 - cssstyle: 5.3.7 - data-urls: 6.0.1 + css-tree: 3.2.1 + data-urls: 7.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 - http-proxy-agent: 7.0.2(supports-color@10.2.2) - https-proxy-agent: 7.0.6(supports-color@10.2.2) is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.2 parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.2 + undici: 8.10.1 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 - ws: 8.21.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 17.1.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - '@noble/hashes' - - bufferutil - - supports-color - - utf-8-validate jsesc@3.1.0: {} @@ -20911,8 +20048,6 @@ snapshots: json-parse-better-errors@1.0.2: {} - json-parse-even-better-errors@5.0.0: {} - json-schema-migrate@2.0.0: dependencies: ajv: 8.20.0 @@ -20925,7 +20060,7 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-with-bigint@3.5.10: {} + json-with-bigint@3.5.12: {} json5@2.2.3: {} @@ -20948,8 +20083,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonparse@1.3.1: {} - jszip@3.10.1: dependencies: lie: 3.3.0 @@ -20981,18 +20114,20 @@ snapshots: dependencies: readable-stream: 2.3.8 - less@4.6.7: + less@4.9.1(supports-color@10.2.2): dependencies: copy-anything: 3.0.5 parse-node-version: 1.0.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 - image-size: 0.5.5 make-dir: 5.1.0 mime: 1.6.0 needle: 3.5.0 + probe-image-size: 7.4.0(supports-color@10.2.2) source-map: 0.6.1 + transitivePeerDependencies: + - supports-color leven@3.1.0: {} @@ -21075,54 +20210,48 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@17.0.8: + linkify-it@6.1.0: dependencies: - listr2: 10.2.2 - picomatch: 4.0.5 + uc.micro: 3.0.0 + + lint-staged@17.4.1: + dependencies: + picomatch: 4.0.7 string-argv: 0.3.2 - tinyexec: 1.2.4 + tinyexec: 1.3.1 optionalDependencies: yaml: 2.9.0 - listhen@1.10.0: + listhen@1.10.1(@parcel/watcher@2.6.0)(srvx@1.0.1): dependencies: - '@parcel/watcher': 2.5.6 - '@parcel/watcher-wasm': 2.5.6 + '@parcel/watcher-wasm': 2.6.0 citty: 0.2.2 consola: 3.4.2 - crossws: 0.3.5 + crossws: 0.4.12(srvx@1.0.1) defu: 6.1.7 get-port-please: 3.2.0 h3: 1.15.11 http-shutdown: 1.2.2 jiti: 2.7.0 - mlly: 1.8.2 node-forge: 1.4.0 pathe: 2.0.3 std-env: 4.2.0 tinyclip: 0.1.15 ufo: 1.6.4 - untun: 0.1.3 + untun: 0.2.2 uqr: 0.1.3 + optionalDependencies: + '@parcel/watcher': 2.6.0 + transitivePeerDependencies: + - srvx - listr2@10.2.2: + listr2@11.0.0: dependencies: - cli-truncate: 5.2.0 - eventemitter3: 5.0.4 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 10.0.0 + cli-truncate: 6.1.1 + log-update: 8.0.0 + wrap-ansi: 10.0.1 - listr2@9.0.5: - dependencies: - cli-truncate: 5.2.0 - colorette: 2.0.20 - eventemitter3: 5.0.4 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.2 - - lmdb@3.5.1: + lmdb@3.5.6: dependencies: '@harperfast/extended-iterable': 1.0.3 msgpackr: 1.12.1 @@ -21131,13 +20260,13 @@ snapshots: ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.5.1 - '@lmdb/lmdb-darwin-x64': 3.5.1 - '@lmdb/lmdb-linux-arm': 3.5.1 - '@lmdb/lmdb-linux-arm64': 3.5.1 - '@lmdb/lmdb-linux-x64': 3.5.1 - '@lmdb/lmdb-win32-arm64': 3.5.1 - '@lmdb/lmdb-win32-x64': 3.5.1 + '@lmdb/lmdb-darwin-arm64': 3.5.6 + '@lmdb/lmdb-darwin-x64': 3.5.6 + '@lmdb/lmdb-linux-arm': 3.5.6 + '@lmdb/lmdb-linux-arm64': 3.5.6 + '@lmdb/lmdb-linux-x64': 3.5.6 + '@lmdb/lmdb-win32-arm64': 3.5.6 + '@lmdb/lmdb-win32-x64': 3.5.6 optional: true load-bmfont@1.4.2(debug@4.4.3(supports-color@10.2.2)): @@ -21156,7 +20285,7 @@ snapshots: local-pkg@1.2.1: dependencies: mlly: 1.8.2 - pkg-types: 2.3.1 + pkg-types: 2.3.2 quansync: 0.2.11 locate-character@3.0.0: {} @@ -21187,15 +20316,16 @@ snapshots: log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 - yoctocolors: 2.1.2 + yoctocolors: 2.2.0 - log-update@6.1.0: + log-update@8.0.0: dependencies: ansi-escapes: 7.3.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.2 + slice-ansi: 9.0.0 + string-width: 8.2.2 strip-ansi: 7.2.0 - wrap-ansi: 9.0.2 + wrap-ansi: 10.0.1 longest-streak@3.1.0: {} @@ -21215,13 +20345,17 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magic-string@1.2.0: + magic-string@1.0.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.3: + magic-string@1.2.3: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + magicast@0.5.4: dependencies: '@babel/parser': 7.29.8 '@babel/types': 7.29.8 @@ -21251,30 +20385,13 @@ snapshots: minipass-fetch: 4.0.1 minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 - negotiator: 1.0.0 + negotiator: 1.1.0 proc-log: 5.0.0 promise-retry: 2.0.1 ssri: 12.0.0 transitivePeerDependencies: - supports-color - make-fetch-happen@15.0.6(supports-color@10.2.2): - dependencies: - '@gar/promise-retry': 1.0.3 - '@npmcli/agent': 4.0.2(supports-color@10.2.2) - '@npmcli/redact': 4.0.0 - cacache: 20.0.4 - http-cache-semantics: 4.2.0 - minipass: 7.1.3 - minipass-fetch: 5.0.2 - minipass-flush: 1.0.7 - minipass-pipeline: 1.2.4 - negotiator: 1.0.0 - proc-log: 6.1.0 - ssri: 13.0.1 - transitivePeerDependencies: - - supports-color - makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -21283,15 +20400,24 @@ snapshots: markdown-it-container@4.0.0: {} - markdown-it@14.3.0: + markdown-it@14.3.1: dependencies: argparse: 2.0.1 entities: 4.5.0 linkify-it: 5.0.2 - mdurl: 2.0.0 + mdurl: 2.1.0 punycode.js: 2.3.1 uc.micro: 2.1.0 + markdown-it@15.0.1: + dependencies: + argparse: 3.0.1 + entities: 8.0.0 + linkify-it: 6.1.0 + mdurl: 2.1.0 + punycode.js: 2.3.1 + uc.micro: 3.0.0 + markdown-title@1.0.2: {} marky@1.3.0: {} @@ -21335,7 +20461,7 @@ snapshots: dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.3 + '@ungap/structured-clone': 1.4.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -21367,9 +20493,9 @@ snapshots: mdn-data@2.27.1: {} - mdurl@2.0.0: {} + mdurl@2.1.0: {} - media-typer@1.1.0: {} + media-typer@1.1.1: {} memoize-one@5.2.1: {} @@ -21442,7 +20568,7 @@ snapshots: metro-minify-terser@0.81.5: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.49.0 + terser: 5.51.2 metro-resolver@0.81.5: dependencies: @@ -21455,8 +20581,8 @@ snapshots: metro-source-map@0.81.5(supports-color@10.2.2): dependencies: - '@babel/traverse': 7.29.7(supports-color@10.2.2) - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.29.7(supports-color@10.2.2)' + '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.29.8(supports-color@10.2.2)' '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -21482,9 +20608,9 @@ snapshots: metro-transform-plugins@0.81.5(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -21493,7 +20619,7 @@ snapshots: metro-transform-worker@0.81.5(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/parser': 7.29.8 '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 @@ -21514,10 +20640,10 @@ snapshots: dependencies: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 accepts: 1.3.8 chalk: 4.1.2 @@ -21550,7 +20676,7 @@ snapshots: serialize-error: 2.1.0 source-map: 0.5.7 throat: 5.0.0 - ws: 7.5.12 + ws: 7.5.13 yargs: 17.7.3 transitivePeerDependencies: - bufferutil @@ -21726,8 +20852,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} min-document@2.19.2: @@ -21736,21 +20860,21 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.2.5: + minimatch@10.2.6: dependencies: - brace-expansion: 5.0.7 + brace-expansion: 5.0.9 minimatch@3.1.5: dependencies: - brace-expansion: 1.1.16 + brace-expansion: 1.1.18 minimatch@5.1.9: dependencies: - brace-expansion: 2.1.2 + brace-expansion: 2.1.4 minimatch@9.0.9: dependencies: - brace-expansion: 2.1.2 + brace-expansion: 2.1.4 minimist@1.2.8: {} @@ -21766,14 +20890,6 @@ snapshots: optionalDependencies: encoding: 0.1.13 - minipass-fetch@5.0.2: - dependencies: - minipass: 7.1.3 - minipass-sized: 2.0.0 - minizlib: 3.1.0 - optionalDependencies: - iconv-lite: 0.7.3 - minipass-flush@1.0.7: dependencies: minipass: 3.3.6 @@ -21786,10 +20902,6 @@ snapshots: dependencies: minipass: 3.3.6 - minipass-sized@2.0.0: - dependencies: - minipass: 7.1.3 - minipass@3.3.6: dependencies: yallist: 4.0.0 @@ -21829,21 +20941,21 @@ snapshots: transitivePeerDependencies: - supports-color - motion-dom@12.42.2: + motion-dom@13.2.0: dependencies: - motion-utils: 12.39.0 + motion-utils: 13.0.0 - motion-utils@12.39.0: {} + motion-utils@13.0.0: {} - motion-v@1.10.3(@vueuse/core@14.3.0(vue@3.5.42(typescript@6.0.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vue@3.5.42(typescript@6.0.3)): + motion-v@2.4.0(@vueuse/core@14.4.0(vue@3.5.42(typescript@6.0.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vue@3.5.42(typescript@6.0.3)): dependencies: - '@vueuse/core': 14.3.0(vue@3.5.42(typescript@6.0.3)) - framer-motion: 12.42.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@vueuse/core': 14.4.0(vue@3.5.42(typescript@6.0.3)) + framer-motion: 13.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) hey-listen: 1.0.8 - motion-dom: 12.42.2 + motion-dom: 13.2.0 + motion-utils: 13.0.0 vue: 3.5.42(typescript@6.0.3) transitivePeerDependencies: - - '@emotion/is-prop-valid' - react - react-dom @@ -21872,7 +20984,7 @@ snapshots: msgpackr-extract: 3.0.4 optional: true - mute-stream@2.0.0: {} + mute-stream@3.0.0: {} mz@2.7.0: dependencies: @@ -21882,34 +20994,45 @@ snapshots: nan@2.28.0: {} - nanoid@3.3.16: {} + nanoid@3.3.18: {} napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} + needle@2.9.1(supports-color@10.2.2): + dependencies: + debug: 3.2.7(supports-color@10.2.2) + iconv-lite: 0.4.24 + sax: 1.6.1 + transitivePeerDependencies: + - supports-color + optional: true + needle@3.5.0: dependencies: iconv-lite: 0.6.3 - sax: 1.6.0 + sax: 1.6.1 optional: true negotiator@0.6.3: {} negotiator@0.6.4: {} - negotiator@1.0.0: {} + negotiator@1.1.0: + dependencies: + content-type: 2.1.0 neo-async@2.6.2: {} - neotraverse@0.6.18: {} + neotraverse@1.0.1: {} - next@16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.1.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.101.0): + next@16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.103.1): dependencies: '@next/env': 16.3.4 '@swc/helpers': 0.5.23 - baseline-browser-mapping: 2.10.43 - caniuse-lite: 1.0.30001805 + baseline-browser-mapping: 2.11.20 + caniuse-lite: 1.0.30001810 postcss: 8.5.23 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -21923,55 +21046,56 @@ snapshots: '@next/swc-linux-x64-musl': 16.3.4 '@next/swc-win32-arm64-msvc': 16.3.4 '@next/swc-win32-x64-msvc': 16.3.4 - sass: 1.101.0 - sharp: 0.35.4(@types/node@26.1.1) + sass: 1.103.1 + sharp: 0.35.4(@types/node@26.4.1) transitivePeerDependencies: - '@babel/core' - '@types/node' - babel-plugin-macros - ng-packagr@21.2.5(@angular/compiler-cli@21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@22.1.1(@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3))(supports-color@10.2.2)(tslib@2.8.1)(typescript@6.0.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.2.19(@angular/compiler@21.2.19)(supports-color@10.2.2)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.62.2) - '@rollup/wasm-node': 4.62.2 + '@angular/compiler-cli': 22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3) + '@rollup/plugin-json': 6.1.0(rollup@4.63.1) + '@rollup/wasm-node': 4.63.1 ajv: 8.20.0 - ansi-colors: 4.1.3 - browserslist: 4.28.6 + browserslist: 4.28.8 chokidar: 5.0.0 - commander: 14.0.3 + commander: 15.0.0 dependency-graph: 1.0.0 - esbuild: 0.27.2 + esbuild: 0.28.2 find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 - less: 4.6.7 + less: 4.9.1(supports-color@10.2.2) ora: 9.4.1 - piscina: 5.2.0 - postcss: 8.5.19 - rollup-plugin-dts: 6.4.1(rollup@4.62.2)(typescript@5.9.3) + piscina: 5.3.2 + postcss: 8.5.27 + rollup-plugin-dts: 6.4.1(rollup@4.63.1)(typescript@6.0.3) rxjs: 7.8.2 - sass: 1.101.0 + sass: 1.103.1 tinyglobby: 0.2.17 tslib: 2.8.1 - typescript: 5.9.3 + typescript: 6.0.3 optionalDependencies: - rollup: 4.62.2 + rollup: 4.63.1 + transitivePeerDependencies: + - supports-color - nitropack@2.13.4(@vercel/blob@2.6.1)(encoding@0.1.13)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(xml2js@0.6.2): + nitropack@2.13.4(@parcel/watcher@2.6.0)(@vercel/blob@2.8.0)(encoding@0.1.13)(oxc-parser@0.142.0)(rolldown@1.2.7)(srvx@1.0.1)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(xml2js@0.6.2): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 - '@rollup/plugin-alias': 6.0.0(rollup@4.62.2) - '@rollup/plugin-commonjs': 29.0.3(rollup@4.62.2) - '@rollup/plugin-inject': 5.0.5(rollup@4.62.2) - '@rollup/plugin-json': 6.1.0(rollup@4.62.2) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.62.2) - '@rollup/plugin-replace': 6.0.3(rollup@4.62.2) - '@rollup/plugin-terser': 1.0.0(rollup@4.62.2) - '@vercel/nft': 1.10.2(encoding@0.1.13)(rollup@4.62.2)(supports-color@10.2.2) + '@rollup/plugin-alias': 6.0.0(rollup@4.63.1) + '@rollup/plugin-commonjs': 29.0.3(rollup@4.63.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.63.1) + '@rollup/plugin-json': 6.1.0(rollup@4.63.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.63.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.63.1) + '@rollup/plugin-terser': 1.0.0(rollup@4.63.1) + '@vercel/nft': 1.11.0(encoding@0.1.13)(rollup@4.63.1)(supports-color@10.2.2) archiver: 7.0.1 - c12: 3.3.4(magicast@0.5.3) + c12: 3.3.4(magicast@0.5.4) chokidar: 5.0.0 citty: 0.2.2 compatx: 0.2.0 @@ -21983,12 +21107,12 @@ snapshots: db0: 0.3.4 defu: 6.1.7 destr: 2.0.5 - dot-prop: 10.1.0 - esbuild: 0.28.1 + dot-prop: 10.2.0 + esbuild: 0.28.2 escape-string-regexp: 5.0.0 etag: 1.8.1 - exsolve: 1.1.0 - globby: 16.2.1 + exsolve: 1.1.1 + globby: 16.2.4 gzip-size: 7.0.0 h3: 1.15.11 hookable: 5.5.3 @@ -21997,22 +21121,22 @@ snapshots: jiti: 2.7.0 klona: 2.0.6 knitwork: 1.3.0 - listhen: 1.10.0 + listhen: 1.10.1(@parcel/watcher@2.6.0)(srvx@1.0.1) magic-string: 0.30.21 - magicast: 0.5.3 + magicast: 0.5.4 mime: 4.1.0 mlly: 1.8.2 node-fetch-native: 1.6.7 - node-mock-http: 1.0.4 + node-mock-http: 1.0.5 ofetch: 1.5.1 - ohash: 2.0.11 + ohash: 2.0.12 pathe: 2.0.3 perfect-debounce: 2.1.0 - pkg-types: 2.3.1 - pretty-bytes: 7.1.0 + pkg-types: 2.3.2 + pretty-bytes: 7.1.2 radix3: 1.1.2 - rollup: 4.62.2 - rollup-plugin-visualizer: 7.0.1(rollup@4.62.2) + rollup: 4.63.1 + rollup-plugin-visualizer: 7.1.1(rolldown@1.2.7)(rollup@4.63.1) scule: 1.3.0 semver: 7.8.5 serve-placeholder: 2.0.2 @@ -22024,9 +21148,9 @@ snapshots: uncrypto: 0.1.3 unctx: 2.5.0 unenv: 2.0.0-rc.24 - unimport: 6.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + unimport: 6.4.0(esbuild@0.28.2)(oxc-parser@0.142.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) unplugin-utils: 0.3.2 - unstorage: 1.17.5(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) + unstorage: 1.17.5(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) untyped: 2.0.0 unwasm: 0.5.3 youch: 4.1.1 @@ -22046,6 +21170,7 @@ snapshots: - '@farmfe/core' - '@libsql/client' - '@netlify/blobs' + - '@parcel/watcher' - '@planetscale/database' - '@rspack/core' - '@upstash/redis' @@ -22065,6 +21190,7 @@ snapshots: - react-native-b4a - rolldown - sqlite3 + - srvx - supports-color - unloader - uploadthing @@ -22078,7 +21204,8 @@ snapshots: node-addon-api@6.1.0: optional: true - node-addon-api@7.1.1: {} + node-addon-api@7.1.1: + optional: true node-dir@0.1.17: dependencies: @@ -22126,25 +21253,12 @@ snapshots: nopt: 8.1.0 proc-log: 5.0.0 semver: 7.8.5 - tar: 7.5.20 + tar: 7.5.22 tinyglobby: 0.2.17 which: 5.0.0 transitivePeerDependencies: - supports-color - node-gyp@12.4.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.3 - graceful-fs: 4.2.11 - nopt: 9.0.0 - proc-log: 6.1.0 - semver: 7.8.5 - tar: 7.5.20 - tinyglobby: 0.2.17 - undici: 6.27.0 - which: 6.0.1 - node-html-parser@6.1.13: dependencies: css-select: 5.2.2 @@ -22152,9 +21266,9 @@ snapshots: node-int64@0.4.0: {} - node-mock-http@1.0.4: {} + node-mock-http@1.0.5: {} - node-releases@2.0.51: {} + node-releases@2.0.54: {} nopt@10.0.1: dependencies: @@ -22164,53 +21278,14 @@ snapshots: dependencies: abbrev: 3.0.1 - nopt@9.0.0: - dependencies: - abbrev: 4.0.0 - normalize-path@3.0.0: {} - npm-bundled@5.0.0: - dependencies: - npm-normalize-package-bin: 5.0.0 - - npm-install-checks@8.0.0: + npm-package-arg@14.0.0: dependencies: + hosted-git-info: 10.1.1 + proc-log: 7.0.0 semver: 7.8.5 - - npm-normalize-package-bin@5.0.0: {} - - npm-package-arg@13.0.2: - dependencies: - hosted-git-info: 9.0.3 - proc-log: 6.1.0 - semver: 7.8.5 - validate-npm-package-name: 7.0.2 - - npm-packlist@10.0.4: - dependencies: - ignore-walk: 8.0.0 - proc-log: 6.1.0 - - npm-pick-manifest@11.0.3: - dependencies: - npm-install-checks: 8.0.0 - npm-normalize-package-bin: 5.0.0 - npm-package-arg: 13.0.2 - semver: 7.8.5 - - npm-registry-fetch@19.1.1(supports-color@10.2.2): - dependencies: - '@npmcli/redact': 4.0.0 - jsonparse: 1.3.1 - make-fetch-happen: 15.0.6(supports-color@10.2.2) - minipass: 7.1.3 - minipass-fetch: 5.0.2 - minizlib: 3.1.0 - npm-package-arg: 13.0.2 - proc-log: 6.1.0 - transitivePeerDependencies: - - supports-color + validate-npm-package-name: 8.0.0 npm-run-path@4.0.1: dependencies: @@ -22266,8 +21341,6 @@ snapshots: es-object-atoms: 1.1.2 optional: true - obug@2.1.3: {} - obug@2.1.4: {} ofetch@1.5.1: @@ -22276,7 +21349,7 @@ snapshots: node-fetch-native: 1.6.7 ufo: 1.6.4 - ohash@2.0.11: {} + ohash@2.0.12: {} omggif@1.0.10: {} @@ -22316,30 +21389,25 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 - open@11.0.0: + open@11.0.2: dependencies: - default-browser: 5.5.0 + default-browser: 5.5.1 define-lazy-prop: 3.0.0 is-in-ssh: 1.0.0 is-inside-container: 1.0.0 - powershell-utils: 0.1.0 - wsl-utils: 0.3.1 + powershell-utils: 0.2.1 + wsl-utils: 1.0.0 open@7.4.2: dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openai@5.23.2(ws@8.21.1)(zod@3.25.76): + openai@7.9.0(undici@8.10.1)(ws@8.21.3)(zod@4.5.4): optionalDependencies: - ws: 8.21.1 - zod: 3.25.76 + undici: 8.10.1 + ws: 8.21.3 + zod: 4.5.4 optionator@0.9.4: dependencies: @@ -22350,17 +21418,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@9.3.0: - dependencies: - chalk: 5.6.2 - cli-cursor: 5.0.0 - cli-spinners: 3.4.0 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 7.0.1 - stdin-discarder: 0.3.2 - string-width: 8.2.2 - ora@9.4.1: dependencies: chalk: 5.6.2 @@ -22384,7 +21441,7 @@ snapshots: - debug - encoding - oslllo-svg-fixer@5.0.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13): + oslllo-svg-fixer@6.0.1(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13): dependencies: ansi-colors: 4.1.3 cli-progress: 3.12.0 @@ -22392,7 +21449,7 @@ snapshots: oslllo-potrace: 3.0.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13) oslllo-svg2: 3.0.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13) oslllo-validator: 3.1.0 - piscina: 4.9.3 + piscina: 4.9.4 yargs: 16.2.2 transitivePeerDependencies: - debug @@ -22401,7 +21458,7 @@ snapshots: oslllo-svg2@3.0.0(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13): dependencies: '@resvg/resvg-js': 2.6.2 - domino: 2.1.7 + domino: 2.1.8 jimp: 0.22.12(debug@4.4.3(supports-color@10.2.2))(encoding@0.1.13) oslllo-validator: 3.1.0 transitivePeerDependencies: @@ -22410,11 +21467,13 @@ snapshots: oslllo-validator@3.1.0: dependencies: - domino: 2.1.7 + domino: 2.1.8 validator: 13.15.35 outvariant@1.4.0: {} + outvariant@1.4.3: {} + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -22422,13 +21481,38 @@ snapshots: safe-push-apply: 1.0.0 optional: true + oxc-parser@0.142.0: + dependencies: + '@oxc-project/types': 0.142.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.142.0 + '@oxc-parser/binding-android-arm64': 0.142.0 + '@oxc-parser/binding-darwin-arm64': 0.142.0 + '@oxc-parser/binding-darwin-x64': 0.142.0 + '@oxc-parser/binding-freebsd-x64': 0.142.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.142.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.142.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.142.0 + '@oxc-parser/binding-linux-arm64-musl': 0.142.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.142.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.142.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.142.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.142.0 + '@oxc-parser/binding-linux-x64-gnu': 0.142.0 + '@oxc-parser/binding-linux-x64-musl': 0.142.0 + '@oxc-parser/binding-openharmony-arm64': 0.142.0 + '@oxc-parser/binding-wasm32-wasi': 0.142.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.142.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.142.0 + '@oxc-parser/binding-win32-x64-msvc': 0.142.0 + p-event@6.0.1: dependencies: p-timeout: 6.1.4 p-filter@4.1.0: dependencies: - p-map: 7.0.5 + p-map: 7.0.7 p-limit@2.3.0: dependencies: @@ -22438,7 +21522,7 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@7.3.1: + p-limit@7.3.2: dependencies: yocto-queue: 1.2.2 @@ -22454,14 +21538,14 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.5: {} + p-map@7.0.7: {} - p-memoize@7.1.1: + p-memoize@8.0.0: dependencies: - mimic-fn: 4.0.0 - type-fest: 3.13.1 + mimic-function: 5.0.1 + type-fest: 4.41.0 - p-queue@9.3.2: + p-queue@9.3.3: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 @@ -22474,32 +21558,10 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.7.0: {} + package-manager-detector@1.8.0: {} package-name-regex@2.0.6: {} - pacote@21.5.1(supports-color@10.2.2): - dependencies: - '@gar/promise-retry': 1.0.3 - '@npmcli/git': 7.0.2 - '@npmcli/installed-package-contents': 4.0.0 - '@npmcli/package-json': 7.0.5 - '@npmcli/promise-spawn': 9.0.1 - '@npmcli/run-script': 10.0.4 - cacache: 20.0.4 - fs-minipass: 3.0.3 - minipass: 7.1.3 - npm-package-arg: 13.0.2 - npm-packlist: 10.0.4 - npm-pick-manifest: 11.0.3 - npm-registry-fetch: 19.1.1(supports-color@10.2.2) - proc-log: 6.1.0 - sigstore: 4.1.1(supports-color@10.2.2) - ssri: 13.0.1 - tar: 7.5.20 - transitivePeerDependencies: - - supports-color - pako@1.0.11: {} parent-module@1.0.1: @@ -22524,9 +21586,9 @@ snapshots: parse-node-version@1.0.1: {} - parse5-html-rewriting-stream@8.0.0: + parse5-html-rewriting-stream@8.0.1: dependencies: - entities: 6.0.1 + entities: 8.0.0 parse5: 8.0.1 parse5-sax-parser: 8.0.0 @@ -22581,8 +21643,6 @@ snapshots: path-type@4.0.0: {} - pathe@1.1.2: {} - pathe@2.0.3: {} peek-readable@4.1.0: {} @@ -22603,15 +21663,15 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.4: {} - picomatch@4.0.5: {} + picomatch@4.0.7: {} + pify@4.0.1: {} pirates@4.0.7: {} - piscina@4.9.3: + piscina@4.9.4: optionalDependencies: '@napi-rs/nice': 1.1.1 @@ -22619,6 +21679,10 @@ snapshots: optionalDependencies: '@napi-rs/nice': 1.1.1 + piscina@5.3.2: + optionalDependencies: + '@napi-rs/nice': 1.1.1 + pixelmatch@4.0.2: dependencies: pngjs: 3.4.0 @@ -22639,10 +21703,10 @@ snapshots: mlly: 1.8.2 pathe: 2.0.3 - pkg-types@2.3.1: + pkg-types@2.3.2: dependencies: - confbox: 0.2.4 - exsolve: 1.1.0 + confbox: 0.3.1 + exsolve: 1.1.1 pathe: 2.0.3 playwright-core@1.58.2: {} @@ -22663,25 +21727,25 @@ snapshots: postcss-media-query-parser@0.2.3: {} - postcss-safe-parser@7.0.1(postcss@8.5.19): + postcss-safe-parser@7.0.1(postcss@8.5.27): dependencies: - postcss: 8.5.19 - - postcss@8.5.19: - dependencies: - nanoid: 3.3.16 - picocolors: 1.1.1 - source-map-js: 1.2.1 + postcss: 8.5.27 postcss@8.5.23: dependencies: - nanoid: 3.3.16 + nanoid: 3.3.18 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.27: + dependencies: + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.1 powershell-utils@0.1.0: {} - preact@10.29.7: {} + powershell-utils@0.2.1: {} preact@10.29.8: {} @@ -22690,18 +21754,12 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: '@astrojs/compiler': 2.13.1 - prettier: 3.9.5 + prettier: 3.9.6 sass-formatter: 0.7.9 - prettier@2.7.1: {} + prettier@3.9.6: {} - prettier@2.8.8: {} - - prettier@3.2.4: {} - - prettier@3.9.5: {} - - pretty-bytes@7.1.0: {} + pretty-bytes@7.1.2: {} pretty-format@27.5.1: dependencies: @@ -22717,9 +21775,18 @@ snapshots: prismjs@1.30.0: {} + probe-image-size@7.4.0(supports-color@10.2.2): + dependencies: + lodash.merge: 4.6.2 + needle: 2.9.1(supports-color@10.2.2) + stream-parser: 0.3.1(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + optional: true + proc-log@5.0.0: {} - proc-log@6.1.0: {} + proc-log@7.0.0: {} process-ancestry@0.1.0: {} @@ -22745,6 +21812,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent-negotiate@1.1.0: {} + prr@1.0.1: optional: true @@ -22752,7 +21821,7 @@ snapshots: punycode@2.3.1: {} - qs@6.15.3: + qs@6.16.0: dependencies: es-define-property: 1.0.1 side-channel: 1.1.1 @@ -22778,7 +21847,7 @@ snapshots: iconv-lite: 0.7.3 unpipe: 1.0.0 - rc9@3.0.1: + rc9@3.1.0: dependencies: defu: 6.1.7 destr: 2.0.5 @@ -22786,17 +21855,11 @@ snapshots: react-devtools-core@5.3.2: dependencies: shell-quote: 1.10.0 - ws: 7.5.12 + ws: 7.5.13 transitivePeerDependencies: - bufferutil - utf-8-validate - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.2 - react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -22858,7 +21921,7 @@ snapshots: semver: 7.8.5 stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 - ws: 6.2.5 + ws: 6.2.6 yargs: 17.7.3 optionalDependencies: '@types/react': 18.3.31 @@ -22884,10 +21947,6 @@ snapshots: optionalDependencies: react-dom: 19.2.8(react@19.2.8) - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -23102,27 +22161,48 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3): + rolldown@1.2.0: dependencies: - '@oxc-project/types': 0.113.0 - '@rolldown/pluginutils': 1.0.0-rc.4 + '@oxc-project/types': 0.140.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.4 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.4 - '@rolldown/binding-darwin-x64': 1.0.0-rc.4 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.4 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.4 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.4 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.4 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@rolldown/binding-android-arm64': 1.2.0 + '@rolldown/binding-darwin-arm64': 1.2.0 + '@rolldown/binding-darwin-x64': 1.2.0 + '@rolldown/binding-freebsd-x64': 1.2.0 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.0 + '@rolldown/binding-linux-arm64-gnu': 1.2.0 + '@rolldown/binding-linux-arm64-musl': 1.2.0 + '@rolldown/binding-linux-ppc64-gnu': 1.2.0 + '@rolldown/binding-linux-s390x-gnu': 1.2.0 + '@rolldown/binding-linux-x64-gnu': 1.2.0 + '@rolldown/binding-linux-x64-musl': 1.2.0 + '@rolldown/binding-openharmony-arm64': 1.2.0 + '@rolldown/binding-wasm32-wasi': 1.2.0 + '@rolldown/binding-win32-arm64-msvc': 1.2.0 + '@rolldown/binding-win32-x64-msvc': 1.2.0 + + rolldown@1.2.7: + dependencies: + '@oxc-project/types': 0.148.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.7 + '@rolldown/binding-android-arm64': 1.2.7 + '@rolldown/binding-darwin-arm64': 1.2.7 + '@rolldown/binding-darwin-x64': 1.2.7 + '@rolldown/binding-freebsd-x64': 1.2.7 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.7 + '@rolldown/binding-linux-arm64-gnu': 1.2.7 + '@rolldown/binding-linux-arm64-musl': 1.2.7 + '@rolldown/binding-linux-ppc64-gnu': 1.2.7 + '@rolldown/binding-linux-s390x-gnu': 1.2.7 + '@rolldown/binding-linux-x64-gnu': 1.2.7 + '@rolldown/binding-linux-x64-musl': 1.2.7 + '@rolldown/binding-openharmony-arm64': 1.2.7 + '@rolldown/binding-win32-arm64-msvc': 1.2.7 + '@rolldown/binding-win32-x64-msvc': 1.2.7 + optional: true rollup-plugin-copy@3.5.0: dependencies: @@ -23132,121 +22212,113 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup-plugin-dts@6.4.1(rollup@4.62.2)(typescript@5.9.3): + rollup-plugin-dts@6.4.1(rollup@4.63.1)(typescript@6.0.3): dependencies: '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 convert-source-map: 2.0.0 magic-string: 0.30.21 - rollup: 4.62.2 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.29.7 - - rollup-plugin-dts@6.4.1(rollup@4.62.2)(typescript@6.0.3): - dependencies: - '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 - convert-source-map: 2.0.0 - magic-string: 0.30.21 - rollup: 4.62.2 + rollup: 4.63.1 typescript: 6.0.3 optionalDependencies: '@babel/code-frame': 7.29.7 - rollup-plugin-esbuild@6.2.1(esbuild@0.28.1)(rollup@4.62.2)(supports-color@10.2.2): + rollup-plugin-dts@6.5.1(rollup@4.63.1)(typescript@6.0.3): + dependencies: + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.6.0 + convert-source-map: 2.0.0 + magic-string: 0.30.21 + rollup: 4.63.1 + typescript: 6.0.3 + optionalDependencies: + '@babel/code-frame': 8.0.0 + + rollup-plugin-esbuild@6.2.1(esbuild@0.28.2)(rollup@4.63.1)(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 - esbuild: 0.28.1 - get-tsconfig: 4.14.0 - rollup: 4.62.2 + esbuild: 0.28.2 + get-tsconfig: 4.14.3 + rollup: 4.63.1 unplugin-utils: 0.2.5 transitivePeerDependencies: - supports-color - rollup-plugin-license@3.7.1(picomatch@4.0.5)(rollup@4.62.2): + rollup-plugin-license@3.7.1(picomatch@4.0.7)(rollup@4.63.1): dependencies: commenting: 1.1.0 - fdir: 6.5.0(picomatch@4.0.5) + fdir: 6.5.0(picomatch@4.0.7) lodash: 4.18.1 magic-string: 0.30.21 moment: 2.30.1 package-name-regex: 2.0.6 - rollup: 4.62.2 + rollup: 4.63.1 spdx-expression-validate: 2.0.0 spdx-satisfies: 5.0.1 transitivePeerDependencies: - picomatch - rollup-plugin-preserve-directives@0.4.0(rollup@4.62.2): + rollup-plugin-preserve-directives@0.4.0(rollup@4.63.1): dependencies: - '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) magic-string: 0.30.21 - rollup: 4.62.2 + rollup: 4.63.1 - rollup-plugin-summary@3.0.1(rollup@4.62.2)(supports-color@10.2.2): + rollup-plugin-summary@3.0.1(rollup@4.63.1)(supports-color@10.2.2): dependencies: - '@eslint/eslintrc': 3.3.6(supports-color@10.2.2) + '@eslint/eslintrc': 3.3.7(supports-color@10.2.2) '@eslint/js': 9.39.5 brotli-size: 4.0.0 cli-table3: 0.6.5 filesize: 10.1.6 globals: 15.15.0 gzip-size: 7.0.0 - rollup: 4.62.2 - terser: 5.49.0 + rollup: 4.63.1 + terser: 5.51.2 transitivePeerDependencies: - supports-color - rollup-plugin-visualizer@6.0.11(rolldown@1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3))(rollup@4.62.2): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.7)(rollup@4.63.1): dependencies: - open: 8.4.2 - picomatch: 4.0.5 - source-map: 0.7.6 - yargs: 17.7.3 + open: 11.0.2 + picomatch: 4.0.7 + source-map: 0.8.0 + yargs: 18.1.0 optionalDependencies: - rolldown: 1.0.0-rc.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) - rollup: 4.62.2 + rolldown: 1.2.7 + rollup: 4.63.1 - rollup-plugin-visualizer@7.0.1(rollup@4.62.2): - dependencies: - open: 11.0.0 - picomatch: 4.0.5 - source-map: 0.7.6 - yargs: 18.0.0 - optionalDependencies: - rollup: 4.62.2 - - rollup@4.62.2: + rollup@4.63.1: dependencies: '@types/estree': 1.0.9 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.62.2 - '@rollup/rollup-android-arm64': 4.62.2 - '@rollup/rollup-darwin-arm64': 4.62.2 - '@rollup/rollup-darwin-x64': 4.62.2 - '@rollup/rollup-freebsd-arm64': 4.62.2 - '@rollup/rollup-freebsd-x64': 4.62.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.62.2 - '@rollup/rollup-linux-arm-musleabihf': 4.62.2 - '@rollup/rollup-linux-arm64-gnu': 4.62.2 - '@rollup/rollup-linux-arm64-musl': 4.62.2 - '@rollup/rollup-linux-loong64-gnu': 4.62.2 - '@rollup/rollup-linux-loong64-musl': 4.62.2 - '@rollup/rollup-linux-ppc64-gnu': 4.62.2 - '@rollup/rollup-linux-ppc64-musl': 4.62.2 - '@rollup/rollup-linux-riscv64-gnu': 4.62.2 - '@rollup/rollup-linux-riscv64-musl': 4.62.2 - '@rollup/rollup-linux-s390x-gnu': 4.62.2 - '@rollup/rollup-linux-x64-gnu': 4.62.2 - '@rollup/rollup-linux-x64-musl': 4.62.2 - '@rollup/rollup-openbsd-x64': 4.62.2 - '@rollup/rollup-openharmony-arm64': 4.62.2 - '@rollup/rollup-win32-arm64-msvc': 4.62.2 - '@rollup/rollup-win32-ia32-msvc': 4.62.2 - '@rollup/rollup-win32-x64-gnu': 4.62.2 - '@rollup/rollup-win32-x64-msvc': 4.62.2 + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.63.1 + '@rollup/rollup-android-arm64': 4.63.1 + '@rollup/rollup-darwin-arm64': 4.63.1 + '@rollup/rollup-darwin-x64': 4.63.1 + '@rollup/rollup-freebsd-arm64': 4.63.1 + '@rollup/rollup-freebsd-x64': 4.63.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.63.1 + '@rollup/rollup-linux-arm-musleabihf': 4.63.1 + '@rollup/rollup-linux-arm64-gnu': 4.63.1 + '@rollup/rollup-linux-arm64-musl': 4.63.1 + '@rollup/rollup-linux-loong64-gnu': 4.63.1 + '@rollup/rollup-linux-loong64-musl': 4.63.1 + '@rollup/rollup-linux-ppc64-gnu': 4.63.1 + '@rollup/rollup-linux-ppc64-musl': 4.63.1 + '@rollup/rollup-linux-riscv64-gnu': 4.63.1 + '@rollup/rollup-linux-riscv64-musl': 4.63.1 + '@rollup/rollup-linux-s390x-gnu': 4.63.1 + '@rollup/rollup-linux-x64-gnu': 4.63.1 + '@rollup/rollup-linux-x64-musl': 4.63.1 + '@rollup/rollup-openbsd-x64': 4.63.1 + '@rollup/rollup-openharmony-arm64': 4.63.1 + '@rollup/rollup-win32-arm64-msvc': 4.63.1 + '@rollup/rollup-win32-ia32-msvc': 4.63.1 + '@rollup/rollup-win32-x64-gnu': 4.63.1 + '@rollup/rollup-win32-x64-msvc': 4.63.1 fsevents: 2.3.3 rou3@0.8.1: {} @@ -23307,13 +22379,13 @@ snapshots: sandpack-vue3@3.1.12(vue@3.5.42(typescript@6.0.3)): dependencies: '@codemirror/autocomplete': 6.20.3 - '@codemirror/commands': 6.10.4 + '@codemirror/commands': 6.11.0 '@codemirror/lang-css': 6.3.1 - '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-html': 6.4.12 '@codemirror/lang-javascript': 6.2.5 '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 + '@codemirror/state': 6.7.2 + '@codemirror/view': 6.43.11 '@codesandbox/sandpack-client': 2.19.8 '@lezer/highlight': 1.2.3 '@stitches/core': 1.2.8 @@ -23334,37 +22406,37 @@ snapshots: immutable: 5.1.9 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.6 + '@parcel/watcher': 2.6.0 - sass@1.97.3: + sass@1.103.1: dependencies: - chokidar: 4.0.3 + chokidar: 5.0.0 immutable: 5.1.9 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.6 + '@parcel/watcher': 2.6.0 - satteri@0.9.5: + satteri@0.10.5: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 optionalDependencies: - '@bruits/satteri-darwin-arm64': 0.9.5 - '@bruits/satteri-darwin-x64': 0.9.5 - '@bruits/satteri-linux-arm64-gnu': 0.9.5 - '@bruits/satteri-linux-arm64-musl': 0.9.5 - '@bruits/satteri-linux-x64-gnu': 0.9.5 - '@bruits/satteri-linux-x64-musl': 0.9.5 - '@bruits/satteri-wasm32-wasi': 0.9.5 - '@bruits/satteri-win32-arm64-msvc': 0.9.5 - '@bruits/satteri-win32-x64-msvc': 0.9.5 + '@bruits/satteri-darwin-arm64': 0.10.5 + '@bruits/satteri-darwin-x64': 0.10.5 + '@bruits/satteri-linux-arm64-gnu': 0.10.5 + '@bruits/satteri-linux-arm64-musl': 0.10.5 + '@bruits/satteri-linux-x64-gnu': 0.10.5 + '@bruits/satteri-linux-x64-musl': 0.10.5 + '@bruits/satteri-wasm32-wasi': 0.10.5 + '@bruits/satteri-win32-arm64-msvc': 0.10.5 + '@bruits/satteri-win32-x64-msvc': 0.10.5 sax@1.2.4: optional: true - sax@1.6.0: {} + sax@1.6.1: {} saxes@6.0.0: dependencies: @@ -23432,17 +22504,17 @@ snapshots: serialize-error@2.1.0: {} - serialize-javascript@7.0.7: {} + serialize-javascript@7.1.1: {} - seroval-plugins@1.5.5(seroval@1.5.5): + seroval-plugins@1.5.6(seroval@1.5.6): dependencies: - seroval: 1.5.5 + seroval: 1.5.6 seroval-plugins@1.6.4(seroval@1.6.4): dependencies: seroval: 1.6.4 - seroval@1.5.5: {} + seroval@1.5.6: {} seroval@1.6.4: {} @@ -23499,38 +22571,7 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.34.5: - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.8.5 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 - - sharp@0.35.4(@types/node@26.1.1): + sharp@0.35.4(@types/node@26.4.1): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 @@ -23561,8 +22602,7 @@ snapshots: '@img/sharp-win32-arm64': 0.35.4 '@img/sharp-win32-ia32': 0.35.4 '@img/sharp-win32-x64': 0.35.4 - '@types/node': 26.1.1 - optional: true + '@types/node': 26.4.1 shebang-command@2.0.0: dependencies: @@ -23583,25 +22623,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 - shiki@3.23.0: + shiki@4.4.3: dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/engine-javascript': 3.23.0 - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - shiki@4.3.1: - dependencies: - '@shikijs/core': 4.3.1 - '@shikijs/engine-javascript': 4.3.1 - '@shikijs/engine-oniguruma': 4.3.1 - '@shikijs/langs': 4.3.1 - '@shikijs/themes': 4.3.1 - '@shikijs/types': 4.3.1 + '@shikijs/core': 4.4.3 + '@shikijs/engine-javascript': 4.4.3 + '@shikijs/engine-oniguruma': 4.4.3 + '@shikijs/langs': 4.4.3 + '@shikijs/themes': 4.4.3 + '@shikijs/types': 4.4.3 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -23639,17 +22668,6 @@ snapshots: signal-exit@4.1.0: {} - sigstore@4.1.1(supports-color@10.2.2): - dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.2.1 - '@sigstore/protobuf-specs': 0.5.1 - '@sigstore/sign': 4.1.1(supports-color@10.2.2) - '@sigstore/tuf': 4.0.2(supports-color@10.2.2) - '@sigstore/verify': 3.1.1 - transitivePeerDependencies: - - supports-color - simple-code-frame@1.3.0: dependencies: kolorist: 1.8.0 @@ -23672,23 +22690,18 @@ snapshots: sisteransi@1.0.5: {} - sitemap@7.1.3: + sitemap@9.0.1: dependencies: - '@types/node': 17.0.45 + '@types/node': 24.13.3 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.6.0 + sax: 1.6.1 slash@3.0.0: {} slash@5.1.0: {} - slice-ansi@7.1.2: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - - slice-ansi@8.0.0: + slice-ansi@9.0.0: dependencies: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 @@ -23697,33 +22710,33 @@ snapshots: smob@1.6.2: {} - smol-toml@1.7.0: {} + smol-toml@1.8.0: {} socks-proxy-agent@8.0.5(supports-color@10.2.2): dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@10.2.2) - socks: 2.8.9 + socks: 2.8.10 transitivePeerDependencies: - supports-color - socks@2.8.9: + socks@2.8.10: dependencies: - ip-address: 10.2.0 + ip-address: 10.7.0 smart-buffer: 4.2.0 - solid-js@1.9.14: + solid-js@1.9.15: dependencies: csstype: 3.2.3 - seroval: 1.5.5 - seroval-plugins: 1.5.5(seroval@1.5.5) + seroval: 1.5.6 + seroval-plugins: 1.5.6(seroval@1.5.6) - solid-refresh@0.6.3(solid-js@1.9.14)(supports-color@10.2.2): + solid-refresh@0.6.3(solid-js@1.9.15)(supports-color@10.2.2): dependencies: - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.8 - solid-js: 1.9.14 + solid-js: 1.9.15 transitivePeerDependencies: - supports-color @@ -23746,6 +22759,8 @@ snapshots: source-map@0.7.6: {} + source-map@0.8.0: {} + space-separated-tokens@2.0.2: {} spdx-compare@1.0.0: @@ -23761,11 +22776,6 @@ snapshots: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.23 - spdx-expression-parse@4.0.0: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.23 - spdx-expression-validate@2.0.0: dependencies: spdx-expression-parse: 3.0.1 @@ -23786,11 +22796,10 @@ snapshots: srvx@0.11.22: {} - ssri@12.0.0: - dependencies: - minipass: 7.1.3 + srvx@1.0.1: + optional: true - ssri@13.0.1: + ssri@12.0.0: dependencies: minipass: 7.1.3 @@ -23817,7 +22826,7 @@ snapshots: '@open-draft/deferred-promise': 2.2.0 dotenv: 16.6.1 mime-db: 1.54.0 - outvariant: 1.4.0 + outvariant: 1.4.3 statuses@1.5.0: {} @@ -23832,7 +22841,14 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - streamx@2.28.0: + stream-parser@0.3.1(supports-color@10.2.2): + dependencies: + debug: 2.6.9(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + optional: true + + streamx@2.28.1: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 @@ -23914,9 +22930,7 @@ snapshots: strip-ansi@7.2.0: dependencies: - ansi-regex: 6.2.2 - - strip-bom-string@1.0.0: {} + ansi-regex: 6.3.0 strip-final-newline@2.0.0: {} @@ -23926,9 +22940,9 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.1.0: + strip-literal@4.0.0: dependencies: - js-tokens: 9.0.1 + js-tokens: 10.0.0 strtok3@6.3.0: dependencies: @@ -23972,7 +22986,7 @@ snapshots: superjson@2.2.6: dependencies: - copy-anything: 4.0.5 + copy-anything: 4.1.0 supports-color@10.2.2: {} @@ -23986,69 +23000,68 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.7.6(picomatch@4.0.5)(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3): + svelte-check@4.7.6(picomatch@4.0.7)(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 '@sveltejs/load-config': 0.2.3 chokidar: 4.0.3 - fdir: 6.5.0(picomatch@4.0.5) + fdir: 6.5.0(picomatch@4.0.7) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.56.9(@typescript-eslint/types@8.66.0) - typescript: 5.9.3 + svelte: 5.57.0(@typescript-eslint/types@8.69.0) + typescript: 6.0.3 transitivePeerDependencies: - picomatch - svelte-preprocess@6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.6.7)(postcss@8.5.23)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3): + svelte-preprocess@6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.9.1(supports-color@10.2.2))(postcss@8.5.27)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3): dependencies: - svelte: 5.56.9(@typescript-eslint/types@8.66.0) + svelte: 5.57.0(@typescript-eslint/types@8.69.0) optionalDependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - less: 4.6.7 - postcss: 8.5.23 - sass: 1.101.0 + less: 4.9.1(supports-color@10.2.2) + postcss: 8.5.27 + sass: 1.103.1 stylus: 0.56.0(supports-color@10.2.2) - typescript: 5.9.3 + typescript: 6.0.3 - svelte2tsx@0.7.57(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3): + svelte2tsx@0.7.61(svelte@5.57.0(@typescript-eslint/types@8.69.0))(typescript@6.0.3): dependencies: dedent-js: 1.0.1 scule: 1.3.0 - svelte: 5.56.9(@typescript-eslint/types@8.66.0) - typescript: 5.9.3 + svelte: 5.57.0(@typescript-eslint/types@8.69.0) + typescript: 6.0.3 - svelte@5.56.9(@typescript-eslint/types@8.66.0): + svelte@5.57.0(@typescript-eslint/types@8.69.0): dependencies: '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0) '@types/estree': 1.0.9 - '@types/trusted-types': 2.0.7 acorn: 8.18.0 aria-query: 5.3.1 axobject-query: 4.1.0 clsx: 2.1.1 - devalue: 5.9.0 + devalue: 5.9.2 esm-env: 1.2.2 - esrap: 2.3.4(@typescript-eslint/types@8.66.0) + esrap: 2.3.6(@typescript-eslint/types@8.69.0) is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.21 - zimmerframe: 1.1.4 + zimmerframe: 1.1.5 transitivePeerDependencies: - '@typescript-eslint/types' - svg-path-commander@2.2.1: + svg-path-commander@2.3.3: dependencies: - '@thednp/dommatrix': 3.0.4 - - svg-pathdata@6.0.3: {} + '@thednp/dommatrix': 3.1.2 svg-pathdata@7.2.0: {} + svg-pathdata@9.0.0: {} + svg2ttf@6.1.0: dependencies: - '@xmldom/xmldom': 0.9.10 + '@xmldom/xmldom': 0.9.12 argparse: 2.0.1 cubic2quad: 1.2.1 lodash: 4.18.1 @@ -24061,14 +23074,14 @@ snapshots: commander: 12.1.0 debug: 4.4.3(supports-color@10.2.2) glob: 11.1.0 - sax: 1.6.0 + sax: 1.6.1 svg-pathdata: 7.2.0 transformation-matrix: 3.1.0 yerror: 8.0.0 transitivePeerDependencies: - supports-color - svgo@3.3.4: + svgo@3.3.5: dependencies: commander: 7.2.0 css-select: 5.2.2 @@ -24076,17 +23089,17 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.0 + sax: 1.6.1 - svgo@4.0.2: + svgo@4.1.0: dependencies: commander: 11.1.0 - css-select: 5.2.2 + css-select: 6.0.0 css-tree: 3.2.1 - css-what: 6.2.2 + css-what: 7.0.0 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.0 + sax: 1.6.1 svgpath@2.6.0: {} @@ -24105,7 +23118,7 @@ snapshots: nunjucks: 3.2.4(chokidar@3.6.0) svg2ttf: 6.1.0 svgicons2svgfont: 15.0.1(supports-color@10.2.2) - svgo: 3.3.4 + svgo: 3.3.5 ttf2eot: 3.1.0 ttf2woff: 3.0.0 ttf2woff2: 8.0.1(supports-color@10.2.2) @@ -24122,18 +23135,18 @@ snapshots: tagged-tag@1.0.0: {} - tar-stream@3.2.0: + tar-stream@3.2.1: dependencies: b4a: 1.8.1 - bare-fs: 4.7.4 + bare-fs: 4.8.1 fast-fifo: 1.3.2 - streamx: 2.28.0 + streamx: 2.28.1 transitivePeerDependencies: - bare-abort-controller - bare-buffer - react-native-b4a - tar@7.5.20: + tar@7.5.22: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -24143,7 +23156,7 @@ snapshots: teex@1.0.1: dependencies: - streamx: 2.28.0 + streamx: 2.28.1 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -24152,7 +23165,7 @@ snapshots: dependencies: rimraf: 2.6.3 - terser@5.49.0: + terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.18.0 @@ -24193,25 +23206,20 @@ snapshots: tinycolor2@1.6.0: {} - tinyexec@1.2.4: {} - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 - tinyrainbow@3.1.0: {} + tinyrainbow@3.1.1: {} - tldts-core@7.4.8: {} + tldts-core@7.4.11: {} - tldts@7.4.8: + tldts@7.4.11: dependencies: - tldts-core: 7.4.8 + tldts-core: 7.4.11 tmpl@1.0.5: {} @@ -24226,7 +23234,7 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - tokenx@1.3.0: {} + tokenx@1.6.0: {} toml-eslint-parser@0.10.1: dependencies: @@ -24236,7 +23244,7 @@ snapshots: tough-cookie@6.0.2: dependencies: - tldts: 7.4.8 + tldts: 7.4.11 tr46@0.0.3: {} @@ -24250,24 +23258,20 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.5.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - ts-api-utils@2.5.0(typescript@6.0.3): dependencies: typescript: 6.0.3 ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.1.1)(typescript@6.0.3): + ts-node@10.9.2(@swc/core@1.7.23(@swc/helpers@0.5.23))(@types/node@26.4.1)(typescript@6.0.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 26.1.1 + '@types/node': 26.4.1 acorn: 8.18.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -24303,14 +23307,6 @@ snapshots: argparse: 2.0.1 pako: 1.0.11 - tuf-js@4.1.0(supports-color@10.2.2): - dependencies: - '@tufjs/models': 4.1.0 - debug: 4.4.3(supports-color@10.2.2) - make-fetch-happen: 15.0.6(supports-color@10.2.2) - transitivePeerDependencies: - - supports-color - tunnel@0.0.6: {} type-check@0.4.0: @@ -24321,16 +23317,16 @@ snapshots: type-fest@0.7.1: {} - type-fest@3.13.1: {} + type-fest@4.41.0: {} - type-fest@5.8.0: + type-fest@5.9.0: dependencies: tagged-tag: 1.0.0 type-is@2.1.0: dependencies: - content-type: 2.0.0 - media-typer: 1.1.0 + content-type: 2.1.0 + media-typer: 1.1.1 mime-types: 3.0.2 typed-array-buffer@1.0.3: @@ -24370,34 +23366,23 @@ snapshots: reflect.getprototypeof: 1.0.10 optional: true - typescript-eslint@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3): + typescript-eslint@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@5.9.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - typescript-eslint@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.66.0(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.8.0(jiti@2.7.0)(supports-color@10.2.2) + '@typescript-eslint/eslint-plugin': 8.69.0(@typescript-eslint/parser@8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.69.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.9.1(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - typescript@5.9.3: {} - typescript@6.0.3: {} uc.micro@2.1.0: {} + uc.micro@3.0.0: {} + ufo@1.6.4: {} uhyphen@0.2.0: {} @@ -24421,15 +23406,15 @@ snapshots: magic-string: 0.30.21 unplugin: 2.3.11 - undici-types@6.21.0: {} + undici-types@7.18.2: {} undici-types@7.24.6: {} undici-types@8.3.0: {} - undici@6.27.0: {} + undici@6.28.0: {} - undici@7.28.0: {} + undici@8.10.1: {} unenv@2.0.0-rc.24: dependencies: @@ -24458,28 +23443,31 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unifont@0.7.4: + unifont@0.7.5: dependencies: css-tree: 3.2.1 - ofetch: 1.5.1 - ohash: 2.0.11 + ohash: 2.0.12 + undici: 8.10.1 - unimport@6.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + unimport@6.4.0(esbuild@0.28.2)(oxc-parser@0.142.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: acorn: 8.18.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 local-pkg: 1.2.1 - magic-string: 0.30.21 + magic-string: 1.2.3 mlly: 1.8.2 pathe: 2.0.3 - picomatch: 4.0.5 - pkg-types: 2.3.1 + picomatch: 4.0.7 + pkg-types: 2.3.2 scule: 1.3.0 - strip-literal: 3.1.0 + strip-literal: 4.0.0 tinyglobby: 0.2.17 - unplugin: 3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) unplugin-utils: 0.3.2 + optionalDependencies: + oxc-parser: 0.142.0 + rolldown: 1.2.7 transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -24527,8 +23515,6 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universal-user-agent@6.0.1: {} - universal-user-agent@7.0.3: {} universalify@0.1.2: {} @@ -24540,29 +23526,30 @@ snapshots: unplugin-utils@0.2.5: dependencies: pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 unplugin-utils@0.3.2: dependencies: pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.18.0 - picomatch: 4.0.5 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 - unplugin@3.3.0(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.7)(rollup@4.63.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.5 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 optionalDependencies: - esbuild: 0.28.1 - rollup: 4.62.2 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + esbuild: 0.28.2 + rolldown: 1.2.7 + rollup: 4.63.1 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) unrs-resolver@1.12.2: dependencies: @@ -24591,7 +23578,7 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 - unstorage@1.17.5(@vercel/blob@2.6.1)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)): + unstorage@1.17.5(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)): dependencies: anymatch: 3.1.3 chokidar: 5.0.0 @@ -24602,15 +23589,11 @@ snapshots: ofetch: 1.5.1 ufo: 1.6.4 optionalDependencies: - '@vercel/blob': 2.6.1 + '@vercel/blob': 2.8.0 db0: 0.3.4 ioredis: 5.11.1(supports-color@10.2.2) - untun@0.1.3: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - pathe: 1.1.2 + untun@0.2.2: {} untyped@2.0.0: dependencies: @@ -24622,16 +23605,16 @@ snapshots: unwasm@0.5.3: dependencies: - exsolve: 1.1.0 + exsolve: 1.1.1 knitwork: 1.3.0 magic-string: 0.30.21 mlly: 1.8.2 pathe: 2.0.3 - pkg-types: 2.3.1 + pkg-types: 2.3.2 - update-browserslist-db@1.2.3(browserslist@4.28.6): + update-browserslist-db@1.3.2(browserslist@4.28.8): dependencies: - browserslist: 4.28.6 + browserslist: 4.28.8 escalade: 3.2.0 picocolors: 1.1.1 @@ -24660,17 +23643,12 @@ snapshots: optionalDependencies: typescript: 6.0.3 - validate-npm-package-name@7.0.2: {} + validate-npm-package-name@8.0.0: {} validator@13.15.35: {} vary@1.1.2: {} - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -24681,22 +23659,22 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.14)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vite-plugin-solid@2.11.14(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10))(solid-js@1.9.15)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.12(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.14) + babel-preset-solid: 1.9.15(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.15) merge-anything: 5.1.7 - solid-js: 1.9.14 - solid-refresh: 0.6.3(solid-js@1.9.14)(supports-color@10.2.2) - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + solid-js: 1.9.15 + solid-refresh: 0.6.3(solid-js@1.9.15)(supports-color@10.2.2) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) optionalDependencies: - '@testing-library/jest-dom': 6.9.1 + '@testing-library/jest-dom': 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vite-prerender-plugin@0.5.12(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -24704,118 +23682,118 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) - vite@7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): + vite@7.3.6(@types/node@25.9.5)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0): dependencies: - esbuild: 0.28.1 - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 - postcss: 8.5.23 - rollup: 4.62.2 + esbuild: 0.28.2 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + postcss: 8.5.27 + rollup: 4.63.1 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.5 fsevents: 2.3.3 jiti: 2.7.0 - less: 4.6.7 + less: 4.9.1(supports-color@10.2.2) + lightningcss: 1.33.0 + sass: 1.103.1 + stylus: 0.56.0(supports-color@10.2.2) + terser: 5.51.2 + yaml: 2.9.0 + + vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0): + dependencies: + esbuild: 0.28.2 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + postcss: 8.5.27 + rollup: 4.63.1 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.4.1 + fsevents: 2.3.3 + jiti: 2.7.0 + less: 4.9.1(supports-color@10.2.2) lightningcss: 1.33.0 sass: 1.101.0 stylus: 0.56.0(supports-color@10.2.2) - terser: 5.49.0 + terser: 5.51.2 yaml: 2.9.0 - vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): + vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0): dependencies: - esbuild: 0.28.1 - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 - postcss: 8.5.23 - rollup: 4.62.2 + esbuild: 0.28.2 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + postcss: 8.5.27 + rollup: 4.63.1 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.4.1 fsevents: 2.3.3 jiti: 2.7.0 - less: 4.6.7 + less: 4.9.1(supports-color@10.2.2) lightningcss: 1.33.0 - sass: 1.101.0 + sass: 1.103.1 stylus: 0.56.0(supports-color@10.2.2) - terser: 5.49.0 + terser: 5.51.2 yaml: 2.9.0 - vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0): - dependencies: - esbuild: 0.28.1 - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 - postcss: 8.5.23 - rollup: 4.62.2 - tinyglobby: 0.2.17 + vitefu@1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): optionalDependencies: - '@types/node': 26.1.1 - fsevents: 2.3.3 - jiti: 2.7.0 - less: 4.6.7 - lightningcss: 1.33.0 - sass: 1.97.3 - stylus: 0.56.0(supports-color@10.2.2) - terser: 5.49.0 - yaml: 2.9.0 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) - vitefu@1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): - optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) - - vitepress-plugin-group-icons@1.7.5(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitepress-plugin-group-icons@1.7.6(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: - '@iconify-json/logos': 1.2.11 - '@iconify-json/vscode-icons': 1.2.67 + '@iconify-json/logos': 1.2.13 + '@iconify-json/vscode-icons': 1.2.76 '@iconify/utils': 3.1.4 optionalDependencies: - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) - vitepress-plugin-llms@1.13.3(supports-color@10.2.2): + vitepress-plugin-llms@1.13.5(supports-color@10.2.2): dependencies: - gray-matter: 4.0.3 - markdown-it: 14.3.0 + '@11ty/gray-matter': 2.1.0 + markdown-it: 14.3.1 markdown-title: 1.0.2 mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) millify: 6.1.0 - minimatch: 10.2.5 + minimatch: 10.2.6 path-to-regexp: 6.3.0 picocolors: 1.1.1 - pretty-bytes: 7.1.0 + pretty-bytes: 7.1.2 remark: 15.0.1(supports-color@10.2.2) remark-frontmatter: 5.0.0(supports-color@10.2.2) - tokenx: 1.3.0 + tokenx: 1.6.0 unist-util-remove: 4.0.0 unist-util-visit: 5.1.0 transitivePeerDependencies: - supports-color - vitepress@1.6.4(@algolia/client-search@5.55.2)(@types/node@26.1.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(postcss@8.5.23)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.101.0)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(typescript@6.0.3)(yaml@2.9.0): + vitepress@1.6.4(@algolia/client-search@5.57.0)(@types/node@26.4.1)(@types/react@18.3.31)(fuse.js@7.5.0)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(postcss@8.5.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.103.1)(search-insights@2.8.2)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(typescript@6.0.3)(yaml@2.9.0): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.55.2)(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.8.2) - '@iconify-json/simple-icons': 1.2.90 + '@docsearch/js': 3.8.2(@algolia/client-search@5.57.0)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.8.2) + '@iconify-json/simple-icons': 1.2.94 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 - '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) + '@types/markdown-it': 14.2.0 + '@vitejs/plugin-vue': 5.2.4(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) '@vue/devtools-api': 7.7.10 - '@vue/shared': 3.5.39 + '@vue/shared': 3.5.42 '@vueuse/core': 12.8.2(typescript@6.0.3) '@vueuse/integrations': 12.8.2(focus-trap@7.8.0)(fuse.js@7.5.0)(typescript@6.0.3) focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) optionalDependencies: - postcss: 8.5.23 + postcss: 8.5.27 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -24851,70 +23829,70 @@ snapshots: dependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) optionalDependencies: '@types/react': 19.2.18 '@types/react-dom': 19.2.3(@types/react@19.2.18) - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitest@4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 '@vitest/spy': 4.1.10 '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.1 + es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 - obug: 2.1.3 + obug: 2.1.4 pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + tinyrainbow: 3.1.1 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@types/node': 26.4.1 + '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': 4.1.10(vitest@4.1.10) - jsdom: 27.4.0(supports-color@10.2.2) + jsdom: 30.0.1 transitivePeerDependencies: - msw - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)): + vitest@4.1.10(@types/node@26.4.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@30.0.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 '@vitest/spy': 4.1.10 '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.1 + es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 - obug: 2.1.3 + obug: 2.1.4 pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0) + tinyrainbow: 3.1.1 + vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(lightningcss@1.33.0)(sass@1.97.3)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10) + '@types/node': 26.4.1 + '@vitest/browser-playwright': 4.1.10(playwright@1.58.2)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': 4.1.10(vitest@4.1.10) - jsdom: 27.4.0(supports-color@10.2.2) + jsdom: 30.0.1 transitivePeerDependencies: - msw @@ -24923,31 +23901,17 @@ snapshots: vscode-css-languageservice@6.3.10: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-textdocument: 1.0.14 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 - vscode-languageserver-textdocument@1.0.12: {} + vscode-languageserver-textdocument@1.0.14: {} vscode-languageserver-types@3.17.5: {} - vscode-uri@3.1.0: {} + vscode-uri@3.2.0: {} - vue-component-type-helpers@3.3.9: {} - - vue-demi@0.14.10(vue@3.5.42(typescript@6.0.3)): - dependencies: - vue: 3.5.42(typescript@6.0.3) - - vue@3.5.42(typescript@5.9.3): - dependencies: - '@vue/compiler-dom': 3.5.42 - '@vue/compiler-sfc': 3.5.42 - '@vue/runtime-dom': 3.5.42 - '@vue/server-renderer': 3.5.42 - '@vue/shared': 3.5.42 - optionalDependencies: - typescript: 5.9.3 + vue-component-type-helpers@3.3.11: {} vue@3.5.42(typescript@6.0.3): dependencies: @@ -24969,16 +23933,13 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.5.1: + watchpack@2.5.2: dependencies: - glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 weak-lru-cache@1.2.2: optional: true - web-namespaces@2.0.1: {} - web-streams-polyfill@3.3.3: {} webidl-conversions@3.0.1: {} @@ -24997,10 +23958,21 @@ snapshots: whatwg-mimetype@5.0.0: {} - whatwg-url@15.1.0: + whatwg-url@16.0.1: dependencies: + '@exodus/bytes': 1.15.1 tr46: 6.0.0 webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + whatwg-url@17.1.0: + dependencies: + '@exodus/bytes': 1.15.1 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' whatwg-url@5.0.0: dependencies: @@ -25057,10 +24029,6 @@ snapshots: dependencies: isexe: 3.1.5 - which@6.0.1: - dependencies: - isexe: 4.0.0 - why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -25068,17 +24036,10 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@10.0.0: + wrap-ansi@10.0.1: dependencies: ansi-styles: 6.2.3 string-width: 8.2.2 - strip-ansi: 7.2.0 - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 wrap-ansi@7.0.0: dependencies: @@ -25111,15 +24072,15 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.5: + ws@6.2.6: dependencies: async-limiter: 1.0.1 - ws@7.5.12: {} + ws@7.5.13: {} - ws@8.21.1: {} + ws@8.21.3: {} - wsl-utils@0.3.1: + wsl-utils@1.0.0: dependencies: is-wsl: 3.1.1 powershell-utils: 0.1.0 @@ -25159,12 +24120,12 @@ snapshots: xml2js@0.5.0: dependencies: - sax: 1.6.0 + sax: 1.6.1 xmlbuilder: 11.0.1 xml2js@0.6.2: dependencies: - sax: 1.6.0 + sax: 1.6.1 xmlbuilder: 11.0.1 optional: true @@ -25173,7 +24134,7 @@ snapshots: '@oozcitak/dom': 2.0.2 '@oozcitak/infra': 2.0.2 '@oozcitak/util': 10.0.0 - js-yaml: 4.3.0 + js-yaml: 4.3.2 xmlbuilder@11.0.1: {} @@ -25224,12 +24185,12 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yargs@18.0.0: + yargs@18.1.0: dependencies: cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - string-width: 7.2.0 + string-width: 8.2.2 y18n: 5.0.8 yargs-parser: 22.0.0 @@ -25242,9 +24203,7 @@ snapshots: yocto-queue@1.2.2: {} - yoctocolors-cjs@2.1.3: {} - - yoctocolors@2.1.2: {} + yoctocolors@2.2.0: {} youch-core@0.3.3: dependencies: @@ -25255,11 +24214,11 @@ snapshots: dependencies: '@poppinss/colors': 4.1.6 '@poppinss/dumper': 0.7.0 - '@speed-highlight/core': 1.2.17 + '@speed-highlight/core': 1.2.24 cookie-es: 3.1.1 youch-core: 0.3.3 - zimmerframe@1.1.4: {} + zimmerframe@1.1.5: {} zip-stream@6.0.1: dependencies: @@ -25267,16 +24226,14 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod-to-json-schema@3.25.2(zod@4.3.6): + zod-to-json-schema@3.25.2(zod@4.4.3): dependencies: - zod: 4.3.6 - - zod@3.25.76: {} + zod: 4.4.3 zod@4.1.11: {} - zod@4.3.6: {} - zod@4.4.3: {} + zod@4.5.4: {} + zwitch@2.0.4: {} diff --git a/tools/build-font/package.json b/tools/build-font/package.json index b89d1b509..88134db75 100644 --- a/tools/build-font/package.json +++ b/tools/build-font/package.json @@ -13,16 +13,16 @@ "author": "", "license": "ISC", "dependencies": { - "@vercel/blob": "^2.6.1", - "fs-extra": "^11.3.6", + "@vercel/blob": "^2.8.0", + "fs-extra": "^11.4.0", "minimist": "^1.2.8", - "oslllo-svg-fixer": "^5.0.0", + "oslllo-svg-fixer": "^6.0.1", "svgtofont": "^6.5.3" }, "devDependencies": { "@lucide/helpers": "workspace:*", "@types/fs-extra": "^11.0.4", "@types/minimist": "^1.2.5", - "@types/node": "^22.20.1" + "@types/node": "^26.4.1" } } diff --git a/tools/build-font/tsconfig.json b/tools/build-font/tsconfig.json index 0faf8a35a..a9a7df10d 100644 --- a/tools/build-font/tsconfig.json +++ b/tools/build-font/tsconfig.json @@ -13,6 +13,6 @@ "allowImportingTsExtensions": true, "noEmit": true, "sourceMap": true, - "outDir": "./dist", - }, + "outDir": "./dist" + } } diff --git a/tools/build-helpers/package.json b/tools/build-helpers/package.json index c5467b939..8daa385f1 100644 --- a/tools/build-helpers/package.json +++ b/tools/build-helpers/package.json @@ -9,6 +9,6 @@ "license": "ISC", "type": "module", "devDependencies": { - "@types/node": "^22.20.1" + "@types/node": "^26.4.1" } } diff --git a/tools/build-helpers/tsconfig.json b/tools/build-helpers/tsconfig.json index a8bf2b3c5..96b3662e9 100644 --- a/tools/build-helpers/tsconfig.json +++ b/tools/build-helpers/tsconfig.json @@ -14,6 +14,6 @@ "allowImportingTsExtensions": true, "noEmit": true, "sourceMap": true, - "outDir": "./dist", - }, + "outDir": "./dist" + } } diff --git a/tools/build-icons/building/generateIconFiles.ts b/tools/build-icons/building/generateIconFiles.ts index 37932c45a..c8b582962 100644 --- a/tools/build-icons/building/generateIconFiles.ts +++ b/tools/build-icons/building/generateIconFiles.ts @@ -79,7 +79,7 @@ function generateIconFiles({ singleQuote: true, trailingComma: 'all', printWidth: 100, - parser: iconFileExtension.endsWith('.ts') ? 'babel-ts' : 'babel', + parser: /\.tsx?$/.test(iconFileExtension) ? 'babel-ts' : 'babel', }) : elementTemplate; diff --git a/tools/build-icons/package.json b/tools/build-icons/package.json index 85bfba1e4..327c25850 100644 --- a/tools/build-icons/package.json +++ b/tools/build-icons/package.json @@ -37,12 +37,12 @@ "devDependencies": { "@lucide/helpers": "workspace:*", "@types/minimist": "^1.2.5", - "@types/node": "^22.20.1" + "@types/node": "^26.4.1" }, "dependencies": { "minimist": "^1.2.8", - "prettier": "2.7.1", - "svgo": "^3.3.4", + "prettier": "3.9.6", + "svgo": "^4.1.0", "svgson": "^5.3.1" }, "peerDependencies": { diff --git a/tools/build-icons/tsconfig.json b/tools/build-icons/tsconfig.json index 58cab1399..ea72e32e9 100644 --- a/tools/build-icons/tsconfig.json +++ b/tools/build-icons/tsconfig.json @@ -13,6 +13,6 @@ "resolveJsonModule": true, "allowImportingTsExtensions": true, "noEmit": true, - "sourceMap": true, - }, + "sourceMap": true + } } diff --git a/tools/rollup-plugins/package.json b/tools/rollup-plugins/package.json index eacb206d9..5cb388f11 100644 --- a/tools/rollup-plugins/package.json +++ b/tools/rollup-plugins/package.json @@ -10,11 +10,11 @@ "dependencies": { "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-replace": "^6.0.3", - "esbuild": "^0.28.1", - "rollup": "^4.62.2", + "esbuild": "^0.28.2", + "rollup": "^4.63.1", "rollup-plugin-esbuild": "^6.2.1", "rollup-plugin-license": "^3.7.1", "rollup-plugin-summary": "^3.0.1", - "rollup-plugin-visualizer": "^6.0.11" + "rollup-plugin-visualizer": "^7.1.1" } } diff --git a/tsconfig.json b/tsconfig.json index 862ed65b9..81c600844 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "noEmitOnError": true, "noEmit": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "module": "ESNext", "target": "ESNext", "esModuleInterop": true, @@ -15,7 +15,6 @@ "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "allowImportingTsExtensions": true, - "downlevelIteration": true, - "sourceMap": true, - }, + "sourceMap": true + } } From 2bfb9bb1bae5d74f6a9f81640ddd8bccc2c71860 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Sun, 6 Sep 2026 22:26:48 +0200 Subject: [PATCH 038/157] fix(icons): changed `table-2` icon (#4810) * Updated icons/table-2.svg * Updated icons/table-2.json --- icons/table-2.json | 3 ++- icons/table-2.svg | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/icons/table-2.json b/icons/table-2.json index fbbc1d8f9..d5dabbbfd 100644 --- a/icons/table-2.json +++ b/icons/table-2.json @@ -3,7 +3,8 @@ "contributors": [ "abejenaru", "karsa-mistmere", - "ericfennis" + "ericfennis", + "jguddas" ], "use-cases": [], "tags": [ diff --git a/icons/table-2.svg b/icons/table-2.svg index a60705ca3..fa89be67f 100644 --- a/icons/table-2.svg +++ b/icons/table-2.svg @@ -9,5 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > - + + + From 3859eb20fabe7fd95652fcd4395843b6c0bcdd01 Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 7 Sep 2026 12:05:31 +0200 Subject: [PATCH 039/157] feat(icons): added `user-group` icons (#4782) * feat(icons): added user-group icons * feat(icons): added more metadata to user-group icons --- icons/user-group.json | 35 +++++++++++++++++++++++++++++++++++ icons/user-group.svg | 18 ++++++++++++++++++ icons/user-round-group.json | 35 +++++++++++++++++++++++++++++++++++ icons/user-round-group.svg | 18 ++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 icons/user-group.json create mode 100644 icons/user-group.svg create mode 100644 icons/user-round-group.json create mode 100644 icons/user-round-group.svg diff --git a/icons/user-group.json b/icons/user-group.json new file mode 100644 index 000000000..853fe9a21 --- /dev/null +++ b/icons/user-group.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Representing teams in account interfaces", + "Representing communities in social apps", + "Showing group membership status", + "Managing multiple users in admin interfaces" + ], + "tags": [ + "group", + "people", + "team", + "members", + "community", + "membership", + "collaboration", + "organization", + "contacts", + "directory", + "staff", + "family", + "ancestry", + "ancestors", + "lineage", + "parents" + ], + "categories": [ + "account", + "people", + "social" + ] +} diff --git a/icons/user-group.svg b/icons/user-group.svg new file mode 100644 index 000000000..6a8a59f99 --- /dev/null +++ b/icons/user-group.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/icons/user-round-group.json b/icons/user-round-group.json new file mode 100644 index 000000000..853fe9a21 --- /dev/null +++ b/icons/user-round-group.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Representing teams in account interfaces", + "Representing communities in social apps", + "Showing group membership status", + "Managing multiple users in admin interfaces" + ], + "tags": [ + "group", + "people", + "team", + "members", + "community", + "membership", + "collaboration", + "organization", + "contacts", + "directory", + "staff", + "family", + "ancestry", + "ancestors", + "lineage", + "parents" + ], + "categories": [ + "account", + "people", + "social" + ] +} diff --git a/icons/user-round-group.svg b/icons/user-round-group.svg new file mode 100644 index 000000000..a5c815f71 --- /dev/null +++ b/icons/user-round-group.svg @@ -0,0 +1,18 @@ + + + + + + + + From a537cb6eb323b885f4c60baf3cec1a995982d167 Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 7 Sep 2026 14:50:22 +0200 Subject: [PATCH 040/157] feat(icons): added `tic-tac-toe` icon (#4772) * Added icons/tic-tac-toe.svg * Added icons/tic-tac-toe.json * Update icons/tic-tac-toe.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- icons/tic-tac-toe.json | 24 ++++++++++++++++++++++++ icons/tic-tac-toe.svg | 20 ++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 icons/tic-tac-toe.json create mode 100644 icons/tic-tac-toe.svg diff --git a/icons/tic-tac-toe.json b/icons/tic-tac-toe.json new file mode 100644 index 000000000..4e790640a --- /dev/null +++ b/icons/tic-tac-toe.json @@ -0,0 +1,24 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Representing turn-based board games", + "Showing game boards in gaming interfaces", + "Indicating a casual multiplayer match", + "Representing pencil-and-paper games in kids apps", + "Showing a simple puzzle or challenge in onboarding flows", + "Denoting a tie or draw outcome in game results" + ], + "tags": [ + "game", + "board", + "grid", + "strategy", + "noughts and crosses" + ], + "categories": [ + "gaming" + ] +} diff --git a/icons/tic-tac-toe.svg b/icons/tic-tac-toe.svg new file mode 100644 index 000000000..d5bf27375 --- /dev/null +++ b/icons/tic-tac-toe.svg @@ -0,0 +1,20 @@ + + + + + + + + + + From ab000be04f3b5049a2b61001aa3c864dcf12db09 Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 8 Sep 2026 13:55:03 +0200 Subject: [PATCH 041/157] fix(icons): changed `id-card` icon (#4820) --- icons/id-card.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icons/id-card.svg b/icons/id-card.svg index 71a4eeaa7..fa04ca0aa 100644 --- a/icons/id-card.svg +++ b/icons/id-card.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > + - - + From e8db514793ae3a689e881eae235d62a8d5db3807 Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 8 Sep 2026 13:58:33 +0200 Subject: [PATCH 042/157] Update id-card-lanyard.svg (#4819) --- icons/id-card-lanyard.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icons/id-card-lanyard.svg b/icons/id-card-lanyard.svg index 0cc2e7545..278a17b01 100644 --- a/icons/id-card-lanyard.svg +++ b/icons/id-card-lanyard.svg @@ -10,8 +10,8 @@ stroke-linejoin="round" > - - + + From ba95e4c988b1e1b39cf5544e73b25a74b76816ee Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 8 Sep 2026 14:01:03 +0200 Subject: [PATCH 043/157] feat(icons): delegate carton/carton-off from lab (#4818) --- icons/carton-off.json | 39 +++++++++++++++++++++++++++++++++++++++ icons/carton-off.svg | 18 ++++++++++++++++++ icons/carton.json | 38 ++++++++++++++++++++++++++++++++++++++ {lab => icons}/carton.svg | 3 +-- lab/carton-off.json | 23 ----------------------- lab/carton-off.svg | 17 ----------------- lab/carton.json | 23 ----------------------- 7 files changed, 96 insertions(+), 65 deletions(-) create mode 100644 icons/carton-off.json create mode 100644 icons/carton-off.svg create mode 100644 icons/carton.json rename {lab => icons}/carton.svg (58%) delete mode 100644 lab/carton-off.json delete mode 100644 lab/carton-off.svg delete mode 100644 lab/carton.json diff --git a/icons/carton-off.json b/icons/carton-off.json new file mode 100644 index 000000000..2afd61f7f --- /dev/null +++ b/icons/carton-off.json @@ -0,0 +1,39 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "danielbayley", + "karsa-mistmere" + ], + "use-cases": [ + "Marking lactose-free or non-dairy beverages", + "Indicating unavailable packaged drinks in menus", + "Showing restricted dairy products in diet filters", + "Representing excluded milk products for allergies" + ], + "tags": [ + "milk", + "dairy", + "beverage", + "drink", + "diet", + "lactose free", + "non dairy", + "liquid", + "liter", + "litre", + "pint", + "pints", + "pasteurized", + "skim", + "skimmed", + "container", + "packaging", + "allergy", + "intolerance", + "vegan", + "unavailable" + ], + "categories": [ + "food-beverage" + ] +} diff --git a/icons/carton-off.svg b/icons/carton-off.svg new file mode 100644 index 000000000..de1ea8466 --- /dev/null +++ b/icons/carton-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/icons/carton.json b/icons/carton.json new file mode 100644 index 000000000..02b14de1c --- /dev/null +++ b/icons/carton.json @@ -0,0 +1,38 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "danielbayley", + "karsa-mistmere" + ], + "use-cases": [ + "Representing milk or dairy products", + "Showing packaged beverages in grocery apps", + "Marking liquid containers in inventory systems", + "Indicating packaged drink sizes in food catalogs" + ], + "tags": [ + "milk", + "dairy", + "beverage", + "drink", + "diet", + "lactose", + "liquid", + "liter", + "litre", + "pint", + "pints", + "pasteurized", + "skim", + "skimmed", + "container", + "packaging", + "grocery", + "juice", + "cream", + "cow" + ], + "categories": [ + "food-beverage" + ] +} diff --git a/lab/carton.svg b/icons/carton.svg similarity index 58% rename from lab/carton.svg rename to icons/carton.svg index 51be0a72b..f1d3fd123 100644 --- a/lab/carton.svg +++ b/icons/carton.svg @@ -9,7 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + diff --git a/lab/carton-off.json b/lab/carton-off.json deleted file mode 100644 index 52ea1140e..000000000 --- a/lab/carton-off.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "../icon.schema.json", - "contributors": [ - "danielbayley" - ], - "tags": [ - "milk", - "dairy", - "drink", - "diet", - "lactose free", - "liquid", - "litres", - "pints", - "pasturised", - "skimmed", - "container", - "vegan" - ], - "categories": [ - "food-beverage" - ] -} diff --git a/lab/carton-off.svg b/lab/carton-off.svg deleted file mode 100644 index 373fa0498..000000000 --- a/lab/carton-off.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/lab/carton.json b/lab/carton.json deleted file mode 100644 index abdb25a33..000000000 --- a/lab/carton.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "../icon.schema.json", - "contributors": [ - "danielbayley" - ], - "tags": [ - "milk", - "dairy", - "drink", - "diet", - "lactose", - "liquid", - "litres", - "pints", - "pasturised", - "skimmed", - "container", - "cow" - ], - "categories": [ - "food-beverage" - ] -} From 22e6094bb533ac2b0ae3b592d2184da461ec1f4b Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 8 Sep 2026 19:49:41 +0200 Subject: [PATCH 044/157] feat(packages/icons): fixed @lucide/icons rollup config (#4824) --- packages/icons/package.json | 1 - packages/icons/rollup.config.mjs | 14 +++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/icons/package.json b/packages/icons/package.json index cd09e51d1..5a11c0147 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -39,7 +39,6 @@ "./dynamic": { "types": "./dist/esm/dynamic.d.ts", "import": "./dist/esm/dynamic.mjs", - "require": "./dist/cjs/dynamic.cjs", "default": "./dist/esm/dynamic.mjs" }, "./build": { diff --git a/packages/icons/rollup.config.mjs b/packages/icons/rollup.config.mjs index 855946d56..80bc80f95 100644 --- a/packages/icons/rollup.config.mjs +++ b/packages/icons/rollup.config.mjs @@ -18,10 +18,22 @@ const bundles = [ }, { format: 'esm', - inputs: [...inputs, './src/dynamic.ts', './src/build.ts'], + inputs: [...inputs, './src/dynamic.ts'], preserveModules: true, extension: 'mjs', }, + { + format: 'cjs', + inputs: ['./src/build.ts'], + outputFile: 'dist/cjs/build.cjs', + extension: 'cjs', + }, + { + format: 'esm', + inputs: ['./src/build.ts'], + outputFile: 'dist/esm/build.mjs', + extension: 'mjs', + }, ]; const configs = bundles From 58fd3ccd59b69ea188b7223691fb10b4ae6c0307 Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 8 Sep 2026 23:06:29 +0200 Subject: [PATCH 045/157] fix(icons): changed `door-open` (#4826) Made the top right corner have 2px corner radius --- icons/door-open.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icons/door-open.svg b/icons/door-open.svg index f12c8fb3c..a9422997d 100644 --- a/icons/door-open.svg +++ b/icons/door-open.svg @@ -10,8 +10,8 @@ stroke-linejoin="round" > - - + + From 75955ec47b764f253ded2baea7a1c2b3ec64efec Mon Sep 17 00:00:00 2001 From: Karsa Date: Wed, 9 Sep 2026 08:20:42 +0200 Subject: [PATCH 046/157] fix(docs): replace missing LucideIcon icon names in guides (#4827) --- .../icons/metadata-conventions/tag-guide.md | 36 +++++++-------- .../metadata-conventions/use-case-guide.md | 40 ++++++++--------- docs/contribute/icons/naming-conventions.md | 44 +++++++++---------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/docs/contribute/icons/metadata-conventions/tag-guide.md b/docs/contribute/icons/metadata-conventions/tag-guide.md index 1bd5186da..fd7b026ce 100644 --- a/docs/contribute/icons/metadata-conventions/tag-guide.md +++ b/docs/contribute/icons/metadata-conventions/tag-guide.md @@ -18,10 +18,10 @@ Tags help people find icons by concept, synonym, context, or common wording. Tags should always be lowercase. :::: example -::: do email +::: do email Lowercase tags **match the style** used across the icon library. ::: -::: dont Email +::: dont Email Capitalized tags create **inconsistent metadata** without improving search. ::: :::: @@ -31,10 +31,10 @@ Capitalized tags create **inconsistent metadata** without improving search. Use one clear word when it is enough. Use multi-word tags when the phrase is clearer. :::: example -::: do search +::: do search This is **short, common, and easy to find**. ::: -::: dont searching through files & folders +::: dont searching through files & folders This reads like a **use case**, not a tag. ::: :::: @@ -44,10 +44,10 @@ This reads like a **use case**, not a tag. Some ideas are only clear as a phrase. But keep those phrases short. :::: example -::: do blood type +::: do blood type The phrase is **clearer** than either word on its own. ::: -::: dont blood type medical label +::: dont blood type medical label This combines **several search concepts** into one long tag. ::: :::: @@ -57,10 +57,10 @@ This combines **several search concepts** into one long tag. Tags can include words people are likely to search for, even if they are not in the icon name. :::: example -::: do email +::: do email This helps users find `mail` icons using a **common synonym**. ::: -::: dont electronic postal message delivery +::: dont electronic postal message delivery This is unlikely search wording and **adds noise**. ::: :::: @@ -70,10 +70,10 @@ This is unlikely search wording and **adds noise**. The icon name is already searchable. Tags should add other ways to find it. :::: example -::: do message filter +::: do message filter This adds a **related concept** for `mail-search` without duplicating the name. ::: -::: dont mail search +::: dont mail search This **repeats the icon name** and does not improve discovery. ::: :::: @@ -83,10 +83,10 @@ This **repeats the icon name** and does not improve discovery. Tags should describe the icon, not say that it is an icon. :::: example -::: do event +::: do event This points to a **specific idea** users might search for. ::: -::: dont icon +::: dont icon **Every entry is an icon**, so this tag does not help anyone find the right one. ::: :::: @@ -96,10 +96,10 @@ This points to a **specific idea** users might search for. Do not add loose terms just to make an icon appear in more searches. :::: example -::: do emergency room +::: do emergency room This is **relevant** for an icon that marks emergency room locations. ::: -::: dont doctor nurse pharmacy +::: dont doctor nurse pharmacy These terms may be **nearby concepts**, but they do not all describe the same icon. ::: :::: @@ -109,10 +109,10 @@ These terms may be **nearby concepts**, but they do not all describe the same ic Related icons can share family terms, but variant tags should describe what is different. :::: example -::: do depleted +::: do depleted This distinguishes `battery-low` from **other battery icons**. ::: -::: dont charged +::: dont charged This describes `battery-full` better than `battery-low`. ::: :::: @@ -122,10 +122,10 @@ This describes `battery-full` better than `battery-low`. Check similar icons before adding new tags. Reusing existing terms keeps search predictable. :::: example -::: do typography +::: do typography This matches existing text-formatting icons and keeps **related icons** together in search. ::: -::: dont fontography +::: dont fontography Inventing a new term makes the icon harder to find and less consistent with related metadata. ::: :::: diff --git a/docs/contribute/icons/metadata-conventions/use-case-guide.md b/docs/contribute/icons/metadata-conventions/use-case-guide.md index 0f4780a81..c3c9d974c 100644 --- a/docs/contribute/icons/metadata-conventions/use-case-guide.md +++ b/docs/contribute/icons/metadata-conventions/use-case-guide.md @@ -16,10 +16,10 @@ This guide shows how to write clear use cases for Lucide icons. Describe what the interface tells the user. Do not write from the contributor's point of view. :::: example -::: do Indicating a device is offline or unreachable +::: do Indicating a device is offline or unreachable This describes the **role the icon plays in an interface**. ::: -::: dont I need an icon for my offline device screen +::: dont I need an icon for my offline device screen This explains the **contributor's situation**, not the icon's purpose. ::: :::: @@ -29,10 +29,10 @@ This explains the **contributor's situation**, not the icon's purpose. A use case should explain what the icon means in context. Do not repeat the icon name or only describe the drawing. :::: example -::: do Representing processors, chips, or embedded hardware +::: do Representing processors, chips, or embedded hardware This explains `microchip` **without repeating the name**. ::: -::: dont it's a microchip icon +::: dont it's a microchip icon This **duplicates the icon name** and does not explain where the icon would be used. ::: :::: @@ -42,10 +42,10 @@ This **duplicates the icon name** and does not explain where the icon would be u Some icons have broad meanings. Add context when it makes the use case clearer. :::: example -::: do Applying a level-2 heading in text editors +::: do Applying a level-2 heading in text editors The phrase explains both the **action and the product area**. ::: -::: dont Applying a heading +::: dont Applying a heading This is less useful because it **omits the level and context**. ::: :::: @@ -55,10 +55,10 @@ This is less useful because it **omits the level and context**. Each entry should cover one clear idea. Split different meanings into separate entries. :::: example -::: do Marking parking locations on maps +::: do Marking parking locations on maps This is **short, clear, and focused** on one interface function. ::: -::: dont Marking parking, transport, maps, cars, garages, and places +::: dont Marking parking, transport, maps, cars, garages, and places This reads like a **tag list** and **mixes several ideas**. ::: :::: @@ -68,10 +68,10 @@ This reads like a **tag list** and **mixes several ideas**. For related icons, describe what makes each variant different. :::: example -::: do Indicating a low battery charge level +::: do Indicating a low battery charge level This is specific to `battery-low` and **sets it apart** from other battery icons. ::: -::: dont Representing battery status +::: dont Representing battery status This is **too generic** and could apply to **every battery variant**. ::: :::: @@ -81,10 +81,10 @@ This is **too generic** and could apply to **every battery variant**. Use cases should make sense after the pull request is merged. :::: example -::: do Signifying a deal, agreement, or partnership +::: do Signifying a deal, agreement, or partnership This keeps the **useful meaning** without depending on **outside context**. ::: -::: dont Same as above in #1234 +::: dont Same as above in #1234 This **depends on a discussion** readers **may never see**. ::: :::: @@ -94,10 +94,10 @@ This **depends on a discussion** readers **may never see**. Use cases should usually be 4 to 12 words. Prefer a short phrase over a long explanation. :::: example -::: do Searching files by name or content +::: do Searching files by name or content This is **short enough** to scan and **specific enough** to understand. ::: -::: dont This icon can be used when users want to search through all of their files and folders to find something +::: dont This icon can be used when users want to search through all of their files and folders to find something This is **too long** and reads like **product copy instead of metadata**. ::: :::: @@ -107,10 +107,10 @@ This is **too long** and reads like **product copy instead of metadata**. Use cases are metadata phrases, not full sentences. :::: example -::: do Confirming a successful payment +::: do Confirming a successful payment This matches the **phrase style** used across icon metadata. ::: -::: dont Confirming a successful payment. +::: dont Confirming a successful payment. The period adds **unnecessary punctuation** and makes entries inconsistent. ::: :::: @@ -120,10 +120,10 @@ The period adds **unnecessary punctuation** and makes entries inconsistent. Use plain text only. Formatting belongs in documentation, not metadata values. :::: example -::: do Warning users about a destructive action +::: do Warning users about a destructive action This works in search, generated pages, and other places that use metadata. ::: -::: dont **Warning** users about a destructive action ⚠� +::: dont **Warning** users about a destructive action ⚠� Markdown and emoji can **show up in generated UI** and make metadata **harder to reuse**. ::: :::: @@ -133,10 +133,10 @@ Markdown and emoji can **show up in generated UI** and make metadata **harder to Use cases should describe meaning, not how the SVG was made. :::: example -::: do Representing cropped or trimmed content +::: do Representing cropped or trimmed content This explains the icon's **interface meaning**. ::: -::: dont Showing a rectangle with two path cuts and adjusted Bezier handles +::: dont Showing a rectangle with two path cuts and adjusted Bezier handles This describes **construction details** that do not help people find or understand the icon. ::: :::: diff --git a/docs/contribute/icons/naming-conventions.md b/docs/contribute/icons/naming-conventions.md index 49aac9983..a0b507195 100644 --- a/docs/contribute/icons/naming-conventions.md +++ b/docs/contribute/icons/naming-conventions.md @@ -82,19 +82,19 @@ Icon names **must** use American English, not local variants. Icon names **must** describe what the icon shows, not how someone might use it. :::: example -::: do `floppy-disk` +::: do `floppy-disk` The icon **shows** a floppy disk. ::: -::: dont `save` +::: dont `save` Save is a use case. ::: :::: :::: example -::: do `circle-slash` +::: do `circle-slash` The icon **shows** a circle with a slash across it. ::: -::: dont `ban` +::: dont `ban` Ban is an action. ::: :::: @@ -110,10 +110,10 @@ Icons that belong to the same group **must** use the `-` naming The group name comes first. The variant comes after it. :::: example -::: do + `badge-plus` & `badge-check` +::: do + `badge-plus` & `badge-check` `badge` is the group. ::: -::: dont + `plus-badge` & `check-badge` +::: dont + `plus-badge` & `check-badge` `plus` and `check` are not the group. ::: :::: @@ -123,10 +123,10 @@ The group name comes first. The variant comes after it. Alternate versions of an icon **must** be named for what makes them visually different. Do **not** use numbers just to separate one version from another. :::: example -::: do `send-horizontal` +::: do `send-horizontal` The icon depicts a horizontal "send" symbol. ::: -::: dont `send-2` or `send-alt` +::: dont `send-2` or `send-alt` "send number 2" and "alternative send" are not clear names. ::: :::: @@ -136,19 +136,19 @@ The icon depicts a horizontal "send" symbol. Icon names **must not** include numbers unless the icon shows the number. :::: example -::: do `arrow-down-0-1` +::: do `arrow-down-0-1` The arrow points from 0 to 1. ::: -::: dont `send-2` +::: dont `send-2` The icon does not show the number 2. ::: :::: :::: example -::: do `clock-3` +::: do `clock-3` The hands point to 3 o'clock. ::: -::: dont `user-3` +::: dont `user-3` The icon does not show the number 3. ::: :::: @@ -162,10 +162,10 @@ When an icon shows multiple elements of different sizes, order their names from For an icon containing a circle and a person: :::: example -::: do `moon-star` +::: do `moon-star` The `moon` is larger than the `star`. ::: -::: dont `person-circle` +::: dont `person-circle` The `person` is **not** larger than the `circle`. ::: :::: @@ -179,19 +179,19 @@ If elements overlap, name them from front to back. If they do not overlap, name them in English reading order: top to bottom, then left to right. :::: example -::: do `pencil-ruler` +::: do `pencil-ruler` The `pencil` is **in front** of the `ruler`, so it comes first. ::: -::: do `ruler-dimension-line` +::: do `ruler-dimension-line` The ruler is below the dimension line, but it is **larger**, so it comes first. ::: :::: :::: example -::: do `sun-snow` +::: do `sun-snow` The `sun` is **left of** the `snowflake`, so it comes first. ::: -::: dont `ruler-pencil` +::: dont `ruler-pencil` The `ruler` is **below** the `pencil`, so `pencil-ruler` is the correct name. ::: :::: @@ -201,10 +201,10 @@ The `ruler` is **below** the `pencil`, so `pencil-ruler` is the correct name. Modifiers **must** come after the element they describe: `-`. :::: example -::: do `heart-broken` +::: do `heart-broken` The icon shows a heart that is **cracked**. ::: -::: dont `broken-bone` +::: dont `broken-bone` The icon shows a bone that is **broken**, so name it `bone-broken`. ::: :::: @@ -212,12 +212,12 @@ The icon shows a bone that is **broken**, so name it `bone-broken`. When an icon has multiple modified elements, each modifier **must** follow the element it describes. :::: example -::: do `circle-fading-arrow-up` +::: do `circle-fading-arrow-up` The icon shows a **fading** circle with an arrow pointing **up** inside it. `circle` comes first because it is larger than `arrow`. `fading` follows `circle` because it modifies the circle. `up` follows `arrow` because it modifies the arrow. ::: -::: dont `notepad-text-dashed` +::: dont `notepad-text-dashed` This icon shows a dashed notepad with text inside, so name it `notepad-dashed-text`. `notepad` comes first because it is larger than `text`. `dashed` follows `notepad` because it modifies the notepad. `text` follows both because `dashed` does not modify `text`. From 9e5f0607cdda92b6786f7a66aa4baae8c5d1ca10 Mon Sep 17 00:00:00 2001 From: Karsa Date: Wed, 9 Sep 2026 14:19:48 +0200 Subject: [PATCH 047/157] feat(docs): fixed fuse js search (move single phrase search to matching all words) (#4825) --- .../theme/components/icons/IconsCategoryOverview.vue | 2 +- docs/.vitepress/theme/components/icons/IconsOverview.vue | 8 ++++++-- docs/.vitepress/theme/composables/useSearch.ts | 5 ++++- docs/.vitepress/theme/utils/useSearchPlaceholder.ts | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue b/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue index 1fdece4ba..a5066017d 100644 --- a/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue +++ b/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue @@ -122,7 +122,7 @@ const categoriesList = computed(() => { }); const searchPlaceholder = useSearchPlaceholder(searchQuery, searchResults); const isSearchMetadataLoading = computed( - () => searchQuery.value.length > 0 && (tags.value == null || categoriesMap.value == null), + () => searchQuery.value.length > 0 && !isFetchingTags && !isFetchingCategories, ); const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(categoriesList, { diff --git a/docs/.vitepress/theme/components/icons/IconsOverview.vue b/docs/.vitepress/theme/components/icons/IconsOverview.vue index 61e35de40..d9bc7dd82 100644 --- a/docs/.vitepress/theme/components/icons/IconsOverview.vue +++ b/docs/.vitepress/theme/components/icons/IconsOverview.vue @@ -88,9 +88,13 @@ const mappedIcons = computed(() => { return sortedIcons.value; } + if (categories.value == null) { + return sortedIcons.value; + } + return sortedIcons.value.map((icon) => { const iconTags = tags.value[icon.name]; - const iconCategories = categories.value?.[icon.name] ?? []; + const iconCategories = categories.value[icon.name] ?? []; return { ...icon, @@ -115,7 +119,7 @@ const searchResults = useSearch(searchQueryDebounced, mappedIcons, [ const searchPlaceholder = useSearchPlaceholder(searchQuery, searchResults); const isSearchMetadataLoading = computed( - () => searchQuery.value.length > 0 && (tags.value == null || categories.value == null), + () => searchQuery.value.length > 0 && !isFetchingTags && !isFetchingCategories, ); const chunkedIcons = computed(() => { diff --git a/docs/.vitepress/theme/composables/useSearch.ts b/docs/.vitepress/theme/composables/useSearch.ts index 18cd87251..079aaa074 100644 --- a/docs/.vitepress/theme/composables/useSearch.ts +++ b/docs/.vitepress/theme/composables/useSearch.ts @@ -9,6 +9,7 @@ const useSearch = ( const index = shallowRef( new Fuse(collection.value, { threshold: 0.2, + useExtendedSearch: true, keys, }), ); @@ -17,7 +18,9 @@ const useSearch = ( index.value.setCollection(collection.value); if (query.value) { - return index.value.search(query.value).map((result) => result.item); + return index.value + .search({ $and: query.value.split(' ').filter((t) => !!t) }) + .map((result) => result.item); } return collection.value; diff --git a/docs/.vitepress/theme/utils/useSearchPlaceholder.ts b/docs/.vitepress/theme/utils/useSearchPlaceholder.ts index 4e352b24d..842e08350 100644 --- a/docs/.vitepress/theme/utils/useSearchPlaceholder.ts +++ b/docs/.vitepress/theme/utils/useSearchPlaceholder.ts @@ -29,7 +29,7 @@ export default function useSearchPlaceholder( } } state.value = { - isNoResults: query in BRAND_STOPWORDS && searchResults.length === 0 && query !== '', + isNoResults: query !== '' && searchResults.length === 0, isBrand: query in BRAND_STOPWORDS, query: BRAND_STOPWORDS[query] ?? query, }; From 3bcf71f7cf4b6c7eeb1ec086425cc2028b990432 Mon Sep 17 00:00:00 2001 From: Karsa Date: Wed, 9 Sep 2026 14:20:16 +0200 Subject: [PATCH 048/157] fix(icons): changed `satellite-dish` icon (#4813) * Updated icons/satellite-dish.svg * Updated icons/satellite-dish.json --- icons/satellite-dish.json | 12 ++++++++++-- icons/satellite-dish.svg | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/icons/satellite-dish.json b/icons/satellite-dish.json index 4ea7298c7..f88613d2c 100644 --- a/icons/satellite-dish.json +++ b/icons/satellite-dish.json @@ -4,12 +4,20 @@ "karsa-mistmere", "ericfennis" ], - "use-cases": [], + "use-cases": [ + "Configuring satellite communication or broadcast equipment", + "Indicating satellite television or radio reception", + "Representing ground stations and satellite tracking systems", + "Managing antennas, receivers or other wireless communication hardware" + ], "tags": [ "antenna", "receiver", "dish aerial", - "saucer" + "saucer", + "communication", + "broadcast", + "signal" ], "categories": [ "connectivity", diff --git a/icons/satellite-dish.svg b/icons/satellite-dish.svg index a122bc796..ef30b7fee 100644 --- a/icons/satellite-dish.svg +++ b/icons/satellite-dish.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + From a53bd66a03dfd5609c3638379869e83dc207b051 Mon Sep 17 00:00:00 2001 From: Karsa Date: Wed, 9 Sep 2026 23:05:32 +0200 Subject: [PATCH 049/157] fix(icons): arcified flip icons & renamed them (#4833) --- ...2.json => triangles-centerline-dashed-horizontal.json} | 7 +++++++ ...l-2.svg => triangles-centerline-dashed-horizontal.svg} | 6 +++--- ...l-2.json => triangles-centerline-dashed-vertical.json} | 7 +++++++ ...tal-2.svg => triangles-centerline-dashed-vertical.svg} | 8 ++++---- 4 files changed, 21 insertions(+), 7 deletions(-) rename icons/{flip-horizontal-2.json => triangles-centerline-dashed-horizontal.json} (65%) rename icons/{flip-vertical-2.svg => triangles-centerline-dashed-horizontal.svg} (61%) rename icons/{flip-vertical-2.json => triangles-centerline-dashed-vertical.json} (67%) rename icons/{flip-horizontal-2.svg => triangles-centerline-dashed-vertical.svg} (61%) diff --git a/icons/flip-horizontal-2.json b/icons/triangles-centerline-dashed-horizontal.json similarity index 65% rename from icons/flip-horizontal-2.json rename to icons/triangles-centerline-dashed-horizontal.json index 395e2442d..99fef8349 100644 --- a/icons/flip-horizontal-2.json +++ b/icons/triangles-centerline-dashed-horizontal.json @@ -14,5 +14,12 @@ "categories": [ "design", "photography" + ], + "aliases": [ + { + "name": "flip-horizontal-2", + "deprecated": true, + "deprecationReason": "alias.name" + } ] } diff --git a/icons/flip-vertical-2.svg b/icons/triangles-centerline-dashed-horizontal.svg similarity index 61% rename from icons/flip-vertical-2.svg rename to icons/triangles-centerline-dashed-horizontal.svg index 26b0775a3..fdf121783 100644 --- a/icons/flip-vertical-2.svg +++ b/icons/triangles-centerline-dashed-horizontal.svg @@ -9,10 +9,10 @@ stroke-linecap="round" stroke-linejoin="round" > - - - + + + diff --git a/icons/flip-vertical-2.json b/icons/triangles-centerline-dashed-vertical.json similarity index 67% rename from icons/flip-vertical-2.json rename to icons/triangles-centerline-dashed-vertical.json index 8b708b3a5..bb5e805fc 100644 --- a/icons/flip-vertical-2.json +++ b/icons/triangles-centerline-dashed-vertical.json @@ -15,5 +15,12 @@ "categories": [ "design", "photography" + ], + "aliases": [ + { + "name": "flip-vertical-2", + "deprecated": true, + "deprecationReason": "alias.name" + } ] } diff --git a/icons/flip-horizontal-2.svg b/icons/triangles-centerline-dashed-vertical.svg similarity index 61% rename from icons/flip-horizontal-2.svg rename to icons/triangles-centerline-dashed-vertical.svg index 7e0459dab..15a65dc72 100644 --- a/icons/flip-horizontal-2.svg +++ b/icons/triangles-centerline-dashed-vertical.svg @@ -9,10 +9,10 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + From 26993aba5a5234b74aea3bde2a141ea00366749c Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 08:45:29 +0200 Subject: [PATCH 050/157] fix(icons): improve legibility of credit card icons (#4831) --- icons/credit-card-check.svg | 3 ++- icons/credit-card-minus.svg | 5 +++-- icons/credit-card-plus.svg | 5 +++-- icons/credit-card-x.svg | 3 ++- icons/credit-card.svg | 1 + 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/icons/credit-card-check.svg b/icons/credit-card-check.svg index 40490238b..fa53dd6b7 100644 --- a/icons/credit-card-check.svg +++ b/icons/credit-card-check.svg @@ -10,6 +10,7 @@ stroke-linejoin="round" > - + + diff --git a/icons/credit-card-minus.svg b/icons/credit-card-minus.svg index f5e258ef4..33884553b 100644 --- a/icons/credit-card-minus.svg +++ b/icons/credit-card-minus.svg @@ -9,7 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + + diff --git a/icons/credit-card-plus.svg b/icons/credit-card-plus.svg index 225512ee8..39f59d6ea 100644 --- a/icons/credit-card-plus.svg +++ b/icons/credit-card-plus.svg @@ -9,8 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > + + + - - diff --git a/icons/credit-card-x.svg b/icons/credit-card-x.svg index d430706e0..a346dbd4f 100644 --- a/icons/credit-card-x.svg +++ b/icons/credit-card-x.svg @@ -10,7 +10,8 @@ stroke-linejoin="round" > - + + diff --git a/icons/credit-card.svg b/icons/credit-card.svg index f1476ca74..623f5c0eb 100644 --- a/icons/credit-card.svg +++ b/icons/credit-card.svg @@ -11,4 +11,5 @@ > + From 8970c2c4f9bb3c170cbb948e323f57046174c780 Mon Sep 17 00:00:00 2001 From: ishanbagra <159798261+ishanbagra18@users.noreply.github.com> Date: Thu, 10 Sep 2026 12:31:13 +0530 Subject: [PATCH 051/157] feat(lab): add check-x icon (#4737) * feat(icons): add check-x icon (#4130) * Move check x to lab * fix(lab): add missing use-cases array to lab/check-x.json * Add use cases for notifications in check-x.json Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: ishanbagra18 Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- lab/check-x.json | 23 +++++++++++++++++++++++ lab/check-x.svg | 15 +++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 lab/check-x.json create mode 100644 lab/check-x.svg diff --git a/lab/check-x.json b/lab/check-x.json new file mode 100644 index 000000000..24ad23333 --- /dev/null +++ b/lab/check-x.json @@ -0,0 +1,23 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ishanbagra18" + ], + "tags": [ + "uncheck", + "cancel", + "remove", + "unread", + "cross", + "mark", + "deselect", + "task" + ], + "categories": [ + "notifications" + ], + "use-cases": [ + "Unmarking / toggling read status (mark unread / uncheck)", + "Task & checklist management (cancel/reject a checked item)" + ] +} diff --git a/lab/check-x.svg b/lab/check-x.svg new file mode 100644 index 000000000..9a3bc73c0 --- /dev/null +++ b/lab/check-x.svg @@ -0,0 +1,15 @@ + + + + + From cef2020c7af902f99d82c6fd46cdcc2c600e93a3 Mon Sep 17 00:00:00 2001 From: Mo <118130211+decknamec@users.noreply.github.com> Date: Thu, 10 Sep 2026 09:17:39 +0200 Subject: [PATCH 052/157] fix(icons): correct compromised tags in shield icons (#4835) Replace the misspelled comprimised tag across the five affected shield variants so displayed metadata and exact tag matching use the correct spelling. Co-authored-by: Jakob Guddas --- icons/shield-alert.json | 2 +- icons/shield-ban.json | 2 +- icons/shield-off.json | 2 +- icons/shield-question-mark.json | 2 +- icons/shield-x.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/icons/shield-alert.json b/icons/shield-alert.json index af0464476..e2ae07c22 100644 --- a/icons/shield-alert.json +++ b/icons/shield-alert.json @@ -45,7 +45,7 @@ "weakness", "infection", "infected", - "comprimised", + "compromised", "data leak", "audited", "admin", diff --git a/icons/shield-ban.json b/icons/shield-ban.json index 9ecfa7265..9c706952b 100644 --- a/icons/shield-ban.json +++ b/icons/shield-ban.json @@ -44,7 +44,7 @@ "weakness", "infection", "infected", - "comprimised", + "compromised", "data leak", "audited", "admin", diff --git a/icons/shield-off.json b/icons/shield-off.json index db17361a6..af52af6a1 100644 --- a/icons/shield-off.json +++ b/icons/shield-off.json @@ -37,7 +37,7 @@ "weakness", "infected", "infection", - "comprimised", + "compromised", "data leak", "unaudited", "admin", diff --git a/icons/shield-question-mark.json b/icons/shield-question-mark.json index 680db8f0b..49950f2b2 100644 --- a/icons/shield-question-mark.json +++ b/icons/shield-question-mark.json @@ -38,7 +38,7 @@ "vulnerable", "weakness", "infection", - "comprimised", + "compromised", "data leak", "audit", "admin", diff --git a/icons/shield-x.json b/icons/shield-x.json index ebd4d6a92..f2ab26afa 100644 --- a/icons/shield-x.json +++ b/icons/shield-x.json @@ -45,7 +45,7 @@ "weakness", "infection", "infected", - "comprimised", + "compromised", "data leak", "audited", "admin", From 07ed920096d9be05222c4312a3764fb0aff5b28b Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 09:29:21 +0200 Subject: [PATCH 053/157] feat(icons): added `toothbrush` icon (#4755) * Added icons/toothbrush.svg * Added icons/toothbrush.json * Update toothbrush.json * Update icons/toothbrush.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Create toothbrush-sparkles.svg * Create toothbrush-sparkles.json --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- icons/toothbrush-sparkles.json | 38 ++++++++++++++++++++++++++++++++++ icons/toothbrush-sparkles.svg | 21 +++++++++++++++++++ icons/toothbrush.json | 36 ++++++++++++++++++++++++++++++++ icons/toothbrush.svg | 14 +++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 icons/toothbrush-sparkles.json create mode 100644 icons/toothbrush-sparkles.svg create mode 100644 icons/toothbrush.json create mode 100644 icons/toothbrush.svg diff --git a/icons/toothbrush-sparkles.json b/icons/toothbrush-sparkles.json new file mode 100644 index 000000000..51d9d78d3 --- /dev/null +++ b/icons/toothbrush-sparkles.json @@ -0,0 +1,38 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "jamiemlaw", + "karsa-mistmere", + "jguddas" + ], + "use-cases": [ + "Representing improved oral hygiene or dental care", + "Indicating freshly cleaned teeth in health apps", + "Showing premium personal care amenities in travel apps" + ], + "tags": [ + "dental care", + "oral hygiene", + "brushing", + "teeth", + "dentist", + "bathroom", + "toiletries", + "personal care", + "cleaning", + "bristles", + "handle", + "plaque", + "toothpaste", + "selfcare", + "grooming", + "fresh", + "clean" + ], + "categories": [ + "home", + "tools", + "medical", + "travel" + ] +} diff --git a/icons/toothbrush-sparkles.svg b/icons/toothbrush-sparkles.svg new file mode 100644 index 000000000..eed727496 --- /dev/null +++ b/icons/toothbrush-sparkles.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/icons/toothbrush.json b/icons/toothbrush.json new file mode 100644 index 000000000..7bce524b5 --- /dev/null +++ b/icons/toothbrush.json @@ -0,0 +1,36 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "jamiemlaw", + "karsa-mistmere" + ], + "use-cases": [ + "Representing oral hygiene and dental care", + "Reminding users to brush their teeth in routine apps", + "Indicating dental health services in healthcare apps", + "Listing personal care amenities in travel apps" + ], + "tags": [ + "dental care", + "oral hygiene", + "brushing", + "teeth", + "dentist", + "bathroom", + "toiletries", + "personal care", + "cleaning", + "bristles", + "handle", + "plaque", + "toothpaste", + "selfcare", + "grooming" + ], + "categories": [ + "home", + "travel", + "tools", + "medical" + ] +} diff --git a/icons/toothbrush.svg b/icons/toothbrush.svg new file mode 100644 index 000000000..b1301efb2 --- /dev/null +++ b/icons/toothbrush.svg @@ -0,0 +1,14 @@ + + + + From 249fe3a120cfbb9fadd876670550b9ad9556ad5d Mon Sep 17 00:00:00 2001 From: Alexandre Philibert <39675639+AlexandrePhilibert@users.noreply.github.com> Date: Thu, 10 Sep 2026 09:32:28 +0200 Subject: [PATCH 054/157] feat(icons): added `calendar-chevrons-right` icon (#3565) * feat(icons): added calendar-chevrons-right icon * Update icons/calendar-chevrons-right.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add use-cases field to calendar-chevrons-right.json * Apply batched suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Applied suggestion from @karsa-mistmere --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/calendar-chevrons-right.json | 37 ++++++++++++++++++++++++++++++ icons/calendar-chevrons-right.svg | 18 +++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 icons/calendar-chevrons-right.json create mode 100644 icons/calendar-chevrons-right.svg diff --git a/icons/calendar-chevrons-right.json b/icons/calendar-chevrons-right.json new file mode 100644 index 000000000..6f33edac7 --- /dev/null +++ b/icons/calendar-chevrons-right.json @@ -0,0 +1,37 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere", + "ericfennis", + "jguddas", + "colebemis", + "AlexandrePhilibert" + ], + "use-cases": [ + "Indicating upcoming events in calendars", + "Fast-forwarding through calendar views" + ], + "tags": [ + "navigation", + "arrow", + "right", + "chevron", + "direction", + "symbol", + "pointer", + "indicator", + "next", + "menu", + "date", + "day", + "month", + "year", + "events", + "chevrons" + ], + "categories": [ + "time", + "arrows", + "navigation" + ] +} diff --git a/icons/calendar-chevrons-right.svg b/icons/calendar-chevrons-right.svg new file mode 100644 index 000000000..e55d7eb35 --- /dev/null +++ b/icons/calendar-chevrons-right.svg @@ -0,0 +1,18 @@ + + + + + + + + From a68cc8d52f2346901758abbbb8b7024ad1a73b7e Mon Sep 17 00:00:00 2001 From: Tyler <91107754+tylerkade@users.noreply.github.com> Date: Thu, 10 Sep 2026 08:40:23 +0100 Subject: [PATCH 055/157] feat(icons): added `building-complex-plus` icon (#4758) * feat(icons): added `building-2-plus` icon * Update icons/building-2-plus.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/building-2-plus.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add building-complex-plus.json icon file * Add building-complex-plus.svg icon * Update icons/building-complex-plus.json Co-authored-by: Karsa * Update icons/building-complex-plus.svg Co-authored-by: Karsa * rename building-2 icon to building-complex --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Karsa Co-authored-by: Eric Fennis --- icons/building-complex-plus.json | 40 +++++++++++++++++++ icons/building-complex-plus.svg | 20 ++++++++++ ...{building-2.json => building-complex.json} | 7 ++++ .../{building-2.svg => building-complex.svg} | 0 4 files changed, 67 insertions(+) create mode 100644 icons/building-complex-plus.json create mode 100644 icons/building-complex-plus.svg rename icons/{building-2.json => building-complex.json} (73%) rename icons/{building-2.svg => building-complex.svg} (100%) diff --git a/icons/building-complex-plus.json b/icons/building-complex-plus.json new file mode 100644 index 000000000..7a24b02c5 --- /dev/null +++ b/icons/building-complex-plus.json @@ -0,0 +1,40 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "maxim-s-barabash", + "ericfennis", + "karsa-mistmere", + "jguddas", + "tylerkade" + ], + "use-cases": [ + "Adding a company or business profile", + "Registering a company during onboarding", + "Creating office, branch, or headquarters entries", + "Marking new business or property locations on maps" + ], + "tags": [ + "business", + "company", + "enterprise", + "skyscraper", + "organisation", + "organization", + "city", + "new", + "add", + "create", + "increase", + "office", + "headquarters", + "startup", + "registration", + "onboarding", + "realestate", + "property" + ], + "categories": [ + "account", + "buildings" + ] +} diff --git a/icons/building-complex-plus.svg b/icons/building-complex-plus.svg new file mode 100644 index 000000000..b9657a181 --- /dev/null +++ b/icons/building-complex-plus.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/icons/building-2.json b/icons/building-complex.json similarity index 73% rename from icons/building-2.json rename to icons/building-complex.json index 48212389b..3d3854466 100644 --- a/icons/building-2.json +++ b/icons/building-complex.json @@ -19,5 +19,12 @@ "categories": [ "account", "buildings" + ], + "aliases": [ + { + "name": "building-2", + "deprecated": true, + "deprecationReason": "alias.name" + } ] } diff --git a/icons/building-2.svg b/icons/building-complex.svg similarity index 100% rename from icons/building-2.svg rename to icons/building-complex.svg From 30f2eda422777cda8f7215d1df7c9c7318edac69 Mon Sep 17 00:00:00 2001 From: Lazizbek Ergashev Date: Thu, 10 Sep 2026 12:49:54 +0500 Subject: [PATCH 056/157] feat(icons): add hourglass-cog icon (#4635) * feat(icons): add hourglass-cog icon * fix(icons): credit rrod497 as hourglass-cog designer * Remove 'hourglass' icon from JSON file Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/hourglass-cog.json | 29 +++++++++++++++++++++++++++++ icons/hourglass-cog.svg | 25 +++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 icons/hourglass-cog.json create mode 100644 icons/hourglass-cog.svg diff --git a/icons/hourglass-cog.json b/icons/hourglass-cog.json new file mode 100644 index 000000000..cc4d16609 --- /dev/null +++ b/icons/hourglass-cog.json @@ -0,0 +1,29 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "rrod497" + ], + "use-cases": [ + "editing a timer or countdown", + "configuring session timeout", + "setting expiration for scheduled tasks" + ], + "tags": [ + "timer", + "time", + "sandglass", + "duration", + "settings", + "gear", + "cog", + "edit", + "configuration", + "countdown", + "timeout", + "expiration" + ], + "categories": [ + "time", + "tools" + ] +} diff --git a/icons/hourglass-cog.svg b/icons/hourglass-cog.svg new file mode 100644 index 000000000..3dc78e3a4 --- /dev/null +++ b/icons/hourglass-cog.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + From 073ffe04482cd6429ef2ea0db40f0f0ddac24f24 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 09:59:25 +0200 Subject: [PATCH 057/157] feat(icons): added `mouth` & `mouth-off` (#4787) * feat(icons): added mouth & mouth-off * feat(icons): added juliansolimando as a co-contributor --- icons/mouth-off.json | 35 +++++++++++++++++++++++++++++++++++ icons/mouth-off.svg | 17 +++++++++++++++++ icons/mouth.json | 35 +++++++++++++++++++++++++++++++++++ icons/mouth.svg | 14 ++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 icons/mouth-off.json create mode 100644 icons/mouth-off.svg create mode 100644 icons/mouth.json create mode 100644 icons/mouth.svg diff --git a/icons/mouth-off.json b/icons/mouth-off.json new file mode 100644 index 000000000..232f813cd --- /dev/null +++ b/icons/mouth-off.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "juliansolimando", + "karsa-mistmere" + ], + "use-cases": [ + "Indicating muted speech or disabled voice input", + "Showing silence in communication interfaces", + "Marking speech restrictions or unavailable talking features", + "Representing loss of taste or oral sensitivity" + ], + "tags": [ + "speech", + "voice", + "talk", + "mute", + "silence", + "speechless", + "taste loss", + "flavor loss", + "ageusia", + "tasteless", + "gustatory", + "oral", + "dental", + "communication", + "accessibility" + ], + "categories": [ + "medical", + "accessibility", + "communication" + ] +} diff --git a/icons/mouth-off.svg b/icons/mouth-off.svg new file mode 100644 index 000000000..67ee9ce56 --- /dev/null +++ b/icons/mouth-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/icons/mouth.json b/icons/mouth.json new file mode 100644 index 000000000..6bf5a9c4e --- /dev/null +++ b/icons/mouth.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "juliansolimando", + "karsa-mistmere" + ], + "use-cases": [ + "Representing speech or verbal expression", + "Indicating taste or oral sensory input", + "Marking dental or oral health information", + "Showing voice input or speaking controls" + ], + "tags": [ + "speech", + "voice", + "talk", + "speaking", + "taste", + "tasting", + "flavor", + "palate", + "tongue", + "gustatory", + "oral", + "dental", + "expression", + "communication", + "accessibility" + ], + "categories": [ + "medical", + "accessibility", + "communication" + ] +} diff --git a/icons/mouth.svg b/icons/mouth.svg new file mode 100644 index 000000000..3269a5d12 --- /dev/null +++ b/icons/mouth.svg @@ -0,0 +1,14 @@ + + + + From 95989f4535ba1c82148522389613e63f31cd4c2d Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 10:07:04 +0200 Subject: [PATCH 058/157] feat(icons): added iv-bag icon (#4821) --- icons/iv-bag.json | 35 +++++++++++++++++++++++++++++++++++ icons/iv-bag.svg | 15 +++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 icons/iv-bag.json create mode 100644 icons/iv-bag.svg diff --git a/icons/iv-bag.json b/icons/iv-bag.json new file mode 100644 index 000000000..986a099c8 --- /dev/null +++ b/icons/iv-bag.json @@ -0,0 +1,35 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Representing intravenous therapy in healthcare interfaces", + "Showing infusion treatments or hydration services", + "Marking medication routes of administration", + "Identifying infusion clinics or patient education materials" + ], + "tags": [ + "intravenous", + "therapy", + "infusion", + "medicine", + "medication", + "treatment", + "healthcare", + "hydration", + "vitamin", + "supplement", + "blood", + "donation", + "chemotherapy", + "clinic", + "feeding tube", + "administration", + "health", + "regeneration" + ], + "categories": [ + "medical" + ] +} diff --git a/icons/iv-bag.svg b/icons/iv-bag.svg new file mode 100644 index 000000000..b932281ff --- /dev/null +++ b/icons/iv-bag.svg @@ -0,0 +1,15 @@ + + + + + From 8a225b9fa7e203b4a95cf946f78b26594856ec70 Mon Sep 17 00:00:00 2001 From: Usama Khan Date: Thu, 10 Sep 2026 03:18:10 -0500 Subject: [PATCH 059/157] fix(icons): changed `lectern` icon (#2925) * Updated icons/lectern.svg * Updated icons/lectern.json * Apply design from karsa * Update lectern.json * Update lectern.svg --------- Co-authored-by: Eric Fennis Co-authored-by: Karsa --- icons/lectern.svg | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/icons/lectern.svg b/icons/lectern.svg index a414aee8e..fd8cc499b 100644 --- a/icons/lectern.svg +++ b/icons/lectern.svg @@ -9,7 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - + + + + From 5d0f64034b79ead46921c8cd88ecffa1e064ee68 Mon Sep 17 00:00:00 2001 From: Samuel Alake <58840187+samuelalake@users.noreply.github.com> Date: Thu, 10 Sep 2026 01:28:57 -0700 Subject: [PATCH 060/157] feat(icons): add `layout-arrow-right` and `layout-arrow-down` (#4541) * feat(icons): add layout-horizontal and layout-vertical Adds two icons for layout direction: two blocks above a left-to-right rail, and two blocks beside a top-to-bottom rail. These match the frame layout direction modes found in design tools and CSS flex-direction (row / column). This fills a gap identified when the flexbox icon request (#399) was closed: "Only missing icons are: flex-direction and flex-wrap icons, plus baseline." The align-* and stretch-* family covers alignment, justification and distribution, but nothing currently depicts direction itself. Design notes: - Reuses the 7x7 rx=1 block already shared by layout-grid, layout-list and layout-panel-*, rather than introducing a new base shape. - The two icons are exact mirrors, with rails on the integer grid (y=18 / x=18) so the 2px stroke stays sharp at low DPI. - The 3x3 chevron is the one used by decimals-arrow-right, which shares the same composition: elements above, directional rail below. * Rename icons * Apply batched suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update usecases --------- Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- icons/layout-arrow-down.json | 34 ++++++++++++++++++++++++++++++++++ icons/layout-arrow-down.svg | 16 ++++++++++++++++ icons/layout-arrow-right.json | 34 ++++++++++++++++++++++++++++++++++ icons/layout-arrow-right.svg | 16 ++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 icons/layout-arrow-down.json create mode 100644 icons/layout-arrow-down.svg create mode 100644 icons/layout-arrow-right.json create mode 100644 icons/layout-arrow-right.svg diff --git a/icons/layout-arrow-down.json b/icons/layout-arrow-down.json new file mode 100644 index 000000000..3cca032fe --- /dev/null +++ b/icons/layout-arrow-down.json @@ -0,0 +1,34 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "samuelalake" + ], + "use-cases": [ + "Setting auto layout direction to vertical in design tools", + "Selecting flex-direction: column in devtools panels", + "Stacking content blocks top to bottom", + "Toggle between horizontal and vertical layouts in design tools", + "Switch to column view in file managers or galleries", + "Set flex-direction to column in css or style panels", + "Indicate vertical stacking mode in ui editors or prototyping tools", + "Choose vertical orientation for responsive layout controls" + ], + "tags": [ + "layout", + "direction", + "flex", + "flexbox", + "flex-direction", + "column", + "auto layout", + "vertical", + "arrange", + "order", + "flow", + "stack" + ], + "categories": [ + "design", + "layout" + ] +} diff --git a/icons/layout-arrow-down.svg b/icons/layout-arrow-down.svg new file mode 100644 index 000000000..69ae00c50 --- /dev/null +++ b/icons/layout-arrow-down.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/icons/layout-arrow-right.json b/icons/layout-arrow-right.json new file mode 100644 index 000000000..2a6329973 --- /dev/null +++ b/icons/layout-arrow-right.json @@ -0,0 +1,34 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "samuelalake" + ], + "use-cases": [ + "Setting auto layout direction to horizontal in design tools", + "Selecting flex-direction: row in devtools panels", + "Switching sections from stacked to side-by-side", + "Switching the canvas to a horizontal layout", + "Choosing side-by-side or two-column display", + "Representing css flex-direction: row in developer tools", + "Toggling panel orientation in a ui", + "Selecting left-to-right flow in design editors" + ], + "tags": [ + "layout", + "direction", + "flex", + "flexbox", + "flex-direction", + "row", + "auto layout", + "horizontal", + "arrange", + "order", + "flow", + "stack" + ], + "categories": [ + "design", + "layout" + ] +} diff --git a/icons/layout-arrow-right.svg b/icons/layout-arrow-right.svg new file mode 100644 index 000000000..7bbd3c921 --- /dev/null +++ b/icons/layout-arrow-right.svg @@ -0,0 +1,16 @@ + + + + + + From b115c04286a4d3722f7598017da7bd3d3e8e48e2 Mon Sep 17 00:00:00 2001 From: Alex Martin Date: Thu, 10 Sep 2026 01:47:42 -0700 Subject: [PATCH 061/157] feat(lab): added `monstera-leaf` icon (#4115) * Added icons/monstera-leaf.svg * Added icons/monstera-leaf.json * Updated icons/monstera-leaf.json * Update icons/monstera-leaf.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * feat(lab): moved `monstera-leaf` icon to lab Co-Authored-By: Claude Opus 5 * Add custom word --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Eric Fennis Co-authored-by: Claude Opus 5 --- .cspell/custom-words.txt | 1 + lab/monstera-leaf.json | 25 +++++++++++++++++++++++++ lab/monstera-leaf.svg | 19 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 lab/monstera-leaf.json create mode 100644 lab/monstera-leaf.svg diff --git a/.cspell/custom-words.txt b/.cspell/custom-words.txt index f2517f0a6..7418171ad 100644 --- a/.cspell/custom-words.txt +++ b/.cspell/custom-words.txt @@ -10,3 +10,4 @@ touchpad ungroup toc sunlounger +monstera diff --git a/lab/monstera-leaf.json b/lab/monstera-leaf.json new file mode 100644 index 000000000..1d89466b3 --- /dev/null +++ b/lab/monstera-leaf.json @@ -0,0 +1,25 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "alx-xo" + ], + "tags": [ + "botanical", + "green", + "foliage", + "vegetation", + "exotic", + "decor", + "nature", + "plant", + "leaf", + "monstera", + "tropical", + "growth" + ], + "categories": [ + "nature", + "sustainability", + "travel" + ] +} diff --git a/lab/monstera-leaf.svg b/lab/monstera-leaf.svg new file mode 100644 index 000000000..81dee51db --- /dev/null +++ b/lab/monstera-leaf.svg @@ -0,0 +1,19 @@ + + + + + + + + + From 2f7d97502278a8ccb97a574ce2c72285be71e600 Mon Sep 17 00:00:00 2001 From: Skajosborn <135985308+skajosborn@users.noreply.github.com> Date: Thu, 10 Sep 2026 04:47:52 -0400 Subject: [PATCH 062/157] feat(icons): added `park` icon (#3177) * Added icons/park.svg * Added icons/park.json * Updated icons/park.svg * Updated icons/park.svg * Updated icons/park.svg * Updated icons/park.svg * Updated icons/park.svg * Updated icons/park.json * Update park.json * Update icons/park.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply design from @jguddas * Add contributor 'jguddas' to park.json * Fix typo in 'use-cased' to 'use-cases' * Apply batched suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * format code --------- Co-authored-by: Jakob Guddas Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/park.json | 31 +++++++++++++++++++++++++++++++ icons/park.svg | 20 ++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 icons/park.json create mode 100644 icons/park.svg diff --git a/icons/park.json b/icons/park.json new file mode 100644 index 000000000..b48002b6a --- /dev/null +++ b/icons/park.json @@ -0,0 +1,31 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "skajosborn", + "jguddas" + ], + "use-cases": [ + "Indicating public parks on maps and navigation apps", + "Marking outdoor recreation areas and picnic zones", + "Highlighting municipal park facilities and services" + ], + "tags": [ + "nature", + "green", + "trees", + "landscape", + "rest", + "walk", + "leisure", + "environment", + "tree", + "bench", + "outdoors", + "recreation" + ], + "categories": [ + "nature", + "navigation", + "travel" + ] +} diff --git a/icons/park.svg b/icons/park.svg new file mode 100644 index 000000000..30d6fb3a3 --- /dev/null +++ b/icons/park.svg @@ -0,0 +1,20 @@ + + + + + + + + + + From ba642ebf42e8db72155e8a8d63d851d37d42c600 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 10:49:40 +0200 Subject: [PATCH 063/157] fix(icons): changed `album`, `book-marked`, `folder-bookmark` icons (#3043) * [github] Added issue template forms * [github] yaml => yml * Syntax fixes * Further syntax fixes * Sort issue templates * Update 02_bug_report.yml * Updated icons/album.svg * Updated icons/album.json * fix(icons): change album, folder-bookmark & book-marked * fix(icons): change album, folder-bookmark & book-marked --------- Co-authored-by: Karsa Co-authored-by: Jakob Guddas Co-authored-by: Eric Fennis --- icons/{book-marked.json => book-bookmark.json} | 10 +++++++++- icons/{book-marked.svg => book-bookmark.svg} | 4 ++-- icons/folder-bookmark.svg | 4 ++-- icons/{album.json => square-bookmark.json} | 10 +++++++++- icons/{album.svg => square-bookmark.svg} | 4 ++-- 5 files changed, 24 insertions(+), 8 deletions(-) rename icons/{book-marked.json => book-bookmark.json} (82%) rename icons/{book-marked.svg => book-bookmark.svg} (50%) rename icons/{album.json => square-bookmark.json} (57%) rename icons/{album.svg => square-bookmark.svg} (56%) diff --git a/icons/book-marked.json b/icons/book-bookmark.json similarity index 82% rename from icons/book-marked.json rename to icons/book-bookmark.json index c3eb07d50..a92736ab2 100644 --- a/icons/book-marked.json +++ b/icons/book-bookmark.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "danielbayley" + "danielbayley", + "karsa-mistmere" ], "use-cases": [], "tags": [ @@ -49,5 +50,12 @@ "text", "development", "gaming" + ], + "aliases": [ + { + "name": "book-marked", + "deprecated": true, + "deprecationReason": "alias.name" + } ] } diff --git a/icons/book-marked.svg b/icons/book-bookmark.svg similarity index 50% rename from icons/book-marked.svg rename to icons/book-bookmark.svg index 4ba30e643..1bbe99fd1 100644 --- a/icons/book-marked.svg +++ b/icons/book-bookmark.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + diff --git a/icons/folder-bookmark.svg b/icons/folder-bookmark.svg index 8083f87f1..730ce045d 100644 --- a/icons/folder-bookmark.svg +++ b/icons/folder-bookmark.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + diff --git a/icons/album.json b/icons/square-bookmark.json similarity index 57% rename from icons/album.json rename to icons/square-bookmark.json index b9eb7d231..9f2e2508c 100644 --- a/icons/album.json +++ b/icons/square-bookmark.json @@ -3,7 +3,8 @@ "contributors": [ "ericfennis", "csandman", - "mittalyashu" + "mittalyashu", + "karsa-mistmere" ], "use-cases": [], "tags": [ @@ -13,5 +14,12 @@ "categories": [ "photography", "multimedia" + ], + "aliases": [ + { + "name": "album", + "deprecated": true, + "deprecationReason": "alias.name" + } ] } diff --git a/icons/album.svg b/icons/square-bookmark.svg similarity index 56% rename from icons/album.svg rename to icons/square-bookmark.svg index 68c07668c..208a2ea8a 100644 --- a/icons/album.svg +++ b/icons/square-bookmark.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + From 6d4501f4d3aa018ee4891f1411c137050dc057b8 Mon Sep 17 00:00:00 2001 From: Ajok Thon <109567209+ajokt123@users.noreply.github.com> Date: Thu, 10 Sep 2026 05:05:51 -0400 Subject: [PATCH 064/157] feat(icons): added peace-sign icon (#3001) * play with image * changes to width * changes to contributing image to show on github * peace-sign * feat(lab): moved `peace-sign` icon to lab Co-Authored-By: Claude Opus 5 --------- Co-authored-by: Brizen Co-authored-by: Eric Fennis Co-authored-by: Claude Opus 5 --- lab/peace-sign.json | 20 ++++++++++++++++++++ lab/peace-sign.svg | 16 ++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 lab/peace-sign.json create mode 100644 lab/peace-sign.svg diff --git a/lab/peace-sign.json b/lab/peace-sign.json new file mode 100644 index 000000000..2109acf03 --- /dev/null +++ b/lab/peace-sign.json @@ -0,0 +1,20 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ajokt123", + "briz123", + "jamiemlaw", + "jguddas" + ], + "tags": [ + "peace", + "emotion", + "positivity", + "chill" + ], + "categories": [ + "communication", + "emoji", + "social" + ] +} diff --git a/lab/peace-sign.svg b/lab/peace-sign.svg new file mode 100644 index 000000000..a875ba237 --- /dev/null +++ b/lab/peace-sign.svg @@ -0,0 +1,16 @@ + + + + + + From 1cb69f6f9c7a5225e81c8d338e2c23b23eeeddb4 Mon Sep 17 00:00:00 2001 From: Mo <118130211+decknamec@users.noreply.github.com> Date: Thu, 10 Sep 2026 11:10:12 +0200 Subject: [PATCH 065/157] fix(icons): correct misspelled tags (#4836) --- icons/activity.json | 2 +- icons/book-heart.json | 2 +- icons/door-stairwell.json | 2 +- icons/graduation-cap.json | 2 +- icons/hard-hat.json | 3 +-- icons/square-activity.json | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/icons/activity.json b/icons/activity.json index ad8fd4a96..b69d29551 100644 --- a/icons/activity.json +++ b/icons/activity.json @@ -22,7 +22,7 @@ "hospital", "defibrillator", "earthquake", - "siesmic", + "seismic", "magnitude", "richter scale", "aftershock", diff --git a/icons/book-heart.json b/icons/book-heart.json index ad4569669..97265e466 100644 --- a/icons/book-heart.json +++ b/icons/book-heart.json @@ -24,7 +24,7 @@ "teens", "teenager", "therapy", - "theraputic", + "therapeutic", "therapist", "planner", "organizer", diff --git a/icons/door-stairwell.json b/icons/door-stairwell.json index 9d4ad47aa..17d55fed5 100644 --- a/icons/door-stairwell.json +++ b/icons/door-stairwell.json @@ -19,7 +19,7 @@ "transition", "access", "structure", - "espiral", + "spiral", "building", "vertical", "movement", diff --git a/icons/graduation-cap.json b/icons/graduation-cap.json index ea0b5b132..03d4db6ee 100644 --- a/icons/graduation-cap.json +++ b/icons/graduation-cap.json @@ -18,7 +18,7 @@ "academic", "hat", "diploma", - "bachlor's", + "bachelor's", "master's", "doctorate" ], diff --git a/icons/hard-hat.json b/icons/hard-hat.json index 58632a25a..256780df3 100644 --- a/icons/hard-hat.json +++ b/icons/hard-hat.json @@ -8,8 +8,7 @@ "tags": [ "helmet", "construction", - "safety", - "savety" + "safety" ], "categories": [ "tools" diff --git a/icons/square-activity.json b/icons/square-activity.json index d2926f331..adf6cf535 100644 --- a/icons/square-activity.json +++ b/icons/square-activity.json @@ -21,7 +21,7 @@ "hospital", "defibrillator", "earthquake", - "siesmic", + "seismic", "magnitude", "richter scale", "aftershock", From 5fb5967884937c87df5b382b0b619db061899193 Mon Sep 17 00:00:00 2001 From: Daniel Bayley Date: Thu, 10 Sep 2026 11:17:21 +0100 Subject: [PATCH 066/157] feat(icons): added `houses` icon (#3241) * feat(icons): added `houses` icon * Update icons/houses.svg * Add contributor 'jguddas' to houses.json * Add use cases for houses icon Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Remove houses from lab --------- Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/houses.json | 32 ++++++++++++++++++++++++++++++++ icons/houses.svg | 15 +++++++++++++++ lab/houses.json | 18 ------------------ lab/houses.svg | 14 -------------- 4 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 icons/houses.json create mode 100644 icons/houses.svg delete mode 100644 lab/houses.json delete mode 100644 lab/houses.svg diff --git a/icons/houses.json b/icons/houses.json new file mode 100644 index 000000000..3d0387f51 --- /dev/null +++ b/icons/houses.json @@ -0,0 +1,32 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "danielbayley", + "jguddas" + ], + "use-cases": [ + "Representing residential neighborhoods on maps", + "Indicating multiple homes or properties in real estate apps", + "Marking housing developments in planning tools" + ], + "tags": [ + "homes", + "housing", + "estate", + "living", + "buildings", + "development", + "residences", + "residential", + "village", + "neighbourhood", + "accommodation", + "community", + "dwellings", + "architecture" + ], + "categories": [ + "buildings", + "home" + ] +} diff --git a/icons/houses.svg b/icons/houses.svg new file mode 100644 index 000000000..b79041cd7 --- /dev/null +++ b/icons/houses.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/lab/houses.json b/lab/houses.json deleted file mode 100644 index e03779370..000000000 --- a/lab/houses.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "../icon.schema.json", - "contributors": [ - "danielbayley" - ], - "tags": [ - "homes", - "property", - "real estate", - "dwellings", - "living", - "rooms", - "door" - ], - "categories": [ - "buildings" - ] -} diff --git a/lab/houses.svg b/lab/houses.svg deleted file mode 100644 index 95b34ebcf..000000000 --- a/lab/houses.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - From d32ef89ef94276e5f63b3676f06f023eb8af0dd0 Mon Sep 17 00:00:00 2001 From: Elena Kovelskikh Date: Thu, 10 Sep 2026 12:17:44 +0200 Subject: [PATCH 067/157] feat(icons): added `notebook-dot` icon (#3228) * Added icons/notebook-dot.svg * Added icons/notebook-dot.json * Update notebook-dot.svg * Apply suggestion from @github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add use-cases field to notebook-dot.json * Apply batched suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/notebook-dot.json | 26 ++++++++++++++++++++++++++ icons/notebook-dot.svg | 19 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 icons/notebook-dot.json create mode 100644 icons/notebook-dot.svg diff --git a/icons/notebook-dot.json b/icons/notebook-dot.json new file mode 100644 index 000000000..35bada0e5 --- /dev/null +++ b/icons/notebook-dot.json @@ -0,0 +1,26 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "elenakovelskikh" + ], + "use-cases": [ + "Indicating newly updated shared notes in team workspaces", + "Marking shared documentation with new information" + ], + "tags": [ + "document", + "file", + "journal", + "page", + "paper", + "record", + "entry", + "notebook", + "notification", + "unread", + "note" + ], + "categories": [ + "communication" + ] +} diff --git a/icons/notebook-dot.svg b/icons/notebook-dot.svg new file mode 100644 index 000000000..8b620f8b0 --- /dev/null +++ b/icons/notebook-dot.svg @@ -0,0 +1,19 @@ + + + + + + + + + From c17f9285779eb4af5a769ed5e6c7feaa741bdbff Mon Sep 17 00:00:00 2001 From: MirazStudio Date: Thu, 10 Sep 2026 15:21:47 +0500 Subject: [PATCH 068/157] feat(icons): add `messages-circle` icon (#4754) * feat: add messages-circle icon * chore: apply bot metadata suggestions * fix: update messages-circle to compliant design and add contributors * Revise use cases for messaging icon Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Mirazstudio-offical Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/messages-circle.json | 40 ++++++++++++++++++++++++++++++++++++++ icons/messages-circle.svg | 14 +++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 icons/messages-circle.json create mode 100644 icons/messages-circle.svg diff --git a/icons/messages-circle.json b/icons/messages-circle.json new file mode 100644 index 000000000..adee57e1c --- /dev/null +++ b/icons/messages-circle.json @@ -0,0 +1,40 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "jguddas", + "karsa-mistmere", + "Mirazstudio-offical" + ], + "use-cases": [ + "Starting a group conversation in chat apps", + "Indicating multiple unread message threads", + "Opening discussions or comment sections in social apps" + ], + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubbles", + "copy", + "multiple", + "discussion", + "interview", + "debate", + "group", + "groupchat", + "threads", + "unread", + "bubble", + "messaging" + ], + "categories": [ + "social", + "communication", + "notifications" + ] +} diff --git a/icons/messages-circle.svg b/icons/messages-circle.svg new file mode 100644 index 000000000..842fb4f1d --- /dev/null +++ b/icons/messages-circle.svg @@ -0,0 +1,14 @@ + + + + From 858b662775a0ac6d7c2549b6e9c3582c70cd1949 Mon Sep 17 00:00:00 2001 From: vuong quang huy <62917858+vqh2602@users.noreply.github.com> Date: Thu, 10 Sep 2026 17:22:43 +0700 Subject: [PATCH 069/157] feat(icons): added `plant-pot` icon (#3122) * Added icons/plant-pot.svg * Added icons/plant-pot.json * Updated icons/plant-pot.svg * Updated icons/plant-pot.svg * Apply batched suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add use-cases field to plant-pot.json Added an empty array for use-cases in the plant-pot icon JSON. * Update plant-pot.svg with new design paths from @karsamistmere * Add contributor 'karsa-mistmere' to plant-pot.json * Add use cases for plant pot icon Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Jakob Guddas Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/plant-pot.json | 26 ++++++++++++++++++++++++++ icons/plant-pot.svg | 15 +++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 icons/plant-pot.json create mode 100644 icons/plant-pot.svg diff --git a/icons/plant-pot.json b/icons/plant-pot.json new file mode 100644 index 000000000..6fe47100f --- /dev/null +++ b/icons/plant-pot.json @@ -0,0 +1,26 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Representing a potted plant in home decor catalogs", + "Indicating indoor plant care or watering reminders", + "Marking gardening supplies in shopping lists" + ], + "tags": [ + "plant", + "leaf", + "nature", + "pot", + "houseplant", + "gardening", + "planter", + "decor", + "indoor" + ], + "categories": [ + "home", + "nature" + ] +} diff --git a/icons/plant-pot.svg b/icons/plant-pot.svg new file mode 100644 index 000000000..b77cd394c --- /dev/null +++ b/icons/plant-pot.svg @@ -0,0 +1,15 @@ + + + + + From c2c28580b3009b8de62224c1fec6f78abb3e37d8 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 12:47:06 +0200 Subject: [PATCH 070/157] fix(icons): changed `cookie` icon (#4815) * Updated icons/cookie.svg * Updated icons/cookie.json * Updated icons/cookie.svg * Updated icons/cookie.json * Updated icons/cookie.json --- icons/cookie.json | 19 +++++++++++++++++-- icons/cookie.svg | 15 +++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/icons/cookie.json b/icons/cookie.json index fa1cf6adc..5cfd44e1c 100644 --- a/icons/cookie.json +++ b/icons/cookie.json @@ -2,14 +2,29 @@ "$schema": "../icon.schema.json", "contributors": [ "it-is-not", - "ericfennis" + "ericfennis", + "karsa-mistmere" + ], + "use-cases": [ + "Managing cookie consent or privacy preferences", + "Representing website cookies and browser storage", + "Indicating cookie settings in privacy or security interfaces", + "Representing cookies as food in recipes, menus or food-related interfaces" ], "use-cases": [], "tags": [ "biscuit", + "snack", + "dessert", + "food", + "sweet", + "bakery", + "consent", "privacy", "legal", - "food" + "tracking", + "browser", + "website" ], "categories": [ "account", diff --git a/icons/cookie.svg b/icons/cookie.svg index 1bdedba5e..6abf7ca2d 100644 --- a/icons/cookie.svg +++ b/icons/cookie.svg @@ -9,10 +9,13 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - + + + + + + + + + From 7cf805a4086fbb0c2cef6c07166343c2a4ecc30f Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 15:28:15 +0200 Subject: [PATCH 071/157] fix(icons): remove duplicate use-cases prop from cookie.json (#4838) --- icons/cookie.json | 1 - 1 file changed, 1 deletion(-) diff --git a/icons/cookie.json b/icons/cookie.json index 5cfd44e1c..6499aa77f 100644 --- a/icons/cookie.json +++ b/icons/cookie.json @@ -11,7 +11,6 @@ "Indicating cookie settings in privacy or security interfaces", "Representing cookies as food in recipes, menus or food-related interfaces" ], - "use-cases": [], "tags": [ "biscuit", "snack", From ea1242d384f144f62bba5380aed3e83011a2f48b Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 15:34:39 +0200 Subject: [PATCH 072/157] fix(icons): also fix album icon in HomeHeroIconsCard.data.ts (#4839) --- docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts b/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts index 7563d4244..588cdbaf0 100644 --- a/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts +++ b/docs/.vitepress/theme/components/home/HomeHeroIconsCard.data.ts @@ -18,7 +18,7 @@ const pickIcons = [ 'clapperboard', 'tool-case', 'printer', - 'album', + 'square-bookmark', 'pencil-ruler', 'calendar', 'brain', From e4be16acd5105252d47581ad91f3f83c7228d7cf Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 16:07:18 +0200 Subject: [PATCH 073/157] feat(docs): added "How to use Lucide icons" section to resources (#4829) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(docs): replace missing LucideIcon icon names in guides * feat(docs): add How to use Lucide icons section to resources * feat(docs): update accessibility guide links * fix(docs): fix dead link in guide.md * fix(docs): fix color in example image * fix(docs): fix overlay color in example images * fix(how-to): added caution guidance type & rework some guidance rules relating to compact interfaces * fix(how-to): replaced caution items, what the heck, when did I reorder these 😅 * fix(how-to): fix colors --------- Co-authored-by: Eric Fennis --- docs/.vitepress/config.ts | 1 + docs/.vitepress/markdown/example.ts | 33 ++- docs/.vitepress/sidebar/angular.ts | 2 +- docs/.vitepress/sidebar/astro.ts | 2 +- docs/.vitepress/sidebar/index.ts | 1 + docs/.vitepress/sidebar/lucide.ts | 2 +- docs/.vitepress/sidebar/preact.ts | 2 +- docs/.vitepress/sidebar/react.ts | 2 +- docs/.vitepress/sidebar/resources.ts | 19 ++ docs/.vitepress/sidebar/solid.ts | 2 +- docs/.vitepress/sidebar/static.ts | 2 +- docs/.vitepress/sidebar/svelte.ts | 2 +- docs/.vitepress/sidebar/vue.ts | 2 +- docs/.vitepress/theme/style.css | 4 + docs/contribute/icons/index.md | 2 +- docs/guide/accessibility.md | 237 --------------- docs/guide/angular/advanced/accessibility.md | 2 +- docs/guide/astro/advanced/accessibility.md | 2 +- docs/guide/index.md | 2 +- docs/guide/lucide/advanced/accessibility.md | 2 +- docs/guide/preact/advanced/accessibility.md | 2 +- docs/guide/react/advanced/accessibility.md | 2 +- docs/guide/solid/advanced/accessibility.md | 2 +- docs/guide/svelte/advanced/accessibility.md | 2 +- docs/guide/version-1.md | 2 +- docs/guide/vue/advanced/accessibility.md | 2 +- docs/how-to/accessibility.md | 271 ++++++++++++++++++ docs/how-to/icon-guide.md | 190 ++++++++++++ docs/how-to/index.md | 29 ++ docs/images/a11y/alttext-buttons.svg | 33 --- docs/images/a11y/alttext-iconbuttons.svg | 44 --- docs/images/a11y/alttext-standalone.svg | 92 ------ docs/images/a11y/consistency.svg | 40 --- docs/images/a11y/contrast.svg | 20 -- docs/images/a11y/contrast_do.svg | 5 + docs/images/a11y/contrast_dont.svg | 5 + docs/images/a11y/decorative_icons_do.svg | 14 + docs/images/a11y/decorative_icons_dont.svg | 14 + docs/images/a11y/distinct_use_case_do.svg | 16 ++ docs/images/a11y/distinct_use_case_dont.svg | 15 + docs/images/a11y/functional_icons_do.svg | 35 +++ docs/images/a11y/functional_icons_dont.svg | 39 +++ docs/images/a11y/icon_button_do.svg | 14 + docs/images/a11y/icon_button_dont.svg | 14 + docs/images/a11y/interactive_icons_do.svg | 8 + docs/images/a11y/interactive_icons_dont.svg | 5 + docs/images/a11y/interactivity.svg | 18 -- docs/images/a11y/meaningfulness.svg | 94 ------ docs/images/a11y/same_use_case_do.svg | 16 ++ docs/images/a11y/same_use_case_dont.svg | 16 ++ docs/images/a11y/state_do.svg | 46 +++ docs/images/a11y/state_dont.svg | 21 ++ docs/images/a11y/target-size.svg | 49 ---- docs/images/a11y/target_size_do.svg | 22 ++ docs/images/a11y/target_size_dont.svg | 22 ++ docs/images/a11y/use-of-color.svg | 191 ------------ docs/images/a11y/visible-labels.svg | 23 -- docs/images/how-to/appropriate_context_do.svg | 16 ++ .../how-to/appropriate_context_dont.svg | 18 ++ .../how-to/compact_interfaces_caution_1.svg | 41 +++ .../how-to/compact_interfaces_caution_2.svg | 40 +++ docs/images/how-to/compact_interfaces_do.svg | 45 +++ .../images/how-to/compact_interfaces_dont.svg | 39 +++ .../how-to/compact_interfaces_labels_do.svg | 29 ++ .../how-to/compact_interfaces_labels_dont.svg | 60 ++++ .../how-to/consistent_icon_function_do.svg | 27 ++ .../how-to/consistent_icon_function_dont.svg | 24 ++ .../how-to/consistent_icon_meaning_do.svg | 19 ++ .../how-to/consistent_icon_meaning_dont.svg | 21 ++ docs/images/how-to/native_ui_elements_do.svg | 47 +++ .../images/how-to/native_ui_elements_dont.svg | 9 + docs/images/how-to/repeated_status_do.svg | 15 + docs/images/how-to/repeated_status_dont.svg | 15 + docs/images/how-to/state_do.svg | 46 +++ docs/images/how-to/visual_anchor_do.svg | 17 ++ docs/images/how-to/visual_anchor_dont.svg | 22 ++ docs/vercel.json | 7 +- 77 files changed, 1442 insertions(+), 871 deletions(-) delete mode 100644 docs/guide/accessibility.md create mode 100644 docs/how-to/accessibility.md create mode 100644 docs/how-to/icon-guide.md create mode 100644 docs/how-to/index.md delete mode 100644 docs/images/a11y/alttext-buttons.svg delete mode 100644 docs/images/a11y/alttext-iconbuttons.svg delete mode 100644 docs/images/a11y/alttext-standalone.svg delete mode 100644 docs/images/a11y/consistency.svg delete mode 100644 docs/images/a11y/contrast.svg create mode 100644 docs/images/a11y/contrast_do.svg create mode 100644 docs/images/a11y/contrast_dont.svg create mode 100644 docs/images/a11y/decorative_icons_do.svg create mode 100644 docs/images/a11y/decorative_icons_dont.svg create mode 100644 docs/images/a11y/distinct_use_case_do.svg create mode 100644 docs/images/a11y/distinct_use_case_dont.svg create mode 100644 docs/images/a11y/functional_icons_do.svg create mode 100644 docs/images/a11y/functional_icons_dont.svg create mode 100644 docs/images/a11y/icon_button_do.svg create mode 100644 docs/images/a11y/icon_button_dont.svg create mode 100644 docs/images/a11y/interactive_icons_do.svg create mode 100644 docs/images/a11y/interactive_icons_dont.svg delete mode 100644 docs/images/a11y/interactivity.svg delete mode 100644 docs/images/a11y/meaningfulness.svg create mode 100644 docs/images/a11y/same_use_case_do.svg create mode 100644 docs/images/a11y/same_use_case_dont.svg create mode 100644 docs/images/a11y/state_do.svg create mode 100644 docs/images/a11y/state_dont.svg delete mode 100644 docs/images/a11y/target-size.svg create mode 100644 docs/images/a11y/target_size_do.svg create mode 100644 docs/images/a11y/target_size_dont.svg delete mode 100644 docs/images/a11y/use-of-color.svg delete mode 100644 docs/images/a11y/visible-labels.svg create mode 100644 docs/images/how-to/appropriate_context_do.svg create mode 100644 docs/images/how-to/appropriate_context_dont.svg create mode 100644 docs/images/how-to/compact_interfaces_caution_1.svg create mode 100644 docs/images/how-to/compact_interfaces_caution_2.svg create mode 100644 docs/images/how-to/compact_interfaces_do.svg create mode 100644 docs/images/how-to/compact_interfaces_dont.svg create mode 100644 docs/images/how-to/compact_interfaces_labels_do.svg create mode 100644 docs/images/how-to/compact_interfaces_labels_dont.svg create mode 100644 docs/images/how-to/consistent_icon_function_do.svg create mode 100644 docs/images/how-to/consistent_icon_function_dont.svg create mode 100644 docs/images/how-to/consistent_icon_meaning_do.svg create mode 100644 docs/images/how-to/consistent_icon_meaning_dont.svg create mode 100644 docs/images/how-to/native_ui_elements_do.svg create mode 100644 docs/images/how-to/native_ui_elements_dont.svg create mode 100644 docs/images/how-to/repeated_status_do.svg create mode 100644 docs/images/how-to/repeated_status_dont.svg create mode 100644 docs/images/how-to/state_do.svg create mode 100644 docs/images/how-to/visual_anchor_do.svg create mode 100644 docs/images/how-to/visual_anchor_dont.svg diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 5ca18f1a2..175fa5066 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -98,6 +98,7 @@ export default defineConfig({ text: 'Resources', items: [ ...resourcesSidebar[0].items, + { text: 'How to use icons', link: '/how-to/' }, { text: 'Contributing icons', link: '/contribute/icons/' }, ], }, diff --git a/docs/.vitepress/markdown/example.ts b/docs/.vitepress/markdown/example.ts index a5f3c18ab..8f1527a25 100644 --- a/docs/.vitepress/markdown/example.ts +++ b/docs/.vitepress/markdown/example.ts @@ -5,6 +5,17 @@ import type { RenderRule } from 'markdown-it/lib/renderer.mjs'; import container from 'markdown-it-container'; type ContainerArgs = [typeof container, string, { render: RenderRule }]; +type GuidanceType = 'do' | 'dont' | 'caution'; + +const isGuidanceOpenToken = (type: string) => + type === 'container_do_open' || + type === 'container_dont_open' || + type === 'container_caution_open'; + +const isGuidanceCloseToken = (type: string) => + type === 'container_do_close' || + type === 'container_dont_close' || + type === 'container_caution_close'; const parseInfo = (info: string, marker: string) => info.trim().slice(marker.length).trim(); @@ -81,12 +92,12 @@ const hasTopLevelContent = (tokens: Parameters[0], index: number) => return false; } - if (token.type === 'container_do_open' || token.type === 'container_dont_open') { + if (isGuidanceOpenToken(token.type)) { guidanceDepth += 1; continue; } - if (token.type === 'container_do_close' || token.type === 'container_dont_close') { + if (isGuidanceCloseToken(token.type)) { guidanceDepth -= 1; continue; } @@ -107,7 +118,7 @@ const hasGuidance = (tokens: Parameters[0], index: number) => { return false; } - if (token.type === 'container_do_open' || token.type === 'container_dont_open') { + if (isGuidanceOpenToken(token.type)) { return true; } } @@ -123,7 +134,7 @@ const isFirstGuidance = (tokens: Parameters[0], index: number) => { return true; } - if (token.type === 'container_do_open' || token.type === 'container_dont_open') { + if (isGuidanceOpenToken(token.type)) { return false; } } @@ -141,6 +152,12 @@ const getExampleOpenIndex = (tokens: Parameters[0], index: number) = return index; }; +const labels: Record = { + do: ` Do`, + dont: ` Don't`, + caution: ` Caution`, +}; + export default function examplePlugin(md: MarkdownIt) { const escapeHtml = md.utils.escapeHtml; @@ -170,7 +187,7 @@ export default function examplePlugin(md: MarkdownIt) { }, ]; - const createGuidanceContainer = (type: 'do' | 'dont'): ContainerArgs => [ + const createGuidanceContainer = (type: GuidanceType): ContainerArgs => [ container, type, { @@ -185,10 +202,7 @@ export default function examplePlugin(md: MarkdownIt) { hasTopLevelContent(tokens, exampleOpenIndex) && isFirstGuidance(tokens, idx) ? '
\n' : ''; - const label = - type === 'do' - ? ` Do` - : ` Don't`; + const label = labels[type]; return `${contentClose}
${media}
${label}
\n`; } @@ -201,4 +215,5 @@ export default function examplePlugin(md: MarkdownIt) { md.use(...createExampleContainer()); md.use(...createGuidanceContainer('do')); md.use(...createGuidanceContainer('dont')); + md.use(...createGuidanceContainer('caution')); } diff --git a/docs/.vitepress/sidebar/angular.ts b/docs/.vitepress/sidebar/angular.ts index df244e363..a0be89660 100644 --- a/docs/.vitepress/sidebar/angular.ts +++ b/docs/.vitepress/sidebar/angular.ts @@ -94,7 +94,7 @@ export const angularSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/astro.ts b/docs/.vitepress/sidebar/astro.ts index 4aaa77c69..e5b1e22e4 100644 --- a/docs/.vitepress/sidebar/astro.ts +++ b/docs/.vitepress/sidebar/astro.ts @@ -69,7 +69,7 @@ export const astroSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/index.ts b/docs/.vitepress/sidebar/index.ts index aaa1905f5..62fa9d001 100644 --- a/docs/.vitepress/sidebar/index.ts +++ b/docs/.vitepress/sidebar/index.ts @@ -36,6 +36,7 @@ const sidebar: Sidebar = { '/guide/react-native/': reactNativeSidebar, '/guide/angular/': angularSidebar, '/guide/static/': lucideStaticSidebar, + '/how-to': resourcesSidebar, '/community': resourcesSidebar, '/contribute': resourcesSidebar, '/license': resourcesSidebar, diff --git a/docs/.vitepress/sidebar/lucide.ts b/docs/.vitepress/sidebar/lucide.ts index b61c2d6f1..9bc14d3a5 100644 --- a/docs/.vitepress/sidebar/lucide.ts +++ b/docs/.vitepress/sidebar/lucide.ts @@ -79,7 +79,7 @@ export const lucideSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, ], diff --git a/docs/.vitepress/sidebar/preact.ts b/docs/.vitepress/sidebar/preact.ts index 7ecf24fc6..dc3936e1a 100644 --- a/docs/.vitepress/sidebar/preact.ts +++ b/docs/.vitepress/sidebar/preact.ts @@ -89,7 +89,7 @@ export const preactSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/react.ts b/docs/.vitepress/sidebar/react.ts index 5d85386ea..97987f46f 100644 --- a/docs/.vitepress/sidebar/react.ts +++ b/docs/.vitepress/sidebar/react.ts @@ -100,7 +100,7 @@ export const reactSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/resources.ts b/docs/.vitepress/sidebar/resources.ts index 6e0530ec9..4706233f3 100644 --- a/docs/.vitepress/sidebar/resources.ts +++ b/docs/.vitepress/sidebar/resources.ts @@ -29,6 +29,25 @@ export const resourcesSidebar = [ }, ], }, + { + text: 'How to use Lucide icons', + items: [ + { + text: 'Getting started', + link: '/how-to/', + }, + { + text: 'Accessibility guide', + link: '/how-to/accessibility', + desc: 'Learn how to make icons readable, understandable, and usable with assistive technology.', + }, + { + text: 'How to pick the right icon', + link: '/how-to/icon-guide', + desc: 'Learn how to decide when icons belong in an interface and how to pick symbols people are likely to recognize.', + }, + ], + }, { text: 'Contributing icons', items: [ diff --git a/docs/.vitepress/sidebar/solid.ts b/docs/.vitepress/sidebar/solid.ts index 78f1855a2..6943891ab 100644 --- a/docs/.vitepress/sidebar/solid.ts +++ b/docs/.vitepress/sidebar/solid.ts @@ -90,7 +90,7 @@ export const solidSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/static.ts b/docs/.vitepress/sidebar/static.ts index 6628623a6..d21a30e2a 100644 --- a/docs/.vitepress/sidebar/static.ts +++ b/docs/.vitepress/sidebar/static.ts @@ -75,7 +75,7 @@ export const lucideStaticSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/svelte.ts b/docs/.vitepress/sidebar/svelte.ts index 80dbf365f..a12fca40d 100644 --- a/docs/.vitepress/sidebar/svelte.ts +++ b/docs/.vitepress/sidebar/svelte.ts @@ -79,7 +79,7 @@ export const svelteSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/sidebar/vue.ts b/docs/.vitepress/sidebar/vue.ts index 3840ef7bd..00452d6c7 100644 --- a/docs/.vitepress/sidebar/vue.ts +++ b/docs/.vitepress/sidebar/vue.ts @@ -85,7 +85,7 @@ export const vueSidebar = [ items: [ { text: 'Accessibility in depth', - link: '/guide/accessibility', + link: '/how-to/accessibility', desc: 'Accessibility best practices', }, { diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css index f67aed77e..950950f4b 100644 --- a/docs/.vitepress/theme/style.css +++ b/docs/.vitepress/theme/style.css @@ -286,6 +286,10 @@ html { --example-guidance-label-bg: var(--vp-c-danger-1); } +.example-guidance--caution { + --example-guidance-label-bg: var(--vp-c-warning-1); +} + @media (min-width: 640px) { .example-block { display: grid; diff --git a/docs/contribute/icons/index.md b/docs/contribute/icons/index.md index 0f5fb6624..6ff34f856 100644 --- a/docs/contribute/icons/index.md +++ b/docs/contribute/icons/index.md @@ -17,7 +17,7 @@ This guide explains how to design and prepare icons for Lucide. ## What this guide covers - + ## Use your preferred design tool diff --git a/docs/guide/accessibility.md b/docs/guide/accessibility.md deleted file mode 100644 index 55268b1e9..000000000 --- a/docs/guide/accessibility.md +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Accessibility -description: Learn how to make your icons accessible to all users, including those with disabilities. ---- - -# Accessibility in depth - -Icons are pictures that show what something means without using words. They can be very helpful -because they can quickly give information. - -However, not everyone can understand them easily. When using icons it is very important to consider -the following aspects of accessibility. - -::: info -By default, we hide icons from screen readers using `aria-hidden="true"`. -You can make them accessible yourself by following the guidelines below. -::: - -## Provide visible labels - -Icons are a helpful tool to improve perception, but they aren't a replacement for text. - -In most cases, it is probably a good idea to also provide a textual representation of your icon's -function. - - - -## Contrast - -Ensure there's enough contrast between the icon and its background so that it's visible to people -with low vision or color vision deficiencies. - -We recommend -following [WCAG 2.1 SC 1.4.3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html). - - - -## Use of color - -Avoid relying solely on color to convey meaning in icons, as some users may have color blindness. -Instead, use additional visual cues like shape, shading or text. - - - -## Interactivity - -Ensure that interactive icons are accessible via keyboard navigation and provide clear feedback when -activated. - - - -In most cases this is easily done by wrapping them in icon buttons. - -## Minimum target size - -Small targets can be difficult to click or touch, if your icon is interactive, we recommend that it -should have a minimum target size of 44×44 pixels. - - - -In practice, this doesn't necessarily mean that the icon itself should be this large, only its -interactive wrapper element. - -## Meaningfulness - -Icons should represent concepts or actions in a universally understandable way. Avoid using abstract -or ambiguous, or culture-specific symbols that might confuse some users. - - - -## Consistency - -Maintain consistency in icon design and usage across your interface to help users learn and -understand their meanings more easily. - - - -## Text Alternatives - -You may have to provide text labels or alternative text descriptions for icons, especially for -screen readers used by people with visual impairments. - -However: descriptions should only be provided to standalone icons that aren't purely decorative, as -providing accessible names to non-functional elements only increases clutter when using screen -readers. - -### On standalone icons - -Icons are usually very unlikely to stand on their own with no semantically meaningful wrapper -element. In most cases they will be part of a badge, button (including icon buttons), navigation -item or other interactive UI element. - -::: warning -In case some of your icons stand alone, and they serve a non-decorative function, make sure to -provide the appropriate accessible label for them. -::: - - - -In general try to avoid using functional icons with no interactivity, we recommend that: - -1) you either add a visible description next to them, or -2) place them in badges, labels or on buttons, and at least add a tooltip to them. - -In any such case, it is preferred that the accessible name be provided for these interactive -elements (badges, buttons, nav items etc.) only, _not_ the icons themselves. - -### On buttons - -Do not provide an accessible label to icons when used on a button, as this label will be read out by -screen readers, leading to nonsensical text. - - - - -::: details Code examples - -```tsx -// Don't do this - - -// Do this, just leave it - -``` - -::: - -### On icon buttons - -Icon buttons are buttons that do not contain any visible text apart from the icon itself (think of -the close button of a dialog for example). - -As previously stated, you should provide your accessible label on the icon button itself, not the -contained icon. - - - -::: details Code examples - -```tsx -// Don't do this - - -// Don't do this either - - -// This works but might not be the best solution, see below - - -// Do this instead - -``` - -::: - -## A note on `aria-label` - -Although you could provide accessible labels to your elements via the `aria-label` attribute, we -generally recommend avoiding this and instead suggest that you use your chosen CSS framework's " -visually hidden" utility whenever possible. You can -[read more about why `aria-label` might not be the best solution](https://gomakethings.com/revisting-aria-label-versus-a-visually-hidden-class/). - -### Example - Radix UI - -Use [Radix UI's built-in accessible icon utility component](https://www.radix-ui.com/primitives/docs/utilities/accessible-icon). - -```tsx -import { ArrowRightIcon } from 'lucide-react'; -import { AccessibleIcon } from '@radix-ui/react-accessible-icon'; - - - - -``` - -### Example - Bootstrap - -```html - -
- - Phone number -
-``` - -### Example - Tailwind CSS - -```html - -
- - Phone number -
-``` - -If you're not sure, you may consider learning more -about [how to hide content.](https://www.a11yproject.com/posts/how-to-hide-content/) - -## Further resources - -We also recommend checking out the following resources about accessibility: - -- [Web Content Accessibility Guidelines (WCAG) 2.1](https://www.w3.org/TR/WCAG21/) -- [Web Accessibility Initiative (WAI)](https://www.w3.org/WAI/) -- [Learn accessibility on web.dev](https://web.dev/learn/accessibility) -- [Inclusive Components](https://inclusive-components.design/) -- [A11yTalks](https://www.a11ytalks.com/) -- [A11y automation tracker](https://a11y-automation.dev/) -- [The A11Y Project](https://www.a11yproject.com/) - - diff --git a/docs/guide/angular/advanced/accessibility.md b/docs/guide/angular/advanced/accessibility.md index 22d16710f..bd370726a 100644 --- a/docs/guide/angular/advanced/accessibility.md +++ b/docs/guide/angular/advanced/accessibility.md @@ -17,7 +17,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in Angular. diff --git a/docs/guide/astro/advanced/accessibility.md b/docs/guide/astro/advanced/accessibility.md index 04caa2752..4b13d4645 100644 --- a/docs/guide/astro/advanced/accessibility.md +++ b/docs/guide/astro/advanced/accessibility.md @@ -17,7 +17,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in Astro. diff --git a/docs/guide/index.md b/docs/guide/index.md index 23d43cc29..ffe370308 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -26,7 +26,7 @@ In addition to design, code is also important. Assets like icons can significant Icons are pictures that show what something means without using words. They can be very helpful because they can quickly give information. -However, not everyone can understand them easily. Read more about [how to use Lucide in an accessible way](./accessibility.md). +However, not everyone can understand them easily. Read more about [how to use Lucide in an accessible way](../how-to/accessibility.md). ## Official Packages diff --git a/docs/guide/lucide/advanced/accessibility.md b/docs/guide/lucide/advanced/accessibility.md index c02cc8f3e..290868039 100644 --- a/docs/guide/lucide/advanced/accessibility.md +++ b/docs/guide/lucide/advanced/accessibility.md @@ -16,7 +16,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in your app. diff --git a/docs/guide/preact/advanced/accessibility.md b/docs/guide/preact/advanced/accessibility.md index f7f99d347..18ee27981 100644 --- a/docs/guide/preact/advanced/accessibility.md +++ b/docs/guide/preact/advanced/accessibility.md @@ -17,7 +17,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in Preact. diff --git a/docs/guide/react/advanced/accessibility.md b/docs/guide/react/advanced/accessibility.md index c7e92d84e..e42436021 100644 --- a/docs/guide/react/advanced/accessibility.md +++ b/docs/guide/react/advanced/accessibility.md @@ -16,7 +16,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in React. diff --git a/docs/guide/solid/advanced/accessibility.md b/docs/guide/solid/advanced/accessibility.md index c76a1c14f..39a224f55 100644 --- a/docs/guide/solid/advanced/accessibility.md +++ b/docs/guide/solid/advanced/accessibility.md @@ -16,7 +16,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in Solid. diff --git a/docs/guide/svelte/advanced/accessibility.md b/docs/guide/svelte/advanced/accessibility.md index 5bd626f89..73747093b 100644 --- a/docs/guide/svelte/advanced/accessibility.md +++ b/docs/guide/svelte/advanced/accessibility.md @@ -17,7 +17,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in Svelte. diff --git a/docs/guide/version-1.md b/docs/guide/version-1.md index def423ff0..e16babd6f 100644 --- a/docs/guide/version-1.md +++ b/docs/guide/version-1.md @@ -63,7 +63,7 @@ Also, a `llms.txt` is now available for LLMs to use. We have improved the accessibility of our icons by setting `aria-hidden` to `true` by default. This change ensures that screen readers will ignore icons that are purely decorative, improving the overall accessibility of your applications. If you need to make an icon accessible, you can provide an appropriate `aria-label` or add a `title` attribute to the icon element. -See our [accessibility in-depth guide](/guide/accessibility) for more details and best practices on making your icons accessible. +See our [accessibility in-depth guide](/how-to/accessibility) for more details and best practices on making your icons accessible. ## Removed UMD build, only ESM and CJS now diff --git a/docs/guide/vue/advanced/accessibility.md b/docs/guide/vue/advanced/accessibility.md index 7302344e6..e7808bb13 100644 --- a/docs/guide/vue/advanced/accessibility.md +++ b/docs/guide/vue/advanced/accessibility.md @@ -17,7 +17,7 @@ Most of the time, icons are used purely for decoration or visual reinforcement. For a broader explanation of this, and other best practices on how to use icons accessibly in your application, please refer to our detailed guide on accessibility: - + Only if an icon **conveys essential meaning on its own** should it be made accessible. The sections below explain how to do that in Vue. diff --git a/docs/how-to/accessibility.md b/docs/how-to/accessibility.md new file mode 100644 index 000000000..441944045 --- /dev/null +++ b/docs/how-to/accessibility.md @@ -0,0 +1,271 @@ +--- +title: Accessibility +description: Learn how to make your icons accessible to all users, including those with disabilities. +--- + + + +# Accessibility in depth + +Icons are pictures that convey meaning without using words. + +They can help people scan an interface, recognize actions, and understand status quickly. + +Not everyone understands icons easily. Use the following accessibility rules when you add icons to an interface. + +::: tip +Lucide icons are hidden from screen readers by default with `aria-hidden="true"`. + +Add accessible labels when icons carry meaning or act as controls. +::: + +## Provide visible labels + +Icons can improve scanning, but they aren't a replacement for text. + +Text helps people understand actions and navigation more reliably than icons alone. + +:::: example +::: do +Provide a written description of your interactive elements. +::: +::: dont +Don't rely on icons alone to communicate what elements do. +::: +:::: + +## Provide enough contrast + +Use enough contrast between an icon and its background. Low contrast makes icons harder to see for people with low vision or color vision deficiencies. + +Follow [WCAG 2.1 SC 1.4.3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html) when contrast requirements apply. + +:::: example +::: do ../images/a11y/contrast_do.svg?raw=true +Use a contrast ratio of at least 4.5:1. +::: +::: dont ../images/a11y/contrast_dont.svg?raw=true +Don't use low contrast. +::: +:::: + +## Do not rely on color alone + +Use non-color cues like shape, shading, or text to mark state, status, and validity. Color can support meaning, but it must not be the only cue. + +:::: example +::: do ../images/a11y/state_do.svg?raw=true +Mark state with non-color visual cues too. +::: +::: dont ../images/a11y/state_dont.svg?raw=true +Don't mark state only with color. +::: +:::: + +## Make interactive icons focusable + +Wrap interactive icons in semantic elements. Icons that perform actions need keyboard access and clear feedback when activated. + +:::: example +::: do ../images/a11y/interactive_icons_do.svg?raw=true +Wrap interactive icons in semantic elements, such as buttons, so they are focusable. +::: +::: dont ../images/a11y/interactive_icons_dont.svg?raw=true +Don't leave interactive icons unable to be focused. +::: +:::: + +## Use a large enough target size + +Use a large enough target size for interactive icon controls. Small targets can be difficult to click or tap. + +:::: example +::: do ../images/a11y/target_size_do.svg?raw=true +Keep the target size at a minimum of 44 by 44 pixels. +::: +::: dont ../images/a11y/target_size_dont.svg?raw=true +Don't make the target size smaller than 44 by 44 pixels. +::: +:::: + +The icon itself does not need to be 44 by 44 pixels. The interactive wrapper needs to meet the target size. + +## Choose universal symbols when possible + +Choose icons that are widely recognized for your use case. Avoid icons that only make sense to a narrow audience. + +:::: example +::: do +Pick icons that are universal symbols for your use case. +::: +::: dont +Don't pick icons that are not universally recognizable for your use case. +::: +:::: + +## Avoid cultural or linguistic shortcuts + +Choose icons with a clear connection to the concept. Puns, idioms, and culture-specific references can be difficult to understand or translate. + +:::: example +::: do +Pick icons with a clear connection to the concept you want to represent. +::: +::: dont +Don't pick icons based on puns or other cultural or linguistic cues. +::: +:::: + +## Use different icons for different meanings + +Use different icons for different meanings. Reusing one icon for unrelated concepts makes the interface harder to learn. + +:::: example +::: do ../images/a11y/distinct_use_case_do.svg?raw=true +Use different icons for distinct purposes or meanings. +::: +::: dont ../images/a11y/distinct_use_case_dont.svg?raw=true +Don't use the same icon for multiple distinct purposes or meanings, especially in the same context. +::: +:::: + +## Use the same icon for the same meaning + +Use the same icon for the same meaning. Consistent icon use helps people recognize familiar actions across an interface. + +:::: example +::: do ../images/a11y/same_use_case_do.svg?raw=true +Use the same icon for the same purpose or function. +::: +::: dont ../images/a11y/same_use_case_dont.svg?raw=true +Don't use different icons for the same purpose or function. +::: +:::: + +## Hide decorative icons from assistive technology + +Keep decorative icons hidden from screen readers. Decorative icons repeat nearby text or add visual styling without adding meaning. + +:::: example +::: do ../images/a11y/decorative_icons_do.svg?raw=true +Omit `aria-label` on decorative icons. +::: +::: dont ../images/a11y/decorative_icons_dont.svg?raw=true +Don't provide accessible labels to decorative icons. +::: +:::: + +## Label functional standalone icons carefully + +Avoid standalone functional icons when possible. If an icon carries meaning without nearby text or an interactive wrapper, give that icon an accessible label. + +:::: example +::: do ../images/a11y/functional_icons_do.svg?raw=true +Provide an accessible label for functional icons, but avoid standalone functional icons when possible. +::: +::: dont ../images/a11y/functional_icons_dont.svg?raw=true +Don't provide an accessible label for purely decorative icons. +::: +:::: + +In many cases, add visible text, place the icon inside a badge or button, or add a tooltip to the meaningful wrapper instead. + +## Label icon buttons on the button + +Give icon buttons an accessible name. Put the name on the button or in visually hidden text inside the button, not on the icon. + +:::: example +::: do ../images/a11y/icon_button_do.svg?raw=true +Provide the accessible label for icon buttons themselves. +::: +::: dont ../images/a11y/icon_button_dont.svg?raw=true +Don't provide the accessible label for icons on icon buttons. +::: +:::: + +::: details Code examples + +```tsx +// Don't do this + + +// Don't do this either + + +// This works, but visually hidden text is usually more reliable + + +// Prefer this + +``` + +::: + +## A note on `aria-label` + +You can provide accessible labels with `aria-label`, but visually hidden text is often more reliable. + +Read [why `aria-label` might not be the best solution](https://gomakethings.com/revisting-aria-label-versus-a-visually-hidden-class/) for more context. + +### Radix UI + +Use [Radix UI's built-in accessible icon utility component](https://www.radix-ui.com/primitives/docs/utilities/accessible-icon). + +```tsx +import { ArrowRightIcon } from 'lucide-react'; +import { AccessibleIcon } from '@radix-ui/react-accessible-icon'; + + + +; +``` + +### Bootstrap + +```html +
+ + Phone number +
+``` + +### Tailwind CSS + +```html +
+ + Phone number +
+``` + +If you are not sure which hiding technique to use, read [how to hide content](https://www.a11yproject.com/posts/how-to-hide-content/). + +## Further resources + +Use these accessibility resources: + +- [Web Content Accessibility Guidelines (WCAG) 2.1](https://www.w3.org/TR/WCAG21/) +- [Web Accessibility Initiative (WAI)](https://www.w3.org/WAI/) +- [Learn accessibility on web.dev](https://web.dev/learn/accessibility) +- [Inclusive Components](https://inclusive-components.design/) +- [A11yTalks](https://www.a11ytalks.com/) +- [A11y automation tracker](https://a11y-automation.dev/) +- [The A11Y Project](https://www.a11yproject.com/) diff --git a/docs/how-to/icon-guide.md b/docs/how-to/icon-guide.md new file mode 100644 index 000000000..bc6f48a26 --- /dev/null +++ b/docs/how-to/icon-guide.md @@ -0,0 +1,190 @@ +--- +title: How to pick the right icon +description: Learn when to use icons, when to avoid them, and how to choose icons that make interfaces easier to understand. +--- + + + +# How to pick the right icon + +Icons can make an interface easier to scan. They work best when people already understand the symbol or when the icon appears with a clear text label. + +Use text instead of an icon when the meaning is complex, abstract, or easy to misunderstand. + +## Match the interface style + +Use icons with the same visual language in the same interface. Mixed styles can make related controls look unrelated. + +:::: example +::: do +Use one icon style for related controls. +::: +::: dont +Don't mix unrelated icon styles in the same interface. +::: +:::: + +## Use familiar icons for familiar actions + +Icons work well for common actions and destinations that people already recognize from other interfaces. + +:::: example +::: do +Use icons for common actions with widely understood symbols. +::: +::: dont "strategy", "optimize", "synergy", "innovation" +Don't use icons alone for abstract concepts with no common symbol. +::: +:::: + +## Use icons as visual anchors + +Icons can help people scan lists, menus, cards, and repeated controls. The icon needs to support the text, not compete with it. + +:::: example +::: do ../images/how-to/visual_anchor_do.svg?raw=true +Use icons to make associated options easier to scan. +::: +::: dont ../images/how-to/visual_anchor_dont.svg?raw=true +Don't add icons to every line when they only create visual clutter. +::: +:::: + +## Use icons in compact interfaces + +Icons can help in tight spaces, such as mobile navigation, toolbars, tables, and compact controls. Keep labels when the icon is not obvious. + +:::: example +::: do ../images/how-to/compact_interfaces_labels_do.svg?raw=true +Keep labels in all layout variants when space allows. +::: +::: caution ../images/how-to/compact_interfaces_labels_dont.svg?raw=true +Use icon-only controls only when a visible label does not fit. + +In these cases, make sure that the label is accessible via hover, focus, or tap. +::: +:::: + +:::: example +::: do ../images/how-to/compact_interfaces_do.svg?raw=true +Keep text labels next to icons in compact layouts, even when space is sparse. +::: +::: dont ../images/how-to/compact_interfaces_dont.svg?raw=true +Don't remove labels in compact layouts when the meaning without them is unclear. +::: +:::: + +:::: example +::: caution ../images/how-to/compact_interfaces_caution_1.svg?raw=true +Use icon-only controls only when the icon represents a widely understood action. +::: +::: caution ../images/how-to/compact_interfaces_caution_2.svg?raw=true +Use icon-only controls only when the label is available on hover, focus, or tap. +::: +:::: + +## Choose the clearest symbol + +Use a familiar symbol when one exists. Novel symbols make people stop and interpret the interface. + +:::: example +::: do `trash`
for deleting an image
+Use a familiar symbol for a familiar action. +::: +::: dont `image-off`
for deleting an image
+Don't make people learn a new symbol for a common action. +::: +:::: + +## Match the context, not every detail + +Choose the icon that makes the action clearest in context. A more specific icon is better only when the extra detail helps people understand the action. + +:::: example +::: do ../images/how-to/appropriate_context_do.svg?raw=true +Use clear action icons when the surrounding interface already provides the object context. +::: +::: dont ../images/how-to/appropriate_context_dont.svg?raw=true +Don't add object details when the context already makes the object clear. +::: +:::: + +## Keep icon meaning consistent + +Use the same icon for the same meaning, and use different icons for different meanings. + +:::: example +::: do ../images/how-to/consistent_icon_meaning_do.svg?raw=true +Use different icons for distinct purposes or meanings. +::: +::: dont ../images/how-to/consistent_icon_meaning_dont.svg?raw=true +Don't use the same icon for multiple distinct purposes or meanings. +::: +:::: + +:::: example +::: do ../images/how-to/consistent_icon_function_do.svg?raw=true +Use the same icon for the same purpose or function. +::: +::: dont ../images/how-to/consistent_icon_function_dont.svg?raw=true +Don't use different icons for the same purpose or function. +::: +:::: + +## Do not iconize repeated status decoration + +Avoid adding an icon to every repeated status marker when color, weight, text, or layout already communicates the state. Repeated status icons can turn useful list structure into visual noise. + +:::: example +::: do ../images/how-to/repeated_status_do.svg?raw=true +Use the lightest cue that makes the status clear. +::: +::: dont ../images/how-to/repeated_status_dont.svg?raw=true +Don't add repeated status icons when they only restate what the list already shows. +::: +:::: + +## Do not replace built-in control cues + +Do not add icons to controls that already show people how they work. Native controls are easier to recognize when they behave and look familiar. + +:::: example +::: do ../images/how-to/native_ui_elements_do.svg?raw=true +Use the built-in visual cue when the control already communicates its behavior. +::: +::: dont ../images/how-to/native_ui_elements_dont.svg?raw=true +Don't replace native controls with similarly themed interactive icons. +::: +:::: + + diff --git a/docs/how-to/index.md b/docs/how-to/index.md new file mode 100644 index 000000000..176eb27a8 --- /dev/null +++ b/docs/how-to/index.md @@ -0,0 +1,29 @@ +--- +title: How to use Lucide icons +description: Learn how to use icons in an accessible, user-friendly way +--- + + + +# How to use Lucide icons + +Icons can make an interface easier to scan, but they only help when their meaning is clear. These guides explain how to choose icons that support the interface, when to pair icons with text, and when the best icon to use is no icon at all. + +Use the accessibility guide to make icons readable, understandable, and usable with assistive technology. Use the icon guide to decide when icons belong in an interface and how to pick symbols people are likely to recognize. + +## What this guide covers + + + + + +## Further resources + +- [The no-bullshit guide to icon design and usage](https://erik-engheim.medium.com/the-no-bullshit-guide-to-icon-design-and-usage-40948878dbbb) by Erik Engheim +- [On icons](https://ia.net/topics/on-icons/) by iA +- [How to use icons in UI and UX design](https://blog.thenounproject.com/how-to-use-icons-in-ui-and-ux-design-best-practices/) by The Noun Project +- [UX Myth: Icons enhance usability](https://uxmyths.com/post/715009009/myth-icons-enhance-usability) by UX Myths diff --git a/docs/images/a11y/alttext-buttons.svg b/docs/images/a11y/alttext-buttons.svg deleted file mode 100644 index 51874f8b3..000000000 --- a/docs/images/a11y/alttext-buttons.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - Don't provide accessible labels to - decorative icons. - - - - - - - - - - - - - - - Do omit aria-label on decorative icons. - - - - - - - - diff --git a/docs/images/a11y/alttext-iconbuttons.svg b/docs/images/a11y/alttext-iconbuttons.svg deleted file mode 100644 index f715e9842..000000000 --- a/docs/images/a11y/alttext-iconbuttons.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - Don't provide accessible labels for - icons on icon buttons. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/alttext-standalone.svg b/docs/images/a11y/alttext-standalone.svg deleted file mode 100644 index 23e90bbf9..000000000 --- a/docs/images/a11y/alttext-standalone.svg +++ /dev/null @@ -1,92 +0,0 @@ - - In short: provide accessible label for semantic icons, but not for decorative icons. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/consistency.svg b/docs/images/a11y/consistency.svg deleted file mode 100644 index db303455d..000000000 --- a/docs/images/a11y/consistency.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - For example: Don’t use the same icon for multiple distinct purposes or meanings. Don’t use different icons for the same purpose or function. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/contrast.svg b/docs/images/a11y/contrast.svg deleted file mode 100644 index b361a03ec..000000000 --- a/docs/images/a11y/contrast.svg +++ /dev/null @@ -1,20 +0,0 @@ - - In short: use a contrast ratio of at least 4.5:1 - - - - - - - - Don't use low contrast. - - - - - - - - Do use a contrast ratio of at least 4.5:1. - - diff --git a/docs/images/a11y/contrast_do.svg b/docs/images/a11y/contrast_do.svg new file mode 100644 index 000000000..052e7368a --- /dev/null +++ b/docs/images/a11y/contrast_do.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/images/a11y/contrast_dont.svg b/docs/images/a11y/contrast_dont.svg new file mode 100644 index 000000000..1a9326c5e --- /dev/null +++ b/docs/images/a11y/contrast_dont.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/images/a11y/decorative_icons_do.svg b/docs/images/a11y/decorative_icons_do.svg new file mode 100644 index 000000000..e290fc74a --- /dev/null +++ b/docs/images/a11y/decorative_icons_do.svg @@ -0,0 +1,14 @@ + + + + +
+ + + + + + + + +
diff --git a/docs/images/a11y/decorative_icons_dont.svg b/docs/images/a11y/decorative_icons_dont.svg new file mode 100644 index 000000000..6be329360 --- /dev/null +++ b/docs/images/a11y/decorative_icons_dont.svg @@ -0,0 +1,14 @@ + + + + +
+ + + + + + + + +
diff --git a/docs/images/a11y/distinct_use_case_do.svg b/docs/images/a11y/distinct_use_case_do.svg new file mode 100644 index 000000000..1680ede4f --- /dev/null +++ b/docs/images/a11y/distinct_use_case_do.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/distinct_use_case_dont.svg b/docs/images/a11y/distinct_use_case_dont.svg new file mode 100644 index 000000000..f2577e5ac --- /dev/null +++ b/docs/images/a11y/distinct_use_case_dont.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/functional_icons_do.svg b/docs/images/a11y/functional_icons_do.svg new file mode 100644 index 000000000..0e7df67a7 --- /dev/null +++ b/docs/images/a11y/functional_icons_do.svg @@ -0,0 +1,35 @@ + + +
+ + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + +
diff --git a/docs/images/a11y/functional_icons_dont.svg b/docs/images/a11y/functional_icons_dont.svg new file mode 100644 index 000000000..6f42c2505 --- /dev/null +++ b/docs/images/a11y/functional_icons_dont.svg @@ -0,0 +1,39 @@ + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
diff --git a/docs/images/a11y/icon_button_do.svg b/docs/images/a11y/icon_button_do.svg new file mode 100644 index 000000000..7720a4665 --- /dev/null +++ b/docs/images/a11y/icon_button_do.svg @@ -0,0 +1,14 @@ + + + + + +
+ + + + + + + +
diff --git a/docs/images/a11y/icon_button_dont.svg b/docs/images/a11y/icon_button_dont.svg new file mode 100644 index 000000000..faa496837 --- /dev/null +++ b/docs/images/a11y/icon_button_dont.svg @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + +
diff --git a/docs/images/a11y/interactive_icons_do.svg b/docs/images/a11y/interactive_icons_do.svg new file mode 100644 index 000000000..3cb98c59b --- /dev/null +++ b/docs/images/a11y/interactive_icons_do.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/images/a11y/interactive_icons_dont.svg b/docs/images/a11y/interactive_icons_dont.svg new file mode 100644 index 000000000..e12f1248b --- /dev/null +++ b/docs/images/a11y/interactive_icons_dont.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/images/a11y/interactivity.svg b/docs/images/a11y/interactivity.svg deleted file mode 100644 index bf338f345..000000000 --- a/docs/images/a11y/interactivity.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/meaningfulness.svg b/docs/images/a11y/meaningfulness.svg deleted file mode 100644 index 647d3c487..000000000 --- a/docs/images/a11y/meaningfulness.svg +++ /dev/null @@ -1,94 +0,0 @@ - - For example: Use universally understandable symbols and don't base your choice of icon on puns. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/same_use_case_do.svg b/docs/images/a11y/same_use_case_do.svg new file mode 100644 index 000000000..c81443da4 --- /dev/null +++ b/docs/images/a11y/same_use_case_do.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/same_use_case_dont.svg b/docs/images/a11y/same_use_case_dont.svg new file mode 100644 index 000000000..f2c56ee94 --- /dev/null +++ b/docs/images/a11y/same_use_case_dont.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/state_do.svg b/docs/images/a11y/state_do.svg new file mode 100644 index 000000000..e28747e22 --- /dev/null +++ b/docs/images/a11y/state_do.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/state_dont.svg b/docs/images/a11y/state_dont.svg new file mode 100644 index 000000000..0c8825b0b --- /dev/null +++ b/docs/images/a11y/state_dont.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/target-size.svg b/docs/images/a11y/target-size.svg deleted file mode 100644 index e5a5951d4..000000000 --- a/docs/images/a11y/target-size.svg +++ /dev/null @@ -1,49 +0,0 @@ - - Example of using target size correctly - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/target_size_do.svg b/docs/images/a11y/target_size_do.svg new file mode 100644 index 000000000..51329578a --- /dev/null +++ b/docs/images/a11y/target_size_do.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/target_size_dont.svg b/docs/images/a11y/target_size_dont.svg new file mode 100644 index 000000000..b9d95dd87 --- /dev/null +++ b/docs/images/a11y/target_size_dont.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/a11y/use-of-color.svg b/docs/images/a11y/use-of-color.svg deleted file mode 100644 index 573c44d65..000000000 --- a/docs/images/a11y/use-of-color.svg +++ /dev/null @@ -1,191 +0,0 @@ - - For example: Don’t mark state with color, mark it with distinct visuals. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/a11y/visible-labels.svg b/docs/images/a11y/visible-labels.svg deleted file mode 100644 index fbbf54d19..000000000 --- a/docs/images/a11y/visible-labels.svg +++ /dev/null @@ -1,23 +0,0 @@ - - In short: Don’t rely on communicating the function of elements by icons alone. Do also provide a written description of the your interactive elements. For example: write out "On this page" on your on-page navigation element. - - - - - - - - Don't rely on communicating the - function of elements by icons alone. - - - - - - - - - Do also provide a written description - of your interacive elements. - - diff --git a/docs/images/how-to/appropriate_context_do.svg b/docs/images/how-to/appropriate_context_do.svg new file mode 100644 index 000000000..68b5b16f8 --- /dev/null +++ b/docs/images/how-to/appropriate_context_do.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/appropriate_context_dont.svg b/docs/images/how-to/appropriate_context_dont.svg new file mode 100644 index 000000000..84c6267c3 --- /dev/null +++ b/docs/images/how-to/appropriate_context_dont.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/compact_interfaces_caution_1.svg b/docs/images/how-to/compact_interfaces_caution_1.svg new file mode 100644 index 000000000..a93edbe3c --- /dev/null +++ b/docs/images/how-to/compact_interfaces_caution_1.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/compact_interfaces_caution_2.svg b/docs/images/how-to/compact_interfaces_caution_2.svg new file mode 100644 index 000000000..086a3332c --- /dev/null +++ b/docs/images/how-to/compact_interfaces_caution_2.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/compact_interfaces_do.svg b/docs/images/how-to/compact_interfaces_do.svg new file mode 100644 index 000000000..da01c7c1d --- /dev/null +++ b/docs/images/how-to/compact_interfaces_do.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/compact_interfaces_dont.svg b/docs/images/how-to/compact_interfaces_dont.svg new file mode 100644 index 000000000..7559fd14e --- /dev/null +++ b/docs/images/how-to/compact_interfaces_dont.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/compact_interfaces_labels_do.svg b/docs/images/how-to/compact_interfaces_labels_do.svg new file mode 100644 index 000000000..53641c505 --- /dev/null +++ b/docs/images/how-to/compact_interfaces_labels_do.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/compact_interfaces_labels_dont.svg b/docs/images/how-to/compact_interfaces_labels_dont.svg new file mode 100644 index 000000000..6b2e2c7b5 --- /dev/null +++ b/docs/images/how-to/compact_interfaces_labels_dont.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/consistent_icon_function_do.svg b/docs/images/how-to/consistent_icon_function_do.svg new file mode 100644 index 000000000..2a5bb7009 --- /dev/null +++ b/docs/images/how-to/consistent_icon_function_do.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/consistent_icon_function_dont.svg b/docs/images/how-to/consistent_icon_function_dont.svg new file mode 100644 index 000000000..a72d9e961 --- /dev/null +++ b/docs/images/how-to/consistent_icon_function_dont.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/consistent_icon_meaning_do.svg b/docs/images/how-to/consistent_icon_meaning_do.svg new file mode 100644 index 000000000..70cbfa1cc --- /dev/null +++ b/docs/images/how-to/consistent_icon_meaning_do.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/consistent_icon_meaning_dont.svg b/docs/images/how-to/consistent_icon_meaning_dont.svg new file mode 100644 index 000000000..80a25908d --- /dev/null +++ b/docs/images/how-to/consistent_icon_meaning_dont.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/native_ui_elements_do.svg b/docs/images/how-to/native_ui_elements_do.svg new file mode 100644 index 000000000..f2e5ab9d4 --- /dev/null +++ b/docs/images/how-to/native_ui_elements_do.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/native_ui_elements_dont.svg b/docs/images/how-to/native_ui_elements_dont.svg new file mode 100644 index 000000000..4e01e9dda --- /dev/null +++ b/docs/images/how-to/native_ui_elements_dont.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/images/how-to/repeated_status_do.svg b/docs/images/how-to/repeated_status_do.svg new file mode 100644 index 000000000..cddd1e7e2 --- /dev/null +++ b/docs/images/how-to/repeated_status_do.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/repeated_status_dont.svg b/docs/images/how-to/repeated_status_dont.svg new file mode 100644 index 000000000..4d1402dc4 --- /dev/null +++ b/docs/images/how-to/repeated_status_dont.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/state_do.svg b/docs/images/how-to/state_do.svg new file mode 100644 index 000000000..5d605ff96 --- /dev/null +++ b/docs/images/how-to/state_do.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/visual_anchor_do.svg b/docs/images/how-to/visual_anchor_do.svg new file mode 100644 index 000000000..9253d0f63 --- /dev/null +++ b/docs/images/how-to/visual_anchor_do.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/images/how-to/visual_anchor_dont.svg b/docs/images/how-to/visual_anchor_dont.svg new file mode 100644 index 000000000..f0cc50c9e --- /dev/null +++ b/docs/images/how-to/visual_anchor_dont.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vercel.json b/docs/vercel.json index b67281451..268595d6c 100644 --- a/docs/vercel.json +++ b/docs/vercel.json @@ -42,9 +42,14 @@ "destination": "/guide/react/basics", "permanent": true }, + { + "source": "/guide/accessibility", + "destination": "/how-to/accessibility", + "permanent": true + }, { "source": "/guide/advanced/accessibility", - "destination": "/guide/accessibility", + "destination": "/how-to/accessibility", "permanent": true }, { From bdf795a8e3d11f1415d334942198718359a01961 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 16:45:49 +0200 Subject: [PATCH 074/157] feat(lab): add `hand-gear` icon (#2327) * feat(icons): add hand-gear icon * fix(icons): add danielbayley as co-contributor (hand design) * fix(icons): fix gear centering * Add empty use-cases field to hand-gear.json * Update icons/hand-gear.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/hand-gear.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * feat(lab): moved `hand-gear` icon to lab Co-Authored-By: Claude Opus 5 --------- Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5 --- lab/hand-gear.json | 41 +++++++++++++++++++++++++++++++++++++++++ lab/hand-gear.svg | 24 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 lab/hand-gear.json create mode 100644 lab/hand-gear.svg diff --git a/lab/hand-gear.json b/lab/hand-gear.json new file mode 100644 index 000000000..c764502e7 --- /dev/null +++ b/lab/hand-gear.json @@ -0,0 +1,41 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere", + "danielbayley" + ], + "use-cases": [ + "indicate maintenance or repair tasks", + "represent manual configuration or settings adjustment", + "show hands-on technical support", + "denote mechanical engineering or machine servicing tasks", + "illustrate workshop or manufacturing processes", + "signal equipment calibration or tuning", + "open advanced hardware settings from a control panel" + ], + "tags": [ + "automation", + "innovation", + "skills", + "technical support", + "engineering", + "craftsmanship", + "industrial", + "problem solving", + "manufacturing", + "repair", + "maintenance", + "service", + "mechanic", + "settings", + "configuration", + "calibration", + "hand", + "gear", + "workshop" + ], + "categories": [ + "development", + "devices" + ] +} diff --git a/lab/hand-gear.svg b/lab/hand-gear.svg new file mode 100644 index 000000000..e1e04e72a --- /dev/null +++ b/lab/hand-gear.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + From 5d592a96aaeb4a3a09ffd8134f8f5ed878c9a0c5 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 10 Sep 2026 22:35:01 +0200 Subject: [PATCH 075/157] fix(packages/vue): fix generated icon declaration types for @lucide/vue (#4841) --- packages/vue/scripts/exportTemplate.mts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vue/scripts/exportTemplate.mts b/packages/vue/scripts/exportTemplate.mts index 6f85690b8..ea83a0235 100644 --- a/packages/vue/scripts/exportTemplate.mts +++ b/packages/vue/scripts/exportTemplate.mts @@ -8,7 +8,7 @@ export default defineExportTemplate( return ` import createLucideIcon from '../createLucideIcon'; -import type { LucideIconData } from '../types'; +import type { LucideIcon, LucideIconData } from '../types'; export const __iconData: LucideIconData = ${JSON.stringify(iconData)} @@ -23,7 +23,7 @@ export const __iconData: LucideIconData = ${JSON.stringify(iconData)} * @returns {FunctionalComponent} Vue component * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ -const ${componentName} = createLucideIcon(__iconData); +const ${componentName}: LucideIcon = createLucideIcon(__iconData); export default ${componentName}; `; From 4a26fa58e0ad657ddd80b1739f7180b75e739c7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:26:09 +0200 Subject: [PATCH 076/157] chore(deps-dev): bump vitest from 4.1.10 to 4.1.11 (#4845) Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.10 to 4.1.11. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.11/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-version: 4.1.11 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- integrations/lucide-react/nextjs/package.json | 2 +- integrations/lucide-react/react-router/package.json | 2 +- integrations/lucide-react/tanstack-router/package.json | 2 +- integrations/lucide-react/tanstack-start/package.json | 2 +- integrations/lucide-react/vite/package.json | 2 +- package.json | 2 +- packages/astro/package.json | 2 +- packages/icons/package.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/integrations/lucide-react/nextjs/package.json b/integrations/lucide-react/nextjs/package.json index 757b6c8c0..b1cc39366 100644 --- a/integrations/lucide-react/nextjs/package.json +++ b/integrations/lucide-react/nextjs/package.json @@ -22,7 +22,7 @@ "@vitest/browser-playwright": "4.1.10", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10", + "vitest": "4.1.11", "vitest-browser-react": "2.2.0" } } diff --git a/integrations/lucide-react/react-router/package.json b/integrations/lucide-react/react-router/package.json index 32ec4a83e..2f943fc73 100644 --- a/integrations/lucide-react/react-router/package.json +++ b/integrations/lucide-react/react-router/package.json @@ -27,7 +27,7 @@ "@vitest/browser-playwright": "4.1.10", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10", + "vitest": "4.1.11", "vitest-browser-react": "2.2.0" } } diff --git a/integrations/lucide-react/tanstack-router/package.json b/integrations/lucide-react/tanstack-router/package.json index 235f569bd..ee393c9bc 100644 --- a/integrations/lucide-react/tanstack-router/package.json +++ b/integrations/lucide-react/tanstack-router/package.json @@ -23,7 +23,7 @@ "@vitest/browser-playwright": "4.1.10", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10", + "vitest": "4.1.11", "vitest-browser-react": "2.2.0" } } diff --git a/integrations/lucide-react/tanstack-start/package.json b/integrations/lucide-react/tanstack-start/package.json index c40479dc8..441208412 100644 --- a/integrations/lucide-react/tanstack-start/package.json +++ b/integrations/lucide-react/tanstack-start/package.json @@ -24,7 +24,7 @@ "@vitest/browser-playwright": "4.1.10", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10", + "vitest": "4.1.11", "vitest-browser-react": "2.2.0" } } diff --git a/integrations/lucide-react/vite/package.json b/integrations/lucide-react/vite/package.json index 5c1e403b7..36e05ebc5 100644 --- a/integrations/lucide-react/vite/package.json +++ b/integrations/lucide-react/vite/package.json @@ -22,7 +22,7 @@ "playwright": "1.58.2", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10", + "vitest": "4.1.11", "vitest-browser-react": "2.2.0" } } diff --git a/package.json b/package.json index 5c9ddb246..c1c6e3737 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "svgson": "^5.3.1", "typescript": "^6.0.3", "typescript-eslint": "^8.69.0", - "vitest": "4.1.10", + "vitest": "4.1.11", "yargs": "^18.1.0", "zod": "^4.5.4" }, diff --git a/packages/astro/package.json b/packages/astro/package.json index b6f34ea1e..a77a5b9d1 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -58,7 +58,7 @@ "prettier": "3.9.6", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10" + "vitest": "4.1.11" }, "peerDependencies": { "astro": "^4 || ^5 || ^6 || ^7" diff --git a/packages/icons/package.json b/packages/icons/package.json index 5a11c0147..38d6bd332 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -71,6 +71,6 @@ "rollup-plugin-preserve-directives": "^0.4.0", "typescript": "^6.0.3", "vite": "^7.3.6", - "vitest": "4.1.10" + "vitest": "4.1.11" } } From 6bbe5ddb07525b0d0056c622c550517f727d08b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:26:37 +0200 Subject: [PATCH 077/157] chore(deps-dev): bump vitest in /integrations/lucide-react/vite (#4844) Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.10 to 4.1.11. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.11/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-version: 4.1.11 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From 5da3ee357d2af036824fa01cb068794bf8bc498f Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 11 Sep 2026 12:42:26 +0200 Subject: [PATCH 078/157] ci(ci.yml): Add dispatch post release (#4847) * Add dispatch post release * Refine post-release automation conditions Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/workflows/ci.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ac4679de..d6e618c6b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,6 +64,7 @@ jobs: contents: write # Required to create the release and tag outputs: VERSION: ${{ steps.new-version.outputs.NEW_VERSION }} + RELEASE_URL: ${{ steps.create-release.outputs.url }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 @@ -102,6 +103,7 @@ jobs: echo '${{ steps.change-log.outputs.CHANGE_LOG }}' - name: Create Release + id: create-release uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 with: tag_name: ${{ steps.new-version.outputs.NEW_VERSION }} @@ -129,3 +131,30 @@ jobs: with: version: ${{ inputs.version }} tag: ${{ inputs.tag }} + + post-release: + name: Trigger post-release automation + if: >- + always() && + github.repository == 'lucide-icons/lucide' && + (needs.start-release.result == 'success' || needs.dispatch-release.result == 'success') + needs: [create-release, start-release, dispatch-release] + runs-on: ubuntu-latest + permissions: {} + steps: + - name: Dispatch post_release event + env: + GH_TOKEN: ${{ secrets.POST_RELEASE_TOKEN }} + RELEASE_TAG: ${{ needs.create-release.outputs.VERSION || inputs.version }} + RELEASE_URL: ${{ needs.create-release.outputs.RELEASE_URL }} + run: | + if [ -z "$RELEASE_URL" ]; then + RELEASE_URL="https://github.com/lucide-icons/lucide/releases/tag/$RELEASE_TAG" + fi + + gh api \ + --method POST \ + repos/lucide-icons/post-release/dispatches \ + --field event_type=post_release \ + --field "client_payload[release_tag]=$RELEASE_TAG" \ + --field "client_payload[release_url]=$RELEASE_URL" From b998e2892b90b88004d62da2d0b64dab9959a520 Mon Sep 17 00:00:00 2001 From: Dix Date: Fri, 11 Sep 2026 12:43:00 +0200 Subject: [PATCH 079/157] feat(icons): added `globe-code` icon (#3722) * Added icons/world-wide-web.svg * Added icons/world-wide-web.json * Update icons/world-wide-web.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Rename files * Add 'use-cases' field to globe-code.json * Add use cases for globe code icon Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix JSON formatting in globe-code.json * Add 'development' category to globe-code.json Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update SVG path for globe code icon --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/globe-code.json | 32 ++++++++++++++++++++++++++++++++ icons/globe-code.svg | 16 ++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 icons/globe-code.json create mode 100644 icons/globe-code.svg diff --git a/icons/globe-code.json b/icons/globe-code.json new file mode 100644 index 000000000..7fc05e66a --- /dev/null +++ b/icons/globe-code.json @@ -0,0 +1,32 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "AleksejDix" + ], + "use-cases": [ + "Indicating global traffic in network monitoring dashboards", + "Representing web development in developer tools" + ], + "tags": [ + "website", + "internet", + "globe", + "connection", + "network", + "digital", + "access", + "global", + "link", + "world", + "browser", + "language", + "translate" + ], + "categories": [ + "navigation", + "development" + ] +} diff --git a/icons/globe-code.svg b/icons/globe-code.svg new file mode 100644 index 000000000..d2cf7dc62 --- /dev/null +++ b/icons/globe-code.svg @@ -0,0 +1,16 @@ + + + + + + From a79b2d131dab2bf20cb224bd0937b439a9c4fa99 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodrigues Date: Fri, 11 Sep 2026 05:03:10 -0600 Subject: [PATCH 080/157] feat(icons): Added new icons: `clef-g`, `clef-f` and `clef-c` (#4083) * Added new icons: clef-g, clef-f and clef-c * rename and design updates from feedback * fix typo in filename * Update clef-bass.svg * Update clef-treble.json * Update clef-bass.json * Update clef-alto.json --------- Co-authored-by: Karsa Co-authored-by: Eric Fennis --- icons/clef-alto.json | 30 ++++++++++++++++++++++++++++++ icons/clef-alto.svg | 15 +++++++++++++++ icons/clef-bass.json | 29 +++++++++++++++++++++++++++++ icons/clef-bass.svg | 16 ++++++++++++++++ icons/clef-treble.json | 29 +++++++++++++++++++++++++++++ icons/clef-treble.svg | 13 +++++++++++++ 6 files changed, 132 insertions(+) create mode 100644 icons/clef-alto.json create mode 100644 icons/clef-alto.svg create mode 100644 icons/clef-bass.json create mode 100644 icons/clef-bass.svg create mode 100644 icons/clef-treble.json create mode 100644 icons/clef-treble.svg diff --git a/icons/clef-alto.json b/icons/clef-alto.json new file mode 100644 index 000000000..52bea87f5 --- /dev/null +++ b/icons/clef-alto.json @@ -0,0 +1,30 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "rrod497" + ], + "use-cases": [ + "Labeling alto clef notation in sheet music editors", + "Representing viola parts in music composition or practice apps", + "Indicating C clef selection in notation software", + "Supporting clef choices in MIDI editors, instrument emulators, or music education tools" + ], + "tags": [ + "do", + "c", + "music", + "note", + "key", + "soprano", + "mezzo", + "alto", + "staff", + "pitch", + "baritone", + "major", + "scale" + ], + "categories": [ + "multimedia" + ] +} diff --git a/icons/clef-alto.svg b/icons/clef-alto.svg new file mode 100644 index 000000000..36ca98d8b --- /dev/null +++ b/icons/clef-alto.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/icons/clef-bass.json b/icons/clef-bass.json new file mode 100644 index 000000000..7c543416d --- /dev/null +++ b/icons/clef-bass.json @@ -0,0 +1,29 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "rrod497" + ], + "use-cases": [ + "Labeling bass clef notation in sheet music editors", + "Representing bass, cello, trombone, tuba, or lower-pitched instrument parts", + "Indicating left-hand piano notation in music learning apps", + "Supporting clef choices in MIDI editors, instrument emulators, or music education tools" + ], + "tags": [ + "fa", + "f", + "music", + "note", + "key", + "baritone", + "staff", + "pitch", + "bass", + "subbass", + "major", + "scale" + ], + "categories": [ + "multimedia" + ] +} diff --git a/icons/clef-bass.svg b/icons/clef-bass.svg new file mode 100644 index 000000000..565548ae9 --- /dev/null +++ b/icons/clef-bass.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/icons/clef-treble.json b/icons/clef-treble.json new file mode 100644 index 000000000..38388c3e0 --- /dev/null +++ b/icons/clef-treble.json @@ -0,0 +1,29 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "rrod497" + ], + "use-cases": [ + "Representing music, songs, or audio content with a widely recognized symbol", + "Labeling sheet music, notation tools, or music education resources", + "Indicating melody, vocals, or higher-pitched instrument parts", + "Representing music apps, playlists, concerts, or performance features" + ], + "tags": [ + "sol", + "g", + "music", + "note", + "key", + "treble", + "staff", + "pitch", + "violin", + "solfege", + "major", + "scale" + ], + "categories": [ + "multimedia" + ] +} diff --git a/icons/clef-treble.svg b/icons/clef-treble.svg new file mode 100644 index 000000000..a96b7b767 --- /dev/null +++ b/icons/clef-treble.svg @@ -0,0 +1,13 @@ + + + From 08b2fd24555548dd4022fa100fa0ab783a1ba71d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 08:35:43 +0200 Subject: [PATCH 081/157] chore(deps-dev): bump astro from 7.3.0 to 7.3.2 in the astro-deps group (#4860) Bumps the astro-deps group with 1 update: [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro). Updates `astro` from 7.3.0 to 7.3.2 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/astro@7.3.2/packages/astro) --- updated-dependencies: - dependency-name: astro dependency-version: 7.3.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: astro-deps ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/astro/package.json | 2 +- pnpm-lock.yaml | 112 ++++++++++++++++++++++++------------ 2 files changed, 76 insertions(+), 38 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index a77a5b9d1..331fe75b4 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -52,7 +52,7 @@ "@lucide/build-icons": "workspace:*", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^7.0.1", - "astro": "^7.3.0", + "astro": "^7.3.2", "jest-serializer-html": "^7.1.0", "linkedom": "^0.18.13", "prettier": "3.9.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6ec7ba77..f4f4a3db0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -550,8 +550,8 @@ importers: specifier: ^7.0.1 version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10) astro: - specifier: ^7.3.0 - version: 7.3.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@26.4.1)(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) + specifier: ^7.3.2 + version: 7.3.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@26.4.1)(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) jest-serializer-html: specifier: ^7.1.0 version: 7.1.0 @@ -1462,8 +1462,8 @@ packages: '@astrojs/internal-helpers@0.11.0': resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} - '@astrojs/markdown-satteri@0.4.0': - resolution: {integrity: sha512-wykOOW9KsUVcZweOpY/CeXpdKcCKZy6fQbdcteWFuI75+sQCiqxYM7VKsGa5b+aGl3cYQscFY37rsbbyal5MRw==} + '@astrojs/markdown-satteri@0.4.1': + resolution: {integrity: sha512-EniHbFNa6SQHDih7JnpPos3NWXO6hdt4raBcOosfGmlfc3gP9CI/sESA3VOf1PgJZ7SFfewlZW9Livn0JugEZg==} '@astrojs/prism@4.0.2': resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} @@ -2312,12 +2312,12 @@ packages: resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} engines: {node: '>=18'} - '@clack/core@1.4.3': - resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + '@clack/core@1.5.0': + resolution: {integrity: sha512-zNikCcd8BbcEvzzG1sbXFrRHFk5kHPrpwZwksPvf9qyQO1Teb7JaXaOAxXZei9nZLDW0gaZawiuTCji88bTBhw==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.7.0': - resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + '@clack/prompts@1.8.0': + resolution: {integrity: sha512-PXzLZ8N34rxmuo4dJg3xtOXhcBse94qGjDqsteoEYrFrrZ5FSjIGwMAuOcv64ln8rHVBBD06XeVGr+/JX+plcA==} engines: {node: '>= 20.12.0'} '@cloudflare/kv-asset-handler@0.4.2': @@ -3793,6 +3793,13 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@napi-rs/wasm-runtime@1.2.4': + resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@next/env@16.3.4': resolution: {integrity: sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q==} @@ -6131,8 +6138,8 @@ packages: ast-v8-to-istanbul@1.0.5: resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} - astro@7.3.0: - resolution: {integrity: sha512-P7gtN3rZO62chxRslBxxLLRpwIfKUxx4B4dRMyTHZiW4B0uJyjxmzRr1fIqB7AOCA1JhyeRKoYgQQBLK/inQ/A==} + astro@7.3.2: + resolution: {integrity: sha512-ysTcdpGP61XZpHoMRYC/CK19DQ94qkBvzXMtXEo0gEqPNkmOU/Tv++CtWmzaI4nF2Ck8RXFdiWvdlTWa2oOr9w==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: @@ -8801,6 +8808,9 @@ packages: magic-string@1.2.3: resolution: {integrity: sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==} + magic-string@1.3.1: + resolution: {integrity: sha512-rm91zr2Ou+XueDTohjQQjdQEcYM6zVi8KVUCG8Ec3vHwUEKrhSdCNyfuIywkA6hcCAteIn0ZOtAHA6eGpiX+Pg==} + magicast@0.5.4: resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} @@ -9432,6 +9442,10 @@ packages: resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} + engines: {node: '>=12.20.0'} + ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -11174,6 +11188,10 @@ packages: resolution: {integrity: sha512-YQ3WlbqjYMmNpdvDH64jAgLjxuAR9+649calDWhbshYaeQGO2bR4nI94ORJmwI3J9YhoKQnpyGOK+0zlWS5N5Q==} engines: {node: '>=22.19.0'} + undici@8.10.2: + resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==} + engines: {node: '>=22.19.0'} + unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} @@ -11911,6 +11929,9 @@ packages: zod@4.5.4: resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + zod@4.6.1: + resolution: {integrity: sha512-341aRWQsve0rvronKNTqZpjmzdbUDlFuzHaI/XLg/Ej82qffDJRRfBTCuv7+9q/rMjB6LSLyEBnW4InJeMtt/Q==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -12346,7 +12367,7 @@ snapshots: '@astrojs/compiler-binding-wasm32-wasi@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -12393,7 +12414,7 @@ snapshots: smol-toml: 1.8.0 unified: 11.0.5 - '@astrojs/markdown-satteri@0.4.0': + '@astrojs/markdown-satteri@0.4.1': dependencies: '@astrojs/internal-helpers': 0.11.0 '@astrojs/prism': 4.0.2 @@ -12484,7 +12505,7 @@ snapshots: gensync: 1.0.0-beta.2 import-meta-resolve: 4.2.0 json5: 2.2.3 - obug: 2.1.4 + obug: 2.2.1 semver: 7.8.5 '@babel/generator@7.29.8': @@ -13389,7 +13410,7 @@ snapshots: '@babel/parser': 8.0.4 '@babel/template': 8.0.0 '@babel/types': 8.0.4 - obug: 2.1.4 + obug: 2.2.1 '@babel/types@7.29.8': dependencies: @@ -13431,7 +13452,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@bruits/satteri-win32-arm64-msvc@0.10.5': @@ -13444,14 +13465,14 @@ snapshots: dependencies: fontkitten: 1.0.3 - '@clack/core@1.4.3': + '@clack/core@1.5.0': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.7.0': + '@clack/prompts@1.8.0': dependencies: - '@clack/core': 1.4.3 + '@clack/core': 1.5.0 fast-string-width: 3.0.2 fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 @@ -14895,13 +14916,6 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@tybys/wasm-util': 0.10.3 - optional: true - '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: '@emnapi/core': 1.11.2 @@ -14909,7 +14923,21 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.2 '@emnapi/runtime': 1.11.3 @@ -15112,7 +15140,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.2 '@emnapi/runtime': 1.11.2 - '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true '@oxc-parser/binding-win32-arm64-msvc@0.142.0': @@ -16087,7 +16115,7 @@ snapshots: jiti: 2.7.0 magic-string: 0.30.21 prettier: 3.9.6 - zod: 4.5.4 + zod: 4.6.1 transitivePeerDependencies: - supports-color @@ -16159,7 +16187,7 @@ snapshots: ufo: 1.6.4 vitefu: 1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) xmlbuilder2: 4.0.3 - zod: 4.5.4 + zod: 4.6.1 optionalDependencies: vite: 7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0) transitivePeerDependencies: @@ -17272,14 +17300,14 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - astro@7.3.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@26.4.1)(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0): + astro@7.3.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@26.4.1)(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0): dependencies: '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) '@astrojs/internal-helpers': 0.11.0 - '@astrojs/markdown-satteri': 0.4.0 + '@astrojs/markdown-satteri': 0.4.1 '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.1 - '@clack/prompts': 1.7.0 + '@clack/prompts': 1.8.0 '@oslojs/encoding': 1.1.0 am-i-vibing: 0.4.0 aria-query: 5.3.2 @@ -17302,11 +17330,11 @@ snapshots: http-cache-semantics: 4.2.0 js-yaml: 4.3.2 jsonc-parser: 3.3.1 - magic-string: 1.2.3 + magic-string: 1.3.1 magicast: 0.5.4 mrmime: 2.0.1 neotraverse: 1.0.1 - obug: 2.1.4 + obug: 2.2.1 p-limit: 7.3.2 p-queue: 9.3.3 package-manager-detector: 1.8.0 @@ -17326,7 +17354,7 @@ snapshots: vitefu: 1.1.3(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 - zod: 4.5.4 + zod: 4.6.1 optionalDependencies: sharp: 0.35.4(@types/node@26.4.1) transitivePeerDependencies: @@ -20355,6 +20383,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 + magic-string@1.3.1: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + magicast@0.5.4: dependencies: '@babel/parser': 7.29.8 @@ -21343,6 +21375,8 @@ snapshots: obug@2.1.4: {} + obug@2.2.1: {} + ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -23416,6 +23450,8 @@ snapshots: undici@8.10.1: {} + undici@8.10.2: {} + unenv@2.0.0-rc.24: dependencies: pathe: 2.0.3 @@ -23447,7 +23483,7 @@ snapshots: dependencies: css-tree: 3.2.1 ohash: 2.0.12 - undici: 8.10.1 + undici: 8.10.2 unimport@6.4.0(esbuild@0.28.2)(oxc-parser@0.142.0)(rolldown@1.2.7)(rollup@4.63.1)(vite@7.3.6(@types/node@26.4.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(lightningcss@1.33.0)(sass@1.103.1)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.0)): dependencies: @@ -23455,7 +23491,7 @@ snapshots: escape-string-regexp: 5.0.0 estree-walker: 3.0.3 local-pkg: 1.2.1 - magic-string: 1.2.3 + magic-string: 1.3.1 mlly: 1.8.2 pathe: 2.0.3 picomatch: 4.0.7 @@ -24236,4 +24272,6 @@ snapshots: zod@4.5.4: {} + zod@4.6.1: {} + zwitch@2.0.4: {} From 7eb8afe2f8b11bf199e6335c2c094a3d1bfedcc2 Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 14 Sep 2026 11:15:28 +0200 Subject: [PATCH 082/157] feat(icons): added `monitor-pc` icon (#4791) * Added icons/monitor-pc.svg * Added icons/monitor-pc.json --- icons/monitor-pc.json | 33 +++++++++++++++++++++++++++++++++ icons/monitor-pc.svg | 19 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 icons/monitor-pc.json create mode 100644 icons/monitor-pc.svg diff --git a/icons/monitor-pc.json b/icons/monitor-pc.json new file mode 100644 index 000000000..63aa8a400 --- /dev/null +++ b/icons/monitor-pc.json @@ -0,0 +1,33 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "ericfennis", + "danielbayley", + "jguddas", + "karsa-mistmere" + ], + "use-cases": [ + "Representing desktop computer setups", + "Showing workstation or gaming PC devices", + "Identifying personal computers in device lists", + "Managing computer hardware in IT dashboards" + ], + "tags": [ + "personal computer", + "desktop", + "screen", + "display", + "workstation", + "tower", + "chassis", + "hardware", + "setup", + "gaming" + ], + "categories": [ + "devices", + "development", + "gaming" + ] +} diff --git a/icons/monitor-pc.svg b/icons/monitor-pc.svg new file mode 100644 index 000000000..4c76c14d9 --- /dev/null +++ b/icons/monitor-pc.svg @@ -0,0 +1,19 @@ + + + + + + + + + From 5b8975c9a307f99e5895d17e6061b076001e1244 Mon Sep 17 00:00:00 2001 From: Ubaid Ullah <165874963+UbaidUllah9962@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:47:11 +0530 Subject: [PATCH 083/157] feat(icons): add lambda icon (#4017) * feat(icons): added lambda icon * fix(icons/lambda): fix linting issues * feat(icons/lambda): clean up metadata --------- Co-authored-by: Karsa --- icons/lambda.json | 33 +++++++++++++++++++++++++++++++++ icons/lambda.svg | 14 ++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 icons/lambda.json create mode 100644 icons/lambda.svg diff --git a/icons/lambda.json b/icons/lambda.json new file mode 100644 index 000000000..0c867c0bb --- /dev/null +++ b/icons/lambda.json @@ -0,0 +1,33 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere", + "kaleidosium", + "UbaidUllah9962" + ], + "use-cases": [ + "Representing anonymous functions in code editors", + "Representing serverless functions in cloud architecture diagrams", + "Representing lambda notation in math and science" + ], + "tags": [ + "greek", + "symbol", + "math", + "function", + "programming", + "serverless", + "anonymous", + "functional", + "cloud", + "wavelength", + "calculus", + "linear algebra" + ], + "categories": [ + "development", + "math", + "science", + "text" + ] +} diff --git a/icons/lambda.svg b/icons/lambda.svg new file mode 100644 index 000000000..77e9e8288 --- /dev/null +++ b/icons/lambda.svg @@ -0,0 +1,14 @@ + + + + From 042bf77119ea5247224c303316e7d6f2ce6381ac Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 14 Sep 2026 11:30:28 +0200 Subject: [PATCH 084/157] feat(icons): delegated faucet icon from lab (#4764) --- icons/faucet.json | 43 +++++++++++++++++++++++++++++++++++++++++++ icons/faucet.svg | 19 +++++++++++++++++++ lab/faucet.json | 22 ---------------------- lab/faucet.svg | 20 -------------------- 4 files changed, 62 insertions(+), 42 deletions(-) create mode 100644 icons/faucet.json create mode 100644 icons/faucet.svg delete mode 100644 lab/faucet.json delete mode 100644 lab/faucet.svg diff --git a/icons/faucet.json b/icons/faucet.json new file mode 100644 index 000000000..76e39c06d --- /dev/null +++ b/icons/faucet.json @@ -0,0 +1,43 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "danielbayley", + "karsa-mistmere" + ], + "use-cases": [ + "Indicating water sources on maps", + "Controlling faucets in smart home apps", + "Representing kitchen or bathroom plumbing fixtures", + "Showing drinking water amenities in travel apps" + ], + "tags": [ + "tap", + "spigot", + "water", + "drinking", + "fresh", + "source", + "pipes", + "plumbing", + "plumber", + "sink", + "basin", + "kitchen", + "bathroom", + "washroom", + "fixture", + "valve", + "flow", + "drinkable", + "potable", + "amenities", + "utilities", + "hydration" + ], + "categories": [ + "food-beverage", + "home", + "navigation", + "travel" + ] +} diff --git a/icons/faucet.svg b/icons/faucet.svg new file mode 100644 index 000000000..c0e5ec8c1 --- /dev/null +++ b/icons/faucet.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/lab/faucet.json b/lab/faucet.json deleted file mode 100644 index dcf87a692..000000000 --- a/lab/faucet.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "../icon.schema.json", - "contributors": [ - "danielbayley" - ], - "tags": [ - "tap", - "spigot", - "water", - "drinking", - "fresh", - "source", - "pipes", - "plumbing", - "plumber" - ], - "categories": [ - "food-beverage", - "home", - "maps" - ] -} diff --git a/lab/faucet.svg b/lab/faucet.svg deleted file mode 100644 index fb75be81b..000000000 --- a/lab/faucet.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - From 566032a95da9d142cccc79852f4c216b2d701892 Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 14 Sep 2026 11:31:33 +0200 Subject: [PATCH 085/157] feat(icons): added `door-closed-package` icon (#4814) * Added icons/door-closed-package.svg * Added icons/door-closed-package.json --- icons/door-closed-package.json | 25 +++++++++++++++++++++++++ icons/door-closed-package.svg | 17 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 icons/door-closed-package.json create mode 100644 icons/door-closed-package.svg diff --git a/icons/door-closed-package.json b/icons/door-closed-package.json new file mode 100644 index 000000000..19c9093fa --- /dev/null +++ b/icons/door-closed-package.json @@ -0,0 +1,25 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "use-cases": [ + "Indicating package delivery to a home or residence", + "Representing packages left at a recipient's door", + "Tracking doorstep or unattended deliveries", + "Selecting a delivery location or drop-off point" + ], + "tags": [ + "delivery", + "parcel", + "doorstep", + "shipping", + "drop-off", + "courier" + ], + "categories": [ + "home", + "food-beverage", + "transportation" + ] +} diff --git a/icons/door-closed-package.svg b/icons/door-closed-package.svg new file mode 100644 index 000000000..a42607a4f --- /dev/null +++ b/icons/door-closed-package.svg @@ -0,0 +1,17 @@ + + + + + + + From 6b474e16d4ee8720bd8df19309601da32147dcb4 Mon Sep 17 00:00:00 2001 From: Saraj Dhakal <83003378+sarajdhakal@users.noreply.github.com> Date: Mon, 14 Sep 2026 15:21:57 +0545 Subject: [PATCH 086/157] feat(icons): added 'nepali-rupee' icon (#4608) * Add Nepali Rupee icon * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * refactor: center nepali rupee icon and use perfect circular arc * Updated with horizontally centered * Update use cases for Nepali rupee Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/nepali-rupee.json | 24 ++++++++++++++++++++++++ icons/nepali-rupee.svg | 17 +++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 icons/nepali-rupee.json create mode 100644 icons/nepali-rupee.svg diff --git a/icons/nepali-rupee.json b/icons/nepali-rupee.json new file mode 100644 index 000000000..1c60a40a8 --- /dev/null +++ b/icons/nepali-rupee.json @@ -0,0 +1,24 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "sarajdhakal" + ], + "use-cases": [ + "Displaying prices in Nepalese rupees (NPR)", + "Selecting Nepalese rupee in multi-currency selectors", + "Showing exchange rates for Nepalese rupee conversions", + "Indicating remittance transfers paid out in NPR" + ], + "tags": [ + "currency", + "money", + "nepal", + "rupee", + "npr" + ], + "categories": [ + "finance", + "shopping", + "travel" + ] +} diff --git a/icons/nepali-rupee.svg b/icons/nepali-rupee.svg new file mode 100644 index 000000000..ec4b7372f --- /dev/null +++ b/icons/nepali-rupee.svg @@ -0,0 +1,17 @@ + + + + + + + From bd95db1af8df4787959bb0a5f62ecc9d62b31af5 Mon Sep 17 00:00:00 2001 From: Alec Rust Date: Mon, 14 Sep 2026 10:39:55 +0100 Subject: [PATCH 087/157] feat(icons): added `tube-lotion` icon (#4029) * Added icons/sunscreen.svg * Added icons/sunscreen.json * fix(icons): apply reviewed tube-lotion design and metadata * fix(icons): correct tube-lotion contributor attribution --- icons/tube-lotion.json | 36 ++++++++++++++++++++++++++++++++++++ icons/tube-lotion.svg | 15 +++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 icons/tube-lotion.json create mode 100644 icons/tube-lotion.svg diff --git a/icons/tube-lotion.json b/icons/tube-lotion.json new file mode 100644 index 000000000..08dac706d --- /dev/null +++ b/icons/tube-lotion.json @@ -0,0 +1,36 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "AlecRust", + "karsa-mistmere", + "rrod497", + "jguddas" + ], + "use-cases": [ + "Representing skincare and personal-care products in shopping catalogs", + "Indicating lotion or sunscreen application in skincare routines", + "Identifying toiletries in travel packing checklists" + ], + "tags": [ + "sunscreen", + "sunblock", + "spf", + "uv", + "cream", + "skincare", + "toothpaste", + "ointment", + "bottle", + "toiletries", + "bathroom", + "beach", + "summer" + ], + "categories": [ + "medical", + "home", + "shopping", + "travel", + "seasons" + ] +} diff --git a/icons/tube-lotion.svg b/icons/tube-lotion.svg new file mode 100644 index 000000000..08ecfb1b4 --- /dev/null +++ b/icons/tube-lotion.svg @@ -0,0 +1,15 @@ + + + + + From a50c54cfffa35e29d9bf7088f6bb2f1812fae739 Mon Sep 17 00:00:00 2001 From: Brizen Britt <92282724+briz123@users.noreply.github.com> Date: Mon, 14 Sep 2026 04:45:48 -0500 Subject: [PATCH 088/157] feat(icons): Added cupcake icon (#3000) * Added svg and json for cupcake icon * Update cupcake.svg * Update cupcake.json --------- Co-authored-by: Eric Fennis Co-authored-by: Karsa --- icons/cupcake.json | 27 +++++++++++++++++++++++++++ icons/cupcake.svg | 19 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 icons/cupcake.json create mode 100644 icons/cupcake.svg diff --git a/icons/cupcake.json b/icons/cupcake.json new file mode 100644 index 000000000..41cd43ab3 --- /dev/null +++ b/icons/cupcake.json @@ -0,0 +1,27 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "AnnaSasDev", + "briz123", + "ajokt123", + "rrod497", + "karsa-mistmere" + ], + "use-cases": [ + "Representing cupcakes in bakery product catalogs", + "Filtering dessert options in food ordering apps", + "Marking treats for parties or celebrations" + ], + "tags": [ + "cake", + "dessert", + "food", + "celebration", + "sweet", + "baking", + "cooking" + ], + "categories": [ + "food-beverage" + ] +} diff --git a/icons/cupcake.svg b/icons/cupcake.svg new file mode 100644 index 000000000..3680d26ba --- /dev/null +++ b/icons/cupcake.svg @@ -0,0 +1,19 @@ + + + + + + + + + From 357a50175ec4c4e30b6a81df45e9432ef987ef14 Mon Sep 17 00:00:00 2001 From: Ethan Hazel <134425461+EthanHazel@users.noreply.github.com> Date: Mon, 14 Sep 2026 05:49:49 -0400 Subject: [PATCH 089/157] feat(icons): added square-dashed-x icon (#4535) * feat(icons): added square-dashed-x icon * Update icons/square-dashed-x.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(icons): split square-dashed-x icon into two designs * Update square-dashed-x.svg * Update square-dashed-x-corner.svg * Update square-dashed-x.json * Update square-dashed-x-corner.json --------- Co-authored-by: Eric Fennis Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Karsa --- icons/square-dashed-x-corner.json | 41 +++++++++++++++++++++++++++++++ icons/square-dashed-x-corner.svg | 23 +++++++++++++++++ icons/square-dashed-x.json | 41 +++++++++++++++++++++++++++++++ icons/square-dashed-x.svg | 26 ++++++++++++++++++++ 4 files changed, 131 insertions(+) create mode 100644 icons/square-dashed-x-corner.json create mode 100644 icons/square-dashed-x-corner.svg create mode 100644 icons/square-dashed-x.json create mode 100644 icons/square-dashed-x.svg diff --git a/icons/square-dashed-x-corner.json b/icons/square-dashed-x-corner.json new file mode 100644 index 000000000..bacc6e833 --- /dev/null +++ b/icons/square-dashed-x-corner.json @@ -0,0 +1,41 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "llaenowyd", + "mishkaio", + "ericfennis", + "karsa-mistmere", + "jguddas", + "chessurisme", + "ethanhazel" + ], + "use-cases": [ + "Deselecting a selection in an image editor", + "Clearing a selected range in a spreadsheet", + "Removing selected files from a file manager selection", + "Toggling off marquee/selection mode in a design application" + ], + "tags": [ + "deselect", + "unselect", + "delete", + "select", + "selection", + "border", + "width", + "layout", + "style", + "design", + "rectangular", + "marquee", + "box", + "rectangle", + "aspect ratio", + "1:1" + ], + "categories": [ + "design", + "development", + "layout" + ] +} diff --git a/icons/square-dashed-x-corner.svg b/icons/square-dashed-x-corner.svg new file mode 100644 index 000000000..c04602d24 --- /dev/null +++ b/icons/square-dashed-x-corner.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/icons/square-dashed-x.json b/icons/square-dashed-x.json new file mode 100644 index 000000000..bacc6e833 --- /dev/null +++ b/icons/square-dashed-x.json @@ -0,0 +1,41 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "llaenowyd", + "mishkaio", + "ericfennis", + "karsa-mistmere", + "jguddas", + "chessurisme", + "ethanhazel" + ], + "use-cases": [ + "Deselecting a selection in an image editor", + "Clearing a selected range in a spreadsheet", + "Removing selected files from a file manager selection", + "Toggling off marquee/selection mode in a design application" + ], + "tags": [ + "deselect", + "unselect", + "delete", + "select", + "selection", + "border", + "width", + "layout", + "style", + "design", + "rectangular", + "marquee", + "box", + "rectangle", + "aspect ratio", + "1:1" + ], + "categories": [ + "design", + "development", + "layout" + ] +} diff --git a/icons/square-dashed-x.svg b/icons/square-dashed-x.svg new file mode 100644 index 000000000..c28de3b9d --- /dev/null +++ b/icons/square-dashed-x.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + From 266fd1c717905b2a64c8c38faf3a6aee99791121 Mon Sep 17 00:00:00 2001 From: conan <157202356+gkkconan@users.noreply.github.com> Date: Mon, 14 Sep 2026 11:55:42 +0200 Subject: [PATCH 090/157] feat(icons): add `rotate-cw-clock` icon (#3979) * Added icons/update.svg * Added icons/update.json * Updated icons/update.json * chore(icons): rename update to update-clockwise * refactor(icons): rename `update-clockwise` to `rotate-cw-clock` Co-Authored-By: Claude Opus 5 * Add use cases for rotate-cw-clock icon Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update icons/rotate-cw-clock.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Refine use-case descriptions in rotate-cw-clock.json Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update rotate-cw-clock.json * Update rotate-cw-clock.svg * Update rotate-cw-clock.json * Update rotate-cw-clock.json --------- Co-authored-by: Eric Fennis Co-authored-by: Claude Opus 5 Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Karsa --- icons/rotate-cw-clock.json | 43 ++++++++++++++++++++++++++++++++++++++ icons/rotate-cw-clock.svg | 15 +++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 icons/rotate-cw-clock.json create mode 100644 icons/rotate-cw-clock.svg diff --git a/icons/rotate-cw-clock.json b/icons/rotate-cw-clock.json new file mode 100644 index 000000000..5687bf9b8 --- /dev/null +++ b/icons/rotate-cw-clock.json @@ -0,0 +1,43 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ericfennis", + "danielbayley", + "jguddas", + "karsa-mistmere", + "gkkconan" + ], + "use-cases": [ + "Updating content or syncing recent changes", + "Refreshing data in dashboards or reports", + "Renewing subscriptions or recurring services" + ], + "tags": [ + "modify", + "edit", + "refresh", + "sync", + "renew", + "revision", + "settings", + "adjust", + "upgrade", + "time", + "timeline", + "version", + "time machine", + "backup", + "clockwise", + "arrow", + "reload", + "rerun", + "synchronize", + "circular", + "cycle", + "update" + ], + "categories": [ + "arrows", + "time" + ] +} diff --git a/icons/rotate-cw-clock.svg b/icons/rotate-cw-clock.svg new file mode 100644 index 000000000..c4cb79a0e --- /dev/null +++ b/icons/rotate-cw-clock.svg @@ -0,0 +1,15 @@ + + + + + From f032bed22e4f6bb98657081582cb0bd4df121e10 Mon Sep 17 00:00:00 2001 From: HPRILLER Date: Mon, 14 Sep 2026 19:58:53 +0200 Subject: [PATCH 091/157] fix(icons): remove clipped path from save-off (#4848) --- icons/save-off.svg | 1 - 1 file changed, 1 deletion(-) diff --git a/icons/save-off.svg b/icons/save-off.svg index ca6177ee2..19207db57 100644 --- a/icons/save-off.svg +++ b/icons/save-off.svg @@ -14,6 +14,5 @@ - From 58ef6830c6fdf6374b751ab28b147a921bd31b34 Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 14 Sep 2026 21:04:50 +0200 Subject: [PATCH 092/157] fix(icons): changed `calendar-chevrons-right` (#4865) --- icons/calendar-chevrons-right.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icons/calendar-chevrons-right.svg b/icons/calendar-chevrons-right.svg index e55d7eb35..d703bb8c9 100644 --- a/icons/calendar-chevrons-right.svg +++ b/icons/calendar-chevrons-right.svg @@ -12,7 +12,7 @@ - + From 076b52527f0c5fe4cc1cd2472ef716fc332ccf0e Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Wed, 16 Sep 2026 10:18:44 +0200 Subject: [PATCH 093/157] fix(icons): changed `broccoli` icon (#4871) * Updated icons/broccoli.svg * Updated icons/broccoli.json --- icons/broccoli.json | 3 ++- icons/broccoli.svg | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/icons/broccoli.json b/icons/broccoli.json index 548817a95..2f92cb6a8 100644 --- a/icons/broccoli.json +++ b/icons/broccoli.json @@ -3,7 +3,8 @@ "contributors": [ "rrod497", "jamiemlaw", - "karsa-mistmere" + "karsa-mistmere", + "jguddas" ], "use-cases": [], "tags": [ diff --git a/icons/broccoli.svg b/icons/broccoli.svg index 2bdd23fc8..ca1efeb08 100644 --- a/icons/broccoli.svg +++ b/icons/broccoli.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + From 3b9ea6d08707edc439f25a4c354cb0d6b8bee973 Mon Sep 17 00:00:00 2001 From: "psj.dev" <47489775+psjdev@users.noreply.github.com> Date: Thu, 17 Sep 2026 02:21:20 -0500 Subject: [PATCH 094/157] feat(icons): added square-dashed-plus (#4849) * feat(icons): added square-dashed-plus * Update icons/square-dashed-plus.json Suggested via PR AI Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/square-dashed-plus.json Suggested by PR AI Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/square-dashed-plus.json Suggestion made by PR AI Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Revise use cases for square dashed plus icon AI PR Suggestion Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Peter Jamrozinski Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/square-dashed-plus.json | 36 +++++++++++++++++++++++++++++++++++ icons/square-dashed-plus.svg | 26 +++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 icons/square-dashed-plus.json create mode 100644 icons/square-dashed-plus.svg diff --git a/icons/square-dashed-plus.json b/icons/square-dashed-plus.json new file mode 100644 index 000000000..069b220d5 --- /dev/null +++ b/icons/square-dashed-plus.json @@ -0,0 +1,36 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "llaenowyd", + "mishkaio", + "ericfennis", + "karsa-mistmere", + "chessurisme", + "colebemis", + "psjdev" + ], + "use-cases": [ + "Prompting users to select content for an empty slot", + "Adding an area to an existing selection in design editors", + "Marking a placeholder where users can add a block" + ], + "tags": [ + "selection", + "select", + "add", + "new", + "placeholder", + "marquee", + "box", + "dashed", + "plus", + "insert", + "frame", + "empty" + ], + "categories": [ + "design", + "layout", + "shapes" + ] +} diff --git a/icons/square-dashed-plus.svg b/icons/square-dashed-plus.svg new file mode 100644 index 000000000..e9750c97e --- /dev/null +++ b/icons/square-dashed-plus.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + From a87cecebe3eae0f2aaa2fabbce87e02c080d929a Mon Sep 17 00:00:00 2001 From: Tyler <91107754+tylerkade@users.noreply.github.com> Date: Thu, 17 Sep 2026 08:25:14 +0100 Subject: [PATCH 095/157] feat(icons): added `briefcase-plus` icon (#4757) * feat(icons): added `briefcase-plus` icon * Update icons/briefcase-plus.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/briefcase-plus.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update icons/briefcase-plus.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * chore(lab): remove `briefcase-plus` from lab Icon has been promoted to icons/, no longer needed in lab. Co-Authored-By: Claude Sonnet 5 * Updated briefcase-plus icon * Update contributors in briefcase-plus.json Added 'jguddas' to contributors list in briefcase-plus.json --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 Co-authored-by: Eric Fennis --- icons/briefcase-plus.json | 39 +++++++++++++++++++++++++++++++ {lab => icons}/briefcase-plus.svg | 8 +++---- lab/briefcase-plus.json | 21 ----------------- 3 files changed, 43 insertions(+), 25 deletions(-) create mode 100644 icons/briefcase-plus.json rename {lab => icons}/briefcase-plus.svg (53%) delete mode 100644 lab/briefcase-plus.json diff --git a/icons/briefcase-plus.json b/icons/briefcase-plus.json new file mode 100644 index 000000000..95a18060d --- /dev/null +++ b/icons/briefcase-plus.json @@ -0,0 +1,39 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "tylerkade", + "jguddas" + ], + "use-cases": [ + "Indicating you're adding luggage", + "adding a new business or company profile", + "creating or saving a professional portfolio", + "adding a job or role to a user's profile", + "indicating add to briefcase or save for later in a product/service listing" + ], + "tags": [ + "work", + "bag", + "baggage", + "folder", + "new", + "add", + "create", + "increase", + "briefcase", + "portfolio", + "business", + "career", + "employment", + "professional", + "plus" + ], + "categories": [ + "transportation", + "files", + "account" + ] +} diff --git a/lab/briefcase-plus.svg b/icons/briefcase-plus.svg similarity index 53% rename from lab/briefcase-plus.svg rename to icons/briefcase-plus.svg index 9cf51170b..256f2eae1 100644 --- a/lab/briefcase-plus.svg +++ b/icons/briefcase-plus.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/lab/briefcase-plus.json b/lab/briefcase-plus.json deleted file mode 100644 index b1e6b0b6b..000000000 --- a/lab/briefcase-plus.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "../icon.schema.json", - "tags": [ - "healthcare", - "first aid kit", - "paramedic", - "medkit", - "medikit", - "medpack", - "medicine", - "pharmacy", - "pharmaceutical", - "add", - "cross", - "box" - ], - "categories": [ - "medical", - "gaming" - ] -} From dba8fb79324addd11c4fb556c56efd5f77c86086 Mon Sep 17 00:00:00 2001 From: nananecy <140616463+nananecy@users.noreply.github.com> Date: Thu, 17 Sep 2026 07:40:38 -0400 Subject: [PATCH 096/157] feat(icons): added `square-sparkles` icon (#3610) * Added icons/square-sparkles.svg * Added icons/square-sparkles.json * apply design from @karsa-mistmere * Add use-cases field to square-sparkles.json * Add use cases for square sparkles icon Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/square-sparkles.json | 24 ++++++++++++++++++++++++ icons/square-sparkles.svg | 16 ++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 icons/square-sparkles.json create mode 100644 icons/square-sparkles.svg diff --git a/icons/square-sparkles.json b/icons/square-sparkles.json new file mode 100644 index 000000000..488435ef6 --- /dev/null +++ b/icons/square-sparkles.json @@ -0,0 +1,24 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "karsa-mistmere", + "ericfennis", + "nananecy" + ], + "use-cases": [ + "Indicating AI-assisted image generation features", + "Representing generative AI image creation tools" + ], + "tags": [ + "picture", + "photo", + "sparkles" + ], + "categories": [ + "photography", + "text", + "multimedia", + "files" + ] +} diff --git a/icons/square-sparkles.svg b/icons/square-sparkles.svg new file mode 100644 index 000000000..69685e3aa --- /dev/null +++ b/icons/square-sparkles.svg @@ -0,0 +1,16 @@ + + + + + + From e593a44ad29be87dcd062a64cc8811ff2c201b65 Mon Sep 17 00:00:00 2001 From: Nathan De Pachtere Date: Thu, 17 Sep 2026 13:41:06 +0200 Subject: [PATCH 097/157] feat(icons): added `line-dot-left-horizontal` icon (#3855) * Added icons/line-dot-left-horizontal.svg * Added icons/line-dot-left-horizontal.json * Update icons/line-dot-left-horizontal.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add use cases to line-dot-left-horizontal.json Added use cases for line-dot-left-horizontal icon. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/line-dot-left-horizontal.json | 32 +++++++++++++++++++++++++++++ icons/line-dot-left-horizontal.svg | 14 +++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 icons/line-dot-left-horizontal.json create mode 100644 icons/line-dot-left-horizontal.svg diff --git a/icons/line-dot-left-horizontal.json b/icons/line-dot-left-horizontal.json new file mode 100644 index 000000000..1d3381517 --- /dev/null +++ b/icons/line-dot-left-horizontal.json @@ -0,0 +1,32 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "nathan-de-pachtere" + ], + "use-cases": [ + "Marking a branch's first commit in version-control interfaces", + "Indicating measurements at a metal bar's starting point" + ], + "tags": [ + "line", + "dot", + "left", + "horizontal", + "shape", + "symbol", + "navigation", + "arrow", + "pointer", + "code", + "version control", + "waypoint", + "stop", + "start", + "first", + "station" + ], + "categories": [ + "development", + "navigation" + ] +} diff --git a/icons/line-dot-left-horizontal.svg b/icons/line-dot-left-horizontal.svg new file mode 100644 index 000000000..07fc26e34 --- /dev/null +++ b/icons/line-dot-left-horizontal.svg @@ -0,0 +1,14 @@ + + + + From 4faa47c0b09f36f1d04fbe5c40adaad4ac9627b9 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 17 Sep 2026 14:30:42 +0200 Subject: [PATCH 098/157] fix(packages/svelte,solid): fix shared type imports in Solid and Svelte (#4846) Co-authored-by: Eric Fennis --- packages/lucide-solid/package.json | 1 + packages/lucide-solid/rollup.config.mjs | 36 +++++++++++++------------ packages/svelte/src/types.ts | 2 +- pnpm-lock.yaml | 3 +++ 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/lucide-solid/package.json b/packages/lucide-solid/package.json index 05862da98..7851295fe 100644 --- a/packages/lucide-solid/package.json +++ b/packages/lucide-solid/package.json @@ -80,6 +80,7 @@ "babel-preset-solid": "^1.9.15", "esbuild": "^0.28.2", "jest-serializer-html": "^7.1.0", + "rollup-plugin-dts": "^6.5.1", "rollup": "^4.63.1", "solid-js": "^1.9.15", "typescript": "^6.0.3", diff --git a/packages/lucide-solid/rollup.config.mjs b/packages/lucide-solid/rollup.config.mjs index 5bdf1448e..b422c4396 100644 --- a/packages/lucide-solid/rollup.config.mjs +++ b/packages/lucide-solid/rollup.config.mjs @@ -2,10 +2,15 @@ import path from 'path'; import { babel } from '@rollup/plugin-babel'; import esbuild from 'esbuild'; import plugins from '@lucide/rollup-plugins'; -import ts from 'typescript'; +import dts from 'rollup-plugin-dts'; import pkg from './package.json' with { type: 'json' }; +const dtsOptions = { + includeExternal: ['@lucide/shared/types'], + tsconfig: './tsconfig.json', +}; + const packageName = 'LucideSolid'; const outputFileName = 'lucide-solid'; const outputDir = 'dist'; @@ -92,21 +97,6 @@ const configs = bundles ], external: ['solid-js'], }); - - // Generate types - const program = ts.createProgram([pkg.source], { - target: ts.ScriptTarget.ESNext, - module: ts.ModuleKind.ESNext, - moduleResolution: ts.ModuleResolutionKind.NodeJs, - jsx: ts.JsxEmit.Preserve, - jsxImportSource: 'solid-js', - allowSyntheticDefaultImports: true, - esModuleInterop: true, - declarationDir: `dist/types`, - declaration: true, - emitDeclarationOnly: true, - }); - program.emit(); }, } : null, @@ -132,4 +122,16 @@ const configs = bundles ) .flat(); -export default configs; +const typesConfig = { + input: inputs[0], + output: { + dir: `${outputDir}/types`, + format: 'es', + preserveModules: true, + preserveModulesRoot: 'src', + entryFileNames: '[name].d.ts', + }, + plugins: [dts(dtsOptions)], +}; + +export default [...configs, typesConfig]; diff --git a/packages/svelte/src/types.ts b/packages/svelte/src/types.ts index 0dae05063..d2dc72fb6 100644 --- a/packages/svelte/src/types.ts +++ b/packages/svelte/src/types.ts @@ -3,7 +3,7 @@ import type { Snippet, Component } from 'svelte'; import type { LucideIconData as SharedLucideIconData, LucideIconNode as SharedLucideIconNode, -} from '@lucide/shared/types'; +} from './utils/types.js'; export type Attrs = Record & SVGAttributes; type IconNodeElements = diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4f4a3db0..438498f99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -864,6 +864,9 @@ importers: rollup: specifier: ^4.63.1 version: 4.63.1 + rollup-plugin-dts: + specifier: ^6.5.1 + version: 6.5.1(rollup@4.63.1)(typescript@6.0.3) solid-js: specifier: ^1.9.15 version: 1.9.15 From f3e36fb0d7c9776a5e9a2a0e5f9ca8d1db54b79e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Sep 2026 14:56:09 +0200 Subject: [PATCH 099/157] chore(deps-dev): bump react-native (#4673) Bumps the react-native-deps group with 1 update in the / directory: [react-native](https://github.com/react/react-native/tree/HEAD/packages/react-native). Updates `react-native` from 0.76.9 to 0.87.1 - [Release notes](https://github.com/react/react-native/releases) - [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG-0.7x.md) - [Commits](https://github.com/react/react-native/commits/v0.87.1/packages/react-native) --- updated-dependencies: - dependency-name: react-native dependency-version: 0.86.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: react-native-deps ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/lucide-react-native/package.json | 2 +- pnpm-lock.yaml | 1581 +++------------------ 2 files changed, 215 insertions(+), 1368 deletions(-) diff --git a/packages/lucide-react-native/package.json b/packages/lucide-react-native/package.json index df6ff3760..d672a4830 100644 --- a/packages/lucide-react-native/package.json +++ b/packages/lucide-react-native/package.json @@ -76,7 +76,7 @@ "jest-serializer-html": "^7.1.0", "react": "18.3.1", "react-dom": "18.3.1", - "react-native": "^0.76.9", + "react-native": "^0.87.1", "react-native-svg": "^15.15.5", "rollup": "^4.63.1", "rollup-plugin-dts": "^6.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 438498f99..db5b29571 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -805,11 +805,11 @@ importers: specifier: 18.3.1 version: 18.3.1(react@18.3.1) react-native: - specifier: ^0.76.9 - version: 0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2) + specifier: ^0.87.1 + version: 0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2) react-native-svg: specifier: ^15.15.5 - version: 15.15.5(react-native@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1) + version: 15.15.5(react-native@0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1) rollup: specifier: ^4.63.1 version: 4.63.1 @@ -1687,77 +1687,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-export-default-from@7.29.7': - resolution: {integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-default-from@7.29.7': - resolution: {integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.29.7': - resolution: {integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.29.7': resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==} engines: {node: '>=6.9.0'} @@ -1770,64 +1705,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.29.7': resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.29.7': resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} engines: {node: '>=6.9.0'} @@ -1942,12 +1825,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.29.7': - resolution: {integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.29.7': resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} engines: {node: '>=6.9.0'} @@ -2080,12 +1957,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.29.7': - resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.29.7': resolution: {integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==} engines: {node: '>=6.9.0'} @@ -2128,12 +1999,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.29.7': - resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.29.7': resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==} engines: {node: '>=6.9.0'} @@ -2200,12 +2065,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.29.7': - resolution: {integrity: sha512-KYIRV0BuaN68CDdsqFkAD7MU7yipUqQNuNElwATdxaIdpTjhvtY82QvkBJs7zV3Evxj2jFAAZ1iO8nyy0nhjqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: @@ -2217,12 +2076,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.29.7': - resolution: {integrity: sha512-AMGJoWuES861riy6pcB0fphE1YXybtQnBYQMuIyPv6mKLiosfa79BKTnAOyx215c/3RJPJpdQwoHZ3earVH7AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.29.7': resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} @@ -3336,34 +3189,14 @@ packages: resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - '@istanbuljs/schema@0.1.6': resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} - '@jest/create-cache-key-function@29.7.0': - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4224,67 +4057,54 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: ^7.3.6 - '@react-native/assets-registry@0.76.9': - resolution: {integrity: sha512-pN0Ws5xsjWOZ8P37efh0jqHHQmq+oNGKT4AyAoKRpxBDDDmlAmpaYjer9Qz7PpDKF+IUyRjF/+rBsM50a8JcUg==} - engines: {node: '>=18'} + '@react-native/asset-utils@0.87.1': + resolution: {integrity: sha512-FeFnbn9ENPs7IVBzZt1bBWfiRGvT4q+CsWwXGFyKVW/1ol3ylBRuTtXBGHIAmcNN4fUR60nSXsCN19pzNHkPgA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - '@react-native/babel-plugin-codegen@0.76.9': - resolution: {integrity: sha512-vxL/vtDEIYHfWKm5oTaEmwcnNGsua/i9OjIxBDBFiJDu5i5RU3bpmDiXQm/bJxrJNPRp5lW0I0kpGihVhnMAIQ==} - engines: {node: '>=18'} - - '@react-native/babel-preset@0.76.9': - resolution: {integrity: sha512-TbSeCplCM6WhL3hR2MjC/E1a9cRnMLz7i767T7mP90oWkklEjyPxWl+0GGoVGnJ8FC/jLUupg/HvREKjjif6lw==} - engines: {node: '>=18'} + '@react-native/codegen@0.87.1': + resolution: {integrity: sha512-qbaqEdlUfj2vRgvWTpMoNgHnEqAhAYJLUrpGkb0WC9n0kdtqUvgigpz4bDktZwolM9BemXwgGFgyiAnbs3t0xw==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.76.9': - resolution: {integrity: sha512-AzlCHMTKrAVC2709V4ZGtBXmGVtWTpWm3Ruv5vXcd3/anH4mGucfJ4rjbWKdaYQJMpXa3ytGomQrsIsT/s8kgA==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/community-cli-plugin@0.76.9': - resolution: {integrity: sha512-08jx8ixCjjd4jNQwNpP8yqrjrDctN2qvPPlf6ebz1OJQk8e1sbUl3wVn1zhhMvWrYcaraDnatPb5uCPq+dn3NQ==} - engines: {node: '>=18'} + '@react-native/community-cli-plugin@0.87.1': + resolution: {integrity: sha512-aGBae6v+ngy8fIpU1EOaVxn/8DOgmJNphEdn5Eb0wTchUCxr8bDjpTJYNdrptyn3qI/elk8r9agQ2OBaFvrRlw==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} peerDependencies: '@react-native-community/cli': '*' + '@react-native/metro-config': 0.87.1 peerDependenciesMeta: '@react-native-community/cli': optional: true + '@react-native/metro-config': + optional: true - '@react-native/debugger-frontend@0.76.9': - resolution: {integrity: sha512-0Ru72Bm066xmxFuOXhhvrryxvb57uI79yDSFf+hxRpktkC98NMuRenlJhslMrbJ6WjCu1vOe/9UjWNYyxXTRTA==} - engines: {node: '>=18'} + '@react-native/debugger-frontend@0.87.1': + resolution: {integrity: sha512-RNm7soJB+8YSauLnsCCylA1eVfT6JWaDTPUEF01uu9YwDyZ7remKlZbXtmVbtscbNGcp+hbI4iZUdVOpQWsHuA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - '@react-native/dev-middleware@0.76.9': - resolution: {integrity: sha512-xkd3C3dRcmZLjFTEAOvC14q3apMLouIvJViCZY/p1EfCMrNND31dgE1dYrLTiI045WAWMt5bD15i6f7dE2/QWA==} - engines: {node: '>=18'} + '@react-native/debugger-shell@0.87.1': + resolution: {integrity: sha512-eNbKjcnseJIjy5XCDwyhKOT1ngOg3Dv1fVxTDtnVFqdqjqsbfY4v9JuJG1RZJ7+mFoRRe05HE8GSQU8B7n5xwQ==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - '@react-native/gradle-plugin@0.76.9': - resolution: {integrity: sha512-uGzp3dL4GfNDz+jOb8Nik1Vrfq1LHm0zESizrGhHACFiFlUSflVAnWuUAjlZlz5XfLhzGVvunG4Vdrpw8CD2ng==} - engines: {node: '>=18'} + '@react-native/dev-middleware@0.87.1': + resolution: {integrity: sha512-KgvAGUaVl6/XrWFAPK8e0ojDRbsdBjr4bnwyn6PC3CwxPQc5iv+i7hMoUwYS8ORSkHKfjt+cV86/mBQ4lG8yfA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - '@react-native/js-polyfills@0.76.9': - resolution: {integrity: sha512-s6z6m8cK4SMjIX1hm8LT187aQ6//ujLrjzDBogqDCYXRbfjbAYovw5as/v2a2rhUIyJbS3UjokZm3W0H+Oh/RQ==} - engines: {node: '>=18'} + '@react-native/gradle-plugin@0.87.1': + resolution: {integrity: sha512-bZ5X2BNxaSlfp2KlDtUM910QqW9G1yTIeZXghuv4ag8SAQLzm5Mf9j5GjJfT6ax2Qo2aRT15Vi3Tro/yLGJstA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - '@react-native/metro-babel-transformer@0.76.9': - resolution: {integrity: sha512-HGq11347UHNiO/NvVbAO35hQCmH8YZRs7in7nVq7SL99pnpZK4WXwLdAXmSuwz5uYqOuwnKYDlpadz8fkE94Mg==} - engines: {node: '>=18'} + '@react-native/normalize-colors@0.87.1': + resolution: {integrity: sha512-8+AutemzX+a7cuKgTUyb7JUk3sFYgLyrSnlTLrL6LuW/LKDE+FYE8lJGWYhJPJcE51Ge1D8yRzxgQEdEFZtuIw==} + + '@react-native/virtualized-lists@0.87.1': + resolution: {integrity: sha512-qSZjeX3UJrDvyfjf7yc3E68rp1XnzE+5nu8ImklhkVC0+p/XiaHPb/KGkRqDdnQyWHN55BRYSsCMEwgVI6WRNQ==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} peerDependencies: - '@babel/core': '*' - - '@react-native/normalize-colors@0.76.9': - resolution: {integrity: sha512-TUdMG2JGk72M9d8DYbubdOlrzTYjw+YMe/xOnLU4viDgWRHsCbtRS9x0IAxRjs3amj/7zmK3Atm8jUPvdAc8qw==} - - '@react-native/virtualized-lists@0.76.9': - resolution: {integrity: sha512-2neUfZKuqMK2LzfS8NyOWOyWUJOWgDym5fUph6fN9qF+LNPjAvnc4Zr9+o+59qjNu/yXwQgVMWNU4+8WJuPVWw==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.2.6 + '@types/react': ^19.2.0 react: '*' - react-native: '*' + react-native: 0.87.1 peerDependenciesMeta: '@types/react': optional: true @@ -4932,12 +4752,6 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@solidjs/router@0.11.5': resolution: {integrity: sha512-nclebUUufZT37rB5l0LbJn92vZwJOhYVltfjfLFI3yAcMlwiil5JOy6X2FEgekWsoX29No/GCBTkYfrSZCRfaw==} peerDependencies: @@ -5352,9 +5166,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@3.0.5': resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} @@ -5401,9 +5212,6 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} @@ -5439,9 +5247,6 @@ packages: '@types/semver@7.8.0': resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/svg2ttf@5.0.1': resolution: {integrity: sha512-sbMTAySCMUUQYBlkfVcShKSbG9LxhGk0LdPetLak8m28WDuJhwJMVLcLzw7z/8uEyWkwtLaMxpT4R/+riYz6BA==} @@ -5937,10 +5742,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} @@ -6134,10 +5935,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - ast-v8-to-istanbul@1.0.5: resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} @@ -6155,9 +5952,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} @@ -6192,28 +5986,9 @@ packages: react-native-b4a: optional: true - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - babel-dead-code-elimination@1.0.12: resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==} - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-jsx-dom-expressions@0.40.10: resolution: {integrity: sha512-lxve6Y02YiZTldB7efKpnbf1BH00XCFZNYYW235jSGsYaJNFtHrYlKV6/O+miHbjqpIr9FTe5+0no4hofAMbfA==} peerDependencies: @@ -6224,11 +5999,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.14.2: resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} peerDependencies: @@ -6239,31 +6009,14 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-syntax-hermes-parser@0.23.1: - resolution: {integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==} - - babel-plugin-syntax-hermes-parser@0.25.1: - resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} - - babel-plugin-transform-flow-enums@0.0.2: - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + babel-plugin-syntax-hermes-parser@0.36.1: + resolution: {integrity: sha512-ycduwJbvdvIMmVvlAZqGggS+pm5Eu4Bk9pcV9Sm2Z4PJNRVsKkv0g7vHj+LeuC1gHTeF67sJXFOq61IlqCa2hA==} babel-plugin-transform-hook-names@1.0.2: resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} peerDependencies: '@babel/core': ^7.12.10 - babel-preset-current-node-syntax@1.2.0: - resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} - peerDependencies: - '@babel/core': ^7.0.0 || ^8.0.0-0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-solid@1.9.15: resolution: {integrity: sha512-GBmg1OiPb+OwcH51XbDAKPtvrPfQW7rCJTJxcp8+yhtWwN+kqnbEJk2SgVybd+uhTxTKAvjaFyiQSr/eUZBwzg==} peerDependencies: @@ -6445,26 +6198,10 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - - caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -6538,8 +6275,8 @@ packages: engines: {node: '>=12.13.0'} hasBin: true - chromium-edge-launcher@0.2.0: - resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + chromium-edge-launcher@0.3.0: + resolution: {integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==} ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -6599,10 +6336,6 @@ packages: resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} engines: {node: '>=20'} - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -6784,10 +6517,6 @@ packages: resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} - cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - cpy-cli@7.0.0: resolution: {integrity: sha512-uGCdhIxGfZcPXidCuT8w1jBknVXFx0un7NLjzqBZcdnkIWtLUnWMPk5TC37ceoVjwASLSNsRtTXXNTuFIyE2ng==} engines: {node: '>=20'} @@ -7275,9 +7004,6 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} @@ -7343,10 +7069,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -7570,6 +7292,11 @@ packages: fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + fb-dotslash@0.5.8: + resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} + engines: {node: '>=20'} + hasBin: true + fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -7619,10 +7346,6 @@ packages: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - find-cache-directory@6.0.0: resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} engines: {node: '>=20'} @@ -7635,14 +7358,6 @@ packages: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -7661,14 +7376,6 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-estree@0.330.0: - resolution: {integrity: sha512-IIEGATLNfih3R7AfKYI1ZstiV+RFjRuX1GhrB9gZBifhovHcyTag9IlvkFiSP2hM7G6i1HfAwjn6i3s+EN6SZQ==} - engines: {node: '>=18'} - - flow-parser@0.330.0: - resolution: {integrity: sha512-ytk/NqSxCVNJ6cwlp/rHLot0bE4KGt0LAIcOU0F9QXwp9zdUI0EdDzKETLHVRVkmZj3bROT9v0YZVdD6yJC6gg==} - engines: {node: '>=0.4.0'} - focus-trap@7.8.0: resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} @@ -7794,10 +7501,6 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - get-port-please@3.2.0: resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} @@ -7945,17 +7648,14 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hermes-estree@0.23.1: - resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} + hermes-compiler@250829098.0.17: + resolution: {integrity: sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw==} - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + hermes-estree@0.36.1: + resolution: {integrity: sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==} - hermes-parser@0.23.1: - resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} - - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hermes-parser@0.36.1: + resolution: {integrity: sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==} hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} @@ -8078,10 +7778,6 @@ packages: immutable@5.1.9: resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==} - import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -8152,9 +7848,6 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -8194,10 +7887,6 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -8291,10 +7980,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-plain-object@3.0.1: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} @@ -8388,10 +8073,6 @@ packages: resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} engines: {node: '>=18'} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} @@ -8399,10 +8080,6 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - istanbul-lib-instrument@6.0.3: resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} @@ -8422,30 +8099,10 @@ packages: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-serializer-html@7.1.0: resolution: {integrity: sha512-xYL2qC7kmoYHJo8MYqJkzrl/Fdlx+fat4U1AqYg+kafqwcKPiMkOcjWHPKhueuNEgr+uemhGc+jqXYiwCyRyLA==} @@ -8499,18 +8156,9 @@ packages: resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true - jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jscodeshift@0.14.0: - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - jsdom@30.0.1: resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} @@ -8528,9 +8176,6 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-schema-migrate@2.0.0: resolution: {integrity: sha512-r38SVTtojDRp4eD6WsCqiE0eNDt4v1WalBXb9cyZYw9ai5cGtBwzRNWjHzJl38w6TxFkXAIA7h+fyX3tnrAFhQ==} @@ -8746,14 +8391,6 @@ packages: locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -8817,10 +8454,6 @@ packages: magicast@0.5.4: resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -8923,62 +8556,62 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - metro-babel-transformer@0.81.5: - resolution: {integrity: sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==} - engines: {node: '>=18.18'} + metro-babel-transformer@0.87.0: + resolution: {integrity: sha512-IEn1K1FyY4J1sA5y6zqDjf2OkfmpTEqhZOeP6MJX8HepSW0cuHGw1m8bYOdv2adkG3XUE9dtM0csUs0gP/Xa5w==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-cache-key@0.81.5: - resolution: {integrity: sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==} - engines: {node: '>=18.18'} + metro-cache-key@0.87.0: + resolution: {integrity: sha512-Q+MPt6jl0zQogr4Q02WaJK6HY+GtE5A0nzj8kIV1Owgrx6OMNvm6scPTr1SM/R4LpCE8EH/Y5qfbXQ84GHTr0Q==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-cache@0.81.5: - resolution: {integrity: sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==} - engines: {node: '>=18.18'} + metro-cache@0.87.0: + resolution: {integrity: sha512-146vS1BMSKcp99jddOhFBfHwzUEWN35NrsnSJDF2sQQ0ZT5OsBcOjd574PM233TWEZISRJ5DOK+vokD+1ubx+w==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-config@0.81.5: - resolution: {integrity: sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==} - engines: {node: '>=18.18'} + metro-config@0.87.0: + resolution: {integrity: sha512-yZ9QAIzWH9MxwrzwRlX/CBGRWOT14l7klSDYg8hdtSdnoUs5A7MQRdHE2KB9iHVzGQW5wgWM5aXJswNeWbSQPA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-core@0.81.5: - resolution: {integrity: sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==} - engines: {node: '>=18.18'} + metro-core@0.87.0: + resolution: {integrity: sha512-yW57+pCOHRC/CJZ99GA2PTd+30dORwDAjUPRCokj91IWW5In9Jwtt2FB5wACrGO8P0GHTyVHdTwDNyZsNndUbA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-file-map@0.81.5: - resolution: {integrity: sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==} - engines: {node: '>=18.18'} + metro-file-map@0.87.0: + resolution: {integrity: sha512-Dc57t8jsINwA90bbVlqaeDlxf1rVGgj5SmOEnOMbaHNUM/HCYYTJxPV8SRdOBwh7qTz/biO9vaQvBTjRBgbbsg==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-minify-terser@0.81.5: - resolution: {integrity: sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==} - engines: {node: '>=18.18'} + metro-minify-terser@0.87.0: + resolution: {integrity: sha512-tPa0O983PDutFu3LXbArRH5NduogcKrvW6fs9VHhksTKUA1iqDyoD1ZSj/Me52xJ6T9/9pOwIVyj9ulKc/zMkg==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-resolver@0.81.5: - resolution: {integrity: sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==} - engines: {node: '>=18.18'} + metro-resolver@0.87.0: + resolution: {integrity: sha512-Xl3M9R3KToaHJvXlI2lSOxtYHitzxite+195DSi00HL9PcS7Xik5+3xlRjfkKb3FA86SZxYPj+WJwlcfgaZoxg==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-runtime@0.81.5: - resolution: {integrity: sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==} - engines: {node: '>=18.18'} + metro-runtime@0.87.0: + resolution: {integrity: sha512-XsXZkgEwI0ZMYSBfvOMAbenzwa60XlObXJ27g6/Khgrz9ESbiBbAsd7hR62G2jRBYOhGAzG61Gk22dpRJj/mdw==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-source-map@0.81.5: - resolution: {integrity: sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==} - engines: {node: '>=18.18'} + metro-source-map@0.87.0: + resolution: {integrity: sha512-31BrYqu1c2co93rF1LN9Pw+7g+BrfDyxJkNQWrYm+pfA/+eVYVumF7tFMHbXLePLmHfhvSgVvbK6su1Oyiw1ng==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-symbolicate@0.81.5: - resolution: {integrity: sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==} - engines: {node: '>=18.18'} + metro-symbolicate@0.87.0: + resolution: {integrity: sha512-uOpTxAXu74N+RSujUZ78L6gjI6bDdnz6XuW+AIUNuubZDEQPIpaX0StzIb0GMeQWP6zfHOHwFrWPP5Iquu1GXw==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} hasBin: true - metro-transform-plugins@0.81.5: - resolution: {integrity: sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==} - engines: {node: '>=18.18'} + metro-transform-plugins@0.87.0: + resolution: {integrity: sha512-i8keUe9+BaSwMuQM26DGheElCpTtflAKIrSwJAm8ZsgDb50RAUQus+e6zt2suaJXJ1OxZa7vqgtqoZxdniM6Fw==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro-transform-worker@0.81.5: - resolution: {integrity: sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==} - engines: {node: '>=18.18'} + metro-transform-worker@0.87.0: + resolution: {integrity: sha512-YftLzNJxCTYxEN5k4AzR8KYwiENTEuz30L+4QeoMrtDd+U8mDThZg/ArR3JVRd8LaikwPOjVAS5SP3xPJN0AaA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} - metro@0.81.5: - resolution: {integrity: sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==} - engines: {node: '>=18.18'} + metro@0.87.0: + resolution: {integrity: sha512-fRqFhSzQhLNQSCvJFeuRzBRXAOOKXf1O8d2cvmMtG6yFR0jCllQ7vBsXoLP18yuqtf+N1XwWXTPF11eWy9q6dQ==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} hasBin: true microbuffer@1.0.0: @@ -9058,18 +8691,10 @@ packages: resolution: {integrity: sha512-H/E3J6t+DQs/F2YgfDhxUVZz/dF8JXPPKTLHL/yHCcLZLtCXJDUaqvhJXQwqOVBvbyNn4T0WjLpIHd7PAw7fBA==} hasBin: true - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mime-types@3.0.2: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} @@ -9155,10 +8780,6 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -9240,10 +8861,6 @@ packages: engines: {node: '>= 4.4.x'} hasBin: true - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - negotiator@0.6.4: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} @@ -9252,9 +8869,6 @@ packages: resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==} engines: {node: '>=18'} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - neotraverse@1.0.1: resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} engines: {node: '>= 10'} @@ -9312,10 +8926,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -9413,9 +9023,9 @@ packages: chokidar: optional: true - ob1@0.81.5: - resolution: {integrity: sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==} - engines: {node: '>=18.18'} + ob1@0.87.0: + resolution: {integrity: sha512-8Q8sKCiUwsxgSmjDtVWyRgmxsgeJXXam3oQH6Id8ADfNaJMV6GZKyeAl8+pGVVdgwAZabfk5+aExle7AP/nZiA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -9575,10 +9185,6 @@ packages: resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} engines: {node: '>=18'} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -9587,14 +9193,6 @@ packages: resolution: {integrity: sha512-Ll0w3fU24vYpXoZmjjZIee6bJQDgG0oAyo1PdmFYI8UDwJJddaHAypxIH9avUu+t+lSsAwKVsb1jDCMIIChliw==} engines: {node: '>=20'} - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -9619,10 +9217,6 @@ packages: resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} engines: {node: '>=20'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -9652,10 +9246,6 @@ packages: parse-headers@2.0.6: resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} @@ -9685,10 +9275,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -9758,10 +9344,6 @@ packages: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -9785,10 +9367,6 @@ packages: resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - pkg-dir@8.0.0: resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} engines: {node: '>=18'} @@ -9977,8 +9555,8 @@ packages: rc9@3.1.0: resolution: {integrity: sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==} - react-devtools-core@5.3.2: - resolution: {integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==} + react-devtools-core@6.1.5: + resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} @@ -10002,13 +9580,13 @@ packages: react: '*' react-native: '*' - react-native@0.76.9: - resolution: {integrity: sha512-+LRwecWmTDco7OweGsrECIqJu0iyrREd6CTCgC/uLLYipiHvk+MH9nd6drFtCw/6Blz6eoKTcH9YTTJusNtrWg==} - engines: {node: '>=18'} + react-native@0.87.1: + resolution: {integrity: sha512-DJKG6ANoD7BtrE4z9DewiSD7/RxCX73lK5Pu49aUr85P3333Dm2roTiP0rRjQNDZdVizHSOmstWfwF/o9EjCRA==} + engines: {node: ^22.13.0 || ^24.3.0 || >= 26.0.0} hasBin: true peerDependencies: - '@types/react': ^18.2.6 - react: ^18.2.0 + '@types/react': ^19.1.1 + react: ^19.2.3 peerDependenciesMeta: '@types/react': optional: true @@ -10073,13 +9651,6 @@ packages: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} - readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -10157,10 +9728,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -10204,16 +9771,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rolldown@1.2.0: resolution: {integrity: sha512-u7tgm5l4Yw1iTqUL4EcYOAt7fFvCgQMLeidrnD4GALlC6aOznCjezYajgxeyKw27u0Q5N7fwgCzjVyPIWzwuBA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -10372,9 +9929,6 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} - scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -10388,10 +9942,6 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -10462,10 +10012,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - sharp@0.35.4: resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} engines: {node: '>=20.9.0'} @@ -10658,10 +10204,6 @@ packages: resolution: {integrity: sha512-H6D7134xi6qONvh7ZHKgviXf+rd3vhGBSvebPZCaUkd8zvQ+7PtDw6CljPTe4cXWNf2IKZGNqw6VJXSb9IgBpA==} engines: {node: '>=20.0.0'} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -10943,19 +10485,11 @@ packages: teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - terser@5.51.2: resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} engines: {node: '>=10'} hasBin: true - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} @@ -11101,10 +10635,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} @@ -11734,24 +11264,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - ws@6.2.6: - resolution: {integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@7.5.13: resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} engines: {node: '>=8.3.0'} @@ -12730,73 +12242,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-flow@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -12807,61 +12256,11 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -12988,12 +12387,6 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-flow-strip-types@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -13145,11 +12538,6 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -13194,18 +12582,6 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - semver: 7.8.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -13345,13 +12721,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-transform-flow-strip-types': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -13370,15 +12739,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/register@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.7 - source-map-support: 0.5.21 - '@babel/runtime@7.29.7': {} '@babel/template@7.29.7': @@ -14408,60 +13768,13 @@ snapshots: '@isaacs/ttlcache@1.4.1': {} - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.15.2 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.6': {} - - '@jest/create-cache-key-function@29.7.0': - dependencies: - '@jest/types': 29.6.3 - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 26.4.1 - jest-mock: 29.7.0 - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 26.4.1 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + '@istanbuljs/schema@0.1.6': + optional: true '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.12 - '@jest/transform@29.7.0(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 6.1.1(supports-color@10.2.2) - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -15280,144 +14593,70 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/assets-registry@0.76.9': {} + '@react-native/asset-utils@0.87.1': {} - '@react-native/babel-plugin-codegen@0.76.9(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)': - dependencies: - '@react-native/codegen': 0.76.9(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - - '@react-native/babel-preset@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/plugin-proposal-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-flow-strip-types': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/template': 7.29.7 - '@react-native/babel-plugin-codegen': 0.76.9(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) - babel-plugin-syntax-hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.7(supports-color@10.2.2)) - react-refresh: 0.14.2 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - - '@react-native/codegen@0.76.9(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)': + '@react-native/codegen@0.87.1(@babel/core@8.0.1)': dependencies: + '@babel/core': 8.0.1 '@babel/parser': 7.29.8 - '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - glob: 7.2.3 - hermes-parser: 0.23.1 + hermes-parser: 0.36.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) - mkdirp: 0.5.6 nullthrows: 1.1.1 + tinyglobby: 0.2.17 yargs: 17.7.3 - transitivePeerDependencies: - - supports-color - '@react-native/community-cli-plugin@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2)': + '@react-native/community-cli-plugin@0.87.1(supports-color@10.2.2)': dependencies: - '@react-native/dev-middleware': 0.76.9(supports-color@10.2.2) - '@react-native/metro-babel-transformer': 0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) - chalk: 4.1.2 - execa: 5.1.1 + '@react-native/asset-utils': 0.87.1 + '@react-native/dev-middleware': 0.87.1(supports-color@10.2.2) + debug: 4.4.3(supports-color@10.2.2) invariant: 2.2.4 - metro: 0.81.5(supports-color@10.2.2) - metro-config: 0.81.5(supports-color@10.2.2) - metro-core: 0.81.5 - node-fetch: 2.7.0(encoding@0.1.13) - readline: 1.3.0 + metro: 0.87.0(supports-color@10.2.2) semver: 7.8.5 transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - bufferutil - - encoding - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.76.9': {} + '@react-native/debugger-frontend@0.87.1': {} - '@react-native/dev-middleware@0.76.9(supports-color@10.2.2)': + '@react-native/debugger-shell@0.87.1(supports-color@10.2.2)': + dependencies: + cross-spawn: 7.0.5 + debug: 4.4.3(supports-color@10.2.2) + fb-dotslash: 0.5.8 + transitivePeerDependencies: + - supports-color + + '@react-native/dev-middleware@0.87.1(supports-color@10.2.2)': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.76.9 + '@react-native/debugger-frontend': 0.87.1 + '@react-native/debugger-shell': 0.87.1(supports-color@10.2.2) chrome-launcher: 0.15.2(supports-color@10.2.2) - chromium-edge-launcher: 0.2.0(supports-color@10.2.2) + chromium-edge-launcher: 0.3.0(supports-color@10.2.2) connect: 3.7.0(supports-color@10.2.2) - debug: 2.6.9(supports-color@10.2.2) + debug: 4.4.3(supports-color@10.2.2) invariant: 2.2.4 nullthrows: 1.1.1 open: 7.4.2 - selfsigned: 2.4.1 serve-static: 1.16.3(supports-color@10.2.2) - ws: 6.2.6 + ws: 7.5.13 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.76.9': {} + '@react-native/gradle-plugin@0.87.1': {} - '@react-native/js-polyfills@0.76.9': {} + '@react-native/normalize-colors@0.87.1': {} - '@react-native/metro-babel-transformer@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)': - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@react-native/babel-preset': 0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) - hermes-parser: 0.23.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - - '@react-native/normalize-colors@0.76.9': {} - - '@react-native/virtualized-lists@0.76.9(@types/react@18.3.31)(react-native@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1)': + '@react-native/virtualized-lists@0.87.1(@types/react@18.3.31)(react-native@0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2) + react-native: 0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2) optionalDependencies: '@types/react': 18.3.31 @@ -15899,14 +15138,6 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - '@solidjs/router@0.11.5(solid-js@1.9.15)': dependencies: solid-js: 1.9.15 @@ -16402,10 +15633,6 @@ snapshots: '@types/minimatch': 6.0.0 '@types/node': 26.4.1 - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 26.4.1 - '@types/hast@3.0.5': dependencies: '@types/unist': 3.0.3 @@ -16453,10 +15680,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 26.4.1 - '@types/node@16.9.1': {} '@types/node@24.13.3': @@ -16499,8 +15722,6 @@ snapshots: '@types/semver@7.8.0': {} - '@types/stack-utils@2.0.3': {} - '@types/svg2ttf@5.0.1': optional: true @@ -17072,11 +16293,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - accepts@2.0.0: dependencies: mime-types: 3.0.2 @@ -17293,10 +16509,6 @@ snapshots: assertion-error@2.0.1: {} - ast-types@0.15.2: - dependencies: - tslib: 2.8.1 - ast-v8-to-istanbul@1.0.5: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -17397,8 +16609,6 @@ snapshots: async-function@1.0.0: optional: true - async-limiter@1.0.1: {} - async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -17428,10 +16638,6 @@ snapshots: b4a@1.8.1: {} - babel-core@7.0.0-bridge.0(@babel/core@7.29.7(supports-color@10.2.2)): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - babel-dead-code-elimination@1.0.12(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -17441,36 +16647,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-jest@29.7.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@jest/transform': 29.7.0(supports-color@10.2.2) - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1(supports-color@10.2.2) - babel-preset-jest: 29.6.3(@babel/core@7.29.7(supports-color@10.2.2)) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1(supports-color@10.2.2): - dependencies: - '@babel/helper-plugin-utils': 7.29.7 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.6 - istanbul-lib-instrument: 5.2.1(supports-color@10.2.2) - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.8 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 - babel-plugin-jsx-dom-expressions@0.40.10(@babel/core@7.29.7(supports-color@10.2.2)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -17489,14 +16665,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - core-js-compat: 3.50.0 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -17512,49 +16680,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-syntax-hermes-parser@0.23.1: + babel-plugin-syntax-hermes-parser@0.36.1: dependencies: - hermes-parser: 0.23.1 - - babel-plugin-syntax-hermes-parser@0.25.1: - dependencies: - hermes-parser: 0.25.1 - - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.7(supports-color@10.2.2)): - dependencies: - '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - transitivePeerDependencies: - - '@babel/core' + hermes-parser: 0.36.1 babel-plugin-transform-hook-names@1.0.2(@babel/core@7.29.7(supports-color@10.2.2)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.7(supports-color@10.2.2)): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7(supports-color@10.2.2)) - - babel-preset-jest@29.6.3(@babel/core@7.29.7(supports-color@10.2.2)): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@10.2.2)) - babel-preset-solid@1.9.15(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.15): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -17761,20 +16894,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caller-callsite@2.0.0: - dependencies: - callsites: 2.0.0 - - caller-path@2.0.0: - dependencies: - caller-callsite: 2.0.0 - - callsites@2.0.0: {} - callsites@3.1.0: {} - camelcase@5.3.1: {} - camelcase@6.3.0: {} caniuse-lite@1.0.30001810: {} @@ -17865,14 +16986,13 @@ snapshots: transitivePeerDependencies: - supports-color - chromium-edge-launcher@0.2.0(supports-color@10.2.2): + chromium-edge-launcher@0.3.0(supports-color@10.2.2): dependencies: '@types/node': 26.4.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@10.2.2) mkdirp: 1.0.4 - rimraf: 3.0.2 transitivePeerDependencies: - supports-color @@ -17933,12 +17053,6 @@ snapshots: strip-ansi: 7.2.0 wrap-ansi: 9.0.2 - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - clsx@2.1.1: {} cluster-key-slot@1.1.1: {} @@ -18082,13 +17196,6 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@5.2.1: - dependencies: - import-fresh: 2.0.0 - is-directory: 0.3.1 - js-yaml: 3.15.2 - parse-json: 4.0.0 - cpy-cli@7.0.0: dependencies: cpy: 13.2.3 @@ -18589,10 +17696,6 @@ snapshots: prr: 1.0.1 optional: true - error-ex@1.3.4: - dependencies: - is-arrayish: 0.2.1 - error-stack-parser-es@1.0.5: {} error-stack-parser@2.1.4: @@ -18749,8 +17852,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -19020,6 +18121,8 @@ snapshots: dependencies: format: 0.2.2 + fb-dotslash@0.5.8: {} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 @@ -19078,12 +18181,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - find-cache-directory@6.0.0: dependencies: common-path-prefix: 3.0.0 @@ -19093,15 +18190,6 @@ snapshots: find-up-simple@1.0.1: {} - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -19118,12 +18206,6 @@ snapshots: flow-enums-runtime@0.0.6: {} - flow-estree@0.330.0: {} - - flow-parser@0.330.0: - dependencies: - flow-estree: 0.330.0 - focus-trap@7.8.0: dependencies: tabbable: 6.5.0 @@ -19243,8 +18325,6 @@ snapshots: hasown: 2.0.4 math-intrinsics: 1.1.0 - get-package-type@0.1.0: {} - get-port-please@3.2.0: {} get-proto@1.0.1: @@ -19429,17 +18509,13 @@ snapshots: he@1.2.0: {} - hermes-estree@0.23.1: {} + hermes-compiler@250829098.0.17: {} - hermes-estree@0.25.1: {} + hermes-estree@0.36.1: {} - hermes-parser@0.23.1: + hermes-parser@0.36.1: dependencies: - hermes-estree: 0.23.1 - - hermes-parser@0.25.1: - dependencies: - hermes-estree: 0.25.1 + hermes-estree: 0.36.1 hey-listen@1.0.8: {} @@ -19571,11 +18647,6 @@ snapshots: immutable@5.1.9: {} - import-fresh@2.0.0: - dependencies: - caller-path: 2.0.0 - resolve-from: 3.0.0 - import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -19645,8 +18716,6 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-arrayish@0.2.1: {} - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -19692,8 +18761,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-directory@0.3.1: {} - is-docker@2.2.1: {} is-docker@3.0.0: {} @@ -19763,10 +18830,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-plain-object@3.0.1: {} is-potential-custom-element-name@1.0.1: {} @@ -19848,8 +18911,6 @@ snapshots: isexe@3.1.5: {} - isobject@3.0.1: {} - isomorphic-fetch@3.0.0(encoding@0.1.13): dependencies: node-fetch: 2.7.0(encoding@0.1.13) @@ -19859,16 +18920,6 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1(supports-color@10.2.2): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/parser': 7.29.8 - '@istanbuljs/schema': 0.1.6 - istanbul-lib-coverage: 3.2.2 - semver: 7.8.5 - transitivePeerDependencies: - - supports-color - istanbul-lib-instrument@6.0.3(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) @@ -19901,53 +18952,8 @@ snapshots: dependencies: '@isaacs/cliui': 9.0.0 - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 26.4.1 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jest-get-type@29.6.3: {} - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 26.4.1 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.29.7 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 26.4.1 - jest-util: 29.7.0 - - jest-regex-util@29.6.3: {} - jest-serializer-html@7.1.0: dependencies: diffable-html: 4.1.0 @@ -20018,35 +19024,8 @@ snapshots: dependencies: argparse: 2.0.1 - jsc-android@250231.0.0: {} - jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2): - dependencies: - '@babel/core': 7.29.7(supports-color@10.2.2) - '@babel/parser': 7.29.8 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/preset-flow': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/register': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - babel-core: 7.0.0-bridge.0(@babel/core@7.29.7(supports-color@10.2.2)) - chalk: 4.1.2 - flow-parser: 0.330.0 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - jsdom@30.0.1: dependencies: '@asamuzakjp/css-color': 6.0.7 @@ -20077,8 +19056,6 @@ snapshots: json-buffer@3.0.1: {} - json-parse-better-errors@1.0.2: {} - json-schema-migrate@2.0.0: dependencies: ajv: 8.20.0 @@ -20321,15 +19298,6 @@ snapshots: locate-character@3.0.0: {} - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -20396,11 +19364,6 @@ snapshots: '@babel/types': 7.29.8 source-map-js: 1.2.1 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 7.8.5 - make-dir@4.0.0: dependencies: semver: 7.8.5 @@ -20546,49 +19509,52 @@ snapshots: merge2@1.4.1: {} - metro-babel-transformer@0.81.5(supports-color@10.2.2): + metro-babel-transformer@0.87.0(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) flow-enums-runtime: 0.0.6 - hermes-parser: 0.25.1 + hermes-parser: 0.36.1 + metro-cache-key: 0.87.0 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.81.5: + metro-cache-key@0.87.0: dependencies: flow-enums-runtime: 0.0.6 - metro-cache@0.81.5: + metro-cache@0.87.0(supports-color@10.2.2): dependencies: exponential-backoff: 3.1.3 flow-enums-runtime: 0.0.6 - metro-core: 0.81.5 + https-proxy-agent: 7.0.6(supports-color@10.2.2) + metro-core: 0.87.0 + transitivePeerDependencies: + - supports-color - metro-config@0.81.5(supports-color@10.2.2): + metro-config@0.87.0(supports-color@10.2.2): dependencies: connect: 3.7.0(supports-color@10.2.2) - cosmiconfig: 5.2.1 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.81.5(supports-color@10.2.2) - metro-cache: 0.81.5 - metro-core: 0.81.5 - metro-runtime: 0.81.5 + metro: 0.87.0(supports-color@10.2.2) + metro-cache: 0.87.0(supports-color@10.2.2) + metro-core: 0.87.0 + metro-runtime: 0.87.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro-core@0.81.5: + metro-core@0.87.0: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 - metro-resolver: 0.81.5 + metro-resolver: 0.87.0 - metro-file-map@0.81.5(supports-color@10.2.2): + metro-file-map@0.87.0(supports-color@10.2.2): dependencies: - debug: 2.6.9(supports-color@10.2.2) + debug: 4.4.3(supports-color@10.2.2) fb-watchman: 2.0.2 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 @@ -20600,47 +19566,46 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.81.5: + metro-minify-terser@0.87.0: dependencies: flow-enums-runtime: 0.0.6 terser: 5.51.2 - metro-resolver@0.81.5: + metro-resolver@0.87.0: dependencies: flow-enums-runtime: 0.0.6 - metro-runtime@0.81.5: + metro-runtime@0.87.0: dependencies: '@babel/runtime': 7.29.7 flow-enums-runtime: 0.0.6 - metro-source-map@0.81.5(supports-color@10.2.2): + metro-source-map@0.87.0(supports-color@10.2.2): dependencies: '@babel/traverse': 7.29.8(supports-color@10.2.2) - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.29.8(supports-color@10.2.2)' '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.81.5(supports-color@10.2.2) + metro-symbolicate: 0.87.0(supports-color@10.2.2) nullthrows: 1.1.1 - ob1: 0.81.5 + ob1: 0.87.0 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-symbolicate@0.81.5(supports-color@10.2.2): + metro-symbolicate@0.87.0(supports-color@10.2.2): dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-source-map: 0.81.5(supports-color@10.2.2) + metro-source-map: 0.87.0(supports-color@10.2.2) nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-transform-plugins@0.81.5(supports-color@10.2.2): + metro-transform-plugins@0.87.0(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/generator': 7.29.8 @@ -20651,27 +19616,27 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-worker@0.81.5(supports-color@10.2.2): + metro-transform-worker@0.87.0(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/generator': 7.29.8 '@babel/parser': 7.29.8 '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 - metro: 0.81.5(supports-color@10.2.2) - metro-babel-transformer: 0.81.5(supports-color@10.2.2) - metro-cache: 0.81.5 - metro-cache-key: 0.81.5 - metro-minify-terser: 0.81.5 - metro-source-map: 0.81.5(supports-color@10.2.2) - metro-transform-plugins: 0.81.5(supports-color@10.2.2) + metro: 0.87.0(supports-color@10.2.2) + metro-babel-transformer: 0.87.0(supports-color@10.2.2) + metro-cache: 0.87.0(supports-color@10.2.2) + metro-cache-key: 0.87.0 + metro-minify-terser: 0.87.0 + metro-source-map: 0.87.0(supports-color@10.2.2) + metro-transform-plugins: 0.87.0(supports-color@10.2.2) nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro@0.81.5(supports-color@10.2.2): + metro@0.87.0(supports-color@10.2.2): dependencies: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7(supports-color@10.2.2) @@ -20680,33 +19645,32 @@ snapshots: '@babel/template': 7.29.7 '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 - accepts: 1.3.8 - chalk: 4.1.2 + accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0(supports-color@10.2.2) - debug: 2.6.9(supports-color@10.2.2) + debug: 4.4.3(supports-color@10.2.2) error-stack-parser: 2.1.4 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 - hermes-parser: 0.25.1 + hermes-parser: 0.36.1 image-size: 1.2.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.81.5(supports-color@10.2.2) - metro-cache: 0.81.5 - metro-cache-key: 0.81.5 - metro-config: 0.81.5(supports-color@10.2.2) - metro-core: 0.81.5 - metro-file-map: 0.81.5(supports-color@10.2.2) - metro-resolver: 0.81.5 - metro-runtime: 0.81.5 - metro-source-map: 0.81.5(supports-color@10.2.2) - metro-symbolicate: 0.81.5(supports-color@10.2.2) - metro-transform-plugins: 0.81.5(supports-color@10.2.2) - metro-transform-worker: 0.81.5(supports-color@10.2.2) - mime-types: 2.1.35 + metro-babel-transformer: 0.87.0(supports-color@10.2.2) + metro-cache: 0.87.0(supports-color@10.2.2) + metro-cache-key: 0.87.0 + metro-config: 0.87.0(supports-color@10.2.2) + metro-core: 0.87.0 + metro-file-map: 0.87.0(supports-color@10.2.2) + metro-resolver: 0.87.0 + metro-runtime: 0.87.0 + metro-source-map: 0.87.0(supports-color@10.2.2) + metro-symbolicate: 0.87.0(supports-color@10.2.2) + metro-transform-plugins: 0.87.0(supports-color@10.2.2) + metro-transform-worker: 0.87.0(supports-color@10.2.2) + mime-types: 3.0.2 nullthrows: 1.1.1 serialize-error: 2.1.0 source-map: 0.5.7 @@ -20869,14 +19833,8 @@ snapshots: dependencies: yargs: 17.7.3 - mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -20951,10 +19909,6 @@ snapshots: mitt@3.0.1: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - mkdirp@1.0.4: {} mlly@1.8.2: @@ -21050,16 +20004,12 @@ snapshots: sax: 1.6.1 optional: true - negotiator@0.6.3: {} - negotiator@0.6.4: {} negotiator@1.1.0: dependencies: content-type: 2.1.0 - neo-async@2.6.2: {} - neotraverse@1.0.1: {} next@16.3.4(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(sass@1.103.1): @@ -21242,10 +20192,6 @@ snapshots: node-addon-api@7.1.1: optional: true - node-dir@0.1.17: - dependencies: - minimatch: 3.1.5 - node-domexception@1.0.0: {} node-exports-info@1.6.2: @@ -21344,7 +20290,7 @@ snapshots: optionalDependencies: chokidar: 3.6.0 - ob1@0.81.5: + ob1@0.87.0: dependencies: flow-enums-runtime: 0.0.6 @@ -21551,10 +20497,6 @@ snapshots: dependencies: p-map: 7.0.7 - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -21563,14 +20505,6 @@ snapshots: dependencies: yocto-queue: 1.2.2 - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -21591,8 +20525,6 @@ snapshots: p-timeout@7.0.1: {} - p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} package-manager-detector@1.8.0: {} @@ -21616,11 +20548,6 @@ snapshots: parse-headers@2.0.6: {} - parse-json@4.0.0: - dependencies: - error-ex: 1.3.4 - json-parse-better-errors: 1.0.2 - parse-node-version@1.0.1: {} parse5-html-rewriting-stream@8.0.1: @@ -21654,8 +20581,6 @@ snapshots: path-browserify@1.0.1: {} - path-exists@3.0.0: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -21704,8 +20629,6 @@ snapshots: picomatch@4.0.7: {} - pify@4.0.1: {} - pirates@4.0.7: {} piscina@4.9.4: @@ -21726,10 +20649,6 @@ snapshots: pkce-challenge@5.0.1: {} - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - pkg-dir@8.0.0: dependencies: find-up-simple: 1.0.1 @@ -21889,7 +20808,7 @@ snapshots: defu: 6.1.7 destr: 2.0.5 - react-devtools-core@5.3.2: + react-devtools-core@6.1.5: dependencies: shell-quote: 1.10.0 ws: 7.5.13 @@ -21912,62 +20831,53 @@ snapshots: react-is@18.3.1: {} - react-native-svg@15.15.5(react-native@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1): + react-native-svg@15.15.5(react-native@0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1): dependencies: css-select: 5.2.2 css-tree: 1.1.3 react: 18.3.1 - react-native: 0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2) + react-native: 0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2) - react-native@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2): + react-native@0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2): dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.76.9 - '@react-native/codegen': 0.76.9(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2) - '@react-native/community-cli-plugin': 0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(encoding@0.1.13)(supports-color@10.2.2) - '@react-native/gradle-plugin': 0.76.9 - '@react-native/js-polyfills': 0.76.9 - '@react-native/normalize-colors': 0.76.9 - '@react-native/virtualized-lists': 0.76.9(@types/react@18.3.31)(react-native@0.76.9(@babel/core@7.29.7(supports-color@10.2.2))(@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@18.3.31)(encoding@0.1.13)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1) - abort-controller: 3.0.0 + '@react-native/asset-utils': 0.87.1 + '@react-native/codegen': 0.87.1(@babel/core@8.0.1) + '@react-native/community-cli-plugin': 0.87.1(supports-color@10.2.2) + '@react-native/gradle-plugin': 0.87.1 + '@react-native/normalize-colors': 0.87.1 + '@react-native/virtualized-lists': 0.87.1(@types/react@18.3.31)(react-native@0.87.1(@babel/core@8.0.1)(@types/react@18.3.31)(react@18.3.1)(supports-color@10.2.2))(react@18.3.1) anser: 1.4.10 ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - babel-plugin-syntax-hermes-parser: 0.23.1 + babel-plugin-syntax-hermes-parser: 0.36.1 base64-js: 1.5.1 - chalk: 4.1.2 commander: 12.1.0 - event-target-shim: 5.0.1 flow-enums-runtime: 0.0.6 - glob: 7.2.3 + hermes-compiler: 250829098.0.17 invariant: 2.2.4 - jest-environment-node: 29.7.0 - jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.81.5 - metro-source-map: 0.81.5(supports-color@10.2.2) - mkdirp: 0.5.6 + metro-runtime: 0.87.0 + metro-source-map: 0.87.0(supports-color@10.2.2) nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 react: 18.3.1 - react-devtools-core: 5.3.2 + react-devtools-core: 6.1.5 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 - scheduler: 0.24.0-canary-efb381bbf-20230505 + scheduler: 0.27.0 semver: 7.8.5 stacktrace-parser: 0.1.11 + tinyglobby: 0.2.17 whatwg-fetch: 3.6.20 - ws: 6.2.6 + ws: 7.5.13 yargs: 17.7.3 optionalDependencies: '@types/react': 18.3.31 transitivePeerDependencies: - '@babel/core' - - '@babel/preset-env' - '@react-native-community/cli' + - '@react-native/metro-config' - bufferutil - - encoding - supports-color - utf-8-validate @@ -22031,15 +20941,6 @@ snapshots: readdirp@5.0.0: {} - readline@1.3.0: {} - - recast@0.21.5: - dependencies: - ast-types: 0.15.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.8.1 - redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -22146,8 +21047,6 @@ snapshots: require-from-string@2.0.2: {} - resolve-from@3.0.0: {} - resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -22190,14 +21089,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@2.6.3: - dependencies: - glob: 7.2.3 - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rolldown@1.2.0: dependencies: '@oxc-project/types': 0.140.0 @@ -22483,10 +21374,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - scheduler@0.24.0-canary-efb381bbf-20230505: - dependencies: - loose-envify: 1.4.0 - scheduler@0.27.0: {} scule@1.3.0: {} @@ -22498,11 +21385,6 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.4.0 - semver@7.8.5: {} send@0.19.2(supports-color@10.2.2): @@ -22604,10 +21486,6 @@ snapshots: setprototypeof@1.2.0: {} - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - sharp@0.35.4(@types/node@26.4.1): dependencies: '@img/colour': 1.1.0 @@ -22844,10 +21722,6 @@ snapshots: stack-trace@1.0.0: {} - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - stackback@0.0.2: {} stackframe@1.3.4: {} @@ -23198,10 +22072,6 @@ snapshots: - bare-abort-controller - react-native-b4a - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 @@ -23209,12 +22079,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.6 - glob: 7.2.3 - minimatch: 3.1.5 - text-decoder@1.2.7: dependencies: b4a: 1.8.1 @@ -23350,8 +22214,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} - type-fest@0.7.1: {} type-fest@4.41.0: {} @@ -24100,21 +22962,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - ws@6.2.6: - dependencies: - async-limiter: 1.0.1 - ws@7.5.13: {} ws@8.21.3: {} From f90f10a24ac23796ff0927fab341a94d68c0a58d Mon Sep 17 00:00:00 2001 From: Liang Xu <755674130@qq.com> Date: Thu, 17 Sep 2026 20:58:48 +0800 Subject: [PATCH 100/157] feat(packages): export __iconNode data across framework packages (#4761) Fixes #4644 Signed-off-by: Liang Xu Co-authored-by: Liang Xu --- packages/lucide-preact/scripts/exportTemplate.mts | 11 ++++++++--- .../lucide-preact/tests/createLucideIcon.spec.tsx | 9 +++++++++ .../lucide-react-native/scripts/exportTemplate.mts | 11 ++++++++--- packages/lucide-solid/scripts/exportTemplate.mts | 11 ++++++++--- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/packages/lucide-preact/scripts/exportTemplate.mts b/packages/lucide-preact/scripts/exportTemplate.mts index 8eaa0baa6..94c7922a9 100644 --- a/packages/lucide-preact/scripts/exportTemplate.mts +++ b/packages/lucide-preact/scripts/exportTemplate.mts @@ -8,9 +8,14 @@ export default defineExportTemplate( return ` import createLucideIcon from '../createLucideIcon'; -import type { LucideIconData } from '../types'; +import type { LucideIconNode, LucideIconData } from '../types'; -const iconData: LucideIconData = ${JSON.stringify(iconData)}; +export const __iconData: LucideIconData = ${JSON.stringify(iconData)}; + +/** + * @deprecated Access \`__iconData\` instead. + */ +export const __iconNode: LucideIconNode[] = __iconData.node; /** * @component @name ${componentName} @@ -23,7 +28,7 @@ const iconData: LucideIconData = ${JSON.stringify(iconData)}; * @returns {JSX.Element} JSX Element * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ -const ${componentName} = createLucideIcon(iconData); +const ${componentName} = createLucideIcon(__iconData); export default ${componentName}; `; diff --git a/packages/lucide-preact/tests/createLucideIcon.spec.tsx b/packages/lucide-preact/tests/createLucideIcon.spec.tsx index f2b20a952..22b9e1251 100644 --- a/packages/lucide-preact/tests/createLucideIcon.spec.tsx +++ b/packages/lucide-preact/tests/createLucideIcon.spec.tsx @@ -1,9 +1,18 @@ import { describe, it, expect } from 'vitest'; import { createLucideIcon } from '../src/lucide-preact'; +import { __iconData, __iconNode } from '../src/icons/air-vent'; import { airVent } from './testIconNodes'; import { render } from '@testing-library/preact'; describe('Using createLucideIcon', () => { + it('should export __iconData and __iconNode from icon module', () => { + expect(__iconData).toBeDefined(); + expect(__iconData.node).toBeDefined(); + expect(__iconNode).toBeDefined(); + expect(Array.isArray(__iconNode)).toBe(true); + expect(__iconNode.length).toBeGreaterThan(0); + }); + it('should create a component from icon data', () => { const AirVent = createLucideIcon({ name: 'air-vent', diff --git a/packages/lucide-react-native/scripts/exportTemplate.mts b/packages/lucide-react-native/scripts/exportTemplate.mts index c09cf5042..64cec733c 100644 --- a/packages/lucide-react-native/scripts/exportTemplate.mts +++ b/packages/lucide-react-native/scripts/exportTemplate.mts @@ -8,9 +8,14 @@ export default defineExportTemplate( return ` import createLucideIcon from '../createLucideIcon'; -import type { LucideIconData } from '../types'; +import type { LucideIconNode, LucideIconData } from '../types'; -const iconData: LucideIconData = ${JSON.stringify(iconData)}; +export const __iconData: LucideIconData = ${JSON.stringify(iconData)}; + +/** + * @deprecated Access \`__iconData\` instead. + */ +export const __iconNode: LucideIconNode[] = __iconData.node; /** * @component @name ${componentName} @@ -23,7 +28,7 @@ const iconData: LucideIconData = ${JSON.stringify(iconData)}; * @returns {JSX.Element} JSX Element * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ -const ${componentName} = createLucideIcon(iconData); +const ${componentName} = createLucideIcon(__iconData); export default ${componentName}; `; diff --git a/packages/lucide-solid/scripts/exportTemplate.mts b/packages/lucide-solid/scripts/exportTemplate.mts index 6a2b6d376..0dcdc8f5c 100644 --- a/packages/lucide-solid/scripts/exportTemplate.mts +++ b/packages/lucide-solid/scripts/exportTemplate.mts @@ -8,9 +8,14 @@ export default defineExportTemplate( return ` import Icon from '../Icon'; -import type { LucideIconData, LucideProps } from '../types'; +import type { LucideIconData, LucideIconNode, LucideProps } from '../types'; -const iconData: LucideIconData = ${JSON.stringify(iconData)}; +export const __iconData: LucideIconData = ${JSON.stringify(iconData)}; + +/** + * @deprecated Access \`__iconData\` instead. + */ +export const __iconNode: LucideIconNode[] = __iconData.node; /** * @component @name ${componentName} @@ -24,7 +29,7 @@ const iconData: LucideIconData = ${JSON.stringify(iconData)}; * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ const ${componentName} = (props: LucideProps) => ( - + ) export default ${componentName}; From 55d30bda0458faae983f87d0931cd3935779115e Mon Sep 17 00:00:00 2001 From: Daniel Bayley Date: Thu, 17 Sep 2026 14:21:22 +0100 Subject: [PATCH 101/157] feat(icons): tweak `card-sim` chip (#3649) Co-authored-by: Eric Fennis --- icons/card-sim.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icons/card-sim.svg b/icons/card-sim.svg index 58e8cdbac..833be445d 100644 --- a/icons/card-sim.svg +++ b/icons/card-sim.svg @@ -12,5 +12,5 @@ - + From 0d0408c43b023f8c9eda2c2d269ee6b36b86871a Mon Sep 17 00:00:00 2001 From: Nathan De Pachtere Date: Thu, 17 Sep 2026 16:30:01 +0200 Subject: [PATCH 102/157] feat(icons): added `line-dot-top-vertical` icon (#3856) * Added icons/line-dot-top-vertical.svg * Added icons/line-dot-top-vertical.json * Update icons/line-dot-top-vertical.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Remove unused tags from line-dot-top-vertical.json Removed unused tags from the line-dot-top-vertical icon. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update line-dot-top-vertical.json * format code --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- icons/line-dot-top-vertical.json | 28 ++++++++++++++++++++++++++++ icons/line-dot-top-vertical.svg | 14 ++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 icons/line-dot-top-vertical.json create mode 100644 icons/line-dot-top-vertical.svg diff --git a/icons/line-dot-top-vertical.json b/icons/line-dot-top-vertical.json new file mode 100644 index 000000000..64e3213fa --- /dev/null +++ b/icons/line-dot-top-vertical.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "nathan-de-pachtere" + ], + "use-cases": [ + "Marking the last commit of a branch", + "Marking a measurement at the end of a bar" + ], + "tags": [ + "arrow", + "pointer", + "direction", + "indicator", + "code", + "version", + "control", + "waypoint", + "stop", + "station", + "last", + "end" + ], + "categories": [ + "development", + "navigation" + ] +} diff --git a/icons/line-dot-top-vertical.svg b/icons/line-dot-top-vertical.svg new file mode 100644 index 000000000..14c0aee50 --- /dev/null +++ b/icons/line-dot-top-vertical.svg @@ -0,0 +1,14 @@ + + + + From d9f72b25256fc57fabf9bfac0972fb97aa84aedd Mon Sep 17 00:00:00 2001 From: Nathan De Pachtere Date: Thu, 17 Sep 2026 16:30:55 +0200 Subject: [PATCH 103/157] feat(icons): added `line-dot-bottom-vertical` icon (#3857) * Added icons/line-dot-bottom-vertical.svg * Added icons/line-dot-bottom-vertical.json * Update line-dot-bottom-vertical.json * Format code --------- Co-authored-by: Eric Fennis --- icons/line-dot-bottom-vertical.json | 23 +++++++++++++++++++++++ icons/line-dot-bottom-vertical.svg | 14 ++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 icons/line-dot-bottom-vertical.json create mode 100644 icons/line-dot-bottom-vertical.svg diff --git a/icons/line-dot-bottom-vertical.json b/icons/line-dot-bottom-vertical.json new file mode 100644 index 000000000..11341208f --- /dev/null +++ b/icons/line-dot-bottom-vertical.json @@ -0,0 +1,23 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "nathan-de-pachtere" + ], + "use-cases": [ + "Marking the first commit in version-control graphs", + "Indicating an initial measurement point on a process timeline" + ], + "tags": [ + "code", + "version", + "control", + "station", + "waypoint", + "start", + "first" + ], + "categories": [ + "development", + "navigation" + ] +} diff --git a/icons/line-dot-bottom-vertical.svg b/icons/line-dot-bottom-vertical.svg new file mode 100644 index 000000000..ee36702c4 --- /dev/null +++ b/icons/line-dot-bottom-vertical.svg @@ -0,0 +1,14 @@ + + + + From 5d9cc1580a7f2fd73757f1ec794b09717fbc3b09 Mon Sep 17 00:00:00 2001 From: Oleg Bezrukavnikov Date: Fri, 18 Sep 2026 02:57:55 -0700 Subject: [PATCH 104/157] fix(packages/react-native): pass testID to the rendered Svg element (#4881) The Icon component destructured `testID` out of its props and re-emitted it as `data-testid`, which is a web attribute. react-native-svg only forwards `testID` to the native view (see extractProps) and drops `data-testid`, so `` rendered an element that no React Native test query or UI automation tool can find. `LucideProps` extends `SvgProps`, so the prop type checks and the failure is silent. v0 spread `testID` straight onto `Svg`, so this is a regression for React Native consumers. An explicitly passed `data-testid` still reaches the element through the remaining props, so nothing is lost for react-native-web users. The react-native-svg test mock now maps `testID` onto `data-testid`, so the DOM based test suite identifies elements the way React Native does. Every existing `testID` test fails against the previous behaviour. --- .../__mocks__/react-native-svg/index.ts | 5 +++-- packages/lucide-react-native/src/Icon.ts | 2 +- packages/lucide-react-native/tests/Icon.spec.tsx | 11 +++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/lucide-react-native/__mocks__/react-native-svg/index.ts b/packages/lucide-react-native/__mocks__/react-native-svg/index.ts index 8ebb9b6dc..b61dec342 100644 --- a/packages/lucide-react-native/__mocks__/react-native-svg/index.ts +++ b/packages/lucide-react-native/__mocks__/react-native-svg/index.ts @@ -4,8 +4,9 @@ import type { LucideProps } from '../../src/createReactComponent'; export type { SvgProps } from 'react-native-svg'; const createComponent = function (name: string) { - const component = (props: LucideProps) => { - return React.createElement(name, props, props.children); + // React Native identifies elements by `testID`, the DOM equivalent is `data-testid` + const component = ({ testID, ...props }: LucideProps) => { + return React.createElement(name, { ...props, 'data-testid': testID }, props.children); }; component.displayName = name; diff --git a/packages/lucide-react-native/src/Icon.ts b/packages/lucide-react-native/src/Icon.ts index f2346235e..184a8e48e 100644 --- a/packages/lucide-react-native/src/Icon.ts +++ b/packages/lucide-react-native/src/Icon.ts @@ -107,7 +107,7 @@ const Icon = forwardRef( { ref, ...toNativeSvgAttributes(svgAttributes), - 'data-testid': testID, + testID, ...rest, }, [ diff --git a/packages/lucide-react-native/tests/Icon.spec.tsx b/packages/lucide-react-native/tests/Icon.spec.tsx index 5c55e0b1c..09d044cd7 100644 --- a/packages/lucide-react-native/tests/Icon.spec.tsx +++ b/packages/lucide-react-native/tests/Icon.spec.tsx @@ -47,6 +47,17 @@ describe('Using Icon Component', () => { expect(container.firstChild).toBeDefined(); }); + it('should pass the testID to the rendered element', async () => { + const { container, getByTestId } = render( + , + ); + + expect(getByTestId('air-vent-icon')).toBe(container.firstChild); + }); + it('should support nonScalingStroke', async () => { const { container } = render( Date: Fri, 18 Sep 2026 12:29:14 +0200 Subject: [PATCH 105/157] Fix type lucide-vue (#4883) --- .github/workflows/lucide-vue.yml | 16 ++++++++++++++++ packages/vue/package.json | 2 +- packages/vue/src/Icon.ts | 7 +++---- packages/vue/tests/lucide-vue.spec.ts | 4 ++-- packages/vue/tsconfig.json | 2 +- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.github/workflows/lucide-vue.yml b/.github/workflows/lucide-vue.yml index e4e4ee9b6..81ec93f7e 100644 --- a/.github/workflows/lucide-vue.yml +++ b/.github/workflows/lucide-vue.yml @@ -47,3 +47,19 @@ jobs: - name: Test run: pnpm --filter @lucide/vue test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Test + run: pnpm --filter @lucide/vue typecheck diff --git a/packages/vue/package.json b/packages/vue/package.json index b7ca62e4f..e7d3e8d39 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -35,7 +35,7 @@ "clean": "rm -rf dist && rm -rf ./src/icons/*.ts", "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts", "build:bundles": "rollup -c ./rollup.config.mjs", - "typecheck": "tsc", + "typecheck": "pnpm build:icons && tsc", "typecheck:watch": "tsc -w", "test": "pnpm build:icons && vitest run", "test:watch": "vitest watch" diff --git a/packages/vue/src/Icon.ts b/packages/vue/src/Icon.ts index f8b6d2aa8..f691755e7 100644 --- a/packages/vue/src/Icon.ts +++ b/packages/vue/src/Icon.ts @@ -8,7 +8,6 @@ type IconProps = icon: LucideIconData; iconNode?: never; 'icon-node'?: never; - name?: never; } | { icon?: never; @@ -29,8 +28,8 @@ const Icon: FunctionalComponent = ( iconNode, 'icon-node': iconNodeKebabCase, icon = { - name: toKebabCase(name), - node: iconNode ?? iconNodeKebabCase, + name: name && toKebabCase(name), + node: iconNode ?? iconNodeKebabCase ?? [], size: 24, aliases: [], }, @@ -88,7 +87,7 @@ const Icon: FunctionalComponent = ( }); return h('svg', svgAttributes, [ - ...builtIconNode.map((child) => h(...child)), + ...builtIconNode.map(([tag, attrs]) => h(tag, attrs)), ...(defaultSlot ?? []), ]); }; diff --git a/packages/vue/tests/lucide-vue.spec.ts b/packages/vue/tests/lucide-vue.spec.ts index 41ad96aec..07e6734d6 100644 --- a/packages/vue/tests/lucide-vue.spec.ts +++ b/packages/vue/tests/lucide-vue.spec.ts @@ -1,5 +1,6 @@ import { describe, it, expect, vi, afterEach } from 'vitest'; import { render, fireEvent, cleanup } from '@testing-library/vue'; +import { createTextVNode } from 'vue'; import { Smile, Edit2, Pen } from '../src/lucide-vue'; import createLucideIcon from '../src/createLucideIcon'; import defaultAttributes from '../src/defaultAttributes'; @@ -112,7 +113,7 @@ describe('Using lucide icon components', () => { it('should handle non-extensible slots objects', () => { const Icon = createLucideIcon('test-icon', [['path', { d: 'M0 0h1', key: 'test-key' }]]); const slots = Object.freeze({ - default: () => 'Hello World', + default: () => [createTextVNode('Hello World')], }); expect(() => @@ -121,7 +122,6 @@ describe('Using lucide icon components', () => { { attrs: {}, emit: vi.fn(), - expose: vi.fn(), slots, }, ), diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index 5ae2b152d..0245d13a8 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -3,7 +3,7 @@ "target": "ESNext", "useDefineForClassFields": true, "module": "ESNext", - "moduleResolution": "Node", + "moduleResolution": "bundler", "paths": { "@lucide/shared": ["../shared/src/index.ts"], "@lucide/shared/types": ["../shared/src/build/types.ts"] From 99c10375508fdade330f91eecf3e616693b68cad Mon Sep 17 00:00:00 2001 From: Vugar Bakhishov Date: Fri, 18 Sep 2026 16:08:40 +0400 Subject: [PATCH 106/157] test(packages/shared): cover buildLucideIconForReact (#4872) buildLucideIconForReact is the entry point both lucide-react and lucide-react-native use to build an icon, and its whole job is renaming the hyphenated SVG attributes to the spellings React expects. Nothing tested that rename directly: the other build helpers have specs in packages/icons/tests, and this one had none anywhere in the repo. The spec pins the five renames it applies, checks that attributes React already accepts are left alone, that aria-hidden stays hyphenated, that vector-effect is renamed on child nodes for a non-scaling stroke, and that a caller's own attributeNames are merged without displacing the React spellings. Verified that the spec is not vacuous: removing the class -> className entry from the rename map fails two of the five tests. Co-authored-by: Vugar Bakhishov Co-authored-by: Eric Fennis --- .../tests/buildLucideIconForReact.spec.ts | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 packages/shared/tests/buildLucideIconForReact.spec.ts diff --git a/packages/shared/tests/buildLucideIconForReact.spec.ts b/packages/shared/tests/buildLucideIconForReact.spec.ts new file mode 100644 index 000000000..8207c5ec3 --- /dev/null +++ b/packages/shared/tests/buildLucideIconForReact.spec.ts @@ -0,0 +1,68 @@ +import { describe, expect, it } from 'vitest'; +import buildLucideIconForReact from '../src/build/buildLucideIconForReact'; +import defaultReactAttributes from '../src/build/defaultReactAttributes'; +import type { LucideIconData, LucideIconNode, SVGProps } from '../src/build/types'; + +const icon: LucideIconData = { + name: 'house', + size: 24, + node: [['path', { d: 'M0 0h1' }]], +}; + +const childrenOf = (node: LucideIconNode) => (node.at(2) ?? []) as LucideIconNode[]; + +describe('buildLucideIconForReact', () => { + it('uses the React spelling for the hyphenated SVG attributes', () => { + const [, attributes] = buildLucideIconForReact(icon); + + expect(attributes).toMatchObject({ + strokeWidth: defaultReactAttributes.strokeWidth, + strokeLinecap: defaultReactAttributes.strokeLinecap, + strokeLinejoin: defaultReactAttributes.strokeLinejoin, + className: 'lucide lucide-house', + }); + + expect(attributes).not.toHaveProperty('stroke-width'); + expect(attributes).not.toHaveProperty('stroke-linecap'); + expect(attributes).not.toHaveProperty('stroke-linejoin'); + expect(attributes).not.toHaveProperty('class'); + }); + + it('leaves the attributes React already accepts untouched', () => { + const [, attributes] = buildLucideIconForReact(icon); + + expect(attributes).toMatchObject({ + xmlns: defaultReactAttributes.xmlns, + width: defaultReactAttributes.width, + height: defaultReactAttributes.height, + viewBox: defaultReactAttributes.viewBox, + fill: defaultReactAttributes.fill, + stroke: defaultReactAttributes.stroke, + }); + }); + + it('keeps aria-hidden hyphenated, which is how React expects it', () => { + const [, attributes] = buildLucideIconForReact(icon, { hasA11yProp: false }); + + expect(attributes['aria-hidden']).toBe('true'); + expect(attributes).not.toHaveProperty('ariaHidden'); + }); + + it('renames vector-effect on the child nodes for a non-scaling stroke', () => { + const children = childrenOf(buildLucideIconForReact(icon, { nonScalingStroke: true })); + const childAttributes = (children[0]?.[1] ?? {}) as SVGProps; + + expect(childAttributes.vectorEffect).toBe('non-scaling-stroke'); + expect(childAttributes).not.toHaveProperty('vector-effect'); + }); + + it('merges caller attribute names but keeps its own React spellings', () => { + const [, attributes] = buildLucideIconForReact(icon, { + attributeNames: { fill: 'fillColor', class: 'cssClass' }, + }); + + expect(attributes.fillColor).toBe(defaultReactAttributes.fill); + expect(attributes.className).toBe('lucide lucide-house'); + expect(attributes).not.toHaveProperty('cssClass'); + }); +}); From ba6751ac45d379f6359d75ef2228cff6ba96c122 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 18 Sep 2026 14:22:47 +0200 Subject: [PATCH 107/157] feat(site): Better icon detail page and add unreleased flag (#4877) * setup icon popularity call * Adjust sort button * Adjust sorting * Adds aliases * Format code * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Add check for env variable * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Improve styling on mobile * Better icon detail page * Update detail page * feat: make edit button more visible * Fix types * Add unreleased version tag * Adjust icon detail * Added edit button * format code * Replace pencil sparkles * Revert changes * Fix types * Add docs checks * Fix types * Fix awaiting release * revert icons changes * Format code * Fix type issues * Update CarbonAdOverlay to not display Disable CarbonAdOverlay by setting drawerOpen to false. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix types * Fix condition for showing awaiting release icons Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Format code --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Jakob Guddas --- .github/workflows/docs.yml | 55 +++++ docs/.vitepress/api/figma/data.ts | 3 +- docs/.vitepress/api/icon-nodes/index.get.ts | 3 +- docs/.vitepress/config.ts | 2 +- docs/.vitepress/lib/SvgPreview/types.ts | 5 +- docs/.vitepress/lib/SvgPreview/utils.ts | 5 +- docs/.vitepress/lib/categories.ts | 6 +- docs/.vitepress/lib/getFallbackZip.tsx | 3 +- docs/.vitepress/lib/icons.ts | 2 + docs/.vitepress/markdown/example.ts | 3 +- docs/.vitepress/markdown/sandpack.ts | 4 +- docs/.vitepress/markdown/snackPlayer.ts | 2 +- docs/.vitepress/markdown/types.ts | 7 + .../theme/components/SurveyAskOverlay.vue | 7 +- .../base/{IconButton.vue => Button.vue} | 46 ++++- .../theme/components/base/Input.vue | 9 +- .../theme/components/base/InputSearch.vue | 1 + .../theme/components/base/LayoutTop.vue | 3 +- .../theme/components/base/PageTabs.vue | 74 +++++++ .../theme/components/base/RangeSlider.vue | 2 +- .../theme/components/base/ResetButton.vue | 7 +- .../theme/components/base/Select.vue | 2 + .../theme/components/editors/Sandpack.vue | 2 +- .../components/guide/FrameworkSelect.vue | 11 +- .../home/HomeHeroIconsAnimation.vue | 9 +- .../components/home/HomeHeroIconsCard.data.ts | 7 +- .../home/HomeHeroInfoBefore.data.ts | 7 +- .../components/home/HomeHeroInfoBefore.vue | 3 +- .../components/home/HomeIconCustomizer.vue | 4 +- .../home/HomePackagesSection.data.ts | 7 +- .../components/home/HomeSectionTitle.vue | 2 +- .../components/home/RocketDuotoneIcon.ts | 6 +- .../components/icons/CarbonAdOverlay.vue | 7 +- .../components/icons/CategoryList.data.ts | 11 +- .../theme/components/icons/CategoryList.vue | 2 +- .../components/icons/EditInStudioButton.vue | 29 +++ .../components/icons/IconContributors.vue | 9 +- .../theme/components/icons/IconDetail.vue | 24 +-- .../theme/components/icons/IconDetailName.vue | 7 +- .../components/icons/IconDetailOverlay.vue | 29 ++- .../theme/components/icons/IconInfo.vue | 143 +++++-------- .../theme/components/icons/IconPreview.vue | 133 ++++++------ .../theme/components/icons/IconShowcase.vue | 12 +- .../theme/components/icons/IconTags.vue | 110 ++++++++++ .../icons/IconsCategoryOverview.vue | 2 +- .../theme/components/icons/IconsOverview.vue | 6 +- .../theme/components/icons/NoResults.vue | 6 +- .../theme/components/icons/RelatedIcons.vue | 1 - .../icons/SidebarIconCustomizer.vue | 4 +- .../theme/components/icons/StickyBar.vue | 47 +++++ .../theme/components/overrides/Hero.vue | 2 +- .../theme/components/overrides/HeroMatrix.vue | 2 +- .../theme/components/overrides/VPFooter.vue | 2 +- .../components/packages/PackageList.data.ts | 7 +- .../theme/composables/useActiveAnchor.ts | 2 +- .../.vitepress/theme/composables/useSearch.ts | 4 +- docs/.vitepress/theme/style.css | 4 + docs/.vitepress/theme/types.ts | 13 +- docs/.vitepress/theme/utils/chunkArray.ts | 4 +- docs/.vitepress/theme/utils/getStudioLink.ts | 25 +++ docs/.vitepress/types.d.ts | 5 + docs/icons/[name].md | 194 +++++++++--------- docs/icons/icons.data.ts | 33 ++- docs/icons/lab/[name].paths.ts | 3 +- docs/package.json | 9 +- docs/scripts/writeIconDetails.mts | 5 +- docs/scripts/writeIconNodes.mts | 13 +- docs/scripts/writeLabIconNodes.mts | 13 +- docs/scripts/writeReleaseMetadata.mts | 31 ++- docs/tsconfig.json | 1 + pnpm-lock.yaml | 41 ++++ 71 files changed, 917 insertions(+), 387 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/.vitepress/markdown/types.ts rename docs/.vitepress/theme/components/base/{IconButton.vue => Button.vue} (56%) create mode 100644 docs/.vitepress/theme/components/base/PageTabs.vue create mode 100644 docs/.vitepress/theme/components/icons/EditInStudioButton.vue create mode 100644 docs/.vitepress/theme/components/icons/IconTags.vue create mode 100644 docs/.vitepress/theme/utils/getStudioLink.ts diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..551624b82 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,55 @@ +name: Docs Checks + +on: + pull_request: + paths: + - docs/** + - .github/workflows/docs.yml + - package.json + - pnpm-workspace.yaml + - pnpm-lock.yaml + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + # Release metadata is generated by diffing every release tag + fetch-depth: 0 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build docs + run: pnpm --filter @lucide/docs build + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + # Release metadata is generated by diffing every release tag + fetch-depth: 0 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Generate docs data + run: pnpm --filter @lucide/docs run "/^prebuild:.*/" + + - name: Typecheck + run: pnpm --filter @lucide/docs typecheck diff --git a/docs/.vitepress/api/figma/data.ts b/docs/.vitepress/api/figma/data.ts index cde37f140..fad04b166 100644 --- a/docs/.vitepress/api/figma/data.ts +++ b/docs/.vitepress/api/figma/data.ts @@ -1,13 +1,12 @@ import { eventHandler, setResponseHeader } from 'h3'; import iconNodes from '../../data/iconNodes/index.ts'; -import { IconNodeWithKeys } from '../../theme/types'; import iconMetaData from '../../data/iconMetaData'; import releaseMeta from '../../data/releaseMetaData.json'; import categories from '../../data/categoriesData.json'; const dataResponse = { icons: Object.entries(iconNodes).reduce((acc, [name, iconNode]) => { - const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => { + const newIconNode = iconNode.map(([name, { key, ...attrs }]) => { return [name, attrs]; }); diff --git a/docs/.vitepress/api/icon-nodes/index.get.ts b/docs/.vitepress/api/icon-nodes/index.get.ts index 8ab634c78..dcdfe98fd 100644 --- a/docs/.vitepress/api/icon-nodes/index.get.ts +++ b/docs/.vitepress/api/icon-nodes/index.get.ts @@ -1,6 +1,5 @@ import { eventHandler, getQuery, setResponseHeader } from 'h3'; import iconNodes from '../../data/iconNodes'; -import { IconNodeWithKeys } from '../../theme/types'; export default eventHandler((event) => { const query = getQuery(event); @@ -19,7 +18,7 @@ export default eventHandler((event) => { return [name, iconNode]; } - const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => { + const newIconNode = iconNode.map(([name, { key, ...attrs }]) => { return [name, attrs]; }); diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 175fa5066..21024d431 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -97,7 +97,7 @@ export default defineConfig({ { text: 'Resources', items: [ - ...resourcesSidebar[0].items, + ...resourcesSidebar[0].items.map(({ text, link }) => ({ text, link })), { text: 'How to use icons', link: '/how-to/' }, { text: 'Contributing icons', link: '/contribute/icons/' }, ], diff --git a/docs/.vitepress/lib/SvgPreview/types.ts b/docs/.vitepress/lib/SvgPreview/types.ts index ecfe201db..f58296b2b 100644 --- a/docs/.vitepress/lib/SvgPreview/types.ts +++ b/docs/.vitepress/lib/SvgPreview/types.ts @@ -1,4 +1,3 @@ -import { SVGProps } from 'react'; import { getCommands } from './utils'; export type Point = { x: number; y: number }; @@ -15,8 +14,8 @@ export type Path = { }; export type PathProps< - RequiredProps extends keyof SVGProps, - NeverProps extends keyof SVGProps, + RequiredProps extends keyof React.SVGProps, + NeverProps extends keyof React.SVGProps, > = Required, RequiredProps>> & Omit< React.SVGProps, diff --git a/docs/.vitepress/lib/SvgPreview/utils.ts b/docs/.vitepress/lib/SvgPreview/utils.ts index 04ba47f5c..993cbfe6f 100644 --- a/docs/.vitepress/lib/SvgPreview/utils.ts +++ b/docs/.vitepress/lib/SvgPreview/utils.ts @@ -53,10 +53,7 @@ export const getCommands = (src: string) => getNodes(src) .map(convertToPathNode) .flatMap(({ d, name }, idx) => - new SVGPathData(d) - .toAbs() - // @ts-expect-error `commands` is typed as a union of command types svgson does not narrow - .commands.map((c, cIdx) => ({ ...c, id: idx, idx: cIdx, name })), + new SVGPathData(d).toAbs().commands.map((c, cIdx) => ({ ...c, id: idx, idx: cIdx, name })), ); const getPaths = (src: string) => { diff --git a/docs/.vitepress/lib/categories.ts b/docs/.vitepress/lib/categories.ts index dfc0268b6..71d551b5a 100644 --- a/docs/.vitepress/lib/categories.ts +++ b/docs/.vitepress/lib/categories.ts @@ -4,7 +4,7 @@ import { Category, IconEntity } from '../theme/types'; const directory = path.join(process.cwd(), '../categories'); -export function getAllCategoryFiles(): Category[] { +export function getAllCategoryFiles(): Omit[] { const fileNames = fs.readdirSync(directory).filter((file) => path.extname(file) === '.json'); return fileNames.map((fileName) => { @@ -21,9 +21,9 @@ export function getAllCategoryFiles(): Category[] { } export function mapCategoryIconCount( - categories: Category[], + categories: Omit[], icons: { categories: IconEntity['categories'] }[], -) { +): Category[] { return categories.map((category) => ({ ...category, iconCount: icons.reduce( diff --git a/docs/.vitepress/lib/getFallbackZip.tsx b/docs/.vitepress/lib/getFallbackZip.tsx index 6f776c47b..1c176430b 100644 --- a/docs/.vitepress/lib/getFallbackZip.tsx +++ b/docs/.vitepress/lib/getFallbackZip.tsx @@ -1,4 +1,5 @@ -import { createLucideIcon } from 'lucide-react/src/lucide-react'; +import React from 'react'; +import createLucideIcon from 'lucide-react/src/createLucideIcon'; import { type LucideProps, type IconNode } from 'lucide-react/src/types'; import { IconEntity } from '../theme/types'; import { renderToStaticMarkup } from 'react-dom/server'; diff --git a/docs/.vitepress/lib/icons.ts b/docs/.vitepress/lib/icons.ts index ece3f9bfd..05a78bbb0 100644 --- a/docs/.vitepress/lib/icons.ts +++ b/docs/.vitepress/lib/icons.ts @@ -20,6 +20,8 @@ export async function getData(name: string) { const iconNode = iconNodes[name]; const releaseData = releaseMeta?.[name] ?? { + fromFork: false, + awaitingRelease: false, createdRelease: { version: '0.0.0', date: DATE_OF_FORK, diff --git a/docs/.vitepress/markdown/example.ts b/docs/.vitepress/markdown/example.ts index 8f1527a25..f38b949c1 100644 --- a/docs/.vitepress/markdown/example.ts +++ b/docs/.vitepress/markdown/example.ts @@ -1,7 +1,6 @@ import { readFileSync } from 'node:fs'; import { dirname, isAbsolute, resolve } from 'node:path'; -import type MarkdownIt from 'markdown-it'; -import type { RenderRule } from 'markdown-it/lib/renderer.mjs'; +import type { MarkdownIt, RenderRule } from './types'; import container from 'markdown-it-container'; type ContainerArgs = [typeof container, string, { render: RenderRule }]; diff --git a/docs/.vitepress/markdown/sandpack.ts b/docs/.vitepress/markdown/sandpack.ts index 94a137306..983a2ef90 100644 --- a/docs/.vitepress/markdown/sandpack.ts +++ b/docs/.vitepress/markdown/sandpack.ts @@ -1,6 +1,4 @@ -import type MarkdownIt from 'markdown-it'; -import type { RenderRule } from 'markdown-it/lib/renderer.mjs'; -import type Token from 'markdown-it/lib/token.mjs'; +import type { MarkdownIt, RenderRule, Token } from './types'; import container from 'markdown-it-container'; import sandpackTheme from '../theme/sandpackTheme.json'; diff --git a/docs/.vitepress/markdown/snackPlayer.ts b/docs/.vitepress/markdown/snackPlayer.ts index cb848d4ef..3005ed208 100644 --- a/docs/.vitepress/markdown/snackPlayer.ts +++ b/docs/.vitepress/markdown/snackPlayer.ts @@ -16,7 +16,7 @@ * /> */ -import type MarkdownIt from 'markdown-it'; +import type { MarkdownIt } from './types'; type SnackParams = Record; diff --git a/docs/.vitepress/markdown/types.ts b/docs/.vitepress/markdown/types.ts new file mode 100644 index 000000000..a71f15fa2 --- /dev/null +++ b/docs/.vitepress/markdown/types.ts @@ -0,0 +1,7 @@ +import type { MarkdownRenderer } from 'vitepress'; + +// VitePress 1.x renders with markdown-it 14, so derive the plugin types from its renderer +// instead of the markdown-it 15 package installed in docs. +export type MarkdownIt = MarkdownRenderer; +export type RenderRule = NonNullable; +export type Token = Parameters[0][number]; diff --git a/docs/.vitepress/theme/components/SurveyAskOverlay.vue b/docs/.vitepress/theme/components/SurveyAskOverlay.vue index a8e42e81f..fd693c90d 100644 --- a/docs/.vitepress/theme/components/SurveyAskOverlay.vue +++ b/docs/.vitepress/theme/components/SurveyAskOverlay.vue @@ -1,6 +1,6 @@ + diff --git a/docs/.vitepress/theme/components/base/RangeSlider.vue b/docs/.vitepress/theme/components/base/RangeSlider.vue index bfef6d091..871452650 100644 --- a/docs/.vitepress/theme/components/base/RangeSlider.vue +++ b/docs/.vitepress/theme/components/base/RangeSlider.vue @@ -34,7 +34,7 @@ const percentage = computed(() => `${((Number(props.modelValue) - props. type="range" v-bind="$attrs" v-bind:value="modelValue" - v-on:input="$emit('update:modelValue', Number($event.target.value))" + v-on:input="$emit('update:modelValue', Number(($event.target as HTMLInputElement).value))" :min="min" :max="max" :step="step" diff --git a/docs/.vitepress/theme/components/base/ResetButton.vue b/docs/.vitepress/theme/components/base/ResetButton.vue index ff205f796..17c666fb2 100644 --- a/docs/.vitepress/theme/components/base/ResetButton.vue +++ b/docs/.vitepress/theme/components/base/ResetButton.vue @@ -1,16 +1,17 @@ diff --git a/docs/.vitepress/theme/components/icons/IconContributors.vue b/docs/.vitepress/theme/components/icons/IconContributors.vue index 5cbfb364d..35aabf5da 100644 --- a/docs/.vitepress/theme/components/icons/IconContributors.vue +++ b/docs/.vitepress/theme/components/icons/IconContributors.vue @@ -30,10 +30,15 @@ const props = defineProps<{ .contributors { display: flex; flex-direction: row; - align-items: center; + align-items: start; /* justify-content: flex-end; */ - gap: 16px; + gap: 2px; } + +.contributors .label { + margin-top: 12px; +} + .avatar-group { display: flex; } diff --git a/docs/.vitepress/theme/components/icons/IconDetail.vue b/docs/.vitepress/theme/components/icons/IconDetail.vue index b99f5921a..c42e665c4 100644 --- a/docs/.vitepress/theme/components/icons/IconDetail.vue +++ b/docs/.vitepress/theme/components/icons/IconDetail.vue @@ -16,19 +16,17 @@ const tags = computed(() => { diff --git a/docs/.vitepress/theme/components/icons/IconInfo.vue b/docs/.vitepress/theme/components/icons/IconInfo.vue index a5b66240b..1aa8cb76d 100644 --- a/docs/.vitepress/theme/components/icons/IconInfo.vue +++ b/docs/.vitepress/theme/components/icons/IconInfo.vue @@ -10,30 +10,36 @@ import { computed } from 'vue'; import createLucideIcon from '@lucide/vue/src/createLucideIcon'; import { diamond } from '../../../data/iconNodes'; import deprecationReasonTemplate from '../../../../../tools/build-icons/utils/deprecationReasonTemplate.ts'; +import type { IconDeprecationReason } from '../../../../../tools/build-icons/types.ts'; +import IconTags from "./IconTags.vue" +import getStudioLink from '../../utils/getStudioLink'; const props = defineProps<{ icon: IconEntity; popoverPosition?: 'top' | 'bottom'; + showEditButton?: boolean; }>(); const { go } = useRouter(); const { page } = useData(); -const tags = computed(() => { - if (!props.icon || !props?.icon?.tags) return []; - return props.icon.tags.join(' • '); -}); - const DiamondIcon = createLucideIcon('Diamond', diamond); const deprecatedTitle = computed(() => { if (!props.icon.deprecationReason) return ''; - return deprecationReasonTemplate(props.icon.deprecationReason, { + return deprecationReasonTemplate(props.icon.deprecationReason as IconDeprecationReason, { componentName: props.icon.name, iconName: props.icon.name, - toBeRemovedInVersion: props.icon.toBeRemovedInVersion, }); }); + +const iconPath = computed(() => { + if (props.icon.externalLibrary) { + return `icons/${props.icon.externalLibrary}/${props.icon.name}`; + } + + return `icons/${props.icon.name}`; +}); diff --git a/docs/.vitepress/theme/components/icons/IconShowcase.vue b/docs/.vitepress/theme/components/icons/IconShowcase.vue index 4d5250fc5..b41d2e9c5 100644 --- a/docs/.vitepress/theme/components/icons/IconShowcase.vue +++ b/docs/.vitepress/theme/components/icons/IconShowcase.vue @@ -70,7 +70,6 @@ const prettyName = props.name class="showcase" v-if="iconComponent" > -

See this icon in action

@@ -236,18 +235,17 @@ const prettyName = props.name .showcase-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); - gap: 48px; - margin-inline-start: 24px; - margin-block-start: 48px; + gap: 32px; + background: var(--vp-code-block-bg); + padding: 32px; + border-radius: 8px; } .showcase-item { padding: 24px; border-radius: 8px; background-color: var(--vp-c-bg); - box-shadow: - var(--vp-shadow-4), - -24px -24px 0 var(--vp-c-bg-soft); + box-shadow: var(--vp-shadow-2); display: flex; align-items: center; justify-content: center; diff --git a/docs/.vitepress/theme/components/icons/IconTags.vue b/docs/.vitepress/theme/components/icons/IconTags.vue new file mode 100644 index 000000000..5e4204a84 --- /dev/null +++ b/docs/.vitepress/theme/components/icons/IconTags.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue b/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue index a5066017d..e3aab9189 100644 --- a/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue +++ b/docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue @@ -163,7 +163,7 @@ const IconDetailOverlay = defineAsyncComponent(() => import('./IconDetailOverlay function handleCloseDrawer() { setActiveIconName(''); - const url = new URL(window.location); + const url = new URL(window.location.href); url.pathname = '/icons/categories'; if (searchQueryDebounced.value) { diff --git a/docs/.vitepress/theme/components/icons/IconsOverview.vue b/docs/.vitepress/theme/components/icons/IconsOverview.vue index d9bc7dd82..a5dde2d5b 100644 --- a/docs/.vitepress/theme/components/icons/IconsOverview.vue +++ b/docs/.vitepress/theme/components/icons/IconsOverview.vue @@ -35,7 +35,6 @@ const SORTING = [ }, ] - const initialGridItems = computed(() => { if (containerWidth.value === 0) return 120; @@ -72,6 +71,8 @@ const sortedIcons = computed(() => { return [...props.icons].sort((a, b) => (b.popularity || 0) - (a.popularity || 0)); case 'release-date': return [...props.icons].sort((a, b) => { + if (a.awaitingRelease !== b.awaitingRelease) return a.awaitingRelease ? -1 : 1; + const aDate = a.createdRelease?.date ? new Date(a.createdRelease.date).getTime() : 0; const bDate = b.createdRelease?.date ? new Date(b.createdRelease.date).getTime() : 0; return bDate - aDate; @@ -172,7 +173,7 @@ watch(searchQueryDebounced, () => { function handleCloseDrawer() { setActiveIconName(''); - const url = new URL(window.location); + const url = new URL(window.location.href); url.pathname = '/icons/'; if (searchQueryDebounced.value) { @@ -207,6 +208,7 @@ function handleCloseDrawer() {