diff --git a/components.d.ts b/components.d.ts index 8e59366a..ce307bc2 100644 --- a/components.d.ts +++ b/components.d.ts @@ -103,6 +103,7 @@ declare module '@vue/runtime-core' { IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default'] InputCopyable: typeof import('./src/components/InputCopyable.vue')['default'] IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default'] + IpGeoLocation: typeof import('./src/tools/ip-geo-location/ip-geo-location.vue')['default'] Ipv4AddressConverter: typeof import('./src/tools/ipv4-address-converter/ipv4-address-converter.vue')['default'] Ipv4RangeExpander: typeof import('./src/tools/ipv4-range-expander/ipv4-range-expander.vue')['default'] Ipv4SubnetCalculator: typeof import('./src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue')['default'] @@ -129,6 +130,8 @@ declare module '@vue/runtime-core' { MenuLayout: typeof import('./src/components/MenuLayout.vue')['default'] MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default'] MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default'] + NA: typeof import('naive-ui')['NA'] + NAlert: typeof import('naive-ui')['NAlert'] NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] NButton: typeof import('naive-ui')['NButton'] NCode: typeof import('naive-ui')['NCode'] @@ -144,6 +147,8 @@ declare module '@vue/runtime-core' { NLayout: typeof import('naive-ui')['NLayout'] NLayoutSider: typeof import('naive-ui')['NLayoutSider'] NMenu: typeof import('naive-ui')['NMenu'] + NP: typeof import('naive-ui')['NP'] + NProgress: typeof import('naive-ui')['NProgress'] NScrollbar: typeof import('naive-ui')['NScrollbar'] NSlider: typeof import('naive-ui')['NSlider'] NSwitch: typeof import('naive-ui')['NSwitch'] diff --git a/src/tools/index.ts b/src/tools/index.ts index c9003fe8..a073149b 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -6,6 +6,7 @@ import { tool as emailNormalizer } from './email-normalizer'; import { tool as asciiTextDrawer } from './ascii-text-drawer'; import { tool as textToUnicode } from './text-to-unicode'; +import { tool as ipGeoLocation } from './ip-geo-location'; import { tool as safelinkDecoder } from './safelink-decoder'; import { tool as xmlToJson } from './xml-to-json'; import { tool as jsonToXml } from './json-to-xml'; @@ -160,7 +161,15 @@ export const toolsByCategory: ToolCategory[] = [ }, { name: 'Network', - components: [ipv4SubnetCalculator, ipv4AddressConverter, ipv4RangeExpander, macAddressLookup, macAddressGenerator, ipv6UlaGenerator], + components: [ + ipv4SubnetCalculator, + ipv4AddressConverter, + ipv4RangeExpander, + macAddressLookup, + macAddressGenerator, + ipv6UlaGenerator, + ipGeoLocation, + ], }, { name: 'Math', diff --git a/src/tools/ip-geo-location/index.ts b/src/tools/ip-geo-location/index.ts new file mode 100644 index 00000000..81e4e1eb --- /dev/null +++ b/src/tools/ip-geo-location/index.ts @@ -0,0 +1,12 @@ +import { World } from '@vicons/tabler'; +import { defineTool } from '../tool'; + +export const tool = defineTool({ + name: 'IP Geo Location', + path: '/ip-geo-location', + description: 'Retrieve information about an IPv4/6 address or domain location', + keywords: ['ip', 'domain', 'geo', 'location'], + component: () => import('./ip-geo-location.vue'), + icon: World, + createdAt: new Date('2024-01-17'), +}); diff --git a/src/tools/ip-geo-location/ip-geo-location.vue b/src/tools/ip-geo-location/ip-geo-location.vue new file mode 100644 index 00000000..e829fde6 --- /dev/null +++ b/src/tools/ip-geo-location/ip-geo-location.vue @@ -0,0 +1,116 @@ + + +