@geowiki/map 0.16.9-dev.2 → 0.16.9-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -546,13 +546,13 @@ var prepareRGBImage = (array, width, height) => {
546
546
  var data = imageData == null ? void 0 : imageData.data;
547
547
  let index = 0;
548
548
  for (var i = 0; i < array.length; ) {
549
- const r = array[i++];
549
+ const r2 = array[i++];
550
550
  const g = array[i++];
551
551
  const b = array[i++];
552
- data[index++] = r;
552
+ data[index++] = r2;
553
553
  data[index++] = g;
554
554
  data[index++] = b;
555
- data[index++] = r === 0 && g === 0 && b === 0 ? 0 : 255;
555
+ data[index++] = r2 === 0 && g === 0 && b === 0 ? 0 : 255;
556
556
  }
557
557
  ctx == null ? void 0 : ctx.putImageData(imageData, 0, 0);
558
558
  return canvas;
@@ -5105,7 +5105,7 @@ var GoogleSheetsPopup = ({
5105
5105
  return Object.keys(value).length === 0;
5106
5106
  return false;
5107
5107
  };
5108
- const isUrl = (value) => {
5108
+ const isUrl2 = (value) => {
5109
5109
  if (typeof value !== "string")
5110
5110
  return false;
5111
5111
  const trimmedValue = value.trim();
@@ -5131,7 +5131,7 @@ var GoogleSheetsPopup = ({
5131
5131
  return key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).replace(/_/g, " ").replace(/\s+/g, " ").trim();
5132
5132
  };
5133
5133
  const formatFieldValue = (value) => {
5134
- if (isUrl(value)) {
5134
+ if (isUrl2(value)) {
5135
5135
  const url = value.startsWith("http") ? value : `https://${value}`;
5136
5136
  const displayText = value.length > 50 ? `${value.substring(0, 47)}...` : value;
5137
5137
  return /* @__PURE__ */ jsx15(
@@ -5149,11 +5149,11 @@ var GoogleSheetsPopup = ({
5149
5149
  return String(value);
5150
5150
  };
5151
5151
  const urlFields = filteredProperties.filter(([_key, value]) => {
5152
- const isUrlValue = isUrl(value);
5152
+ const isUrlValue = isUrl2(value);
5153
5153
  return isUrlValue;
5154
5154
  });
5155
5155
  const otherFields = filteredProperties.filter(([_key, value]) => {
5156
- const isUrlValue = isUrl(value);
5156
+ const isUrlValue = isUrl2(value);
5157
5157
  return !isUrlValue;
5158
5158
  });
5159
5159
  return /* @__PURE__ */ jsxs6("div", { className: "bg-white rounded-lg shadow-lg p-6 w-full max-w-md overflow-hidden", children: [
@@ -10244,8 +10244,8 @@ var Questions = (props) => {
10244
10244
  if (Array.isArray(y.answers)) {
10245
10245
  y.answers = y.answers.filter((answer) => {
10246
10246
  const value = answer.text;
10247
- const isInteger = parseInt(value);
10248
- if (isInteger)
10247
+ const isInteger2 = parseInt(value);
10248
+ if (isInteger2)
10249
10249
  return Object.values(taskChangeDetail).includes(Number(value));
10250
10250
  return true;
10251
10251
  });
@@ -10844,12 +10844,12 @@ var BingLayer = class extends L13.TileLayer {
10844
10844
  (_a = document.getElementsByTagName("head")[0]) == null ? void 0 : _a.appendChild(script);
10845
10845
  }
10846
10846
  initMetadata(meta) {
10847
- const r = meta.resourceSets[0].resources[0];
10848
- this.options.subdomains = r.imageUrlSubdomains;
10849
- this._url = r.imageUrl;
10850
- if (r.imageryProviders) {
10851
- for (let i = 0; i < r.imageryProviders.length; i++) {
10852
- const p = r.imageryProviders[i];
10847
+ const r2 = meta.resourceSets[0].resources[0];
10848
+ this.options.subdomains = r2.imageUrlSubdomains;
10849
+ this._url = r2.imageUrl;
10850
+ if (r2.imageryProviders) {
10851
+ for (let i = 0; i < r2.imageryProviders.length; i++) {
10852
+ const p = r2.imageryProviders[i];
10853
10853
  for (let j = 0; j < p.coverageAreas.length; j++) {
10854
10854
  const c = p.coverageAreas[j];
10855
10855
  const bounds = new L13.LatLngBounds(
@@ -12423,7 +12423,7 @@ var ControlItem = memo5(({ control, position }) => {
12423
12423
  ] });
12424
12424
  }
12425
12425
  const positionClass = POSITION_CLASSES2[position];
12426
- const getDefaultDirection = () => {
12426
+ const getDefaultDirection2 = () => {
12427
12427
  switch (position) {
12428
12428
  case "topleft":
12429
12429
  case "bottomleft":
@@ -12435,7 +12435,7 @@ var ControlItem = memo5(({ control, position }) => {
12435
12435
  return "right";
12436
12436
  }
12437
12437
  };
12438
- const popoverDirection = control.popoverDirection || getDefaultDirection();
12438
+ const popoverDirection = control.popoverDirection || getDefaultDirection2();
12439
12439
  return /* @__PURE__ */ jsxs34(Fragment16, { children: [
12440
12440
  /* @__PURE__ */ jsx50("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxs34(Popover5.Root, { open: control.isOpen, children: [
12441
12441
  /* @__PURE__ */ jsxs34(Tooltip2, { delayDuration: 100, children: [
@@ -16869,13 +16869,3081 @@ var WaybackTimelineMap = (props) => {
16869
16869
  };
16870
16870
 
16871
16871
  // src/Components/Map/MapLibre.tsx
16872
- import { useEffect as useEffect34, useRef as useRef16, useState as useState36 } from "react";
16872
+ import { useEffect as useEffect35, useRef as useRef16, useState as useState37 } from "react";
16873
16873
  import { forwardRef as forwardRef5 } from "react";
16874
16874
  import maplibregl from "maplibre-gl";
16875
16875
  import MapPinIcon5 from "@heroicons/react/24/solid/MapPinIcon";
16876
16876
  import { renderToStaticMarkup } from "react-dom/server";
16877
- import { MapControlToolbar, GlobeIcon as GlobeIcon2, PlusIcon as PlusIcon3, MinusIcon as MinusIcon3, LayerGroupIcon as LayerGroupIcon5, LayerSwitcher as LayerSwitcher2 } from "@geowiki/design-system";
16878
- import { jsx as jsx79, jsxs as jsxs57 } from "react/jsx-runtime";
16877
+
16878
+ // src/Components/Generic/Map/LayerSwitcher.tsx
16879
+ import { memo as memo16, useEffect as useEffect34, useCallback as useCallback12, useState as useState36 } from "react";
16880
+ import {
16881
+ HoverCard as HoverCard2,
16882
+ HoverCardContent as HoverCardContent2,
16883
+ HoverCardTrigger as HoverCardTrigger2,
16884
+ Switch as Switch2,
16885
+ KeyInfoItem as KeyInfoItem2,
16886
+ SimpleLink as SimpleLink2
16887
+ } from "@geowiki/ui";
16888
+
16889
+ // src/Components/Generic/Map/store/mapLayers.ts
16890
+ import { create as create9 } from "zustand";
16891
+ import { arrayMove as arrayMove2 } from "@dnd-kit/sortable";
16892
+ var useMapLayerStore2 = create9()((set, get) => ({
16893
+ layers: [],
16894
+ add: (layer) => {
16895
+ var _a;
16896
+ if (layer.id === "geotrees-external-layer" || layer.title === "GEO-TREES Sites" || ((_a = layer.layerInfo) == null ? void 0 : _a.source) === "GeoTrees External API") {
16897
+ const existingGeoTreesLayer = get().layers.find(
16898
+ (existingLayer) => {
16899
+ var _a2;
16900
+ return existingLayer.id === "geotrees-external-layer" || existingLayer.title === "GEO-TREES Sites" || ((_a2 = existingLayer.layerInfo) == null ? void 0 : _a2.source) === "GeoTrees External API";
16901
+ }
16902
+ );
16903
+ if (existingGeoTreesLayer) {
16904
+ console.warn(
16905
+ "GeoTrees External layer already exists in map store, preventing duplicate addition"
16906
+ );
16907
+ return;
16908
+ }
16909
+ }
16910
+ set((state) => {
16911
+ const layersWithName = state.layers.filter((l) => l == null ? void 0 : l.layerName);
16912
+ const layersWithoutName = state.layers.filter((l) => !(l == null ? void 0 : l.layerName));
16913
+ if (layer.layerName) {
16914
+ const insertIndex = layersWithName.findIndex(
16915
+ (l) => {
16916
+ var _a2, _b, _c, _d;
16917
+ return ((_b = (_a2 = l.order) != null ? _a2 : l.index) != null ? _b : 0) > ((_d = (_c = layer.order) != null ? _c : layer.index) != null ? _d : 0);
16918
+ }
16919
+ );
16920
+ const updatedLayersWithName = insertIndex === -1 ? [...layersWithName, layer] : [
16921
+ ...layersWithName.slice(0, insertIndex),
16922
+ layer,
16923
+ ...layersWithName.slice(insertIndex)
16924
+ ];
16925
+ updatedLayersWithName.forEach((l, idx) => {
16926
+ l.index = updatedLayersWithName.length + layersWithoutName.length - idx;
16927
+ });
16928
+ layersWithoutName.forEach((l, idx) => {
16929
+ l.index = layersWithoutName.length - idx;
16930
+ });
16931
+ const newState = {
16932
+ layers: [...updatedLayersWithName, ...layersWithoutName]
16933
+ };
16934
+ return newState;
16935
+ } else {
16936
+ const insertIndex = layersWithoutName.findIndex(
16937
+ (l) => {
16938
+ var _a2, _b, _c, _d;
16939
+ return ((_b = (_a2 = l.order) != null ? _a2 : l.index) != null ? _b : 0) > ((_d = (_c = layer.order) != null ? _c : layer.index) != null ? _d : 0);
16940
+ }
16941
+ );
16942
+ const updatedLayersWithoutName = insertIndex === -1 ? [...layersWithoutName, layer] : [
16943
+ ...layersWithoutName.slice(0, insertIndex),
16944
+ layer,
16945
+ ...layersWithoutName.slice(insertIndex)
16946
+ ];
16947
+ updatedLayersWithoutName.forEach((l, idx) => {
16948
+ l.index = updatedLayersWithoutName.length - idx;
16949
+ });
16950
+ layersWithName.forEach((l, idx) => {
16951
+ l.index = layersWithName.length + updatedLayersWithoutName.length - idx;
16952
+ });
16953
+ const newState = {
16954
+ layers: [...layersWithName, ...updatedLayersWithoutName]
16955
+ };
16956
+ console.log(
16957
+ "MapLayerStore: New state with unnamed layer:",
16958
+ newState.layers.length
16959
+ );
16960
+ return newState;
16961
+ }
16962
+ });
16963
+ },
16964
+ remove: (layer) => set((state) => {
16965
+ return { layers: state.layers.filter((l) => l.id !== layer.id) };
16966
+ }),
16967
+ updateOpacity: (id, opacity) => set((state) => {
16968
+ var index = state.layers.findIndex((l) => l.id === id);
16969
+ if (index > -1) {
16970
+ state.layers[index].opacity = opacity;
16971
+ }
16972
+ return { layers: state.layers };
16973
+ }),
16974
+ updateLayer: (id, updates) => set((state) => {
16975
+ var index = state.layers.findIndex((l) => l.id === id);
16976
+ if (index > -1) {
16977
+ state.layers[index] = __spreadValues(__spreadValues({}, state.layers[index]), updates);
16978
+ }
16979
+ return { layers: state.layers };
16980
+ }),
16981
+ reorderLayers: (oldIndex, newIndex) => set((state) => {
16982
+ const newLayers = [...state.layers];
16983
+ const layersWithoutName = newLayers.filter((layer) => !(layer == null ? void 0 : layer.layerName));
16984
+ const layersToReorder = newLayers.filter((layer) => layer == null ? void 0 : layer.layerName);
16985
+ const reorderedLayers = arrayMove2(layersToReorder, oldIndex, newIndex);
16986
+ reorderedLayers.forEach((layer, idx) => {
16987
+ layer.index = reorderedLayers.length + layersWithoutName.length - idx;
16988
+ });
16989
+ layersWithoutName.forEach((layer, idx) => {
16990
+ layer.index = layersWithoutName.length - idx;
16991
+ });
16992
+ const resultLayers = [...reorderedLayers, ...layersWithoutName];
16993
+ return { layers: resultLayers };
16994
+ }),
16995
+ refresh: () => set((state) => {
16996
+ return { layers: state.layers };
16997
+ }),
16998
+ selectedLayer: "",
16999
+ setSelectedLayer: (selectedLayer) => set({ selectedLayer }),
17000
+ layerOpacity: 0,
17001
+ setLayerOpacity: (layerOpacity) => set({ layerOpacity })
17002
+ }));
17003
+
17004
+ // src/Components/Generic/Map/LayerSwitcher.tsx
17005
+ import { Dialog as Dialog4, Transition as Transition3 } from "@headlessui/react";
17006
+ import { Fragment as Fragment29 } from "react";
17007
+ import { XMarkIcon as XMarkIcon2 } from "@heroicons/react/24/outline";
17008
+ import { Disclosure as Disclosure2 } from "@headlessui/react";
17009
+ import { ChevronDown as ChevronDown2 } from "lucide-react";
17010
+ import { v4 as v42 } from "uuid";
17011
+ import { Fragment as Fragment30, jsx as jsx79, jsxs as jsxs57 } from "react/jsx-runtime";
17012
+ var LayerInfoIcon2 = memo16(({ onClick }) => /* @__PURE__ */ jsxs57(
17013
+ "svg",
17014
+ {
17015
+ width: "20",
17016
+ height: "20",
17017
+ viewBox: "0 0 20 20",
17018
+ fill: "none",
17019
+ xmlns: "http://www.w3.org/2000/svg",
17020
+ className: "fill-tag-light-purple cursor-pointer",
17021
+ onClick,
17022
+ role: "button",
17023
+ "aria-label": "Show layer information",
17024
+ children: [
17025
+ /* @__PURE__ */ jsx79("circle", { cx: "10", cy: "10", r: "10", fill: "text-tag-light-purple" }),
17026
+ /* @__PURE__ */ jsx79(
17027
+ "path",
17028
+ {
17029
+ d: "M9.24963 14V7.592H10.7496V14H9.24963ZM10.0056 6.536C9.72563 6.536 9.49363 6.448 9.30963 6.272C9.13363 6.096 9.04563 5.884 9.04563 5.636C9.04563 5.38 9.13363 5.168 9.30963 5C9.49363 4.824 9.72563 4.736 10.0056 4.736C10.2856 4.736 10.5136 4.82 10.6896 4.988C10.8736 5.148 10.9656 5.352 10.9656 5.6C10.9656 5.864 10.8776 6.088 10.7016 6.272C10.5256 6.448 10.2936 6.536 10.0056 6.536Z",
17030
+ fill: "white"
17031
+ }
17032
+ )
17033
+ ]
17034
+ }
17035
+ ));
17036
+ LayerInfoIcon2.displayName = "LayerInfoIcon";
17037
+ var LayerItemInfo2 = memo16(({ layer, open, setOpen }) => {
17038
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
17039
+ const isCustomLayer = "isCustom" in layer && layer.isCustom;
17040
+ const mapDetails = [
17041
+ {
17042
+ label: "Source",
17043
+ value: ((_b = (_a = layer.layerInfo) == null ? void 0 : _a.sourceLink) == null ? void 0 : _b.href) ? /* @__PURE__ */ jsx79(
17044
+ SimpleLink2,
17045
+ {
17046
+ link: {
17047
+ title: (_c = layer.layerInfo.sourceLink.name) != null ? _c : "",
17048
+ href: (_d = layer.layerInfo.sourceLink.href) != null ? _d : "#",
17049
+ isNewTab: !((_e = layer.layerInfo.sourceLink.href) == null ? void 0 : _e.startsWith("/"))
17050
+ }
17051
+ }
17052
+ ) : ((_f = layer.layerInfo) == null ? void 0 : _f.source) || (isCustomLayer ? "Custom Layer" : void 0)
17053
+ },
17054
+ {
17055
+ label: "Geographic Coverage",
17056
+ value: (_g = layer.layerInfo) == null ? void 0 : _g.geographicCoverage
17057
+ },
17058
+ {
17059
+ label: "Citation",
17060
+ value: ((_i = (_h = layer.layerInfo) == null ? void 0 : _h.citationLink) == null ? void 0 : _i.href) ? /* @__PURE__ */ jsx79(
17061
+ SimpleLink2,
17062
+ {
17063
+ link: {
17064
+ title: (_j = layer.layerInfo.citationLink.name) != null ? _j : "",
17065
+ href: (_k = layer.layerInfo.citationLink.href) != null ? _k : "#",
17066
+ isNewTab: !((_l = layer.layerInfo.citationLink.href) == null ? void 0 : _l.startsWith("/"))
17067
+ }
17068
+ }
17069
+ ) : (_m = layer.layerInfo) == null ? void 0 : _m.citation
17070
+ },
17071
+ ...isCustomLayer ? [
17072
+ { label: "Layer Type", value: layer.type },
17073
+ { label: "Custom Layer", value: "Yes" }
17074
+ ] : []
17075
+ ];
17076
+ return /* @__PURE__ */ jsx79(Transition3.Root, { show: open, as: Fragment29, "data-component": "ResourceView", children: /* @__PURE__ */ jsxs57(Dialog4, { as: "div", className: "relative z-20", onClose: setOpen, children: [
17077
+ /* @__PURE__ */ jsx79(
17078
+ Transition3.Child,
17079
+ {
17080
+ as: Fragment29,
17081
+ enter: "ease-out duration-300",
17082
+ enterFrom: "opacity-0",
17083
+ enterTo: "opacity-100",
17084
+ leave: "ease-in duration-200",
17085
+ leaveFrom: "opacity-100",
17086
+ leaveTo: "opacity-0",
17087
+ children: /* @__PURE__ */ jsx79("div", { className: "fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" })
17088
+ }
17089
+ ),
17090
+ /* @__PURE__ */ jsx79("div", { className: "fixed z-10 inset-0 overflow-y-auto text-black", children: /* @__PURE__ */ jsx79("div", { className: "flex items-end sm:items-center justify-center min-h-full text-center lg:p-4", children: /* @__PURE__ */ jsx79(
17091
+ Transition3.Child,
17092
+ {
17093
+ as: Fragment29,
17094
+ enter: "ease-out duration-300",
17095
+ enterFrom: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
17096
+ enterTo: "opacity-100 translate-y-0 sm:scale-100",
17097
+ leave: "ease-in duration-200",
17098
+ leaveFrom: "opacity-100 translate-y-0 sm:scale-100",
17099
+ leaveTo: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
17100
+ children: /* @__PURE__ */ jsxs57(Dialog4.Panel, { className: "w-screen relative bg-white rounded-t-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all lg:rounded-lg sm:my-8 sm:w-[740px] sm:p-10", children: [
17101
+ /* @__PURE__ */ jsx79("div", { className: "absolute top-0 right-0 pt-3 pr-3 lg:pt-10 lg:pr-10", children: /* @__PURE__ */ jsxs57(
17102
+ "button",
17103
+ {
17104
+ type: "button",
17105
+ className: "rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2",
17106
+ onClick: () => setOpen(false),
17107
+ children: [
17108
+ /* @__PURE__ */ jsx79("span", { className: "sr-only", children: "Close" }),
17109
+ /* @__PURE__ */ jsx79(XMarkIcon2, { className: "h-6 w-6", "aria-hidden": "true" })
17110
+ ]
17111
+ }
17112
+ ) }),
17113
+ /* @__PURE__ */ jsxs57("div", { className: "flex flex-col items-start justify-center", children: [
17114
+ /* @__PURE__ */ jsx79("div", { className: "text-lg font-semibold lg:text-[2rem] lg:font-light leading-[120%]", children: layer.title }),
17115
+ /* @__PURE__ */ jsxs57("div", { className: "w-full pt-6 space-y-4 text-grey leading-[130%]", children: [
17116
+ ((_n = layer.layerInfo) == null ? void 0 : _n.overview) && /* @__PURE__ */ jsxs57(Fragment30, { children: [
17117
+ /* @__PURE__ */ jsx79("div", { className: "uppercase text-sm", children: "Overview" }),
17118
+ /* @__PURE__ */ jsx79("div", { className: "text-sm lg:text-base font-normal", children: (_o = layer.layerInfo) == null ? void 0 : _o.overview })
17119
+ ] }),
17120
+ mapDetails.map(
17121
+ (detail) => detail.value && /* @__PURE__ */ jsx79(
17122
+ KeyInfoItem2,
17123
+ {
17124
+ label: detail.label,
17125
+ value: detail.value
17126
+ },
17127
+ v42()
17128
+ )
17129
+ )
17130
+ ] })
17131
+ ] })
17132
+ ] })
17133
+ }
17134
+ ) }) })
17135
+ ] }) });
17136
+ });
17137
+ LayerItemInfo2.displayName = "LayerItemInfo";
17138
+ var LayerItem2 = memo16(
17139
+ ({
17140
+ layer,
17141
+ isActive,
17142
+ onToggle,
17143
+ openHoverCardId,
17144
+ onInfoClick
17145
+ }) => {
17146
+ var _a;
17147
+ const [open, setOpen] = useState36(false);
17148
+ return /* @__PURE__ */ jsxs57("li", { className: "bg-white rounded-xl p-4 lg:w-[310px] lg:p-0", children: [
17149
+ /* @__PURE__ */ jsxs57("div", { className: "flex flex-row justify-between items-center", children: [
17150
+ /* @__PURE__ */ jsxs57("div", { className: "flex flex-row justify-start items-center space-x-2", children: [
17151
+ /* @__PURE__ */ jsx79("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx79(
17152
+ Switch2,
17153
+ {
17154
+ checked: isActive,
17155
+ onCheckedChange: onToggle,
17156
+ "aria-label": `Toggle ${layer.title} layer`
17157
+ }
17158
+ ) }),
17159
+ /* @__PURE__ */ jsx79("div", { className: " text-base font-medium leading-[120%] break-words max-w-[210px] lg:max-w-none md:max-w-none", children: layer.title }),
17160
+ /* @__PURE__ */ jsx79("div", { className: "block lg:hidden", children: /* @__PURE__ */ jsx79(LayerInfoIcon2, { onClick: () => setOpen(true) }) })
17161
+ ] }),
17162
+ /* @__PURE__ */ jsx79("div", { className: "block lg:hidden", children: /* @__PURE__ */ jsx79(
17163
+ Switch2,
17164
+ {
17165
+ checked: isActive,
17166
+ onCheckedChange: onToggle,
17167
+ "aria-label": `Toggle ${layer.title} layer`
17168
+ }
17169
+ ) }),
17170
+ /* @__PURE__ */ jsx79("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxs57(
17171
+ HoverCard2,
17172
+ {
17173
+ open: openHoverCardId === layer.id,
17174
+ onOpenChange: () => onInfoClick(layer.id),
17175
+ children: [
17176
+ /* @__PURE__ */ jsx79(HoverCardTrigger2, { asChild: true, children: /* @__PURE__ */ jsx79(
17177
+ "div",
17178
+ {
17179
+ onClick: () => onInfoClick(layer.id),
17180
+ className: "cursor-pointer",
17181
+ children: /* @__PURE__ */ jsx79(LayerInfoIcon2, { onClick: () => setOpen(true) })
17182
+ }
17183
+ ) }),
17184
+ /* @__PURE__ */ jsx79(HoverCardContent2, { className: "w-80 rounded-2xl ", children: /* @__PURE__ */ jsxs57("div", { className: "space-y-1", children: [
17185
+ /* @__PURE__ */ jsx79("h4", { className: "text-sm font-semibold", children: layer.title }),
17186
+ /* @__PURE__ */ jsx79("p", { className: "text-sm text-grey", children: ((_a = layer.layerInfo) == null ? void 0 : _a.hoverCardText) || "" })
17187
+ ] }) })
17188
+ ]
17189
+ }
17190
+ ) })
17191
+ ] }),
17192
+ /* @__PURE__ */ jsx79(LayerItemInfo2, { layer, open, setOpen })
17193
+ ] });
17194
+ }
17195
+ );
17196
+ LayerItem2.displayName = "LayerItem";
17197
+ var LayerSwitcher2 = memo16(({ mapMenuItems, customLayers }) => {
17198
+ const store = useMapLayerStore2();
17199
+ const [openHoverCardId, setOpenHoverCardId] = useState36(null);
17200
+ useEffect34(() => {
17201
+ if (store.layers.length == 0 && customLayers.length > 0)
17202
+ customLayers.map((layer) => store.add(layer));
17203
+ }, []);
17204
+ const handleToggle = useCallback12(
17205
+ (layer) => {
17206
+ store.layers.findIndex((l) => l.id === layer.id) !== -1 ? store.remove(layer) : store.add(layer);
17207
+ },
17208
+ [store]
17209
+ );
17210
+ const handleInfoClick = useCallback12(
17211
+ (id) => {
17212
+ setOpenHoverCardId(openHoverCardId === id ? null : id);
17213
+ },
17214
+ [openHoverCardId]
17215
+ );
17216
+ const hasRegularLayers = (mapMenuItems == null ? void 0 : mapMenuItems.length) > 0;
17217
+ const hasCustomLayers = customLayers.length > 0;
17218
+ if (!hasRegularLayers && !hasCustomLayers) {
17219
+ return /* @__PURE__ */ jsx79("div", { children: "No map layers available" });
17220
+ }
17221
+ return /* @__PURE__ */ jsx79("div", { className: "lg:max-h-[calc(100dvh-15rem)] overflow-y-auto pr-1", children: mapMenuItems == null ? void 0 : mapMenuItems.map((menu, index) => {
17222
+ var _a;
17223
+ return /* @__PURE__ */ jsxs57("div", { children: [
17224
+ /* @__PURE__ */ jsxs57("div", { className: "hidden lg:block", children: [
17225
+ /* @__PURE__ */ jsx79(
17226
+ Disclosure2,
17227
+ {
17228
+ "data-component": menu.title,
17229
+ defaultOpen: mapMenuItems.length === 1,
17230
+ children: ({ open }) => {
17231
+ var _a2;
17232
+ return /* @__PURE__ */ jsxs57(Fragment30, { children: [
17233
+ /* @__PURE__ */ jsxs57(Disclosure2.Button, { className: "w-[310px] flex-row flex justify-between items-center gap-2 border-zinc-300 ", children: [
17234
+ /* @__PURE__ */ jsx79("span", { className: "text-sm font-normal uppercase text-grey leading-[130%]", children: menu.title }),
17235
+ /* @__PURE__ */ jsx79(
17236
+ ChevronDown2,
17237
+ {
17238
+ className: ` ${open ? "rotate-180 transform" : ""} h-7 w-7 `,
17239
+ stroke: "grey"
17240
+ }
17241
+ )
17242
+ ] }),
17243
+ /* @__PURE__ */ jsx79(Disclosure2.Panel, { className: "space-y-2", children: /* @__PURE__ */ jsx79("div", { children: /* @__PURE__ */ jsxs57("ul", { className: "pt-2 space-y-2", children: [
17244
+ index === 0 && hasCustomLayers && customLayers.map((layer) => /* @__PURE__ */ jsx79(
17245
+ LayerItem2,
17246
+ {
17247
+ layer,
17248
+ isActive: store.layers.findIndex(
17249
+ (l) => l.id === layer.id
17250
+ ) !== -1,
17251
+ onToggle: () => {
17252
+ handleToggle(layer);
17253
+ if (layer.ontoggle)
17254
+ layer.ontoggle();
17255
+ },
17256
+ openHoverCardId,
17257
+ onInfoClick: handleInfoClick
17258
+ },
17259
+ layer.id
17260
+ )),
17261
+ (_a2 = menu.subMenus) == null ? void 0 : _a2.map((layer) => /* @__PURE__ */ jsx79(
17262
+ LayerItem2,
17263
+ {
17264
+ layer,
17265
+ isActive: store.layers.findIndex(
17266
+ (l) => l.id === layer.id
17267
+ ) !== -1,
17268
+ onToggle: () => handleToggle(layer),
17269
+ openHoverCardId,
17270
+ onInfoClick: handleInfoClick
17271
+ },
17272
+ layer.id
17273
+ ))
17274
+ ] }) }) })
17275
+ ] });
17276
+ }
17277
+ }
17278
+ ),
17279
+ index !== mapMenuItems.length - 1 && /* @__PURE__ */ jsx79("div", { className: "my-4 h-px bg-grey-light" })
17280
+ ] }),
17281
+ /* @__PURE__ */ jsxs57("div", { className: "block lg:hidden px-5 pt-6", children: [
17282
+ /* @__PURE__ */ jsx79("span", { className: "text-sm font-normal uppercase text-grey leading-[130%]", children: menu.title }),
17283
+ /* @__PURE__ */ jsx79("div", { className: "space-y-2", children: /* @__PURE__ */ jsxs57("ul", { className: "pt-2 space-y-2", children: [
17284
+ index === 0 && hasCustomLayers && customLayers.map((layer) => /* @__PURE__ */ jsx79(
17285
+ LayerItem2,
17286
+ {
17287
+ layer,
17288
+ isActive: store.layers.findIndex((l) => l.id === layer.id) !== -1,
17289
+ onToggle: () => handleToggle(layer),
17290
+ openHoverCardId,
17291
+ onInfoClick: handleInfoClick
17292
+ },
17293
+ layer.id
17294
+ )),
17295
+ (_a = menu.subMenus) == null ? void 0 : _a.map((layer) => /* @__PURE__ */ jsx79(
17296
+ LayerItem2,
17297
+ {
17298
+ layer,
17299
+ isActive: store.layers.findIndex((l) => l.id === layer.id) !== -1,
17300
+ onToggle: () => handleToggle(layer),
17301
+ openHoverCardId,
17302
+ onInfoClick: handleInfoClick
17303
+ },
17304
+ layer.id
17305
+ ))
17306
+ ] }) })
17307
+ ] })
17308
+ ] }, menu.id);
17309
+ }) });
17310
+ });
17311
+ LayerSwitcher2.displayName = "LayerSwitcher";
17312
+
17313
+ // src/Components/Generic/Map/MapControlToolbar.tsx
17314
+ import * as Popover7 from "@radix-ui/react-popover";
17315
+ import {
17316
+ Tooltip as Tooltip4,
17317
+ TooltipContent as TooltipContent2,
17318
+ TooltipProvider as TooltipProvider2,
17319
+ TooltipTrigger as TooltipTrigger2
17320
+ } from "@geowiki/ui";
17321
+
17322
+ // ../../node_modules/clsx/dist/clsx.m.js
17323
+ function r(e) {
17324
+ var t, f, n = "";
17325
+ if ("string" == typeof e || "number" == typeof e)
17326
+ n += e;
17327
+ else if ("object" == typeof e)
17328
+ if (Array.isArray(e))
17329
+ for (t = 0; t < e.length; t++)
17330
+ e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
17331
+ else
17332
+ for (t in e)
17333
+ e[t] && (n && (n += " "), n += t);
17334
+ return n;
17335
+ }
17336
+ function clsx() {
17337
+ for (var e, t, f = 0, n = ""; f < arguments.length; )
17338
+ (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t);
17339
+ return n;
17340
+ }
17341
+
17342
+ // ../../node_modules/tailwind-merge/dist/lib/tw-join.mjs
17343
+ function twJoin() {
17344
+ var index = 0;
17345
+ var argument;
17346
+ var resolvedValue;
17347
+ var string4 = "";
17348
+ while (index < arguments.length) {
17349
+ if (argument = arguments[index++]) {
17350
+ if (resolvedValue = toValue(argument)) {
17351
+ string4 && (string4 += " ");
17352
+ string4 += resolvedValue;
17353
+ }
17354
+ }
17355
+ }
17356
+ return string4;
17357
+ }
17358
+ function toValue(mix) {
17359
+ if (typeof mix === "string") {
17360
+ return mix;
17361
+ }
17362
+ var resolvedValue;
17363
+ var string4 = "";
17364
+ for (var k = 0; k < mix.length; k++) {
17365
+ if (mix[k]) {
17366
+ if (resolvedValue = toValue(mix[k])) {
17367
+ string4 && (string4 += " ");
17368
+ string4 += resolvedValue;
17369
+ }
17370
+ }
17371
+ }
17372
+ return string4;
17373
+ }
17374
+
17375
+ // ../../node_modules/tailwind-merge/dist/lib/class-utils.mjs
17376
+ var CLASS_PART_SEPARATOR = "-";
17377
+ function createClassUtils(config) {
17378
+ var classMap = createClassMap(config);
17379
+ var conflictingClassGroups = config.conflictingClassGroups, _config$conflictingCl = config.conflictingClassGroupModifiers, conflictingClassGroupModifiers = _config$conflictingCl === void 0 ? {} : _config$conflictingCl;
17380
+ function getClassGroupId(className) {
17381
+ var classParts = className.split(CLASS_PART_SEPARATOR);
17382
+ if (classParts[0] === "" && classParts.length !== 1) {
17383
+ classParts.shift();
17384
+ }
17385
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
17386
+ }
17387
+ function getConflictingClassGroupIds(classGroupId, hasPostfixModifier) {
17388
+ var conflicts = conflictingClassGroups[classGroupId] || [];
17389
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
17390
+ return [].concat(conflicts, conflictingClassGroupModifiers[classGroupId]);
17391
+ }
17392
+ return conflicts;
17393
+ }
17394
+ return {
17395
+ getClassGroupId,
17396
+ getConflictingClassGroupIds
17397
+ };
17398
+ }
17399
+ function getGroupRecursive(classParts, classPartObject) {
17400
+ var _a;
17401
+ if (classParts.length === 0) {
17402
+ return classPartObject.classGroupId;
17403
+ }
17404
+ var currentClassPart = classParts[0];
17405
+ var nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
17406
+ var classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0;
17407
+ if (classGroupFromNextClassPart) {
17408
+ return classGroupFromNextClassPart;
17409
+ }
17410
+ if (classPartObject.validators.length === 0) {
17411
+ return void 0;
17412
+ }
17413
+ var classRest = classParts.join(CLASS_PART_SEPARATOR);
17414
+ return (_a = classPartObject.validators.find(function(_ref) {
17415
+ var validator = _ref.validator;
17416
+ return validator(classRest);
17417
+ })) == null ? void 0 : _a.classGroupId;
17418
+ }
17419
+ var arbitraryPropertyRegex = /^\[(.+)\]$/;
17420
+ function getGroupIdForArbitraryProperty(className) {
17421
+ if (arbitraryPropertyRegex.test(className)) {
17422
+ var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
17423
+ var property = arbitraryPropertyClassName == null ? void 0 : arbitraryPropertyClassName.substring(0, arbitraryPropertyClassName.indexOf(":"));
17424
+ if (property) {
17425
+ return "arbitrary.." + property;
17426
+ }
17427
+ }
17428
+ }
17429
+ function createClassMap(config) {
17430
+ var theme = config.theme, prefix = config.prefix;
17431
+ var classMap = {
17432
+ nextPart: /* @__PURE__ */ new Map(),
17433
+ validators: []
17434
+ };
17435
+ var prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
17436
+ prefixedClassGroupEntries.forEach(function(_ref2) {
17437
+ var classGroupId = _ref2[0], classGroup = _ref2[1];
17438
+ processClassesRecursively(classGroup, classMap, classGroupId, theme);
17439
+ });
17440
+ return classMap;
17441
+ }
17442
+ function processClassesRecursively(classGroup, classPartObject, classGroupId, theme) {
17443
+ classGroup.forEach(function(classDefinition) {
17444
+ if (typeof classDefinition === "string") {
17445
+ var classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
17446
+ classPartObjectToEdit.classGroupId = classGroupId;
17447
+ return;
17448
+ }
17449
+ if (typeof classDefinition === "function") {
17450
+ if (isThemeGetter(classDefinition)) {
17451
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
17452
+ return;
17453
+ }
17454
+ classPartObject.validators.push({
17455
+ validator: classDefinition,
17456
+ classGroupId
17457
+ });
17458
+ return;
17459
+ }
17460
+ Object.entries(classDefinition).forEach(function(_ref3) {
17461
+ var key = _ref3[0], classGroup2 = _ref3[1];
17462
+ processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);
17463
+ });
17464
+ });
17465
+ }
17466
+ function getPart(classPartObject, path) {
17467
+ var currentClassPartObject = classPartObject;
17468
+ path.split(CLASS_PART_SEPARATOR).forEach(function(pathPart) {
17469
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
17470
+ currentClassPartObject.nextPart.set(pathPart, {
17471
+ nextPart: /* @__PURE__ */ new Map(),
17472
+ validators: []
17473
+ });
17474
+ }
17475
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
17476
+ });
17477
+ return currentClassPartObject;
17478
+ }
17479
+ function isThemeGetter(func) {
17480
+ return func.isThemeGetter;
17481
+ }
17482
+ function getPrefixedClassGroupEntries(classGroupEntries, prefix) {
17483
+ if (!prefix) {
17484
+ return classGroupEntries;
17485
+ }
17486
+ return classGroupEntries.map(function(_ref4) {
17487
+ var classGroupId = _ref4[0], classGroup = _ref4[1];
17488
+ var prefixedClassGroup = classGroup.map(function(classDefinition) {
17489
+ if (typeof classDefinition === "string") {
17490
+ return prefix + classDefinition;
17491
+ }
17492
+ if (typeof classDefinition === "object") {
17493
+ return Object.fromEntries(Object.entries(classDefinition).map(function(_ref5) {
17494
+ var key = _ref5[0], value = _ref5[1];
17495
+ return [prefix + key, value];
17496
+ }));
17497
+ }
17498
+ return classDefinition;
17499
+ });
17500
+ return [classGroupId, prefixedClassGroup];
17501
+ });
17502
+ }
17503
+
17504
+ // ../../node_modules/tailwind-merge/dist/lib/lru-cache.mjs
17505
+ function createLruCache(maxCacheSize) {
17506
+ if (maxCacheSize < 1) {
17507
+ return {
17508
+ get: function get() {
17509
+ return void 0;
17510
+ },
17511
+ set: function set() {
17512
+ }
17513
+ };
17514
+ }
17515
+ var cacheSize = 0;
17516
+ var cache = /* @__PURE__ */ new Map();
17517
+ var previousCache = /* @__PURE__ */ new Map();
17518
+ function update(key, value) {
17519
+ cache.set(key, value);
17520
+ cacheSize++;
17521
+ if (cacheSize > maxCacheSize) {
17522
+ cacheSize = 0;
17523
+ previousCache = cache;
17524
+ cache = /* @__PURE__ */ new Map();
17525
+ }
17526
+ }
17527
+ return {
17528
+ get: function get(key) {
17529
+ var value = cache.get(key);
17530
+ if (value !== void 0) {
17531
+ return value;
17532
+ }
17533
+ if ((value = previousCache.get(key)) !== void 0) {
17534
+ update(key, value);
17535
+ return value;
17536
+ }
17537
+ },
17538
+ set: function set(key, value) {
17539
+ if (cache.has(key)) {
17540
+ cache.set(key, value);
17541
+ } else {
17542
+ update(key, value);
17543
+ }
17544
+ }
17545
+ };
17546
+ }
17547
+
17548
+ // ../../node_modules/tailwind-merge/dist/lib/modifier-utils.mjs
17549
+ var IMPORTANT_MODIFIER = "!";
17550
+ function createSplitModifiers(config) {
17551
+ var separator = config.separator || ":";
17552
+ var isSeparatorSingleCharacter = separator.length === 1;
17553
+ var firstSeparatorCharacter = separator[0];
17554
+ var separatorLength = separator.length;
17555
+ return function splitModifiers(className) {
17556
+ var modifiers = [];
17557
+ var bracketDepth = 0;
17558
+ var modifierStart = 0;
17559
+ var postfixModifierPosition;
17560
+ for (var index = 0; index < className.length; index++) {
17561
+ var currentCharacter = className[index];
17562
+ if (bracketDepth === 0) {
17563
+ if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
17564
+ modifiers.push(className.slice(modifierStart, index));
17565
+ modifierStart = index + separatorLength;
17566
+ continue;
17567
+ }
17568
+ if (currentCharacter === "/") {
17569
+ postfixModifierPosition = index;
17570
+ continue;
17571
+ }
17572
+ }
17573
+ if (currentCharacter === "[") {
17574
+ bracketDepth++;
17575
+ } else if (currentCharacter === "]") {
17576
+ bracketDepth--;
17577
+ }
17578
+ }
17579
+ var baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
17580
+ var hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
17581
+ var baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
17582
+ var maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
17583
+ return {
17584
+ modifiers,
17585
+ hasImportantModifier,
17586
+ baseClassName,
17587
+ maybePostfixModifierPosition
17588
+ };
17589
+ };
17590
+ }
17591
+ function sortModifiers(modifiers) {
17592
+ if (modifiers.length <= 1) {
17593
+ return modifiers;
17594
+ }
17595
+ var sortedModifiers = [];
17596
+ var unsortedModifiers = [];
17597
+ modifiers.forEach(function(modifier) {
17598
+ var isArbitraryVariant = modifier[0] === "[";
17599
+ if (isArbitraryVariant) {
17600
+ sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort().concat([modifier]));
17601
+ unsortedModifiers = [];
17602
+ } else {
17603
+ unsortedModifiers.push(modifier);
17604
+ }
17605
+ });
17606
+ sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort());
17607
+ return sortedModifiers;
17608
+ }
17609
+
17610
+ // ../../node_modules/tailwind-merge/dist/lib/config-utils.mjs
17611
+ function createConfigUtils(config) {
17612
+ return __spreadValues({
17613
+ cache: createLruCache(config.cacheSize),
17614
+ splitModifiers: createSplitModifiers(config)
17615
+ }, createClassUtils(config));
17616
+ }
17617
+
17618
+ // ../../node_modules/tailwind-merge/dist/lib/merge-classlist.mjs
17619
+ var SPLIT_CLASSES_REGEX = /\s+/;
17620
+ function mergeClassList(classList, configUtils) {
17621
+ var splitModifiers = configUtils.splitModifiers, getClassGroupId = configUtils.getClassGroupId, getConflictingClassGroupIds = configUtils.getConflictingClassGroupIds;
17622
+ var classGroupsInConflict = /* @__PURE__ */ new Set();
17623
+ return classList.trim().split(SPLIT_CLASSES_REGEX).map(function(originalClassName) {
17624
+ var _splitModifiers = splitModifiers(originalClassName), modifiers = _splitModifiers.modifiers, hasImportantModifier = _splitModifiers.hasImportantModifier, baseClassName = _splitModifiers.baseClassName, maybePostfixModifierPosition = _splitModifiers.maybePostfixModifierPosition;
17625
+ var classGroupId = getClassGroupId(maybePostfixModifierPosition ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
17626
+ var hasPostfixModifier = Boolean(maybePostfixModifierPosition);
17627
+ if (!classGroupId) {
17628
+ if (!maybePostfixModifierPosition) {
17629
+ return {
17630
+ isTailwindClass: false,
17631
+ originalClassName
17632
+ };
17633
+ }
17634
+ classGroupId = getClassGroupId(baseClassName);
17635
+ if (!classGroupId) {
17636
+ return {
17637
+ isTailwindClass: false,
17638
+ originalClassName
17639
+ };
17640
+ }
17641
+ hasPostfixModifier = false;
17642
+ }
17643
+ var variantModifier = sortModifiers(modifiers).join(":");
17644
+ var modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
17645
+ return {
17646
+ isTailwindClass: true,
17647
+ modifierId,
17648
+ classGroupId,
17649
+ originalClassName,
17650
+ hasPostfixModifier
17651
+ };
17652
+ }).reverse().filter(function(parsed) {
17653
+ if (!parsed.isTailwindClass) {
17654
+ return true;
17655
+ }
17656
+ var modifierId = parsed.modifierId, classGroupId = parsed.classGroupId, hasPostfixModifier = parsed.hasPostfixModifier;
17657
+ var classId = modifierId + classGroupId;
17658
+ if (classGroupsInConflict.has(classId)) {
17659
+ return false;
17660
+ }
17661
+ classGroupsInConflict.add(classId);
17662
+ getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach(function(group) {
17663
+ return classGroupsInConflict.add(modifierId + group);
17664
+ });
17665
+ return true;
17666
+ }).reverse().map(function(parsed) {
17667
+ return parsed.originalClassName;
17668
+ }).join(" ");
17669
+ }
17670
+
17671
+ // ../../node_modules/tailwind-merge/dist/lib/create-tailwind-merge.mjs
17672
+ function createTailwindMerge() {
17673
+ for (var _len = arguments.length, createConfig = new Array(_len), _key = 0; _key < _len; _key++) {
17674
+ createConfig[_key] = arguments[_key];
17675
+ }
17676
+ var configUtils;
17677
+ var cacheGet;
17678
+ var cacheSet;
17679
+ var functionToCall = initTailwindMerge;
17680
+ function initTailwindMerge(classList) {
17681
+ var firstCreateConfig = createConfig[0], restCreateConfig = createConfig.slice(1);
17682
+ var config = restCreateConfig.reduce(function(previousConfig, createConfigCurrent) {
17683
+ return createConfigCurrent(previousConfig);
17684
+ }, firstCreateConfig());
17685
+ configUtils = createConfigUtils(config);
17686
+ cacheGet = configUtils.cache.get;
17687
+ cacheSet = configUtils.cache.set;
17688
+ functionToCall = tailwindMerge;
17689
+ return tailwindMerge(classList);
17690
+ }
17691
+ function tailwindMerge(classList) {
17692
+ var cachedResult = cacheGet(classList);
17693
+ if (cachedResult) {
17694
+ return cachedResult;
17695
+ }
17696
+ var result = mergeClassList(classList, configUtils);
17697
+ cacheSet(classList, result);
17698
+ return result;
17699
+ }
17700
+ return function callTailwindMerge() {
17701
+ return functionToCall(twJoin.apply(null, arguments));
17702
+ };
17703
+ }
17704
+
17705
+ // ../../node_modules/tailwind-merge/dist/lib/from-theme.mjs
17706
+ function fromTheme(key) {
17707
+ var themeGetter = function themeGetter2(theme) {
17708
+ return theme[key] || [];
17709
+ };
17710
+ themeGetter.isThemeGetter = true;
17711
+ return themeGetter;
17712
+ }
17713
+
17714
+ // ../../node_modules/tailwind-merge/dist/lib/validators.mjs
17715
+ var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
17716
+ var fractionRegex = /^\d+\/\d+$/;
17717
+ var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]);
17718
+ var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
17719
+ var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))/;
17720
+ var shadowRegex = /^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
17721
+ function isLength(value) {
17722
+ return isNumber(value) || stringLengths.has(value) || fractionRegex.test(value) || isArbitraryLength(value);
17723
+ }
17724
+ function isArbitraryLength(value) {
17725
+ return getIsArbitraryValue(value, "length", isLengthOnly);
17726
+ }
17727
+ function isArbitrarySize(value) {
17728
+ return getIsArbitraryValue(value, "size", isNever);
17729
+ }
17730
+ function isArbitraryPosition(value) {
17731
+ return getIsArbitraryValue(value, "position", isNever);
17732
+ }
17733
+ function isArbitraryUrl(value) {
17734
+ return getIsArbitraryValue(value, "url", isUrl);
17735
+ }
17736
+ function isArbitraryNumber(value) {
17737
+ return getIsArbitraryValue(value, "number", isNumber);
17738
+ }
17739
+ function isNumber(value) {
17740
+ return !Number.isNaN(Number(value));
17741
+ }
17742
+ function isPercent(value) {
17743
+ return value.endsWith("%") && isNumber(value.slice(0, -1));
17744
+ }
17745
+ function isInteger(value) {
17746
+ return isIntegerOnly(value) || getIsArbitraryValue(value, "number", isIntegerOnly);
17747
+ }
17748
+ function isArbitraryValue(value) {
17749
+ return arbitraryValueRegex.test(value);
17750
+ }
17751
+ function isAny() {
17752
+ return true;
17753
+ }
17754
+ function isTshirtSize(value) {
17755
+ return tshirtUnitRegex.test(value);
17756
+ }
17757
+ function isArbitraryShadow(value) {
17758
+ return getIsArbitraryValue(value, "", isShadow);
17759
+ }
17760
+ function getIsArbitraryValue(value, label, testValue) {
17761
+ var result = arbitraryValueRegex.exec(value);
17762
+ if (result) {
17763
+ if (result[1]) {
17764
+ return result[1] === label;
17765
+ }
17766
+ return testValue(result[2]);
17767
+ }
17768
+ return false;
17769
+ }
17770
+ function isLengthOnly(value) {
17771
+ return lengthUnitRegex.test(value);
17772
+ }
17773
+ function isNever() {
17774
+ return false;
17775
+ }
17776
+ function isUrl(value) {
17777
+ return value.startsWith("url(");
17778
+ }
17779
+ function isIntegerOnly(value) {
17780
+ return Number.isInteger(Number(value));
17781
+ }
17782
+ function isShadow(value) {
17783
+ return shadowRegex.test(value);
17784
+ }
17785
+
17786
+ // ../../node_modules/tailwind-merge/dist/lib/default-config.mjs
17787
+ function getDefaultConfig() {
17788
+ var colors = fromTheme("colors");
17789
+ var spacing = fromTheme("spacing");
17790
+ var blur = fromTheme("blur");
17791
+ var brightness = fromTheme("brightness");
17792
+ var borderColor = fromTheme("borderColor");
17793
+ var borderRadius = fromTheme("borderRadius");
17794
+ var borderSpacing = fromTheme("borderSpacing");
17795
+ var borderWidth = fromTheme("borderWidth");
17796
+ var contrast = fromTheme("contrast");
17797
+ var grayscale = fromTheme("grayscale");
17798
+ var hueRotate = fromTheme("hueRotate");
17799
+ var invert = fromTheme("invert");
17800
+ var gap = fromTheme("gap");
17801
+ var gradientColorStops = fromTheme("gradientColorStops");
17802
+ var gradientColorStopPositions = fromTheme("gradientColorStopPositions");
17803
+ var inset = fromTheme("inset");
17804
+ var margin = fromTheme("margin");
17805
+ var opacity = fromTheme("opacity");
17806
+ var padding = fromTheme("padding");
17807
+ var saturate = fromTheme("saturate");
17808
+ var scale = fromTheme("scale");
17809
+ var sepia = fromTheme("sepia");
17810
+ var skew = fromTheme("skew");
17811
+ var space = fromTheme("space");
17812
+ var translate = fromTheme("translate");
17813
+ var getOverscroll = function getOverscroll2() {
17814
+ return ["auto", "contain", "none"];
17815
+ };
17816
+ var getOverflow = function getOverflow2() {
17817
+ return ["auto", "hidden", "clip", "visible", "scroll"];
17818
+ };
17819
+ var getSpacingWithAuto = function getSpacingWithAuto2() {
17820
+ return ["auto", spacing];
17821
+ };
17822
+ var getLengthWithEmpty = function getLengthWithEmpty2() {
17823
+ return ["", isLength];
17824
+ };
17825
+ var getNumberWithAutoAndArbitrary = function getNumberWithAutoAndArbitrary2() {
17826
+ return ["auto", isNumber, isArbitraryValue];
17827
+ };
17828
+ var getPositions = function getPositions2() {
17829
+ return ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"];
17830
+ };
17831
+ var getLineStyles = function getLineStyles2() {
17832
+ return ["solid", "dashed", "dotted", "double", "none"];
17833
+ };
17834
+ var getBlendModes = function getBlendModes2() {
17835
+ return ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "plus-lighter"];
17836
+ };
17837
+ var getAlign = function getAlign2() {
17838
+ return ["start", "end", "center", "between", "around", "evenly", "stretch"];
17839
+ };
17840
+ var getZeroAndEmpty = function getZeroAndEmpty2() {
17841
+ return ["", "0", isArbitraryValue];
17842
+ };
17843
+ var getBreaks = function getBreaks2() {
17844
+ return ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
17845
+ };
17846
+ var getNumber = function getNumber2() {
17847
+ return [isNumber, isArbitraryNumber];
17848
+ };
17849
+ var getNumberAndArbitrary = function getNumberAndArbitrary2() {
17850
+ return [isNumber, isArbitraryValue];
17851
+ };
17852
+ return {
17853
+ cacheSize: 500,
17854
+ theme: {
17855
+ colors: [isAny],
17856
+ spacing: [isLength],
17857
+ blur: ["none", "", isTshirtSize, isArbitraryLength],
17858
+ brightness: getNumber(),
17859
+ borderColor: [colors],
17860
+ borderRadius: ["none", "", "full", isTshirtSize, isArbitraryLength],
17861
+ borderSpacing: [spacing],
17862
+ borderWidth: getLengthWithEmpty(),
17863
+ contrast: getNumber(),
17864
+ grayscale: getZeroAndEmpty(),
17865
+ hueRotate: getNumberAndArbitrary(),
17866
+ invert: getZeroAndEmpty(),
17867
+ gap: [spacing],
17868
+ gradientColorStops: [colors],
17869
+ gradientColorStopPositions: [isPercent, isArbitraryLength],
17870
+ inset: getSpacingWithAuto(),
17871
+ margin: getSpacingWithAuto(),
17872
+ opacity: getNumber(),
17873
+ padding: [spacing],
17874
+ saturate: getNumber(),
17875
+ scale: getNumber(),
17876
+ sepia: getZeroAndEmpty(),
17877
+ skew: getNumberAndArbitrary(),
17878
+ space: [spacing],
17879
+ translate: [spacing]
17880
+ },
17881
+ classGroups: {
17882
+ // Layout
17883
+ /**
17884
+ * Aspect Ratio
17885
+ * @see https://tailwindcss.com/docs/aspect-ratio
17886
+ */
17887
+ aspect: [{
17888
+ aspect: ["auto", "square", "video", isArbitraryValue]
17889
+ }],
17890
+ /**
17891
+ * Container
17892
+ * @see https://tailwindcss.com/docs/container
17893
+ */
17894
+ container: ["container"],
17895
+ /**
17896
+ * Columns
17897
+ * @see https://tailwindcss.com/docs/columns
17898
+ */
17899
+ columns: [{
17900
+ columns: [isTshirtSize]
17901
+ }],
17902
+ /**
17903
+ * Break After
17904
+ * @see https://tailwindcss.com/docs/break-after
17905
+ */
17906
+ "break-after": [{
17907
+ "break-after": getBreaks()
17908
+ }],
17909
+ /**
17910
+ * Break Before
17911
+ * @see https://tailwindcss.com/docs/break-before
17912
+ */
17913
+ "break-before": [{
17914
+ "break-before": getBreaks()
17915
+ }],
17916
+ /**
17917
+ * Break Inside
17918
+ * @see https://tailwindcss.com/docs/break-inside
17919
+ */
17920
+ "break-inside": [{
17921
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
17922
+ }],
17923
+ /**
17924
+ * Box Decoration Break
17925
+ * @see https://tailwindcss.com/docs/box-decoration-break
17926
+ */
17927
+ "box-decoration": [{
17928
+ "box-decoration": ["slice", "clone"]
17929
+ }],
17930
+ /**
17931
+ * Box Sizing
17932
+ * @see https://tailwindcss.com/docs/box-sizing
17933
+ */
17934
+ box: [{
17935
+ box: ["border", "content"]
17936
+ }],
17937
+ /**
17938
+ * Display
17939
+ * @see https://tailwindcss.com/docs/display
17940
+ */
17941
+ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
17942
+ /**
17943
+ * Floats
17944
+ * @see https://tailwindcss.com/docs/float
17945
+ */
17946
+ "float": [{
17947
+ "float": ["right", "left", "none"]
17948
+ }],
17949
+ /**
17950
+ * Clear
17951
+ * @see https://tailwindcss.com/docs/clear
17952
+ */
17953
+ clear: [{
17954
+ clear: ["left", "right", "both", "none"]
17955
+ }],
17956
+ /**
17957
+ * Isolation
17958
+ * @see https://tailwindcss.com/docs/isolation
17959
+ */
17960
+ isolation: ["isolate", "isolation-auto"],
17961
+ /**
17962
+ * Object Fit
17963
+ * @see https://tailwindcss.com/docs/object-fit
17964
+ */
17965
+ "object-fit": [{
17966
+ object: ["contain", "cover", "fill", "none", "scale-down"]
17967
+ }],
17968
+ /**
17969
+ * Object Position
17970
+ * @see https://tailwindcss.com/docs/object-position
17971
+ */
17972
+ "object-position": [{
17973
+ object: [].concat(getPositions(), [isArbitraryValue])
17974
+ }],
17975
+ /**
17976
+ * Overflow
17977
+ * @see https://tailwindcss.com/docs/overflow
17978
+ */
17979
+ overflow: [{
17980
+ overflow: getOverflow()
17981
+ }],
17982
+ /**
17983
+ * Overflow X
17984
+ * @see https://tailwindcss.com/docs/overflow
17985
+ */
17986
+ "overflow-x": [{
17987
+ "overflow-x": getOverflow()
17988
+ }],
17989
+ /**
17990
+ * Overflow Y
17991
+ * @see https://tailwindcss.com/docs/overflow
17992
+ */
17993
+ "overflow-y": [{
17994
+ "overflow-y": getOverflow()
17995
+ }],
17996
+ /**
17997
+ * Overscroll Behavior
17998
+ * @see https://tailwindcss.com/docs/overscroll-behavior
17999
+ */
18000
+ overscroll: [{
18001
+ overscroll: getOverscroll()
18002
+ }],
18003
+ /**
18004
+ * Overscroll Behavior X
18005
+ * @see https://tailwindcss.com/docs/overscroll-behavior
18006
+ */
18007
+ "overscroll-x": [{
18008
+ "overscroll-x": getOverscroll()
18009
+ }],
18010
+ /**
18011
+ * Overscroll Behavior Y
18012
+ * @see https://tailwindcss.com/docs/overscroll-behavior
18013
+ */
18014
+ "overscroll-y": [{
18015
+ "overscroll-y": getOverscroll()
18016
+ }],
18017
+ /**
18018
+ * Position
18019
+ * @see https://tailwindcss.com/docs/position
18020
+ */
18021
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
18022
+ /**
18023
+ * Top / Right / Bottom / Left
18024
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18025
+ */
18026
+ inset: [{
18027
+ inset: [inset]
18028
+ }],
18029
+ /**
18030
+ * Right / Left
18031
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18032
+ */
18033
+ "inset-x": [{
18034
+ "inset-x": [inset]
18035
+ }],
18036
+ /**
18037
+ * Top / Bottom
18038
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18039
+ */
18040
+ "inset-y": [{
18041
+ "inset-y": [inset]
18042
+ }],
18043
+ /**
18044
+ * Start
18045
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18046
+ */
18047
+ start: [{
18048
+ start: [inset]
18049
+ }],
18050
+ /**
18051
+ * End
18052
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18053
+ */
18054
+ end: [{
18055
+ end: [inset]
18056
+ }],
18057
+ /**
18058
+ * Top
18059
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18060
+ */
18061
+ top: [{
18062
+ top: [inset]
18063
+ }],
18064
+ /**
18065
+ * Right
18066
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18067
+ */
18068
+ right: [{
18069
+ right: [inset]
18070
+ }],
18071
+ /**
18072
+ * Bottom
18073
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18074
+ */
18075
+ bottom: [{
18076
+ bottom: [inset]
18077
+ }],
18078
+ /**
18079
+ * Left
18080
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
18081
+ */
18082
+ left: [{
18083
+ left: [inset]
18084
+ }],
18085
+ /**
18086
+ * Visibility
18087
+ * @see https://tailwindcss.com/docs/visibility
18088
+ */
18089
+ visibility: ["visible", "invisible", "collapse"],
18090
+ /**
18091
+ * Z-Index
18092
+ * @see https://tailwindcss.com/docs/z-index
18093
+ */
18094
+ z: [{
18095
+ z: ["auto", isInteger]
18096
+ }],
18097
+ // Flexbox and Grid
18098
+ /**
18099
+ * Flex Basis
18100
+ * @see https://tailwindcss.com/docs/flex-basis
18101
+ */
18102
+ basis: [{
18103
+ basis: [spacing]
18104
+ }],
18105
+ /**
18106
+ * Flex Direction
18107
+ * @see https://tailwindcss.com/docs/flex-direction
18108
+ */
18109
+ "flex-direction": [{
18110
+ flex: ["row", "row-reverse", "col", "col-reverse"]
18111
+ }],
18112
+ /**
18113
+ * Flex Wrap
18114
+ * @see https://tailwindcss.com/docs/flex-wrap
18115
+ */
18116
+ "flex-wrap": [{
18117
+ flex: ["wrap", "wrap-reverse", "nowrap"]
18118
+ }],
18119
+ /**
18120
+ * Flex
18121
+ * @see https://tailwindcss.com/docs/flex
18122
+ */
18123
+ flex: [{
18124
+ flex: ["1", "auto", "initial", "none", isArbitraryValue]
18125
+ }],
18126
+ /**
18127
+ * Flex Grow
18128
+ * @see https://tailwindcss.com/docs/flex-grow
18129
+ */
18130
+ grow: [{
18131
+ grow: getZeroAndEmpty()
18132
+ }],
18133
+ /**
18134
+ * Flex Shrink
18135
+ * @see https://tailwindcss.com/docs/flex-shrink
18136
+ */
18137
+ shrink: [{
18138
+ shrink: getZeroAndEmpty()
18139
+ }],
18140
+ /**
18141
+ * Order
18142
+ * @see https://tailwindcss.com/docs/order
18143
+ */
18144
+ order: [{
18145
+ order: ["first", "last", "none", isInteger]
18146
+ }],
18147
+ /**
18148
+ * Grid Template Columns
18149
+ * @see https://tailwindcss.com/docs/grid-template-columns
18150
+ */
18151
+ "grid-cols": [{
18152
+ "grid-cols": [isAny]
18153
+ }],
18154
+ /**
18155
+ * Grid Column Start / End
18156
+ * @see https://tailwindcss.com/docs/grid-column
18157
+ */
18158
+ "col-start-end": [{
18159
+ col: ["auto", {
18160
+ span: [isInteger]
18161
+ }, isArbitraryValue]
18162
+ }],
18163
+ /**
18164
+ * Grid Column Start
18165
+ * @see https://tailwindcss.com/docs/grid-column
18166
+ */
18167
+ "col-start": [{
18168
+ "col-start": getNumberWithAutoAndArbitrary()
18169
+ }],
18170
+ /**
18171
+ * Grid Column End
18172
+ * @see https://tailwindcss.com/docs/grid-column
18173
+ */
18174
+ "col-end": [{
18175
+ "col-end": getNumberWithAutoAndArbitrary()
18176
+ }],
18177
+ /**
18178
+ * Grid Template Rows
18179
+ * @see https://tailwindcss.com/docs/grid-template-rows
18180
+ */
18181
+ "grid-rows": [{
18182
+ "grid-rows": [isAny]
18183
+ }],
18184
+ /**
18185
+ * Grid Row Start / End
18186
+ * @see https://tailwindcss.com/docs/grid-row
18187
+ */
18188
+ "row-start-end": [{
18189
+ row: ["auto", {
18190
+ span: [isInteger]
18191
+ }, isArbitraryValue]
18192
+ }],
18193
+ /**
18194
+ * Grid Row Start
18195
+ * @see https://tailwindcss.com/docs/grid-row
18196
+ */
18197
+ "row-start": [{
18198
+ "row-start": getNumberWithAutoAndArbitrary()
18199
+ }],
18200
+ /**
18201
+ * Grid Row End
18202
+ * @see https://tailwindcss.com/docs/grid-row
18203
+ */
18204
+ "row-end": [{
18205
+ "row-end": getNumberWithAutoAndArbitrary()
18206
+ }],
18207
+ /**
18208
+ * Grid Auto Flow
18209
+ * @see https://tailwindcss.com/docs/grid-auto-flow
18210
+ */
18211
+ "grid-flow": [{
18212
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
18213
+ }],
18214
+ /**
18215
+ * Grid Auto Columns
18216
+ * @see https://tailwindcss.com/docs/grid-auto-columns
18217
+ */
18218
+ "auto-cols": [{
18219
+ "auto-cols": ["auto", "min", "max", "fr", isArbitraryValue]
18220
+ }],
18221
+ /**
18222
+ * Grid Auto Rows
18223
+ * @see https://tailwindcss.com/docs/grid-auto-rows
18224
+ */
18225
+ "auto-rows": [{
18226
+ "auto-rows": ["auto", "min", "max", "fr", isArbitraryValue]
18227
+ }],
18228
+ /**
18229
+ * Gap
18230
+ * @see https://tailwindcss.com/docs/gap
18231
+ */
18232
+ gap: [{
18233
+ gap: [gap]
18234
+ }],
18235
+ /**
18236
+ * Gap X
18237
+ * @see https://tailwindcss.com/docs/gap
18238
+ */
18239
+ "gap-x": [{
18240
+ "gap-x": [gap]
18241
+ }],
18242
+ /**
18243
+ * Gap Y
18244
+ * @see https://tailwindcss.com/docs/gap
18245
+ */
18246
+ "gap-y": [{
18247
+ "gap-y": [gap]
18248
+ }],
18249
+ /**
18250
+ * Justify Content
18251
+ * @see https://tailwindcss.com/docs/justify-content
18252
+ */
18253
+ "justify-content": [{
18254
+ justify: ["normal"].concat(getAlign())
18255
+ }],
18256
+ /**
18257
+ * Justify Items
18258
+ * @see https://tailwindcss.com/docs/justify-items
18259
+ */
18260
+ "justify-items": [{
18261
+ "justify-items": ["start", "end", "center", "stretch"]
18262
+ }],
18263
+ /**
18264
+ * Justify Self
18265
+ * @see https://tailwindcss.com/docs/justify-self
18266
+ */
18267
+ "justify-self": [{
18268
+ "justify-self": ["auto", "start", "end", "center", "stretch"]
18269
+ }],
18270
+ /**
18271
+ * Align Content
18272
+ * @see https://tailwindcss.com/docs/align-content
18273
+ */
18274
+ "align-content": [{
18275
+ content: ["normal"].concat(getAlign(), ["baseline"])
18276
+ }],
18277
+ /**
18278
+ * Align Items
18279
+ * @see https://tailwindcss.com/docs/align-items
18280
+ */
18281
+ "align-items": [{
18282
+ items: ["start", "end", "center", "baseline", "stretch"]
18283
+ }],
18284
+ /**
18285
+ * Align Self
18286
+ * @see https://tailwindcss.com/docs/align-self
18287
+ */
18288
+ "align-self": [{
18289
+ self: ["auto", "start", "end", "center", "stretch", "baseline"]
18290
+ }],
18291
+ /**
18292
+ * Place Content
18293
+ * @see https://tailwindcss.com/docs/place-content
18294
+ */
18295
+ "place-content": [{
18296
+ "place-content": [].concat(getAlign(), ["baseline"])
18297
+ }],
18298
+ /**
18299
+ * Place Items
18300
+ * @see https://tailwindcss.com/docs/place-items
18301
+ */
18302
+ "place-items": [{
18303
+ "place-items": ["start", "end", "center", "baseline", "stretch"]
18304
+ }],
18305
+ /**
18306
+ * Place Self
18307
+ * @see https://tailwindcss.com/docs/place-self
18308
+ */
18309
+ "place-self": [{
18310
+ "place-self": ["auto", "start", "end", "center", "stretch"]
18311
+ }],
18312
+ // Spacing
18313
+ /**
18314
+ * Padding
18315
+ * @see https://tailwindcss.com/docs/padding
18316
+ */
18317
+ p: [{
18318
+ p: [padding]
18319
+ }],
18320
+ /**
18321
+ * Padding X
18322
+ * @see https://tailwindcss.com/docs/padding
18323
+ */
18324
+ px: [{
18325
+ px: [padding]
18326
+ }],
18327
+ /**
18328
+ * Padding Y
18329
+ * @see https://tailwindcss.com/docs/padding
18330
+ */
18331
+ py: [{
18332
+ py: [padding]
18333
+ }],
18334
+ /**
18335
+ * Padding Start
18336
+ * @see https://tailwindcss.com/docs/padding
18337
+ */
18338
+ ps: [{
18339
+ ps: [padding]
18340
+ }],
18341
+ /**
18342
+ * Padding End
18343
+ * @see https://tailwindcss.com/docs/padding
18344
+ */
18345
+ pe: [{
18346
+ pe: [padding]
18347
+ }],
18348
+ /**
18349
+ * Padding Top
18350
+ * @see https://tailwindcss.com/docs/padding
18351
+ */
18352
+ pt: [{
18353
+ pt: [padding]
18354
+ }],
18355
+ /**
18356
+ * Padding Right
18357
+ * @see https://tailwindcss.com/docs/padding
18358
+ */
18359
+ pr: [{
18360
+ pr: [padding]
18361
+ }],
18362
+ /**
18363
+ * Padding Bottom
18364
+ * @see https://tailwindcss.com/docs/padding
18365
+ */
18366
+ pb: [{
18367
+ pb: [padding]
18368
+ }],
18369
+ /**
18370
+ * Padding Left
18371
+ * @see https://tailwindcss.com/docs/padding
18372
+ */
18373
+ pl: [{
18374
+ pl: [padding]
18375
+ }],
18376
+ /**
18377
+ * Margin
18378
+ * @see https://tailwindcss.com/docs/margin
18379
+ */
18380
+ m: [{
18381
+ m: [margin]
18382
+ }],
18383
+ /**
18384
+ * Margin X
18385
+ * @see https://tailwindcss.com/docs/margin
18386
+ */
18387
+ mx: [{
18388
+ mx: [margin]
18389
+ }],
18390
+ /**
18391
+ * Margin Y
18392
+ * @see https://tailwindcss.com/docs/margin
18393
+ */
18394
+ my: [{
18395
+ my: [margin]
18396
+ }],
18397
+ /**
18398
+ * Margin Start
18399
+ * @see https://tailwindcss.com/docs/margin
18400
+ */
18401
+ ms: [{
18402
+ ms: [margin]
18403
+ }],
18404
+ /**
18405
+ * Margin End
18406
+ * @see https://tailwindcss.com/docs/margin
18407
+ */
18408
+ me: [{
18409
+ me: [margin]
18410
+ }],
18411
+ /**
18412
+ * Margin Top
18413
+ * @see https://tailwindcss.com/docs/margin
18414
+ */
18415
+ mt: [{
18416
+ mt: [margin]
18417
+ }],
18418
+ /**
18419
+ * Margin Right
18420
+ * @see https://tailwindcss.com/docs/margin
18421
+ */
18422
+ mr: [{
18423
+ mr: [margin]
18424
+ }],
18425
+ /**
18426
+ * Margin Bottom
18427
+ * @see https://tailwindcss.com/docs/margin
18428
+ */
18429
+ mb: [{
18430
+ mb: [margin]
18431
+ }],
18432
+ /**
18433
+ * Margin Left
18434
+ * @see https://tailwindcss.com/docs/margin
18435
+ */
18436
+ ml: [{
18437
+ ml: [margin]
18438
+ }],
18439
+ /**
18440
+ * Space Between X
18441
+ * @see https://tailwindcss.com/docs/space
18442
+ */
18443
+ "space-x": [{
18444
+ "space-x": [space]
18445
+ }],
18446
+ /**
18447
+ * Space Between X Reverse
18448
+ * @see https://tailwindcss.com/docs/space
18449
+ */
18450
+ "space-x-reverse": ["space-x-reverse"],
18451
+ /**
18452
+ * Space Between Y
18453
+ * @see https://tailwindcss.com/docs/space
18454
+ */
18455
+ "space-y": [{
18456
+ "space-y": [space]
18457
+ }],
18458
+ /**
18459
+ * Space Between Y Reverse
18460
+ * @see https://tailwindcss.com/docs/space
18461
+ */
18462
+ "space-y-reverse": ["space-y-reverse"],
18463
+ // Sizing
18464
+ /**
18465
+ * Width
18466
+ * @see https://tailwindcss.com/docs/width
18467
+ */
18468
+ w: [{
18469
+ w: ["auto", "min", "max", "fit", spacing]
18470
+ }],
18471
+ /**
18472
+ * Min-Width
18473
+ * @see https://tailwindcss.com/docs/min-width
18474
+ */
18475
+ "min-w": [{
18476
+ "min-w": ["min", "max", "fit", isLength]
18477
+ }],
18478
+ /**
18479
+ * Max-Width
18480
+ * @see https://tailwindcss.com/docs/max-width
18481
+ */
18482
+ "max-w": [{
18483
+ "max-w": ["0", "none", "full", "min", "max", "fit", "prose", {
18484
+ screen: [isTshirtSize]
18485
+ }, isTshirtSize, isArbitraryLength]
18486
+ }],
18487
+ /**
18488
+ * Height
18489
+ * @see https://tailwindcss.com/docs/height
18490
+ */
18491
+ h: [{
18492
+ h: [spacing, "auto", "min", "max", "fit"]
18493
+ }],
18494
+ /**
18495
+ * Min-Height
18496
+ * @see https://tailwindcss.com/docs/min-height
18497
+ */
18498
+ "min-h": [{
18499
+ "min-h": ["min", "max", "fit", isLength]
18500
+ }],
18501
+ /**
18502
+ * Max-Height
18503
+ * @see https://tailwindcss.com/docs/max-height
18504
+ */
18505
+ "max-h": [{
18506
+ "max-h": [spacing, "min", "max", "fit"]
18507
+ }],
18508
+ // Typography
18509
+ /**
18510
+ * Font Size
18511
+ * @see https://tailwindcss.com/docs/font-size
18512
+ */
18513
+ "font-size": [{
18514
+ text: ["base", isTshirtSize, isArbitraryLength]
18515
+ }],
18516
+ /**
18517
+ * Font Smoothing
18518
+ * @see https://tailwindcss.com/docs/font-smoothing
18519
+ */
18520
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
18521
+ /**
18522
+ * Font Style
18523
+ * @see https://tailwindcss.com/docs/font-style
18524
+ */
18525
+ "font-style": ["italic", "not-italic"],
18526
+ /**
18527
+ * Font Weight
18528
+ * @see https://tailwindcss.com/docs/font-weight
18529
+ */
18530
+ "font-weight": [{
18531
+ font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", isArbitraryNumber]
18532
+ }],
18533
+ /**
18534
+ * Font Family
18535
+ * @see https://tailwindcss.com/docs/font-family
18536
+ */
18537
+ "font-family": [{
18538
+ font: [isAny]
18539
+ }],
18540
+ /**
18541
+ * Font Variant Numeric
18542
+ * @see https://tailwindcss.com/docs/font-variant-numeric
18543
+ */
18544
+ "fvn-normal": ["normal-nums"],
18545
+ /**
18546
+ * Font Variant Numeric
18547
+ * @see https://tailwindcss.com/docs/font-variant-numeric
18548
+ */
18549
+ "fvn-ordinal": ["ordinal"],
18550
+ /**
18551
+ * Font Variant Numeric
18552
+ * @see https://tailwindcss.com/docs/font-variant-numeric
18553
+ */
18554
+ "fvn-slashed-zero": ["slashed-zero"],
18555
+ /**
18556
+ * Font Variant Numeric
18557
+ * @see https://tailwindcss.com/docs/font-variant-numeric
18558
+ */
18559
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
18560
+ /**
18561
+ * Font Variant Numeric
18562
+ * @see https://tailwindcss.com/docs/font-variant-numeric
18563
+ */
18564
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
18565
+ /**
18566
+ * Font Variant Numeric
18567
+ * @see https://tailwindcss.com/docs/font-variant-numeric
18568
+ */
18569
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractons"],
18570
+ /**
18571
+ * Letter Spacing
18572
+ * @see https://tailwindcss.com/docs/letter-spacing
18573
+ */
18574
+ tracking: [{
18575
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest", isArbitraryLength]
18576
+ }],
18577
+ /**
18578
+ * Line Clamp
18579
+ * @see https://tailwindcss.com/docs/line-clamp
18580
+ */
18581
+ "line-clamp": [{
18582
+ "line-clamp": ["none", isNumber, isArbitraryNumber]
18583
+ }],
18584
+ /**
18585
+ * Line Height
18586
+ * @see https://tailwindcss.com/docs/line-height
18587
+ */
18588
+ leading: [{
18589
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose", isLength]
18590
+ }],
18591
+ /**
18592
+ * List Style Image
18593
+ * @see https://tailwindcss.com/docs/list-style-image
18594
+ */
18595
+ "list-image": [{
18596
+ "list-image": ["none", isArbitraryValue]
18597
+ }],
18598
+ /**
18599
+ * List Style Type
18600
+ * @see https://tailwindcss.com/docs/list-style-type
18601
+ */
18602
+ "list-style-type": [{
18603
+ list: ["none", "disc", "decimal", isArbitraryValue]
18604
+ }],
18605
+ /**
18606
+ * List Style Position
18607
+ * @see https://tailwindcss.com/docs/list-style-position
18608
+ */
18609
+ "list-style-position": [{
18610
+ list: ["inside", "outside"]
18611
+ }],
18612
+ /**
18613
+ * Placeholder Color
18614
+ * @deprecated since Tailwind CSS v3.0.0
18615
+ * @see https://tailwindcss.com/docs/placeholder-color
18616
+ */
18617
+ "placeholder-color": [{
18618
+ placeholder: [colors]
18619
+ }],
18620
+ /**
18621
+ * Placeholder Opacity
18622
+ * @see https://tailwindcss.com/docs/placeholder-opacity
18623
+ */
18624
+ "placeholder-opacity": [{
18625
+ "placeholder-opacity": [opacity]
18626
+ }],
18627
+ /**
18628
+ * Text Alignment
18629
+ * @see https://tailwindcss.com/docs/text-align
18630
+ */
18631
+ "text-alignment": [{
18632
+ text: ["left", "center", "right", "justify", "start", "end"]
18633
+ }],
18634
+ /**
18635
+ * Text Color
18636
+ * @see https://tailwindcss.com/docs/text-color
18637
+ */
18638
+ "text-color": [{
18639
+ text: [colors]
18640
+ }],
18641
+ /**
18642
+ * Text Opacity
18643
+ * @see https://tailwindcss.com/docs/text-opacity
18644
+ */
18645
+ "text-opacity": [{
18646
+ "text-opacity": [opacity]
18647
+ }],
18648
+ /**
18649
+ * Text Decoration
18650
+ * @see https://tailwindcss.com/docs/text-decoration
18651
+ */
18652
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
18653
+ /**
18654
+ * Text Decoration Style
18655
+ * @see https://tailwindcss.com/docs/text-decoration-style
18656
+ */
18657
+ "text-decoration-style": [{
18658
+ decoration: [].concat(getLineStyles(), ["wavy"])
18659
+ }],
18660
+ /**
18661
+ * Text Decoration Thickness
18662
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
18663
+ */
18664
+ "text-decoration-thickness": [{
18665
+ decoration: ["auto", "from-font", isLength]
18666
+ }],
18667
+ /**
18668
+ * Text Underline Offset
18669
+ * @see https://tailwindcss.com/docs/text-underline-offset
18670
+ */
18671
+ "underline-offset": [{
18672
+ "underline-offset": ["auto", isLength]
18673
+ }],
18674
+ /**
18675
+ * Text Decoration Color
18676
+ * @see https://tailwindcss.com/docs/text-decoration-color
18677
+ */
18678
+ "text-decoration-color": [{
18679
+ decoration: [colors]
18680
+ }],
18681
+ /**
18682
+ * Text Transform
18683
+ * @see https://tailwindcss.com/docs/text-transform
18684
+ */
18685
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
18686
+ /**
18687
+ * Text Overflow
18688
+ * @see https://tailwindcss.com/docs/text-overflow
18689
+ */
18690
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
18691
+ /**
18692
+ * Text Indent
18693
+ * @see https://tailwindcss.com/docs/text-indent
18694
+ */
18695
+ indent: [{
18696
+ indent: [spacing]
18697
+ }],
18698
+ /**
18699
+ * Vertical Alignment
18700
+ * @see https://tailwindcss.com/docs/vertical-align
18701
+ */
18702
+ "vertical-align": [{
18703
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryLength]
18704
+ }],
18705
+ /**
18706
+ * Whitespace
18707
+ * @see https://tailwindcss.com/docs/whitespace
18708
+ */
18709
+ whitespace: [{
18710
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
18711
+ }],
18712
+ /**
18713
+ * Word Break
18714
+ * @see https://tailwindcss.com/docs/word-break
18715
+ */
18716
+ "break": [{
18717
+ "break": ["normal", "words", "all", "keep"]
18718
+ }],
18719
+ /**
18720
+ * Hyphens
18721
+ * @see https://tailwindcss.com/docs/hyphens
18722
+ */
18723
+ hyphens: [{
18724
+ hyphens: ["none", "manual", "auto"]
18725
+ }],
18726
+ /**
18727
+ * Content
18728
+ * @see https://tailwindcss.com/docs/content
18729
+ */
18730
+ content: [{
18731
+ content: ["none", isArbitraryValue]
18732
+ }],
18733
+ // Backgrounds
18734
+ /**
18735
+ * Background Attachment
18736
+ * @see https://tailwindcss.com/docs/background-attachment
18737
+ */
18738
+ "bg-attachment": [{
18739
+ bg: ["fixed", "local", "scroll"]
18740
+ }],
18741
+ /**
18742
+ * Background Clip
18743
+ * @see https://tailwindcss.com/docs/background-clip
18744
+ */
18745
+ "bg-clip": [{
18746
+ "bg-clip": ["border", "padding", "content", "text"]
18747
+ }],
18748
+ /**
18749
+ * Background Opacity
18750
+ * @deprecated since Tailwind CSS v3.0.0
18751
+ * @see https://tailwindcss.com/docs/background-opacity
18752
+ */
18753
+ "bg-opacity": [{
18754
+ "bg-opacity": [opacity]
18755
+ }],
18756
+ /**
18757
+ * Background Origin
18758
+ * @see https://tailwindcss.com/docs/background-origin
18759
+ */
18760
+ "bg-origin": [{
18761
+ "bg-origin": ["border", "padding", "content"]
18762
+ }],
18763
+ /**
18764
+ * Background Position
18765
+ * @see https://tailwindcss.com/docs/background-position
18766
+ */
18767
+ "bg-position": [{
18768
+ bg: [].concat(getPositions(), [isArbitraryPosition])
18769
+ }],
18770
+ /**
18771
+ * Background Repeat
18772
+ * @see https://tailwindcss.com/docs/background-repeat
18773
+ */
18774
+ "bg-repeat": [{
18775
+ bg: ["no-repeat", {
18776
+ repeat: ["", "x", "y", "round", "space"]
18777
+ }]
18778
+ }],
18779
+ /**
18780
+ * Background Size
18781
+ * @see https://tailwindcss.com/docs/background-size
18782
+ */
18783
+ "bg-size": [{
18784
+ bg: ["auto", "cover", "contain", isArbitrarySize]
18785
+ }],
18786
+ /**
18787
+ * Background Image
18788
+ * @see https://tailwindcss.com/docs/background-image
18789
+ */
18790
+ "bg-image": [{
18791
+ bg: ["none", {
18792
+ "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
18793
+ }, isArbitraryUrl]
18794
+ }],
18795
+ /**
18796
+ * Background Color
18797
+ * @see https://tailwindcss.com/docs/background-color
18798
+ */
18799
+ "bg-color": [{
18800
+ bg: [colors]
18801
+ }],
18802
+ /**
18803
+ * Gradient Color Stops From Position
18804
+ * @see https://tailwindcss.com/docs/gradient-color-stops
18805
+ */
18806
+ "gradient-from-pos": [{
18807
+ from: [gradientColorStopPositions]
18808
+ }],
18809
+ /**
18810
+ * Gradient Color Stops Via Position
18811
+ * @see https://tailwindcss.com/docs/gradient-color-stops
18812
+ */
18813
+ "gradient-via-pos": [{
18814
+ via: [gradientColorStopPositions]
18815
+ }],
18816
+ /**
18817
+ * Gradient Color Stops To Position
18818
+ * @see https://tailwindcss.com/docs/gradient-color-stops
18819
+ */
18820
+ "gradient-to-pos": [{
18821
+ to: [gradientColorStopPositions]
18822
+ }],
18823
+ /**
18824
+ * Gradient Color Stops From
18825
+ * @see https://tailwindcss.com/docs/gradient-color-stops
18826
+ */
18827
+ "gradient-from": [{
18828
+ from: [gradientColorStops]
18829
+ }],
18830
+ /**
18831
+ * Gradient Color Stops Via
18832
+ * @see https://tailwindcss.com/docs/gradient-color-stops
18833
+ */
18834
+ "gradient-via": [{
18835
+ via: [gradientColorStops]
18836
+ }],
18837
+ /**
18838
+ * Gradient Color Stops To
18839
+ * @see https://tailwindcss.com/docs/gradient-color-stops
18840
+ */
18841
+ "gradient-to": [{
18842
+ to: [gradientColorStops]
18843
+ }],
18844
+ // Borders
18845
+ /**
18846
+ * Border Radius
18847
+ * @see https://tailwindcss.com/docs/border-radius
18848
+ */
18849
+ rounded: [{
18850
+ rounded: [borderRadius]
18851
+ }],
18852
+ /**
18853
+ * Border Radius Start
18854
+ * @see https://tailwindcss.com/docs/border-radius
18855
+ */
18856
+ "rounded-s": [{
18857
+ "rounded-s": [borderRadius]
18858
+ }],
18859
+ /**
18860
+ * Border Radius End
18861
+ * @see https://tailwindcss.com/docs/border-radius
18862
+ */
18863
+ "rounded-e": [{
18864
+ "rounded-e": [borderRadius]
18865
+ }],
18866
+ /**
18867
+ * Border Radius Top
18868
+ * @see https://tailwindcss.com/docs/border-radius
18869
+ */
18870
+ "rounded-t": [{
18871
+ "rounded-t": [borderRadius]
18872
+ }],
18873
+ /**
18874
+ * Border Radius Right
18875
+ * @see https://tailwindcss.com/docs/border-radius
18876
+ */
18877
+ "rounded-r": [{
18878
+ "rounded-r": [borderRadius]
18879
+ }],
18880
+ /**
18881
+ * Border Radius Bottom
18882
+ * @see https://tailwindcss.com/docs/border-radius
18883
+ */
18884
+ "rounded-b": [{
18885
+ "rounded-b": [borderRadius]
18886
+ }],
18887
+ /**
18888
+ * Border Radius Left
18889
+ * @see https://tailwindcss.com/docs/border-radius
18890
+ */
18891
+ "rounded-l": [{
18892
+ "rounded-l": [borderRadius]
18893
+ }],
18894
+ /**
18895
+ * Border Radius Start Start
18896
+ * @see https://tailwindcss.com/docs/border-radius
18897
+ */
18898
+ "rounded-ss": [{
18899
+ "rounded-ss": [borderRadius]
18900
+ }],
18901
+ /**
18902
+ * Border Radius Start End
18903
+ * @see https://tailwindcss.com/docs/border-radius
18904
+ */
18905
+ "rounded-se": [{
18906
+ "rounded-se": [borderRadius]
18907
+ }],
18908
+ /**
18909
+ * Border Radius End End
18910
+ * @see https://tailwindcss.com/docs/border-radius
18911
+ */
18912
+ "rounded-ee": [{
18913
+ "rounded-ee": [borderRadius]
18914
+ }],
18915
+ /**
18916
+ * Border Radius End Start
18917
+ * @see https://tailwindcss.com/docs/border-radius
18918
+ */
18919
+ "rounded-es": [{
18920
+ "rounded-es": [borderRadius]
18921
+ }],
18922
+ /**
18923
+ * Border Radius Top Left
18924
+ * @see https://tailwindcss.com/docs/border-radius
18925
+ */
18926
+ "rounded-tl": [{
18927
+ "rounded-tl": [borderRadius]
18928
+ }],
18929
+ /**
18930
+ * Border Radius Top Right
18931
+ * @see https://tailwindcss.com/docs/border-radius
18932
+ */
18933
+ "rounded-tr": [{
18934
+ "rounded-tr": [borderRadius]
18935
+ }],
18936
+ /**
18937
+ * Border Radius Bottom Right
18938
+ * @see https://tailwindcss.com/docs/border-radius
18939
+ */
18940
+ "rounded-br": [{
18941
+ "rounded-br": [borderRadius]
18942
+ }],
18943
+ /**
18944
+ * Border Radius Bottom Left
18945
+ * @see https://tailwindcss.com/docs/border-radius
18946
+ */
18947
+ "rounded-bl": [{
18948
+ "rounded-bl": [borderRadius]
18949
+ }],
18950
+ /**
18951
+ * Border Width
18952
+ * @see https://tailwindcss.com/docs/border-width
18953
+ */
18954
+ "border-w": [{
18955
+ border: [borderWidth]
18956
+ }],
18957
+ /**
18958
+ * Border Width X
18959
+ * @see https://tailwindcss.com/docs/border-width
18960
+ */
18961
+ "border-w-x": [{
18962
+ "border-x": [borderWidth]
18963
+ }],
18964
+ /**
18965
+ * Border Width Y
18966
+ * @see https://tailwindcss.com/docs/border-width
18967
+ */
18968
+ "border-w-y": [{
18969
+ "border-y": [borderWidth]
18970
+ }],
18971
+ /**
18972
+ * Border Width Start
18973
+ * @see https://tailwindcss.com/docs/border-width
18974
+ */
18975
+ "border-w-s": [{
18976
+ "border-s": [borderWidth]
18977
+ }],
18978
+ /**
18979
+ * Border Width End
18980
+ * @see https://tailwindcss.com/docs/border-width
18981
+ */
18982
+ "border-w-e": [{
18983
+ "border-e": [borderWidth]
18984
+ }],
18985
+ /**
18986
+ * Border Width Top
18987
+ * @see https://tailwindcss.com/docs/border-width
18988
+ */
18989
+ "border-w-t": [{
18990
+ "border-t": [borderWidth]
18991
+ }],
18992
+ /**
18993
+ * Border Width Right
18994
+ * @see https://tailwindcss.com/docs/border-width
18995
+ */
18996
+ "border-w-r": [{
18997
+ "border-r": [borderWidth]
18998
+ }],
18999
+ /**
19000
+ * Border Width Bottom
19001
+ * @see https://tailwindcss.com/docs/border-width
19002
+ */
19003
+ "border-w-b": [{
19004
+ "border-b": [borderWidth]
19005
+ }],
19006
+ /**
19007
+ * Border Width Left
19008
+ * @see https://tailwindcss.com/docs/border-width
19009
+ */
19010
+ "border-w-l": [{
19011
+ "border-l": [borderWidth]
19012
+ }],
19013
+ /**
19014
+ * Border Opacity
19015
+ * @see https://tailwindcss.com/docs/border-opacity
19016
+ */
19017
+ "border-opacity": [{
19018
+ "border-opacity": [opacity]
19019
+ }],
19020
+ /**
19021
+ * Border Style
19022
+ * @see https://tailwindcss.com/docs/border-style
19023
+ */
19024
+ "border-style": [{
19025
+ border: [].concat(getLineStyles(), ["hidden"])
19026
+ }],
19027
+ /**
19028
+ * Divide Width X
19029
+ * @see https://tailwindcss.com/docs/divide-width
19030
+ */
19031
+ "divide-x": [{
19032
+ "divide-x": [borderWidth]
19033
+ }],
19034
+ /**
19035
+ * Divide Width X Reverse
19036
+ * @see https://tailwindcss.com/docs/divide-width
19037
+ */
19038
+ "divide-x-reverse": ["divide-x-reverse"],
19039
+ /**
19040
+ * Divide Width Y
19041
+ * @see https://tailwindcss.com/docs/divide-width
19042
+ */
19043
+ "divide-y": [{
19044
+ "divide-y": [borderWidth]
19045
+ }],
19046
+ /**
19047
+ * Divide Width Y Reverse
19048
+ * @see https://tailwindcss.com/docs/divide-width
19049
+ */
19050
+ "divide-y-reverse": ["divide-y-reverse"],
19051
+ /**
19052
+ * Divide Opacity
19053
+ * @see https://tailwindcss.com/docs/divide-opacity
19054
+ */
19055
+ "divide-opacity": [{
19056
+ "divide-opacity": [opacity]
19057
+ }],
19058
+ /**
19059
+ * Divide Style
19060
+ * @see https://tailwindcss.com/docs/divide-style
19061
+ */
19062
+ "divide-style": [{
19063
+ divide: getLineStyles()
19064
+ }],
19065
+ /**
19066
+ * Border Color
19067
+ * @see https://tailwindcss.com/docs/border-color
19068
+ */
19069
+ "border-color": [{
19070
+ border: [borderColor]
19071
+ }],
19072
+ /**
19073
+ * Border Color X
19074
+ * @see https://tailwindcss.com/docs/border-color
19075
+ */
19076
+ "border-color-x": [{
19077
+ "border-x": [borderColor]
19078
+ }],
19079
+ /**
19080
+ * Border Color Y
19081
+ * @see https://tailwindcss.com/docs/border-color
19082
+ */
19083
+ "border-color-y": [{
19084
+ "border-y": [borderColor]
19085
+ }],
19086
+ /**
19087
+ * Border Color Top
19088
+ * @see https://tailwindcss.com/docs/border-color
19089
+ */
19090
+ "border-color-t": [{
19091
+ "border-t": [borderColor]
19092
+ }],
19093
+ /**
19094
+ * Border Color Right
19095
+ * @see https://tailwindcss.com/docs/border-color
19096
+ */
19097
+ "border-color-r": [{
19098
+ "border-r": [borderColor]
19099
+ }],
19100
+ /**
19101
+ * Border Color Bottom
19102
+ * @see https://tailwindcss.com/docs/border-color
19103
+ */
19104
+ "border-color-b": [{
19105
+ "border-b": [borderColor]
19106
+ }],
19107
+ /**
19108
+ * Border Color Left
19109
+ * @see https://tailwindcss.com/docs/border-color
19110
+ */
19111
+ "border-color-l": [{
19112
+ "border-l": [borderColor]
19113
+ }],
19114
+ /**
19115
+ * Divide Color
19116
+ * @see https://tailwindcss.com/docs/divide-color
19117
+ */
19118
+ "divide-color": [{
19119
+ divide: [borderColor]
19120
+ }],
19121
+ /**
19122
+ * Outline Style
19123
+ * @see https://tailwindcss.com/docs/outline-style
19124
+ */
19125
+ "outline-style": [{
19126
+ outline: [""].concat(getLineStyles())
19127
+ }],
19128
+ /**
19129
+ * Outline Offset
19130
+ * @see https://tailwindcss.com/docs/outline-offset
19131
+ */
19132
+ "outline-offset": [{
19133
+ "outline-offset": [isLength]
19134
+ }],
19135
+ /**
19136
+ * Outline Width
19137
+ * @see https://tailwindcss.com/docs/outline-width
19138
+ */
19139
+ "outline-w": [{
19140
+ outline: [isLength]
19141
+ }],
19142
+ /**
19143
+ * Outline Color
19144
+ * @see https://tailwindcss.com/docs/outline-color
19145
+ */
19146
+ "outline-color": [{
19147
+ outline: [colors]
19148
+ }],
19149
+ /**
19150
+ * Ring Width
19151
+ * @see https://tailwindcss.com/docs/ring-width
19152
+ */
19153
+ "ring-w": [{
19154
+ ring: getLengthWithEmpty()
19155
+ }],
19156
+ /**
19157
+ * Ring Width Inset
19158
+ * @see https://tailwindcss.com/docs/ring-width
19159
+ */
19160
+ "ring-w-inset": ["ring-inset"],
19161
+ /**
19162
+ * Ring Color
19163
+ * @see https://tailwindcss.com/docs/ring-color
19164
+ */
19165
+ "ring-color": [{
19166
+ ring: [colors]
19167
+ }],
19168
+ /**
19169
+ * Ring Opacity
19170
+ * @see https://tailwindcss.com/docs/ring-opacity
19171
+ */
19172
+ "ring-opacity": [{
19173
+ "ring-opacity": [opacity]
19174
+ }],
19175
+ /**
19176
+ * Ring Offset Width
19177
+ * @see https://tailwindcss.com/docs/ring-offset-width
19178
+ */
19179
+ "ring-offset-w": [{
19180
+ "ring-offset": [isLength]
19181
+ }],
19182
+ /**
19183
+ * Ring Offset Color
19184
+ * @see https://tailwindcss.com/docs/ring-offset-color
19185
+ */
19186
+ "ring-offset-color": [{
19187
+ "ring-offset": [colors]
19188
+ }],
19189
+ // Effects
19190
+ /**
19191
+ * Box Shadow
19192
+ * @see https://tailwindcss.com/docs/box-shadow
19193
+ */
19194
+ shadow: [{
19195
+ shadow: ["", "inner", "none", isTshirtSize, isArbitraryShadow]
19196
+ }],
19197
+ /**
19198
+ * Box Shadow Color
19199
+ * @see https://tailwindcss.com/docs/box-shadow-color
19200
+ */
19201
+ "shadow-color": [{
19202
+ shadow: [isAny]
19203
+ }],
19204
+ /**
19205
+ * Opacity
19206
+ * @see https://tailwindcss.com/docs/opacity
19207
+ */
19208
+ opacity: [{
19209
+ opacity: [opacity]
19210
+ }],
19211
+ /**
19212
+ * Mix Beldn Mode
19213
+ * @see https://tailwindcss.com/docs/mix-blend-mode
19214
+ */
19215
+ "mix-blend": [{
19216
+ "mix-blend": getBlendModes()
19217
+ }],
19218
+ /**
19219
+ * Background Blend Mode
19220
+ * @see https://tailwindcss.com/docs/background-blend-mode
19221
+ */
19222
+ "bg-blend": [{
19223
+ "bg-blend": getBlendModes()
19224
+ }],
19225
+ // Filters
19226
+ /**
19227
+ * Filter
19228
+ * @deprecated since Tailwind CSS v3.0.0
19229
+ * @see https://tailwindcss.com/docs/filter
19230
+ */
19231
+ filter: [{
19232
+ filter: ["", "none"]
19233
+ }],
19234
+ /**
19235
+ * Blur
19236
+ * @see https://tailwindcss.com/docs/blur
19237
+ */
19238
+ blur: [{
19239
+ blur: [blur]
19240
+ }],
19241
+ /**
19242
+ * Brightness
19243
+ * @see https://tailwindcss.com/docs/brightness
19244
+ */
19245
+ brightness: [{
19246
+ brightness: [brightness]
19247
+ }],
19248
+ /**
19249
+ * Contrast
19250
+ * @see https://tailwindcss.com/docs/contrast
19251
+ */
19252
+ contrast: [{
19253
+ contrast: [contrast]
19254
+ }],
19255
+ /**
19256
+ * Drop Shadow
19257
+ * @see https://tailwindcss.com/docs/drop-shadow
19258
+ */
19259
+ "drop-shadow": [{
19260
+ "drop-shadow": ["", "none", isTshirtSize, isArbitraryValue]
19261
+ }],
19262
+ /**
19263
+ * Grayscale
19264
+ * @see https://tailwindcss.com/docs/grayscale
19265
+ */
19266
+ grayscale: [{
19267
+ grayscale: [grayscale]
19268
+ }],
19269
+ /**
19270
+ * Hue Rotate
19271
+ * @see https://tailwindcss.com/docs/hue-rotate
19272
+ */
19273
+ "hue-rotate": [{
19274
+ "hue-rotate": [hueRotate]
19275
+ }],
19276
+ /**
19277
+ * Invert
19278
+ * @see https://tailwindcss.com/docs/invert
19279
+ */
19280
+ invert: [{
19281
+ invert: [invert]
19282
+ }],
19283
+ /**
19284
+ * Saturate
19285
+ * @see https://tailwindcss.com/docs/saturate
19286
+ */
19287
+ saturate: [{
19288
+ saturate: [saturate]
19289
+ }],
19290
+ /**
19291
+ * Sepia
19292
+ * @see https://tailwindcss.com/docs/sepia
19293
+ */
19294
+ sepia: [{
19295
+ sepia: [sepia]
19296
+ }],
19297
+ /**
19298
+ * Backdrop Filter
19299
+ * @deprecated since Tailwind CSS v3.0.0
19300
+ * @see https://tailwindcss.com/docs/backdrop-filter
19301
+ */
19302
+ "backdrop-filter": [{
19303
+ "backdrop-filter": ["", "none"]
19304
+ }],
19305
+ /**
19306
+ * Backdrop Blur
19307
+ * @see https://tailwindcss.com/docs/backdrop-blur
19308
+ */
19309
+ "backdrop-blur": [{
19310
+ "backdrop-blur": [blur]
19311
+ }],
19312
+ /**
19313
+ * Backdrop Brightness
19314
+ * @see https://tailwindcss.com/docs/backdrop-brightness
19315
+ */
19316
+ "backdrop-brightness": [{
19317
+ "backdrop-brightness": [brightness]
19318
+ }],
19319
+ /**
19320
+ * Backdrop Contrast
19321
+ * @see https://tailwindcss.com/docs/backdrop-contrast
19322
+ */
19323
+ "backdrop-contrast": [{
19324
+ "backdrop-contrast": [contrast]
19325
+ }],
19326
+ /**
19327
+ * Backdrop Grayscale
19328
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
19329
+ */
19330
+ "backdrop-grayscale": [{
19331
+ "backdrop-grayscale": [grayscale]
19332
+ }],
19333
+ /**
19334
+ * Backdrop Hue Rotate
19335
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
19336
+ */
19337
+ "backdrop-hue-rotate": [{
19338
+ "backdrop-hue-rotate": [hueRotate]
19339
+ }],
19340
+ /**
19341
+ * Backdrop Invert
19342
+ * @see https://tailwindcss.com/docs/backdrop-invert
19343
+ */
19344
+ "backdrop-invert": [{
19345
+ "backdrop-invert": [invert]
19346
+ }],
19347
+ /**
19348
+ * Backdrop Opacity
19349
+ * @see https://tailwindcss.com/docs/backdrop-opacity
19350
+ */
19351
+ "backdrop-opacity": [{
19352
+ "backdrop-opacity": [opacity]
19353
+ }],
19354
+ /**
19355
+ * Backdrop Saturate
19356
+ * @see https://tailwindcss.com/docs/backdrop-saturate
19357
+ */
19358
+ "backdrop-saturate": [{
19359
+ "backdrop-saturate": [saturate]
19360
+ }],
19361
+ /**
19362
+ * Backdrop Sepia
19363
+ * @see https://tailwindcss.com/docs/backdrop-sepia
19364
+ */
19365
+ "backdrop-sepia": [{
19366
+ "backdrop-sepia": [sepia]
19367
+ }],
19368
+ // Tables
19369
+ /**
19370
+ * Border Collapse
19371
+ * @see https://tailwindcss.com/docs/border-collapse
19372
+ */
19373
+ "border-collapse": [{
19374
+ border: ["collapse", "separate"]
19375
+ }],
19376
+ /**
19377
+ * Border Spacing
19378
+ * @see https://tailwindcss.com/docs/border-spacing
19379
+ */
19380
+ "border-spacing": [{
19381
+ "border-spacing": [borderSpacing]
19382
+ }],
19383
+ /**
19384
+ * Border Spacing X
19385
+ * @see https://tailwindcss.com/docs/border-spacing
19386
+ */
19387
+ "border-spacing-x": [{
19388
+ "border-spacing-x": [borderSpacing]
19389
+ }],
19390
+ /**
19391
+ * Border Spacing Y
19392
+ * @see https://tailwindcss.com/docs/border-spacing
19393
+ */
19394
+ "border-spacing-y": [{
19395
+ "border-spacing-y": [borderSpacing]
19396
+ }],
19397
+ /**
19398
+ * Table Layout
19399
+ * @see https://tailwindcss.com/docs/table-layout
19400
+ */
19401
+ "table-layout": [{
19402
+ table: ["auto", "fixed"]
19403
+ }],
19404
+ /**
19405
+ * Caption Side
19406
+ * @see https://tailwindcss.com/docs/caption-side
19407
+ */
19408
+ caption: [{
19409
+ caption: ["top", "bottom"]
19410
+ }],
19411
+ // Transitions and Animation
19412
+ /**
19413
+ * Tranisition Property
19414
+ * @see https://tailwindcss.com/docs/transition-property
19415
+ */
19416
+ transition: [{
19417
+ transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", isArbitraryValue]
19418
+ }],
19419
+ /**
19420
+ * Transition Duration
19421
+ * @see https://tailwindcss.com/docs/transition-duration
19422
+ */
19423
+ duration: [{
19424
+ duration: getNumberAndArbitrary()
19425
+ }],
19426
+ /**
19427
+ * Transition Timing Function
19428
+ * @see https://tailwindcss.com/docs/transition-timing-function
19429
+ */
19430
+ ease: [{
19431
+ ease: ["linear", "in", "out", "in-out", isArbitraryValue]
19432
+ }],
19433
+ /**
19434
+ * Transition Delay
19435
+ * @see https://tailwindcss.com/docs/transition-delay
19436
+ */
19437
+ delay: [{
19438
+ delay: getNumberAndArbitrary()
19439
+ }],
19440
+ /**
19441
+ * Animation
19442
+ * @see https://tailwindcss.com/docs/animation
19443
+ */
19444
+ animate: [{
19445
+ animate: ["none", "spin", "ping", "pulse", "bounce", isArbitraryValue]
19446
+ }],
19447
+ // Transforms
19448
+ /**
19449
+ * Transform
19450
+ * @see https://tailwindcss.com/docs/transform
19451
+ */
19452
+ transform: [{
19453
+ transform: ["", "gpu", "none"]
19454
+ }],
19455
+ /**
19456
+ * Scale
19457
+ * @see https://tailwindcss.com/docs/scale
19458
+ */
19459
+ scale: [{
19460
+ scale: [scale]
19461
+ }],
19462
+ /**
19463
+ * Scale X
19464
+ * @see https://tailwindcss.com/docs/scale
19465
+ */
19466
+ "scale-x": [{
19467
+ "scale-x": [scale]
19468
+ }],
19469
+ /**
19470
+ * Scale Y
19471
+ * @see https://tailwindcss.com/docs/scale
19472
+ */
19473
+ "scale-y": [{
19474
+ "scale-y": [scale]
19475
+ }],
19476
+ /**
19477
+ * Rotate
19478
+ * @see https://tailwindcss.com/docs/rotate
19479
+ */
19480
+ rotate: [{
19481
+ rotate: [isInteger, isArbitraryValue]
19482
+ }],
19483
+ /**
19484
+ * Translate X
19485
+ * @see https://tailwindcss.com/docs/translate
19486
+ */
19487
+ "translate-x": [{
19488
+ "translate-x": [translate]
19489
+ }],
19490
+ /**
19491
+ * Translate Y
19492
+ * @see https://tailwindcss.com/docs/translate
19493
+ */
19494
+ "translate-y": [{
19495
+ "translate-y": [translate]
19496
+ }],
19497
+ /**
19498
+ * Skew X
19499
+ * @see https://tailwindcss.com/docs/skew
19500
+ */
19501
+ "skew-x": [{
19502
+ "skew-x": [skew]
19503
+ }],
19504
+ /**
19505
+ * Skew Y
19506
+ * @see https://tailwindcss.com/docs/skew
19507
+ */
19508
+ "skew-y": [{
19509
+ "skew-y": [skew]
19510
+ }],
19511
+ /**
19512
+ * Transform Origin
19513
+ * @see https://tailwindcss.com/docs/transform-origin
19514
+ */
19515
+ "transform-origin": [{
19516
+ origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", isArbitraryValue]
19517
+ }],
19518
+ // Interactivity
19519
+ /**
19520
+ * Accent Color
19521
+ * @see https://tailwindcss.com/docs/accent-color
19522
+ */
19523
+ accent: [{
19524
+ accent: ["auto", colors]
19525
+ }],
19526
+ /**
19527
+ * Appearance
19528
+ * @see https://tailwindcss.com/docs/appearance
19529
+ */
19530
+ appearance: ["appearance-none"],
19531
+ /**
19532
+ * Cursor
19533
+ * @see https://tailwindcss.com/docs/cursor
19534
+ */
19535
+ cursor: [{
19536
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryValue]
19537
+ }],
19538
+ /**
19539
+ * Caret Color
19540
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
19541
+ */
19542
+ "caret-color": [{
19543
+ caret: [colors]
19544
+ }],
19545
+ /**
19546
+ * Pointer Events
19547
+ * @see https://tailwindcss.com/docs/pointer-events
19548
+ */
19549
+ "pointer-events": [{
19550
+ "pointer-events": ["none", "auto"]
19551
+ }],
19552
+ /**
19553
+ * Resize
19554
+ * @see https://tailwindcss.com/docs/resize
19555
+ */
19556
+ resize: [{
19557
+ resize: ["none", "y", "x", ""]
19558
+ }],
19559
+ /**
19560
+ * Scroll Behavior
19561
+ * @see https://tailwindcss.com/docs/scroll-behavior
19562
+ */
19563
+ "scroll-behavior": [{
19564
+ scroll: ["auto", "smooth"]
19565
+ }],
19566
+ /**
19567
+ * Scroll Margin
19568
+ * @see https://tailwindcss.com/docs/scroll-margin
19569
+ */
19570
+ "scroll-m": [{
19571
+ "scroll-m": [spacing]
19572
+ }],
19573
+ /**
19574
+ * Scroll Margin X
19575
+ * @see https://tailwindcss.com/docs/scroll-margin
19576
+ */
19577
+ "scroll-mx": [{
19578
+ "scroll-mx": [spacing]
19579
+ }],
19580
+ /**
19581
+ * Scroll Margin Y
19582
+ * @see https://tailwindcss.com/docs/scroll-margin
19583
+ */
19584
+ "scroll-my": [{
19585
+ "scroll-my": [spacing]
19586
+ }],
19587
+ /**
19588
+ * Scroll Margin Start
19589
+ * @see https://tailwindcss.com/docs/scroll-margin
19590
+ */
19591
+ "scroll-ms": [{
19592
+ "scroll-ms": [spacing]
19593
+ }],
19594
+ /**
19595
+ * Scroll Margin End
19596
+ * @see https://tailwindcss.com/docs/scroll-margin
19597
+ */
19598
+ "scroll-me": [{
19599
+ "scroll-me": [spacing]
19600
+ }],
19601
+ /**
19602
+ * Scroll Margin Top
19603
+ * @see https://tailwindcss.com/docs/scroll-margin
19604
+ */
19605
+ "scroll-mt": [{
19606
+ "scroll-mt": [spacing]
19607
+ }],
19608
+ /**
19609
+ * Scroll Margin Right
19610
+ * @see https://tailwindcss.com/docs/scroll-margin
19611
+ */
19612
+ "scroll-mr": [{
19613
+ "scroll-mr": [spacing]
19614
+ }],
19615
+ /**
19616
+ * Scroll Margin Bottom
19617
+ * @see https://tailwindcss.com/docs/scroll-margin
19618
+ */
19619
+ "scroll-mb": [{
19620
+ "scroll-mb": [spacing]
19621
+ }],
19622
+ /**
19623
+ * Scroll Margin Left
19624
+ * @see https://tailwindcss.com/docs/scroll-margin
19625
+ */
19626
+ "scroll-ml": [{
19627
+ "scroll-ml": [spacing]
19628
+ }],
19629
+ /**
19630
+ * Scroll Padding
19631
+ * @see https://tailwindcss.com/docs/scroll-padding
19632
+ */
19633
+ "scroll-p": [{
19634
+ "scroll-p": [spacing]
19635
+ }],
19636
+ /**
19637
+ * Scroll Padding X
19638
+ * @see https://tailwindcss.com/docs/scroll-padding
19639
+ */
19640
+ "scroll-px": [{
19641
+ "scroll-px": [spacing]
19642
+ }],
19643
+ /**
19644
+ * Scroll Padding Y
19645
+ * @see https://tailwindcss.com/docs/scroll-padding
19646
+ */
19647
+ "scroll-py": [{
19648
+ "scroll-py": [spacing]
19649
+ }],
19650
+ /**
19651
+ * Scroll Padding Start
19652
+ * @see https://tailwindcss.com/docs/scroll-padding
19653
+ */
19654
+ "scroll-ps": [{
19655
+ "scroll-ps": [spacing]
19656
+ }],
19657
+ /**
19658
+ * Scroll Padding End
19659
+ * @see https://tailwindcss.com/docs/scroll-padding
19660
+ */
19661
+ "scroll-pe": [{
19662
+ "scroll-pe": [spacing]
19663
+ }],
19664
+ /**
19665
+ * Scroll Padding Top
19666
+ * @see https://tailwindcss.com/docs/scroll-padding
19667
+ */
19668
+ "scroll-pt": [{
19669
+ "scroll-pt": [spacing]
19670
+ }],
19671
+ /**
19672
+ * Scroll Padding Right
19673
+ * @see https://tailwindcss.com/docs/scroll-padding
19674
+ */
19675
+ "scroll-pr": [{
19676
+ "scroll-pr": [spacing]
19677
+ }],
19678
+ /**
19679
+ * Scroll Padding Bottom
19680
+ * @see https://tailwindcss.com/docs/scroll-padding
19681
+ */
19682
+ "scroll-pb": [{
19683
+ "scroll-pb": [spacing]
19684
+ }],
19685
+ /**
19686
+ * Scroll Padding Left
19687
+ * @see https://tailwindcss.com/docs/scroll-padding
19688
+ */
19689
+ "scroll-pl": [{
19690
+ "scroll-pl": [spacing]
19691
+ }],
19692
+ /**
19693
+ * Scroll Snap Align
19694
+ * @see https://tailwindcss.com/docs/scroll-snap-align
19695
+ */
19696
+ "snap-align": [{
19697
+ snap: ["start", "end", "center", "align-none"]
19698
+ }],
19699
+ /**
19700
+ * Scroll Snap Stop
19701
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
19702
+ */
19703
+ "snap-stop": [{
19704
+ snap: ["normal", "always"]
19705
+ }],
19706
+ /**
19707
+ * Scroll Snap Type
19708
+ * @see https://tailwindcss.com/docs/scroll-snap-type
19709
+ */
19710
+ "snap-type": [{
19711
+ snap: ["none", "x", "y", "both"]
19712
+ }],
19713
+ /**
19714
+ * Scroll Snap Type Strictness
19715
+ * @see https://tailwindcss.com/docs/scroll-snap-type
19716
+ */
19717
+ "snap-strictness": [{
19718
+ snap: ["mandatory", "proximity"]
19719
+ }],
19720
+ /**
19721
+ * Touch Action
19722
+ * @see https://tailwindcss.com/docs/touch-action
19723
+ */
19724
+ touch: [{
19725
+ touch: ["auto", "none", "pinch-zoom", "manipulation", {
19726
+ pan: ["x", "left", "right", "y", "up", "down"]
19727
+ }]
19728
+ }],
19729
+ /**
19730
+ * User Select
19731
+ * @see https://tailwindcss.com/docs/user-select
19732
+ */
19733
+ select: [{
19734
+ select: ["none", "text", "all", "auto"]
19735
+ }],
19736
+ /**
19737
+ * Will Change
19738
+ * @see https://tailwindcss.com/docs/will-change
19739
+ */
19740
+ "will-change": [{
19741
+ "will-change": ["auto", "scroll", "contents", "transform", isArbitraryValue]
19742
+ }],
19743
+ // SVG
19744
+ /**
19745
+ * Fill
19746
+ * @see https://tailwindcss.com/docs/fill
19747
+ */
19748
+ fill: [{
19749
+ fill: [colors, "none"]
19750
+ }],
19751
+ /**
19752
+ * Stroke Width
19753
+ * @see https://tailwindcss.com/docs/stroke-width
19754
+ */
19755
+ "stroke-w": [{
19756
+ stroke: [isLength, isArbitraryNumber]
19757
+ }],
19758
+ /**
19759
+ * Stroke
19760
+ * @see https://tailwindcss.com/docs/stroke
19761
+ */
19762
+ stroke: [{
19763
+ stroke: [colors, "none"]
19764
+ }],
19765
+ // Accessibility
19766
+ /**
19767
+ * Screen Readers
19768
+ * @see https://tailwindcss.com/docs/screen-readers
19769
+ */
19770
+ sr: ["sr-only", "not-sr-only"]
19771
+ },
19772
+ conflictingClassGroups: {
19773
+ overflow: ["overflow-x", "overflow-y"],
19774
+ overscroll: ["overscroll-x", "overscroll-y"],
19775
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
19776
+ "inset-x": ["right", "left"],
19777
+ "inset-y": ["top", "bottom"],
19778
+ flex: ["basis", "grow", "shrink"],
19779
+ gap: ["gap-x", "gap-y"],
19780
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
19781
+ px: ["pr", "pl"],
19782
+ py: ["pt", "pb"],
19783
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
19784
+ mx: ["mr", "ml"],
19785
+ my: ["mt", "mb"],
19786
+ "font-size": ["leading"],
19787
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
19788
+ "fvn-ordinal": ["fvn-normal"],
19789
+ "fvn-slashed-zero": ["fvn-normal"],
19790
+ "fvn-figure": ["fvn-normal"],
19791
+ "fvn-spacing": ["fvn-normal"],
19792
+ "fvn-fraction": ["fvn-normal"],
19793
+ rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
19794
+ "rounded-s": ["rounded-ss", "rounded-es"],
19795
+ "rounded-e": ["rounded-se", "rounded-ee"],
19796
+ "rounded-t": ["rounded-tl", "rounded-tr"],
19797
+ "rounded-r": ["rounded-tr", "rounded-br"],
19798
+ "rounded-b": ["rounded-br", "rounded-bl"],
19799
+ "rounded-l": ["rounded-tl", "rounded-bl"],
19800
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
19801
+ "border-w": ["border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
19802
+ "border-w-x": ["border-w-r", "border-w-l"],
19803
+ "border-w-y": ["border-w-t", "border-w-b"],
19804
+ "border-color": ["border-color-t", "border-color-r", "border-color-b", "border-color-l"],
19805
+ "border-color-x": ["border-color-r", "border-color-l"],
19806
+ "border-color-y": ["border-color-t", "border-color-b"],
19807
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
19808
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
19809
+ "scroll-my": ["scroll-mt", "scroll-mb"],
19810
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
19811
+ "scroll-px": ["scroll-pr", "scroll-pl"],
19812
+ "scroll-py": ["scroll-pt", "scroll-pb"]
19813
+ },
19814
+ conflictingClassGroupModifiers: {
19815
+ "font-size": ["leading"]
19816
+ }
19817
+ };
19818
+ }
19819
+
19820
+ // ../../node_modules/tailwind-merge/dist/lib/tw-merge.mjs
19821
+ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
19822
+
19823
+ // src/Components/Generic/Map/MapControlToolbar.tsx
19824
+ import { jsx as jsx80, jsxs as jsxs58 } from "react/jsx-runtime";
19825
+ function cn2(...inputs) {
19826
+ return twMerge(clsx(inputs));
19827
+ }
19828
+ var POSITION_CLASSES3 = {
19829
+ topleft: "absolute top-4 left-4",
19830
+ topright: "absolute top-4 right-4",
19831
+ bottomleft: "absolute bottom-4 left-4",
19832
+ bottomright: "absolute bottom-4 right-4"
19833
+ };
19834
+ var getDefaultDirection = (position) => {
19835
+ switch (position) {
19836
+ case "topleft":
19837
+ case "bottomleft":
19838
+ return "right";
19839
+ case "topright":
19840
+ case "bottomright":
19841
+ return "left";
19842
+ default:
19843
+ return "right";
19844
+ }
19845
+ };
19846
+ var MapControlToolbar = ({
19847
+ controls,
19848
+ onToggleControl
19849
+ }) => {
19850
+ return /* @__PURE__ */ jsx80(TooltipProvider2, { children: /* @__PURE__ */ jsx80("div", { className: "pointer-events-none", children: Object.entries(controls.reduce((acc, control) => {
19851
+ var _a, _b;
19852
+ const position = (_a = control.position) != null ? _a : "topright";
19853
+ acc[position] = (_b = acc[position]) != null ? _b : [];
19854
+ acc[position].push(control);
19855
+ return acc;
19856
+ }, {})).map(([position, items]) => /* @__PURE__ */ jsx80("div", { className: cn2(POSITION_CLASSES3[position], "pointer-events-auto"), children: items.map((control) => {
19857
+ var _a;
19858
+ const Icon3 = control.icon;
19859
+ const popoverDirection = control.popoverDirection || getDefaultDirection((_a = control.position) != null ? _a : "topright");
19860
+ if (control.isDisplayOnly) {
19861
+ return /* @__PURE__ */ jsx80(
19862
+ "div",
19863
+ {
19864
+ className: "pointer-events-auto",
19865
+ children: /* @__PURE__ */ jsx80(Icon3, { className: "w-6 h-6" })
19866
+ },
19867
+ control.id
19868
+ );
19869
+ }
19870
+ if (control.onClick && !control.panel) {
19871
+ return /* @__PURE__ */ jsx80(
19872
+ "div",
19873
+ {
19874
+ className: "pointer-events-auto",
19875
+ children: /* @__PURE__ */ jsxs58(Tooltip4, { delayDuration: 100, children: [
19876
+ /* @__PURE__ */ jsx80(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx80(
19877
+ "button",
19878
+ {
19879
+ onClick: control.onClick,
19880
+ className: "p-[11px] w-12 h-12 flex justify-center items-center rounded-full shadow-xl transition-colors bg-white hover:bg-gray-50 text-gray-700",
19881
+ children: /* @__PURE__ */ jsx80(Icon3, { className: "w-6 h-6" })
19882
+ }
19883
+ ) }),
19884
+ /* @__PURE__ */ jsx80(
19885
+ TooltipContent2,
19886
+ {
19887
+ side: "right",
19888
+ className: "bg-secondary font-semibold text-foreground",
19889
+ children: /* @__PURE__ */ jsx80("p", { children: control.title })
19890
+ }
19891
+ )
19892
+ ] })
19893
+ },
19894
+ control.id
19895
+ );
19896
+ }
19897
+ return /* @__PURE__ */ jsx80(
19898
+ "div",
19899
+ {
19900
+ className: "pointer-events-auto",
19901
+ children: /* @__PURE__ */ jsxs58(Popover7.Root, { open: control.isOpen, children: [
19902
+ /* @__PURE__ */ jsxs58(Tooltip4, { delayDuration: 100, children: [
19903
+ /* @__PURE__ */ jsx80(Popover7.Trigger, { asChild: true, children: /* @__PURE__ */ jsx80(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx80(
19904
+ "button",
19905
+ {
19906
+ onClick: () => onToggleControl(control.id),
19907
+ className: cn2(
19908
+ "p-[11px] w-12 h-12 flex justify-center items-center rounded-full shadow-xl transition-colors",
19909
+ control.isOpen ? "bg-primary text-white" : "bg-white hover:bg-gray-50 text-gray-700"
19910
+ ),
19911
+ children: /* @__PURE__ */ jsx80(Icon3, { className: "w-6 h-6" })
19912
+ }
19913
+ ) }) }),
19914
+ /* @__PURE__ */ jsx80(
19915
+ TooltipContent2,
19916
+ {
19917
+ side: "right",
19918
+ className: "bg-secondary font-semibold text-foreground",
19919
+ children: /* @__PURE__ */ jsx80("p", { children: control.title })
19920
+ }
19921
+ )
19922
+ ] }),
19923
+ control.panel ? /* @__PURE__ */ jsx80(Popover7.Portal, { children: /* @__PURE__ */ jsxs58(
19924
+ Popover7.Content,
19925
+ {
19926
+ className: "bg-white p-4 rounded-lg shadow-lg min-w-[250px] z-[10] max-w-[380px] hidden lg:block",
19927
+ side: popoverDirection,
19928
+ align: control.position === "bottomright" ? "end" : "start",
19929
+ sideOffset: 5,
19930
+ children: [
19931
+ control.panel,
19932
+ /* @__PURE__ */ jsx80(Popover7.Arrow, { className: "fill-white" })
19933
+ ]
19934
+ }
19935
+ ) }) : null
19936
+ ] })
19937
+ },
19938
+ control.id
19939
+ );
19940
+ }) }, position)) }) });
19941
+ };
19942
+ MapControlToolbar.displayName = "MapControlToolbar";
19943
+
19944
+ // src/Components/Map/MapLibre.tsx
19945
+ import { GlobeIcon as GlobeIcon2, PlusIcon as PlusIcon3, MinusIcon as MinusIcon3, LayerGroupIcon as LayerGroupIcon5 } from "@geowiki/ui";
19946
+ import { jsx as jsx81, jsxs as jsxs59 } from "react/jsx-runtime";
16879
19947
  var MapLibre = forwardRef5(({ baseLayers, customLayers, mapControls, sourceData }, ref) => {
16880
19948
  const mapContainer = ref;
16881
19949
  const mapRef = useRef16(null);
@@ -16961,7 +20029,7 @@ var MapLibre = forwardRef5(({ baseLayers, customLayers, mapControls, sourceData
16961
20029
  return {
16962
20030
  id: "overlay",
16963
20031
  icon: LayerGroupIcon5,
16964
- panel: /* @__PURE__ */ jsx79(
20032
+ panel: /* @__PURE__ */ jsx81(
16965
20033
  LayerSwitcher2,
16966
20034
  {
16967
20035
  mapMenuItems: [
@@ -16985,7 +20053,8 @@ var MapLibre = forwardRef5(({ baseLayers, customLayers, mapControls, sourceData
16985
20053
  }
16986
20054
  }).flat();
16987
20055
  };
16988
- const [mapControl, setMapControl] = useState36(() => buildControls(mapControls));
20056
+ const [mapControl, setMapControl] = useState37(() => buildControls(mapControls));
20057
+ console.log(mapControl);
16989
20058
  const toggleControl = (id) => {
16990
20059
  setMapControl((prevControls) => prevControls.map((control) => {
16991
20060
  if (control.id === id) {
@@ -16994,7 +20063,7 @@ var MapLibre = forwardRef5(({ baseLayers, customLayers, mapControls, sourceData
16994
20063
  return control;
16995
20064
  }));
16996
20065
  };
16997
- useEffect34(() => {
20066
+ useEffect35(() => {
16998
20067
  if (typeof mapContainer === "function")
16999
20068
  return;
17000
20069
  if (!(mapContainer == null ? void 0 : mapContainer.current))
@@ -17036,7 +20105,7 @@ var MapLibre = forwardRef5(({ baseLayers, customLayers, mapControls, sourceData
17036
20105
  function loadSvgImage() {
17037
20106
  return __async(this, null, function* () {
17038
20107
  let svgText = renderToStaticMarkup(
17039
- /* @__PURE__ */ jsx79(MapPinIcon5, { className: "w-6 h-6" })
20108
+ /* @__PURE__ */ jsx81(MapPinIcon5, { className: "w-6 h-6" })
17040
20109
  );
17041
20110
  svgText = svgText.replace('fill="currentColor"', 'fill="#06b6d4"');
17042
20111
  const img = new Image();
@@ -17132,9 +20201,9 @@ var MapLibre = forwardRef5(({ baseLayers, customLayers, mapControls, sourceData
17132
20201
  }, [sourceData, mapControls]);
17133
20202
  if (!sourceData)
17134
20203
  return;
17135
- return /* @__PURE__ */ jsxs57("div", { className: "relative", style: { width: "100%", height: "100vh" }, children: [
17136
- /* @__PURE__ */ jsx79("div", { ref: mapContainer, className: "w-full h-full" }),
17137
- /* @__PURE__ */ jsx79(MapControlToolbar, { controls: mapControl, onToggleControl: (id) => toggleControl(id) })
20204
+ return /* @__PURE__ */ jsxs59("div", { className: "relative", style: { width: "100%", height: "100vh" }, children: [
20205
+ /* @__PURE__ */ jsx81("div", { ref: mapContainer, className: "w-full h-full" }),
20206
+ /* @__PURE__ */ jsx81(MapControlToolbar, { controls: mapControl, onToggleControl: (id) => toggleControl(id) })
17138
20207
  ] });
17139
20208
  });
17140
20209
  export {