diff --git a/docs/developers/modules/cooldown.mdx b/docs/developers/modules/cooldown.mdx index eb7fe96c..500624ab 100644 --- a/docs/developers/modules/cooldown.mdx +++ b/docs/developers/modules/cooldown.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Cooldown Module ## Overview @@ -17,6 +19,13 @@ Apollo's cooldown module allows servers to interact with the Cooldown mod found ## Integration ### Sample Code +Explore each integration by cycling through each tab, to find the best fit for your requirements and needs. + + + + + +### Displaying a Cooldown with an item ```java public void displayCooldownItemExample(Player viewer) { @@ -34,7 +43,11 @@ public void displayCooldownItemExample(Player viewer) { ); }); } +``` + +### Displaying a Cooldown with a resource +```java public void displayCooldownResourceExample(Player viewer) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); @@ -53,46 +66,172 @@ public void displayCooldownResourceExample(Player viewer) { } ``` -### `Cooldown` Options +### Removing a Cooldown -`.name(String)` should include a unique identifier for the each cooldown. ```java -.name("enderpearl-cooldown") +public void removeCooldownExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.cooldownModule.removeCooldown(apolloPlayer, "enderpearl-cooldown"); + this.cooldownModule.removeCooldown(apolloPlayer, "lunar-cooldown"); + }); +} ``` -`.duration(java.time.Duration)` the duration the cooldown should last for. See the [java.time.Duration Javadocs](https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html) for more. +### Resetting all Cooldowns + ```java -.duration(Duration.ofSeconds(15)) +public void resetCooldownsExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(this.cooldownModule::resetCooldowns); +} ``` -`.icon(itemStackIcon)` is how you display a custom item icon. Read the [icons utilities page](/apollo/developers/utilities/icons) to learn more about icons. + + + + +### Displaying a Cooldown with an item + ```java -.icon(ItemStackIcon.builder().itemId("ENDER_PEARL").build()) +public void displayCooldownItemExample(Player viewer) { + DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() + .setName("enderpearl-cooldown") + .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(15))) + .setIcon(ProtobufUtil.createIconProto(ItemStackIcon.builder() + .itemName("ENDER_PEARL") + .build())) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} ``` -`.icon(SimpleResourceLocationIcon)` is how you display a custom texture icon. Read the [icons utilities page](/apollo/developers/utilities/icons) to learn more about icons. +### Displaying a Cooldown with a resource + ```java -.icon(SimpleResourceLocationIcon.builder().resourceLocation("lunar:logo/logo-200x182.svg").size(12).build()) +public void displayCooldownResourceExample(Player viewer) { + DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() + .setName("lunar-cooldown") + .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(15))) + .setIcon(ProtobufUtil.createIconProto(SimpleResourceLocationIcon.builder() + .resourceLocation("lunar:logo/logo-200x182.svg") + .size(12) + .build())) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} ``` -### Removing a specific cooldown for a player +### Removing a Cooldown ```java public void removeCooldownExample(Player viewer) { - Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + RemoveCooldownMessage enderpearlMessage = RemoveCooldownMessage.newBuilder() + .setName("enderpearl-cooldown") + .build(); - apolloPlayerOpt.ifPresent(apolloPlayer -> { - this.cooldownModule.removeCooldown(apolloPlayer, "enderpearl-cooldown"); - this.cooldownModule.removeCooldown(apolloPlayer, "lunar-cooldown"); - }); + ProtobufPacketUtil.sendPacket(viewer, enderpearlMessage); } ``` -### Resetting all cooldowns for a player +### Resetting all Cooldowns ```java public void resetCooldownsExample(Player viewer) { - Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); - apolloPlayerOpt.ifPresent(this.cooldownModule::resetCooldowns); + ResetCooldownsMessage message = ResetCooldownsMessage.getDefaultInstance(); + ProtobufPacketUtil.sendPacket(viewer, message); } ``` + + + + + +### Displaying a Cooldown with an item + +```java +public void displayCooldownItemExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.DisplayCooldownMessage"); + message.addProperty("name", "enderpearl-cooldown"); + message.addProperty("duration", JsonUtil.createDurationObject(Duration.ofSeconds(15))); + message.add("icon", JsonUtil.createIconObject( + ItemStackIcon.builder() + .itemName("ENDER_PEARL") + .build()) + ); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Displaying a Cooldown with a resource + +```java +public void displayCooldownResourceExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.DisplayCooldownMessage"); + message.addProperty("name", "lunar-cooldown"); + message.addProperty("duration", JsonUtil.createDurationObject(Duration.ofSeconds(15))); + message.add("icon", JsonUtil.createIconObject( + SimpleResourceLocationIcon.builder() + .resourceLocation("lunar:logo/logo-200x182.svg") + .size(12) + .build()) + ); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Removing a Cooldown + +```java +public void removeCooldownExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.RemoveCooldownMessage"); + message.addProperty("name", "enderpearl-cooldown"); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Resetting all Cooldowns + +```java +public void resetCooldownsExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.ResetCooldownsMessage"); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + + + + + +### `Cooldown` Options + +`.name(String)` should include a unique identifier for the each cooldown. +```java +.name("enderpearl-cooldown") +``` + +`.duration(java.time.Duration)` the duration the cooldown should last for. See the [java.time.Duration Javadocs](https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html) for more. +```java +.duration(Duration.ofSeconds(15)) +``` + +`.icon(itemStackIcon)` is how you display a custom item icon. Read the [icons utilities page](/apollo/developers/utilities/icons) to learn more about icons. +```java +.icon(ItemStackIcon.builder().itemId("ENDER_PEARL").build()) +``` + +`.icon(SimpleResourceLocationIcon)` is how you display a custom texture icon. Read the [icons utilities page](/apollo/developers/utilities/icons) to learn more about icons. +```java +.icon(SimpleResourceLocationIcon.builder().resourceLocation("lunar:logo/logo-200x182.svg").size(12).build()) +``` diff --git a/docs/developers/modules/entity.mdx b/docs/developers/modules/entity.mdx index 19fb8e2f..ecb1be7c 100644 --- a/docs/developers/modules/entity.mdx +++ b/docs/developers/modules/entity.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Entity Module ## Overview @@ -9,7 +11,14 @@ The entity module allows you to interact with entities client-sided. ## Integration -### Override rainbow sheep for a player +### Sample Code +Explore each integration by cycling through each tab, to find the best fit for your requirements and needs. + + + + + +### Override Sheep rainbow state ```java public void overrideRainbowSheepExample(Player viewer) { @@ -25,14 +34,7 @@ public void overrideRainbowSheepExample(Player viewer) { } ``` -#### `overrideRainbowSheep` Parameters - -1. `ApolloPlayer Viewer` - - The player you want to view the rainbow sheep. -2. `List sheepEntities` - - A list of all sheep entities you want to be rainbow. - -#### Resetting rainbow sheep for a player +### Reset Sheep rainbow state ```java public void resetRainbowSheepExample(Player viewer) { @@ -49,14 +51,7 @@ public void resetRainbowSheepExample(Player viewer) { } ``` -#### `resetRainbowSheep` Parameters - -1. `ApolloPlayer Viewer` - - The player you want to reset the rainbow sheep for. -2. `List sheepEntities` - - A list of all sheep entities you want to remove the rainbow state from. - -### Flip entities for a player +### Override Entity flip state ```java public void flipEntityExample(Player viewer) { @@ -75,14 +70,7 @@ public void flipEntityExample(Player viewer) { } ``` -#### `flipEntity` Parameters - -1. `ApolloPlayer Viewer` - - The player you want to see the flipped entity. -2. `List entities` - - A list of all entities you want to flip. - -#### Resetting flipped entities for a player +### Reset Entity flip state ```java public void resetFlippedEntityExample(Player viewer) { @@ -101,9 +89,157 @@ public void resetFlippedEntityExample(Player viewer) { } ``` -#### `resetFlippedEntity` Parameters + + + + +### Override Sheep rainbow state + +```java +public void overrideRainbowSheepExample(Player viewer) { + Set sheepUuidsProto = viewer.getWorld().getEntitiesByClass(Sheep.class).stream() + .map(sheep -> ProtobufUtil.createEntityIdProto(sheep.getEntityId(), sheep.getUniqueId())) + .collect(Collectors.toSet()); + + OverrideRainbowSheepMessage message = OverrideRainbowSheepMessage.newBuilder() + .addAllEntityIds(sheepUuidsProto) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Reset Sheep rainbow state + +```java +public void resetRainbowSheepExample(Player viewer) { + Set sheepUuidsProto = viewer.getWorld().getEntitiesByClass(Sheep.class).stream() + .map(sheep -> ProtobufUtil.createEntityIdProto(sheep.getEntityId(), sheep.getUniqueId())) + .collect(Collectors.toSet()); + + ResetRainbowSheepMessage message = ResetRainbowSheepMessage.newBuilder() + .addAllEntityIds(sheepUuidsProto) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Override Entity flip state + +```java +public void flipEntityExample(Player viewer) { + Set entityUuidsProto = viewer.getWorld() + .getNearbyEntities(viewer.getLocation(), 10, 10, 10) + .stream().filter(entity -> entity instanceof Cow) + .map(sheep -> ProtobufUtil.createEntityIdProto(sheep.getEntityId(), sheep.getUniqueId())) + .collect(Collectors.toSet()); + + FlipEntityMessage message = FlipEntityMessage.newBuilder() + .addAllEntityIds(entityUuidsProto) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Reset Entity flip state + +```java +public void resetFlippedEntityExample(Player viewer) { + Set entityUuidsProto = viewer.getWorld() + .getNearbyEntities(viewer.getLocation(), 10, 10, 10) + .stream().filter(entity -> entity instanceof Cow) + .map(sheep -> ProtobufUtil.createEntityIdProto(sheep.getEntityId(), sheep.getUniqueId())) + .collect(Collectors.toSet()); + + ResetFlipedEntityMessage message = ResetFlipedEntityMessage.newBuilder() + .addAllEntityIds(entityUuidsProto) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + + + + + +### Override Sheep rainbow state + +```java +public void overrideRainbowSheepExample(Player viewer) { + JsonArray entityIds = viewer.getWorld().getEntitiesByClass(Sheep.class).stream() + .map(JsonUtil::createEntityIdObject) + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.entity.v1.OverrideRainbowSheepMessage"); + message.add("entity_ids", entityIds); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Reset Sheep rainbow state + +```java +public void resetRainbowSheepExample(Player viewer) { + JsonArray entityIds = viewer.getWorld().getEntitiesByClass(Sheep.class).stream() + .map(JsonUtil::createEntityIdObject) + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.entity.v1.ResetRainbowSheepMessage"); + message.add("entity_ids", entityIds); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Override Entity flip state + +```java +public void flipEntityExample(Player viewer) { + JsonArray entityIds = viewer.getWorld() + .getNearbyEntities(viewer.getLocation(), 10, 10, 10) + .stream().filter(entity -> entity instanceof Cow) + .map(JsonUtil::createEntityIdObject) + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.entity.v1.FlipEntityMessage"); + message.add("entity_ids", entityIds); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Reset Entity flip state + +```java +public void resetFlippedEntityExample(Player viewer) { + JsonArray entityIds = viewer.getWorld() + .getNearbyEntities(viewer.getLocation(), 10, 10, 10) + .stream().filter(entity -> entity instanceof Cow) + .map(JsonUtil::createEntityIdObject) + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.entity.v1.ResetFlipedEntityMessage"); + message.add("entity_ids", entityIds); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + + + + + +#### `Entity` Parameters -1. `ApolloPlayer Viewer` - - The player you want to reset the flipped entity for. +1. `Recipients recipients` + - A list of all the player(s) you want to be able to see the updated fire color. 2. `List entities` - A list of all entities you want to reset the flip state from. diff --git a/docs/developers/modules/glow.mdx b/docs/developers/modules/glow.mdx index fc0e7c5b..667bb972 100644 --- a/docs/developers/modules/glow.mdx +++ b/docs/developers/modules/glow.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Glow Module ## Overview @@ -17,6 +19,13 @@ The glow module allows you to take advantage of the vanilla Minecraft Glow Effec ## Integration ### Sample Code +Explore each integration by cycling through each tab, to find the best fit for your requirements and needs. + + + + + +### Override a Glow Effect ```java public void overrideGlowEffectExample(UUID glowingPlayer) { @@ -27,16 +36,7 @@ public void overrideGlowEffectExample(UUID glowingPlayer) { } ``` -### `overrideGlowEffectExample` Parameters - -1. `Recipients recipients` - - A list of all the player(s) you want to be able to see the updated glow effect. -2. `UUID target` - - The player or living entity you want to display the glow effect on. -3. `Color glowColor` - - How you'll dictate the color of the glow effect, see the [colors page](/apollo/developers/utilities/colors) for more. - -### Removing a specific targets glow effect for viewers +### Removing a Glow Effect ```java public void resetGlowEffectExample(UUID glowingPlayer) { @@ -44,7 +44,7 @@ public void resetGlowEffectExample(UUID glowingPlayer) { } ``` -### Resetting all glow effects for all viewers +### Resetting all Glow Effects ```java public void resetGlowEffectsExample(Player viewer) { @@ -52,3 +52,94 @@ public void resetGlowEffectsExample(Player viewer) { apolloPlayerOpt.ifPresent(this.glowModule::resetGlow); } ``` + + + + + +### Override a Glow Effect + +```java +public void overrideGlowEffectExample(UUID glowingPlayer) { + OverrideGlowEffectMessage message = OverrideGlowEffectMessage.newBuilder() + .setPlayerUuid(ProtobufUtil.createUuidProto(glowingPlayer)) + .setColor(ProtobufUtil.createColorProto(Color.RED)) + .build(); + + ProtobufPacketUtil.broadcastPacket(message); +} +``` + +### Removing a Glow Effect + +```java +public void resetGlowEffectExample(UUID glowingPlayer) { + ResetGlowEffectMessage message = ResetGlowEffectMessage.newBuilder() + .setPlayerUuid(ProtobufUtil.createUuidProto(glowingPlayer)) + .build(); + + ProtobufPacketUtil.broadcastPacket(message); +} +``` + +### Resetting all Glow Effects + +```java +public void resetGlowEffectsExample(Player viewer) { + ResetGlowEffectsMessage message = ResetGlowEffectsMessage.getDefaultInstance(); + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + + + + + +### Override a Glow Effect + +```java +public void overrideGlowEffectExample(UUID glowingPlayer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.glow.v1.OverrideGlowEffectMessage"); + message.add("player_uuid", JsonUtil.createUuidObject(glowingPlayer)); + message.add("color", JsonUtil.createColorObject(Color.RED)); + + JsonPacketUtil.broadcastPacket(message); +} +``` + +### Removing a Glow Effect + +```java +public void resetGlowEffectExample(UUID glowingPlayer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.glow.v1.ResetGlowEffectMessage"); + message.add("player_uuid", JsonUtil.createUuidObject(glowingPlayer)); + + JsonPacketUtil.broadcastPacket(message); +} +``` + +### Resetting all Glow Effects + +```java +public void resetGlowEffectsExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.glow.v1.ResetGlowEffectsMessage"); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + + + + + +### `overrideGlowEffectExample` Parameters + +1. `Recipients recipients` + - A list of all the player(s) you want to be able to see the updated glow effect. +2. `UUID target` + - The player or living entity you want to display the glow effect on. +3. `Color glowColor` + - How you'll dictate the color of the glow effect, see the [colors page](/apollo/developers/utilities/colors) for more. diff --git a/docs/developers/modules/hologram.mdx b/docs/developers/modules/hologram.mdx index 7aa64d6b..433231f6 100644 --- a/docs/developers/modules/hologram.mdx +++ b/docs/developers/modules/hologram.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Hologram Module ## Overview diff --git a/docs/developers/modules/limb.mdx b/docs/developers/modules/limb.mdx index 950107d1..c11d733e 100644 --- a/docs/developers/modules/limb.mdx +++ b/docs/developers/modules/limb.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Limb Module ## Overview diff --git a/docs/developers/modules/modsetting.mdx b/docs/developers/modules/modsetting.mdx index 6d05ccfc..3d9b5ae1 100644 --- a/docs/developers/modules/modsetting.mdx +++ b/docs/developers/modules/modsetting.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Mod Setting Module ## Overview diff --git a/docs/developers/modules/nametag.mdx b/docs/developers/modules/nametag.mdx index e8dcebc2..c0e9e18c 100644 --- a/docs/developers/modules/nametag.mdx +++ b/docs/developers/modules/nametag.mdx @@ -1,3 +1,4 @@ +import { Tab, Tabs } from 'nextra-theme-docs' import { Callout } from 'nextra-theme-docs' # Nametag Module diff --git a/docs/developers/modules/nickhider.mdx b/docs/developers/modules/nickhider.mdx index 5f1c3751..edfcb6fa 100644 --- a/docs/developers/modules/nickhider.mdx +++ b/docs/developers/modules/nickhider.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Nick Hider Module ## Overview diff --git a/docs/developers/modules/notification.mdx b/docs/developers/modules/notification.mdx index 09066038..3d0346f0 100644 --- a/docs/developers/modules/notification.mdx +++ b/docs/developers/modules/notification.mdx @@ -1,3 +1,4 @@ +import { Tab, Tabs } from 'nextra-theme-docs' import { Callout } from 'nextra-theme-docs' # Notification Module diff --git a/docs/developers/modules/richpresence.mdx b/docs/developers/modules/richpresence.mdx index 5fd58995..3d2a781b 100644 --- a/docs/developers/modules/richpresence.mdx +++ b/docs/developers/modules/richpresence.mdx @@ -1,3 +1,4 @@ +import { Tab, Tabs } from 'nextra-theme-docs' import { Callout } from 'nextra-theme-docs' # Rich Presence Module diff --git a/docs/developers/modules/serverrule.mdx b/docs/developers/modules/serverrule.mdx index 2272fcdc..cd527a6d 100644 --- a/docs/developers/modules/serverrule.mdx +++ b/docs/developers/modules/serverrule.mdx @@ -1,3 +1,4 @@ +import { Tab, Tabs } from 'nextra-theme-docs' import { Callout } from 'nextra-theme-docs' # Server Rule Module diff --git a/docs/developers/modules/staffmod.mdx b/docs/developers/modules/staffmod.mdx index e3fe3ca6..f0ff5971 100644 --- a/docs/developers/modules/staffmod.mdx +++ b/docs/developers/modules/staffmod.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Staff Mod Module ## Overview diff --git a/docs/developers/modules/stopwatch.mdx b/docs/developers/modules/stopwatch.mdx index 46f91198..87582b2b 100644 --- a/docs/developers/modules/stopwatch.mdx +++ b/docs/developers/modules/stopwatch.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Stopwatch Module ## Overview diff --git a/docs/developers/modules/title.mdx b/docs/developers/modules/title.mdx index fc2df212..8d1c35a5 100644 --- a/docs/developers/modules/title.mdx +++ b/docs/developers/modules/title.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Title Module ## Overview diff --git a/docs/developers/modules/tntcountdown.mdx b/docs/developers/modules/tntcountdown.mdx index ac62fb4d..91dbfa04 100644 --- a/docs/developers/modules/tntcountdown.mdx +++ b/docs/developers/modules/tntcountdown.mdx @@ -1,3 +1,4 @@ +import { Tab, Tabs } from 'nextra-theme-docs' import { Callout } from 'nextra-theme-docs' # TNT Countdown Module diff --git a/docs/developers/modules/transfer.mdx b/docs/developers/modules/transfer.mdx index 974cd394..32e0a714 100644 --- a/docs/developers/modules/transfer.mdx +++ b/docs/developers/modules/transfer.mdx @@ -1,3 +1,4 @@ +import { Tab, Tabs } from 'nextra-theme-docs' import { Callout } from 'nextra-theme-docs' # Transfer Module diff --git a/docs/developers/modules/vignette.mdx b/docs/developers/modules/vignette.mdx index 64b37218..67463e6f 100644 --- a/docs/developers/modules/vignette.mdx +++ b/docs/developers/modules/vignette.mdx @@ -1,3 +1,5 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + # Vignette Module ## Overview