@geowiki/design-system 0.16.0-dev.1 → 0.16.0-dev.3

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/README.md ADDED
@@ -0,0 +1,254 @@
1
+ # @geowiki/design-system
2
+
3
+ The foundational UI component library for the GeoWiki platform. This package provides accessible, themeable components built on [Radix UI](https://www.radix-ui.com/) primitives, a comprehensive icon set, design tokens, and shared utilities — all styled with [Tailwind CSS](https://tailwindcss.com/).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @geowiki/design-system
9
+ ```
10
+
11
+ **Peer dependencies:** `react >= 18.2.0` and `react-dom >= 18.2.0`
12
+
13
+ ## Setup
14
+
15
+ ### 1. Import styles
16
+
17
+ Import the package stylesheet in your application entry point:
18
+
19
+ ```tsx
20
+ import "@geowiki/design-system/styles.css";
21
+ ```
22
+
23
+ ### 2. Extend Tailwind config
24
+
25
+ To use the design system's Tailwind theme (colors, typography, animations) in your own components:
26
+
27
+ ```js
28
+ // tailwind.config.js
29
+ const designSystemConfig = require("@geowiki/design-system/tailwind-config");
30
+
31
+ /** @type {import('tailwindcss').Config} */
32
+ module.exports = {
33
+ presets: [designSystemConfig],
34
+ content: [
35
+ "./src/**/*.{js,ts,jsx,tsx}",
36
+ // Include design-system components in Tailwind's content scan
37
+ "./node_modules/@geowiki/design-system/dist/**/*.{js,mjs}",
38
+ ],
39
+ };
40
+ ```
41
+
42
+ ### 3. Import components
43
+
44
+ ```tsx
45
+ import { Button, Dialog, DialogContent, DialogTrigger, cn } from "@geowiki/design-system";
46
+ ```
47
+
48
+ ## Package Exports
49
+
50
+ | Export Path | Description |
51
+ | ---------------------------------- | ------------------------------------------ |
52
+ | `@geowiki/design-system` | All components, icons, hooks, and utilities |
53
+ | `@geowiki/design-system/styles.css` | Compiled CSS (Tailwind + design tokens) |
54
+ | `@geowiki/design-system/tailwind-config` | Tailwind configuration preset |
55
+
56
+ ## Component Catalog
57
+
58
+ ### UI Primitives
59
+
60
+ 41 accessible, unstyled-by-default components built on Radix UI, styled with Tailwind and `class-variance-authority`:
61
+
62
+ | Component | Component | Component | Component |
63
+ | --------- | --------- | --------- | --------- |
64
+ | Accordion | Alert | AlertDialog | AspectRatio |
65
+ | Avatar | Badge | Button | Calendar |
66
+ | Card | Checkbox | Collapsible | Command |
67
+ | ContextMenu | Dialog | DropdownMenu | Form |
68
+ | HoverCard | Input | Label | Menubar |
69
+ | NavigationMenu | Popover | Progress | RadioGroup |
70
+ | ScrollArea | Select | Separator | Sheet |
71
+ | Skeleton | Slider | Switch | Table |
72
+ | Tabs | Tag | TagList | Textarea |
73
+ | Toast | Toaster | Toggle | Tooltip |
74
+ | useToast | | | |
75
+
76
+ ### Icons
77
+
78
+ 28 custom SVG icon components for application UI:
79
+
80
+ `AccountIcon` `AtomIcon` `BookTextIcon` `CalendarIcon` `CameraIcon` `ChartLineDotsIcon` `ChatsIcons` `ClipboardIcon` `CpuIcon` `DesktopCodeIcon` `FarmerClustersIcon` `GridDividersIcon` `HardDriveIcon` `HeadphonesIcon` `ImageIcon` `LayerGroupIcon` `LegendIcon` `MapLayersIcon` `MicroscopeIcon` `MinusIcon` `PlusIcon` `ResourcesIcon` `SettingsIcon` `StopWatchCheckIcon` `UserGroupIcon` `VideoPlayIcon` `XIcon`
81
+
82
+ A polymorphic `Icon` component is also available for dynamic icon rendering.
83
+
84
+ ### Map Icons
85
+
86
+ 11 specialized icons for GIS and map visualization:
87
+
88
+ `Download` `FarmerClusterPin` `Hexagon` `IconPaths` `Legend` `LocationIcon` `MapIcon` `Microscope` `ObservationPin` `Overlay` `UsersGroup`
89
+
90
+ ### Design Elements
91
+
92
+ 22 higher-level, application-specific components:
93
+
94
+ `AboutInfoItem` `Breadcrumb` `DesignButton` `Carousel` `DesignCheckbox` `Cookies` `Country` `Infobox` `DesignInput` `KeyInfoItem` `LastUpdatedTag` `NoResults` `DesignRadioGroup` `DesignSelect` `SimpleTag` `DesignSwitch` `DesignTag` `TagsGroup` `TestWeight` `ThreeColumn` `Typography` `VersionDisplay`
95
+
96
+ ### Elements
97
+
98
+ 15 utility and presentation components:
99
+
100
+ `ElementButton` `ButtonLink` `Error` `FeatureDisabled` `IframeViewer` `Loader` `LocalLoader` `MediaEmbedItem` `PermissionDisabled` `ShowLargeText` `ShowShortText` `SizedImage` `UnderConstruction` `DisplayItem`
101
+
102
+ ### Shared Components
103
+
104
+ Reusable composite components and hooks:
105
+
106
+ | Component | Description |
107
+ | --------- | ----------- |
108
+ | `CustomTable` | Data table built on `@tanstack/react-table` |
109
+ | `FullPageLoader` | Full-screen loading overlay |
110
+ | `CustomImage` | Enhanced image component |
111
+ | `Loader` | Inline loading spinner |
112
+ | `Pagination` | Page navigation controls |
113
+ | `Search` | Search input with debounce |
114
+ | `ThemeSwitcher` | Light/dark theme toggle |
115
+ | `useDebounce` | Debounce hook for values |
116
+
117
+ ### Buttons & Inputs
118
+
119
+ | Component | Description |
120
+ | --------- | ----------- |
121
+ | `DeleteButton` | Destructive action button |
122
+ | `PrimaryButton` | Primary CTA button |
123
+ | `OldCustomInput` | Legacy styled input |
124
+ | `MultiSelect` | Multi-value select (react-select) |
125
+ | `TextArea` | Styled textarea |
126
+
127
+ ### Other
128
+
129
+ | Component | Description |
130
+ | --------- | ----------- |
131
+ | `UmamiAnalytics` | Umami analytics script injection |
132
+ | `HeroImage` | Hero section image component |
133
+ | `Horizontal` | Horizontal panel layout |
134
+
135
+ ## Utilities
136
+
137
+ | Export | Description |
138
+ | ------ | ----------- |
139
+ | `cn(...inputs)` | Merges class names using `clsx` + `tailwind-merge`. Use this instead of raw string concatenation to avoid Tailwind class conflicts. |
140
+ | `getPages(totalItems, pageSize)` | Calculates pagination metadata (total pages, offsets). |
141
+
142
+ ## Models
143
+
144
+ | Export | Description |
145
+ | ------ | ----------- |
146
+ | `LinkButtonItem` | TypeScript interface for link button configuration objects. |
147
+
148
+ ## Design Tokens
149
+
150
+ The package ships a comprehensive set of CSS custom properties defined in `src/styles/tokens.css`. These tokens drive the Tailwind theme and can be overridden for theming.
151
+
152
+ ### Color System
153
+
154
+ - **Primary scale:** `--primary-50` through `--primary-950` (11 steps)
155
+ - **Semantic colors:** `--background`, `--foreground`, `--card`, `--popover`, `--muted`, `--secondary`, `--accent`, `--destructive`, `--border`, `--input`, `--ring`
156
+ - **Tag palette:** 11 named tag colors — blue, dark-blue, light-green, dark-green, orange, light-purple, purple, dark-purple, pink, turquoise, yellow
157
+ - **Legacy colors:** `--primary-black`, `--primary-green`, `--primary-white`, `--system-error`
158
+
159
+ ### Typography
160
+
161
+ Fonts: **Montserrat** (primary), **Open Sans**, **Hanken Grotesk**
162
+
163
+ | Scale | Sizes |
164
+ | ----- | ----- |
165
+ | Headings | `h1`–`h9` (with accent/italic variants for `h1`, `h2`) |
166
+ | Body | `body-12`, `body-14`, `body-15`, `body-16`, `body-18`, `body-20` (with medium/semibold/bold variants) |
167
+ | Landing | `landing-title` (80px, with accent italic variant) |
168
+ | Caption | `caption` (16px, tracked) |
169
+
170
+ ## Architecture
171
+
172
+ ```
173
+ @geowiki/design-system
174
+ ├── src/
175
+ │ ├── components/
176
+ │ │ ├── ui/ # Radix UI primitives (41)
177
+ │ │ ├── Icons/ # Custom SVG icons (28)
178
+ │ │ │ └── MapIcons/ # GIS-specific icons (11)
179
+ │ │ ├── DesignElements/ # Application components (22)
180
+ │ │ ├── Elements/ # Utility components (15)
181
+ │ │ ├── Shared/ # Composite components (8) + hooks
182
+ │ │ ├── Button/ # Specialized buttons (2)
183
+ │ │ ├── Input/ # Input variants (3)
184
+ │ │ ├── Analytics/ # Analytics integration
185
+ │ │ ├── Hero/ # Hero section
186
+ │ │ └── Panel/ # Panel layouts
187
+ │ ├── lib/
188
+ │ │ ├── utils.ts # cn(), getPages()
189
+ │ │ ├── models/ # TypeScript interfaces
190
+ │ │ └── styles/
191
+ │ │ └── tokens.css # CSS custom properties
192
+ │ └── index.tsx # Barrel export
193
+ ├── tailwind.config.js # Tailwind theme (importable as preset)
194
+ ├── styles.css # Entry point for CSS build
195
+ └── tsup.config.ts # Build configuration
196
+ ```
197
+
198
+ ### How it fits in the monorepo
199
+
200
+ ```
201
+ geowiki app → @geowiki/ui → @geowiki/design-system
202
+ (business UI) (primitives & tokens)
203
+ ```
204
+
205
+ `@geowiki/design-system` contains only standalone, dependency-free UI components. It has no knowledge of APIs, state management, or application logic. The `@geowiki/ui` package imports from design-system and adds business-specific behavior (API integration, store bindings, etc.).
206
+
207
+ ## Development
208
+
209
+ ### Scripts
210
+
211
+ ```bash
212
+ pnpm build # Build with tsup + Tailwind CSS
213
+ pnpm lint # ESLint
214
+ pnpm type-check # TypeScript validation
215
+ pnpm clean # Remove dist, node_modules, .turbo
216
+ ```
217
+
218
+ ### Build output
219
+
220
+ The build produces three artifacts in `dist/`:
221
+
222
+ | File | Format | Description |
223
+ | ---- | ------ | ----------- |
224
+ | `index.js` | CommonJS | Node.js / bundler import |
225
+ | `index.mjs` | ESM | Modern bundler import |
226
+ | `index.d.ts` | TypeScript | Type declarations |
227
+ | `styles.css` | CSS | Minified Tailwind + tokens |
228
+
229
+ ### Adding a new component
230
+
231
+ 1. Create the component in the appropriate `src/components/` subdirectory.
232
+ 2. Export it from `src/index.tsx`.
233
+ 3. If the component uses new design tokens, add the CSS custom properties to `src/styles/tokens.css` and map them in `tailwind.config.js`.
234
+ 4. Run `pnpm build` to verify the build succeeds.
235
+
236
+ ## Tech Stack
237
+
238
+ | Concern | Library |
239
+ | ------- | ------- |
240
+ | Component primitives | [Radix UI](https://www.radix-ui.com/) |
241
+ | Styling | [Tailwind CSS 3.3](https://tailwindcss.com/) |
242
+ | Variant API | [class-variance-authority](https://cva.style/) |
243
+ | Class merging | [clsx](https://github.com/lukeed/clsx) + [tailwind-merge](https://github.com/dcastil/tailwind-merge) |
244
+ | Icons | Custom SVG + [Lucide React](https://lucide.dev/) + [Heroicons](https://heroicons.com/) |
245
+ | Data tables | [@tanstack/react-table](https://tanstack.com/table) |
246
+ | Multi-select | [react-select](https://react-select.com/) |
247
+ | Calendar | [react-day-picker](https://react-day-picker.js.org/) |
248
+ | Carousel | [Embla Carousel](https://www.embla-carousel.com/) |
249
+ | Command palette | [cmdk](https://cmdk.paco.me/) |
250
+ | Build tool | [tsup](https://tsup.egoist.dev/) |
251
+
252
+ ## License
253
+
254
+ MIT
package/dist/index.d.ts CHANGED
@@ -359,11 +359,11 @@ interface TagProps {
359
359
  }
360
360
  declare const Tag: ({ tag, className }: TagProps) => react_jsx_runtime.JSX.Element;
361
361
 
362
- interface Props$g {
362
+ interface Props$i {
363
363
  tags?: string[];
364
364
  tagColor?: string;
365
365
  }
366
- declare const TagList: (props: Props$g) => react_jsx_runtime.JSX.Element;
366
+ declare const TagList: (props: Props$i) => react_jsx_runtime.JSX.Element;
367
367
 
368
368
  interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaElement> {
369
369
  }
@@ -605,14 +605,14 @@ interface FullPageLoaderProps {
605
605
  }
606
606
  declare const FullPageLoader: ({ show }: FullPageLoaderProps) => react_jsx_runtime.JSX.Element | null;
607
607
 
608
- interface Props$f {
608
+ interface Props$h {
609
609
  src: string;
610
610
  className?: string;
611
611
  alternativeText?: string;
612
612
  width?: number | string;
613
613
  height?: number | string;
614
614
  }
615
- declare const CustomImage: (props: Props$f) => react_jsx_runtime.JSX.Element;
615
+ declare const CustomImage: (props: Props$h) => react_jsx_runtime.JSX.Element;
616
616
 
617
617
  declare const Loader: () => react_jsx_runtime.JSX.Element;
618
618
 
@@ -632,7 +632,7 @@ declare const ThemeSwitcher: () => react_jsx_runtime.JSX.Element;
632
632
 
633
633
  declare const useDebounce: <V extends unknown>(value: V, delay?: number) => V;
634
634
 
635
- interface Props$e {
635
+ interface Props$g {
636
636
  register?: any;
637
637
  value?: any;
638
638
  defaultValue?: any;
@@ -648,9 +648,9 @@ interface Props$e {
648
648
  noDisplayTextAsLabel?: boolean;
649
649
  cssClass?: string;
650
650
  }
651
- declare const OldCustomInput: (props: Props$e) => react_jsx_runtime.JSX.Element;
651
+ declare const OldCustomInput: (props: Props$g) => react_jsx_runtime.JSX.Element;
652
652
 
653
- type Props$d = {
653
+ type Props$f = {
654
654
  name: string;
655
655
  displayText: string;
656
656
  register: any;
@@ -666,9 +666,9 @@ type Props$d = {
666
666
  Placeholder?: string;
667
667
  showLabel?: boolean;
668
668
  };
669
- declare const MultiSelect: (props: Props$d) => react_jsx_runtime.JSX.Element;
669
+ declare const MultiSelect: (props: Props$f) => react_jsx_runtime.JSX.Element;
670
670
 
671
- interface Props$c {
671
+ interface Props$e {
672
672
  register: any;
673
673
  value: any;
674
674
  defaultValue?: any;
@@ -682,7 +682,7 @@ interface Props$c {
682
682
  isLabelBold?: boolean;
683
683
  isPlaceholderItalic?: boolean;
684
684
  }
685
- declare const TextArea: (props: Props$c) => react_jsx_runtime.JSX.Element;
685
+ declare const TextArea: (props: Props$e) => react_jsx_runtime.JSX.Element;
686
686
 
687
687
  interface UmamiAnalyticsProps {
688
688
  scriptUrl?: string;
@@ -698,18 +698,18 @@ interface UmamiAnalyticsProps {
698
698
  */
699
699
  declare const UmamiAnalytics: React__default.FC<UmamiAnalyticsProps>;
700
700
 
701
- type Props$b = {
701
+ type Props$d = {
702
702
  onClick: any;
703
703
  };
704
- declare const DeleteButton: (props: Props$b) => react_jsx_runtime.JSX.Element;
704
+ declare const DeleteButton: (props: Props$d) => react_jsx_runtime.JSX.Element;
705
705
 
706
- type Props$a = {
706
+ type Props$c = {
707
707
  onClick?: () => void;
708
708
  label: string;
709
709
  type: "button" | "submit";
710
710
  style: "primary" | "secondary" | "danger";
711
711
  };
712
- declare const PrimaryButton: (props: Props$a) => react_jsx_runtime.JSX.Element;
712
+ declare const PrimaryButton: (props: Props$c) => react_jsx_runtime.JSX.Element;
713
713
 
714
714
  interface AboutInfoItemProps {
715
715
  title: string;
@@ -773,10 +773,10 @@ interface CookiesProps {
773
773
  }
774
774
  declare const Cookies: ({ handleAccept, handleDecline }: CookiesProps) => react_jsx_runtime.JSX.Element | null;
775
775
 
776
- interface Props$9 {
776
+ interface Props$b {
777
777
  country: string;
778
778
  }
779
- declare const CountryItem: ({ country }: Props$9) => react_jsx_runtime.JSX.Element;
779
+ declare const CountryItem: ({ country }: Props$b) => react_jsx_runtime.JSX.Element;
780
780
 
781
781
  interface InfoBoxProps {
782
782
  title: string;
@@ -797,10 +797,10 @@ interface KeyInfoItemProps$1 {
797
797
  }
798
798
  declare const KeyInfoItem: ({ label, value }: KeyInfoItemProps$1) => react_jsx_runtime.JSX.Element;
799
799
 
800
- interface Props$8 {
800
+ interface Props$a {
801
801
  date: string | number | Date;
802
802
  }
803
- declare const LastUpdatedTag: ({ date }: Props$8) => react_jsx_runtime.JSX.Element;
803
+ declare const LastUpdatedTag: ({ date }: Props$a) => react_jsx_runtime.JSX.Element;
804
804
 
805
805
  declare const NoResults: () => react_jsx_runtime.JSX.Element;
806
806
 
@@ -818,14 +818,14 @@ declare const DesignSelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPr
818
818
  declare const DesignSelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
819
819
  declare const DesignSelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
820
820
 
821
- interface Props$7 {
821
+ interface Props$9 {
822
822
  tag: string;
823
823
  }
824
824
  declare const designSimpleTagVariants: (props?: ({
825
825
  variant?: "blue" | "orange" | "purple" | "turquoise" | "yellow" | "darkGreen" | "darkBlue" | null | undefined;
826
826
  } & class_variance_authority_dist_types.ClassProp) | undefined) => string;
827
827
  type TagType$1 = VariantProps<typeof designSimpleTagVariants> & ComponentProps<"span">;
828
- declare const DesignSimpleTag: ({ tag, variant, className, }: Props$7 & TagType$1) => react_jsx_runtime.JSX.Element;
828
+ declare const DesignSimpleTag: ({ tag, variant, className, }: Props$9 & TagType$1) => react_jsx_runtime.JSX.Element;
829
829
 
830
830
  declare const DesignSwitch: React$1.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
831
831
 
@@ -842,24 +842,26 @@ interface KeyInfoItemProps {
842
842
  }
843
843
  declare const TagsGroup: ({ label, tags, variant }: KeyInfoItemProps) => react_jsx_runtime.JSX.Element;
844
844
 
845
- interface Props$6 {
845
+ interface Props$8 {
846
846
  text: string;
847
847
  }
848
848
  declare const weightVariants: (props?: ({
849
849
  variant?: "weight100" | "weight200" | "weight300" | "weight400" | "weight500" | "weight600" | "weight700" | "weight800" | "weight900" | null | undefined;
850
850
  } & class_variance_authority_dist_types.ClassProp) | undefined) => string;
851
851
  type TagType = VariantProps<typeof weightVariants> & ComponentProps<"div">;
852
- declare const TestWeight: ({ text, variant, className }: Props$6 & TagType) => react_jsx_runtime.JSX.Element;
852
+ declare const TestWeight: ({ text, variant, className }: Props$8 & TagType) => react_jsx_runtime.JSX.Element;
853
853
 
854
- interface Props$5 {
854
+ interface Props$7 {
855
855
  tag: string;
856
856
  content: React.ReactNode;
857
857
  TagClassName?: string;
858
858
  }
859
- declare const ThreeColumn: ({ tag, content, TagClassName }: Props$5) => react_jsx_runtime.JSX.Element;
859
+ declare const ThreeColumn: ({ tag, content, TagClassName }: Props$7) => react_jsx_runtime.JSX.Element;
860
860
 
861
861
  declare const LandingTitle: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
862
862
  declare const LandingTitleAccent: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
863
+ declare const BigLandingTitle: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
864
+ declare const BigLandingTitleAccent: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
863
865
  declare const H1Design: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
864
866
  declare const H1AccentDesign: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
865
867
  declare const H2Design: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">>;
@@ -871,7 +873,7 @@ declare const H6Design: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAtt
871
873
  declare const H7Design: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
872
874
  declare const H8Design: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
873
875
  declare const H9Design: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
874
- declare const Caption: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
876
+ declare const Caption: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
875
877
  declare const Body20sb: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
876
878
  declare const Body20m: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
877
879
  declare const Body20: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">>;
@@ -895,14 +897,141 @@ declare const Body12: ForwardRefExoticComponent<Omit<DetailedHTMLProps<HTMLAttri
895
897
 
896
898
  declare const VersionDisplay: () => react_jsx_runtime.JSX.Element | null;
897
899
 
900
+ interface DesignHeaderProps {
901
+ branding: {
902
+ logo: string;
903
+ title: string;
904
+ };
905
+ mainMenu: {
906
+ link: string;
907
+ text: string;
908
+ isNewTab?: boolean;
909
+ subMenu?: {
910
+ link: string;
911
+ text: string;
912
+ isNewTab?: boolean;
913
+ }[];
914
+ }[];
915
+ sessionStatus: "authenticated" | "unauthenticated" | "loading";
916
+ canLogin: boolean;
917
+ canSignUp: boolean;
918
+ isAdmin: boolean;
919
+ hasStickyNavBar?: boolean;
920
+ isFeatureEnabled?: boolean;
921
+ rootUrl?: string;
922
+ signIn?: any;
923
+ signOut?: any;
924
+ }
925
+ declare const DesignHeader: ({ branding, mainMenu, sessionStatus, canLogin, canSignUp: canSignup, isAdmin, hasStickyNavBar, signIn, signOut, isFeatureEnabled, rootUrl, }: DesignHeaderProps) => react_jsx_runtime.JSX.Element;
926
+
927
+ interface ResourcesQuickFindProps {
928
+ id: string;
929
+ background_color: string;
930
+ background_opacity: string;
931
+ title: string;
932
+ shouldParseTitle: boolean;
933
+ description: string;
934
+ resource_finder_text?: string;
935
+ resource_finder_url?: string;
936
+ parent_list_title: string;
937
+ parent_list: {
938
+ key: string;
939
+ value: string;
940
+ link?: string;
941
+ }[];
942
+ child_list?: {
943
+ key: string;
944
+ value: string;
945
+ }[];
946
+ child_list_title?: string;
947
+ download_resource: boolean;
948
+ }
949
+ declare const ResourcesQuickFind: (props: ResourcesQuickFindProps) => react_jsx_runtime.JSX.Element;
950
+
951
+ interface FAQProps {
952
+ faqs: {
953
+ question: string;
954
+ answer: React.ReactNode;
955
+ hint?: string;
956
+ }[];
957
+ backgroundColor?: string;
958
+ }
959
+
960
+ interface Props$6 {
961
+ id: string;
962
+ title: string;
963
+ subtitle: string;
964
+ description?: string;
965
+ faqs?: FAQProps["faqs"];
966
+ backgroundColor?: string;
967
+ }
968
+ declare const FaqComponent: (props: Props$6) => react_jsx_runtime.JSX.Element;
969
+
970
+ interface ItemProps {
971
+ name: string;
972
+ href: string;
973
+ }
974
+ interface FooterProps {
975
+ branding: {
976
+ logo: string;
977
+ title: string;
978
+ };
979
+ navigation: {
980
+ category: string;
981
+ items: ItemProps[];
982
+ }[];
983
+ bottomMenu: {
984
+ name: string;
985
+ href: string;
986
+ iconPath?: string;
987
+ }[];
988
+ footerLogoPath: string | undefined;
989
+ footerText: string;
990
+ imagesPaths: string[] | undefined;
991
+ copyrights?: string | undefined;
992
+ socialLinks?: {
993
+ name: string;
994
+ href: string;
995
+ isNewTab?: boolean;
996
+ }[];
997
+ }
998
+ declare const DesignFooter: (props: FooterProps) => react_jsx_runtime.JSX.Element;
999
+
1000
+ interface AppItemProps {
1001
+ item: {
1002
+ id: string;
1003
+ name: string;
1004
+ logoUrl: string;
1005
+ locationType: string;
1006
+ dataDownloadLinks?: string[];
1007
+ externalWebsiteLink?: string;
1008
+ };
1009
+ }
1010
+ declare const AppItem: (props: AppItemProps) => react_jsx_runtime.JSX.Element;
1011
+
1012
+ interface AppItemListProps {
1013
+ id: string;
1014
+ name: string;
1015
+ title: string;
1016
+ allItems: {
1017
+ id: string;
1018
+ name: string;
1019
+ logoUrl: string;
1020
+ locationType: string;
1021
+ dataDownloadLinks?: string[];
1022
+ externalWebsiteLink?: string;
1023
+ }[];
1024
+ }
1025
+ declare const AppItemsList: (props: AppItemListProps) => react_jsx_runtime.JSX.Element;
1026
+
898
1027
  declare const OldButton: ({ label, appearance, compact, handleClick, loading, type, }: any) => react_jsx_runtime.JSX.Element;
899
1028
 
900
- interface Props$4 {
1029
+ interface Props$5 {
901
1030
  button: any;
902
1031
  appearance: any;
903
1032
  compact: any;
904
1033
  }
905
- declare const ButtonContent: ({ button, appearance, compact }: Props$4) => react_jsx_runtime.JSX.Element;
1034
+ declare const ButtonContent: ({ button, appearance, compact }: Props$5) => react_jsx_runtime.JSX.Element;
906
1035
  interface ButtonLinkProps {
907
1036
  button: any;
908
1037
  appearance: any;
@@ -910,10 +1039,10 @@ interface ButtonLinkProps {
910
1039
  }
911
1040
  declare const ButtonLink: ({ button, appearance, compact, }: ButtonLinkProps) => react_jsx_runtime.JSX.Element;
912
1041
 
913
- interface Props$3 {
1042
+ interface Props$4 {
914
1043
  message?: string;
915
1044
  }
916
- declare const ErrorMessage: (props: Props$3) => react_jsx_runtime.JSX.Element;
1045
+ declare const ErrorMessage: (props: Props$4) => react_jsx_runtime.JSX.Element;
917
1046
 
918
1047
  declare const FeatureDisabled: () => react_jsx_runtime.JSX.Element;
919
1048
 
@@ -939,27 +1068,27 @@ declare const MediaEmbedItem: ({ alt, src }: MediaEmbedItemProps) => react_jsx_r
939
1068
 
940
1069
  declare const PermissionDisabled: () => react_jsx_runtime.JSX.Element;
941
1070
 
942
- interface Props$2 {
1071
+ interface Props$3 {
943
1072
  label: string;
944
1073
  value?: string;
945
1074
  colSpan?: number;
946
1075
  }
947
- declare const ShowLargeText: (props: Props$2) => react_jsx_runtime.JSX.Element;
1076
+ declare const ShowLargeText: (props: Props$3) => react_jsx_runtime.JSX.Element;
948
1077
 
949
- interface Props$1 {
1078
+ interface Props$2 {
950
1079
  label: string;
951
1080
  value?: string;
952
1081
  }
953
- declare const ShowShortText: (props: Props$1) => react_jsx_runtime.JSX.Element;
1082
+ declare const ShowShortText: (props: Props$2) => react_jsx_runtime.JSX.Element;
954
1083
 
955
- type Props = {
1084
+ type Props$1 = {
956
1085
  src: string;
957
1086
  width: number;
958
1087
  height: number;
959
1088
  alt?: string;
960
1089
  className?: string;
961
1090
  };
962
- declare const SizedImage: (props: Props) => react_jsx_runtime.JSX.Element;
1091
+ declare const SizedImage: (props: Props$1) => react_jsx_runtime.JSX.Element;
963
1092
 
964
1093
  declare const UnderConstruction: () => react_jsx_runtime.JSX.Element;
965
1094
 
@@ -968,12 +1097,36 @@ type DisplayItem = {
968
1097
  label: any;
969
1098
  };
970
1099
 
1100
+ interface FeaturedItemProps {
1101
+ featuredItem: {
1102
+ name: string;
1103
+ bannerImageUrl: string;
1104
+ landscapeBannerUrl: string;
1105
+ portraitBannerUrl?: string;
1106
+ }[];
1107
+ itemDetails: {
1108
+ id: string;
1109
+ name: string;
1110
+ externalWebsiteLink?: string;
1111
+ };
1112
+ }
1113
+ declare const FeaturedItemWithBannerImage: (props: FeaturedItemProps) => react_jsx_runtime.JSX.Element;
1114
+
971
1115
  interface HeroImageProps {
972
1116
  path: string | undefined;
973
1117
  cmsUrl: string;
974
1118
  }
975
1119
  declare const HeroImage: ({ path, cmsUrl }: HeroImageProps) => react_jsx_runtime.JSX.Element;
976
1120
 
1121
+ interface HeroProps {
1122
+ path: string | undefined;
1123
+ title: string | null | undefined;
1124
+ description: string | null | undefined;
1125
+ google_marketplace_app?: string;
1126
+ apple_store_app?: string;
1127
+ }
1128
+ declare const HeroImageRightWithAppButtons: (props: HeroProps) => react_jsx_runtime.JSX.Element;
1129
+
977
1130
  interface IPanelHorizontalProps {
978
1131
  children: React.ReactNode;
979
1132
  }
@@ -985,4 +1138,14 @@ interface LinkButtonItem {
985
1138
  link?: string;
986
1139
  }
987
1140
 
988
- export { AboutInfoItem, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AccountIcon, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, AtomIcon, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Body12, Body12m, Body12sb, Body14, Body14m, Body14sb, Body15, Body15it, Body15m, Body15sb, Body16, Body16it, Body16m, Body16sb, Body18, Body18m, Body18sb, Body20, Body20m, Body20sb, BookTextIcon, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonContent, ButtonLink, type ButtonProps$1 as ButtonProps, Calendar, CalendarIcon, type CalendarProps, CameraIcon, Caption, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartLineDotsIcon, ChatsIcons, Checkbox$1 as Checkbox, ClipboardIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Cookies, CountryItem, CpuIcon, CustomImage, CustomTable, DeleteButton, DesignButton, Checkbox as DesignCheckbox, DesignInput, type DesignInputProps, DesignRadioGroup, DesignRadioGroupItem, DesignResultTag, DesignSelect, DesignSelectContent, DesignSelectGroup, DesignSelectItem, DesignSelectLabel, DesignSelectSeparator, DesignSelectTrigger, DesignSelectValue, DesignSimpleTag, DesignSwitch, DesktopCodeIcon, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, type DisplayItem, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ErrorMessage, FarmerClusterPin, FarmerClustersIcon, FeatureDisabled, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FullPageLoader, GridDividersIcon, H1AccentDesign, H1Design, H2AccentDesign, H2Design, H3Design, H4Design, H5Design, H6Design, H7Design, H8Design, H9Design, HardDriveIcon, HeadphonesIcon, HeroImage, Hexagon, HoverCard, HoverCardContent, HoverCardTrigger, type IPanelHorizontalProps, Icon, IconPaths, IframeViewer, ImageIcon, InfoBox, Input, type InputProps, KeyInfoItem, Label, LandingTitle, LandingTitleAccent, LastUpdatedTag, LayerGroupIcon, LegendIcon, type LinkButtonItem, Loader, LoaderFull, LocalLoader, LocationIcon, MapIcon, MapLayersIcon, MapLegendIcon, MediaEmbedItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Microscope, MicroscopeIcon, MinusIcon, MultiSelect, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NoResults, ObservationPin, OldButton, OldCustomInput, OverlayIcon, Pagination, PanelHorizontal, PermissionDisabled, PlusIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PrimaryButton, Progress, RadioGroup, RadioGroupItem, ResourcesIcon, ScrollArea, ScrollBar, Search, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShowLargeText, ShowShortText, SizedImage, Skeleton, Slider, StopWatchCheckIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, type TableViewProps, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TagList, TagsGroup, TestWeight, TextArea, Textarea, type TextareaProps, ThemeSwitcher, ThreeColumn, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UmamiAnalytics, UnderConstruction, UserGroupIcon, UsersGroup, VersionDisplay, VideoPlayIcon, XIcon, badgeVariants, buttonVariants, cn, designButtonVariants, getPages, navigationMenuTriggerStyle, reducer, toast, toggleVariants, useDebounce, useFormField, useToast };
1141
+ interface Props {
1142
+ id: string;
1143
+ title: string;
1144
+ textBody: string;
1145
+ tag: string;
1146
+ button?: LinkButtonItem;
1147
+ bottomPadding?: string;
1148
+ }
1149
+ declare const H2BodyButton: (props: Props) => react_jsx_runtime.JSX.Element;
1150
+
1151
+ export { AboutInfoItem, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AccountIcon, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppItem, AppItemsList, AspectRatio, AtomIcon, Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, BigLandingTitle, BigLandingTitleAccent, Body12, Body12m, Body12sb, Body14, Body14m, Body14sb, Body15, Body15it, Body15m, Body15sb, Body16, Body16it, Body16m, Body16sb, Body18, Body18m, Body18sb, Body20, Body20m, Body20sb, BookTextIcon, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonContent, ButtonLink, ButtonProps$1 as ButtonProps, Calendar, CalendarIcon, CalendarProps, CameraIcon, Caption, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartLineDotsIcon, ChatsIcons, Checkbox$1 as Checkbox, ClipboardIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Cookies, CountryItem, CpuIcon, CustomImage, CustomTable, DeleteButton, DesignButton, Checkbox as DesignCheckbox, DesignFooter, DesignHeader, DesignHeaderProps, DesignInput, DesignInputProps, DesignRadioGroup, DesignRadioGroupItem, DesignResultTag, DesignSelect, DesignSelectContent, DesignSelectGroup, DesignSelectItem, DesignSelectLabel, DesignSelectSeparator, DesignSelectTrigger, DesignSelectValue, DesignSimpleTag, DesignSwitch, DesktopCodeIcon, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisplayItem, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ErrorMessage, FaqComponent, FarmerClusterPin, FarmerClustersIcon, FeatureDisabled, FeaturedItemWithBannerImage, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FullPageLoader, GridDividersIcon, H1AccentDesign, H1Design, H2AccentDesign, H2BodyButton, H2Design, H3Design, H4Design, H5Design, H6Design, H7Design, H8Design, H9Design, HardDriveIcon, HeadphonesIcon, HeroImage, HeroImageRightWithAppButtons, Hexagon, HoverCard, HoverCardContent, HoverCardTrigger, IPanelHorizontalProps, Icon, IconPaths, IframeViewer, ImageIcon, InfoBox, Input, InputProps, KeyInfoItem, Label, LandingTitle, LandingTitleAccent, LastUpdatedTag, LayerGroupIcon, LegendIcon, LinkButtonItem, Loader, LoaderFull, LocalLoader, LocationIcon, MapIcon, MapLayersIcon, MapLegendIcon, MediaEmbedItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Microscope, MicroscopeIcon, MinusIcon, MultiSelect, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NoResults, ObservationPin, OldButton, OldCustomInput, OverlayIcon, Pagination, PanelHorizontal, PermissionDisabled, PlusIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PrimaryButton, Progress, RadioGroup, RadioGroupItem, ResourcesIcon, ResourcesQuickFind, ScrollArea, ScrollBar, Search, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShowLargeText, ShowShortText, SizedImage, Skeleton, Slider, StopWatchCheckIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableViewProps, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TagList, TagsGroup, TestWeight, TextArea, Textarea, TextareaProps, ThemeSwitcher, ThreeColumn, Toast$1 as Toast, ToastAction, ToastActionElement, ToastClose, ToastDescription, ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UmamiAnalytics, UnderConstruction, UserGroupIcon, UsersGroup, VersionDisplay, VideoPlayIcon, XIcon, badgeVariants, buttonVariants, cn, designButtonVariants, getPages, navigationMenuTriggerStyle, reducer, toast, toggleVariants, useDebounce, useFormField, useToast };