@la-main-verte/shared-types 1.0.69 → 1.0.71

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.
@@ -1,36 +1,36 @@
1
- import type { PlantI } from './plant'
2
-
3
- export namespace PAGES {
4
- export interface SeedingTagI {
5
- label: string
6
- variant: string
7
- }
8
-
9
- export interface StartDateBadgeI {
10
- day: string
11
- month: string
12
- }
13
-
14
- export interface SeedingInfoI {
15
- tags: SeedingTagI[]
16
- startDateBadge: StartDateBadgeI | null
17
- description: string | null
18
- }
19
-
20
- export interface SeedableFamiliesByMonthResponse {
21
- title?: string | null
22
- subtitle?: string | null
23
- Plants: PlantI[]
24
- }
25
-
26
- export interface MonthPreviewI {
27
- month: number
28
- label: string
29
- previewPlants: Pick<PlantI, 'id' | 'name' | 'family' | 'slug' | 'imageURL'>[]
30
- totalFamiliesCount: number
31
- }
32
-
33
- export interface MonthsPreviewResponse {
34
- months: MonthPreviewI[]
35
- }
36
- }
1
+ import type { PlantI } from './plant'
2
+
3
+ export namespace PAGES {
4
+ export interface SeedingTagI {
5
+ label: string
6
+ variant: string
7
+ }
8
+
9
+ export interface StartDateBadgeI {
10
+ day: string
11
+ month: string
12
+ }
13
+
14
+ export interface SeedingInfoI {
15
+ tags: SeedingTagI[]
16
+ startDateBadge: StartDateBadgeI | null
17
+ description: string | null
18
+ }
19
+
20
+ export interface SeedableFamiliesByMonthResponse {
21
+ title?: string | null
22
+ subtitle?: string | null
23
+ Plants: PlantI[]
24
+ }
25
+
26
+ export interface MonthPreviewI {
27
+ month: number
28
+ label: string
29
+ previewPlants: Pick<PlantI, 'id' | 'name' | 'family' | 'slug' | 'imageURL'>[]
30
+ totalFamiliesCount: number
31
+ }
32
+
33
+ export interface MonthsPreviewResponse {
34
+ months: MonthPreviewI[]
35
+ }
36
+ }
package/src/plant.d.ts CHANGED
@@ -80,6 +80,11 @@ export interface PlantI {
80
80
  rotationFamily?: string
81
81
  taxonFamily?: TaxonFamilyI
82
82
  seedingInfo: SeedingInfoI
83
+ /**
84
+ * Contextual search text for recommended plants
85
+ * Provides additional context when suggesting plants for specific garden zones
86
+ */
87
+ contextualSearchText?: string
83
88
  }
84
89
 
85
90
  interface PlantTagI {
@@ -1,40 +1,40 @@
1
- export interface PlantFiltersConfigI {
2
- filters: PlantFilterI[]
3
- }
4
-
5
- export interface PlantFilterI {
6
- key: string // Path in the JSONB (ex: "growth.type")
7
- label: string // Label to display
8
- type: 'select' | 'multiselect' | 'boolean' | 'range'
9
- isMain?: boolean // If true, displayed as button filter; if false/undefined, in modal
10
- options?: FilterOptionI[] // For select/multiselect
11
- min?: number // For range
12
- max?: number // For range
13
- /** General help text for this filter attribute (always displayed) */
14
- helpText?: string
15
- /** Contextual help text based on member profile (displayed when relevant) */
16
- contextualHelpText?: string
17
- }
18
-
19
- export interface FilterOptionI {
20
- value: string
21
- label: string
22
- /** General help text for this option (always displayed) */
23
- helpText?: string
24
- /** Contextual help text based on member profile (displayed when relevant) */
25
- contextualHelpText?: string
26
- }
27
-
28
- /**
29
- * Member context used to generate contextual help texts
30
- */
31
- export interface MemberFilterContextI {
32
- /** Hardiness zone index (e.g., 30, 40, 50) - null if not available */
33
- hardinessZoneIndex: number | null
34
- /** Hardiness zone name (e.g., "4a", "5b") - null if not available */
35
- hardinessZoneName: string | null
36
- /** Whether the member has a greenhouse */
37
- hasGreenhouse: boolean
38
- /** Whether the member has a balcony */
39
- hasBalcony: boolean
40
- }
1
+ export interface PlantFiltersConfigI {
2
+ filters: PlantFilterI[]
3
+ }
4
+
5
+ export interface PlantFilterI {
6
+ key: string // Path in the JSONB (ex: "growth.type")
7
+ label: string // Label to display
8
+ type: 'select' | 'multiselect' | 'boolean' | 'range'
9
+ isMain?: boolean // If true, displayed as button filter; if false/undefined, in modal
10
+ options?: FilterOptionI[] // For select/multiselect
11
+ min?: number // For range
12
+ max?: number // For range
13
+ /** General help text for this filter attribute (always displayed) */
14
+ helpText?: string
15
+ /** Contextual help text based on member profile (displayed when relevant) */
16
+ contextualHelpText?: string
17
+ }
18
+
19
+ export interface FilterOptionI {
20
+ value: string
21
+ label: string
22
+ /** General help text for this option (always displayed) */
23
+ helpText?: string
24
+ /** Contextual help text based on member profile (displayed when relevant) */
25
+ contextualHelpText?: string
26
+ }
27
+
28
+ /**
29
+ * Member context used to generate contextual help texts
30
+ */
31
+ export interface MemberFilterContextI {
32
+ /** Hardiness zone index (e.g., 30, 40, 50) - null if not available */
33
+ hardinessZoneIndex: number | null
34
+ /** Hardiness zone name (e.g., "4a", "5b") - null if not available */
35
+ hardinessZoneName: string | null
36
+ /** Whether the member has a greenhouse */
37
+ hasGreenhouse: boolean
38
+ /** Whether the member has a balcony */
39
+ hasBalcony: boolean
40
+ }
@@ -1,13 +1,13 @@
1
- import { PlantI } from './plant.d.ts'
2
- import { SelectionI } from './selection.d.ts'
3
-
4
- export interface PlantSelectionI {
5
- id: number
6
- plantId: number
7
- selectionId: number
8
- seedQuantity: number
9
- createdAt: Date
10
- updatedAt: Date
11
- Plant: PlantI
12
- Selection: SelectionI
13
- }
1
+ import { PlantI } from './plant.d.ts'
2
+ import { SelectionI } from './selection.d.ts'
3
+
4
+ export interface PlantSelectionI {
5
+ id: number
6
+ plantId: number
7
+ selectionId: number
8
+ seedQuantity: number
9
+ createdAt: Date
10
+ updatedAt: Date
11
+ Plant: PlantI
12
+ Selection: SelectionI
13
+ }
@@ -1,92 +1,92 @@
1
- import { PlantI } from './plant.d'
2
- import { SelectionI } from './selection.d'
3
- import { ImageDataI } from './image.d'
4
-
5
- interface PlantExtendedDataI extends PlantI {
6
- /**
7
- * Future plant images gallery for now using notes as a proxy
8
- */
9
- Images: ImageDataI[]
10
- /**
11
- * Selections of the plant
12
- */
13
- Selections: SelectionI[]
14
- }
15
-
16
- export namespace PLANTS {
17
- export namespace RECOMMENDATIONS {
18
- /**
19
- * Request parameters for plant recommendations
20
- * @remarks identification by session token is optional
21
- */
22
- export interface Request {
23
- headers?: {
24
- 'x-session-token'?: string
25
- }
26
- query?: {
27
- gardenZoneId?: string | number
28
- selectionSlug?: string
29
- }
30
- }
31
- export type RecommendedPlantI = PlantExtendedDataI & {
32
- contextualSearchText?: string
33
- }
34
- export type Response = RecommendedPlantI[]
35
- }
36
- export namespace SEARCH {
37
- /**
38
- * Request parameters for plant recommendations
39
- * @remarks identification by session token is optional
40
- */
41
- export interface Request {
42
- headers?: {
43
- 'x-session-token'?: string
44
- }
45
- query?: {
46
- withAzoteNeedsKgPerHa?: boolean
47
- withSpacing?: boolean
48
- parentsOnly?: boolean
49
- search?: string
50
- family?: string
51
- limit?: number
52
- /**
53
- * If submitted, it means we are searching for plants that can be planted in the given garden zone.
54
- * It almost means:
55
- * - withSpacing will be set to true automatically.
56
- * - Plant.contextualSearchText may be added to the results to provided additional contextual information to the search results (and therefore the member)
57
- */
58
- gardenZoneId?: string | number
59
- /**
60
- * Slug of the selection currently being edited. Used to contextualize rotation insights for search results.
61
- */
62
- selectionSlug?: string
63
- }
64
- }
65
- /**
66
- * Response containing search plants with their tags
67
- */
68
- export type Response = PlantExtendedDataI[]
69
- }
70
- export namespace UPDATE {
71
- export interface Request {
72
- params: {
73
- slug: string
74
- }
75
- body: {
76
- name?: string
77
- description?: string
78
- shared?: boolean
79
- spaceBetweenSeedMin?: number | null
80
- spaceBetweenSeedMax?: number | null
81
- spaceBetweenAlleyMin?: number | null
82
- spaceBetweenAlleyMax?: number | null
83
- weeksToMaturity?: number | null
84
- indoorSeeding?: boolean
85
- outdoorSeeding?: boolean
86
- sunRequirements?: 'partialShade' | 'fullSun' | 'fullShade' | null
87
- isHardy?: boolean | null
88
- }
89
- }
90
- export type Response = PlantI
91
- }
92
- }
1
+ import { PlantI } from './plant.d'
2
+ import { SelectionI } from './selection.d'
3
+ import { ImageDataI } from './image.d'
4
+
5
+ interface PlantExtendedDataI extends PlantI {
6
+ /**
7
+ * Future plant images gallery for now using notes as a proxy
8
+ */
9
+ Images: ImageDataI[]
10
+ /**
11
+ * Selections of the plant
12
+ */
13
+ Selections: SelectionI[]
14
+ }
15
+
16
+ export namespace PLANTS {
17
+ export namespace RECOMMENDATIONS {
18
+ /**
19
+ * Request parameters for plant recommendations
20
+ * @remarks identification by session token is optional
21
+ */
22
+ export interface Request {
23
+ headers?: {
24
+ 'x-session-token'?: string
25
+ }
26
+ query?: {
27
+ gardenZoneId?: string | number
28
+ selectionSlug?: string
29
+ }
30
+ }
31
+ export type RecommendedPlantI = PlantExtendedDataI & {
32
+ contextualSearchText?: string
33
+ }
34
+ export type Response = RecommendedPlantI[]
35
+ }
36
+ export namespace SEARCH {
37
+ /**
38
+ * Request parameters for plant recommendations
39
+ * @remarks identification by session token is optional
40
+ */
41
+ export interface Request {
42
+ headers?: {
43
+ 'x-session-token'?: string
44
+ }
45
+ query?: {
46
+ withAzoteNeedsKgPerHa?: boolean
47
+ withSpacing?: boolean
48
+ parentsOnly?: boolean
49
+ search?: string
50
+ family?: string
51
+ limit?: number
52
+ /**
53
+ * If submitted, it means we are searching for plants that can be planted in the given garden zone.
54
+ * It almost means:
55
+ * - withSpacing will be set to true automatically.
56
+ * - Plant.contextualSearchText may be added to the results to provided additional contextual information to the search results (and therefore the member)
57
+ */
58
+ gardenZoneId?: string | number
59
+ /**
60
+ * Slug of the selection currently being edited. Used to contextualize rotation insights for search results.
61
+ */
62
+ selectionSlug?: string
63
+ }
64
+ }
65
+ /**
66
+ * Response containing search plants with their tags
67
+ */
68
+ export type Response = PlantExtendedDataI[]
69
+ }
70
+ export namespace UPDATE {
71
+ export interface Request {
72
+ params: {
73
+ slug: string
74
+ }
75
+ body: {
76
+ name?: string
77
+ description?: string
78
+ shared?: boolean
79
+ spaceBetweenSeedMin?: number | null
80
+ spaceBetweenSeedMax?: number | null
81
+ spaceBetweenAlleyMin?: number | null
82
+ spaceBetweenAlleyMax?: number | null
83
+ weeksToMaturity?: number | null
84
+ indoorSeeding?: boolean
85
+ outdoorSeeding?: boolean
86
+ sunRequirements?: 'partialShade' | 'fullSun' | 'fullShade' | null
87
+ isHardy?: boolean | null
88
+ }
89
+ }
90
+ export type Response = PlantI
91
+ }
92
+ }
@@ -1,3 +1,3 @@
1
- export type RotationGroup = 'regenerative' | 'demanding' | 'moderately_demanding' | 'less_demanding'
2
-
3
- export const ROTATION_GROUPS: RotationGroup[] = ['regenerative', 'demanding', 'moderately_demanding', 'less_demanding']
1
+ export type RotationGroup = 'regenerative' | 'demanding' | 'moderately_demanding' | 'less_demanding'
2
+
3
+ export const ROTATION_GROUPS: RotationGroup[] = ['regenerative', 'demanding', 'moderately_demanding', 'less_demanding']
@@ -1,58 +1,58 @@
1
- import { PlantI } from './plant'
2
-
3
- export interface SelectionI {
4
- id: number
5
- memberId: number
6
- title: string
7
- slug: string
8
- description?: string
9
- orderBy?: 'startDate' | 'name'
10
- default?: boolean
11
- viewsCount?: number
12
- imageLocation?: string
13
- imageURL?: string
14
- /**
15
- * Indicates if the selection is featured on the app (search, explore, etc).
16
- **/
17
- featured: boolean
18
- /**
19
- * Indicates if the selection is dynamically generated on the fly by the API.
20
- * Ex: "What you can seed in March"
21
- * INTERNAL USE ONLY
22
- */
23
- isDynamic: boolean
24
- /**
25
- * Background color of the selection, for UI purposes.
26
- */
27
- backgroundColor: string | null
28
- /**
29
- * Font color of the selection, for UI purposes.
30
- */
31
- fontColor: string | null
32
- /**
33
- * Font awesome icon name of the selection, for UI purposes.
34
- * -----------------------------------------
35
- * Not all icons are available in the react-native-app. Must be explicitly declared first.
36
- * Ex: 'fa-bag-seedling', 'fa-bug', etc.
37
- */
38
- iconName: string | null
39
- link?: string
40
- sharingURL?: string
41
- createdAt: Date
42
- updatedAt: Date
43
- Plants?: PlantI[]
44
- yearOfCulture: number
45
- GardenMap?: {
46
- name: string
47
- }
48
- }
49
-
50
- /**
51
- * Those are the different possible types for a selection.
52
- */
53
- export type SelectionType = 'Serre' | 'Potager' | 'Recette' | 'Coup de coeur' | "Jardin d'intérieur" | 'Autres'
54
-
55
- export interface SelectionTypeI {
56
- name: SelectionType
57
- iconName?: IconName
58
- }
1
+ import { PlantI } from './plant'
2
+
3
+ export interface SelectionI {
4
+ id: number
5
+ memberId: number
6
+ title: string
7
+ slug: string
8
+ description?: string
9
+ orderBy?: 'startDate' | 'name'
10
+ default?: boolean
11
+ viewsCount?: number
12
+ imageLocation?: string
13
+ imageURL?: string
14
+ /**
15
+ * Indicates if the selection is featured on the app (search, explore, etc).
16
+ **/
17
+ featured: boolean
18
+ /**
19
+ * Indicates if the selection is dynamically generated on the fly by the API.
20
+ * Ex: "What you can seed in March"
21
+ * INTERNAL USE ONLY
22
+ */
23
+ isDynamic: boolean
24
+ /**
25
+ * Background color of the selection, for UI purposes.
26
+ */
27
+ backgroundColor: string | null
28
+ /**
29
+ * Font color of the selection, for UI purposes.
30
+ */
31
+ fontColor: string | null
32
+ /**
33
+ * Font awesome icon name of the selection, for UI purposes.
34
+ * -----------------------------------------
35
+ * Not all icons are available in the react-native-app. Must be explicitly declared first.
36
+ * Ex: 'fa-bag-seedling', 'fa-bug', etc.
37
+ */
38
+ iconName: string | null
39
+ link?: string
40
+ sharingURL?: string
41
+ createdAt: Date
42
+ updatedAt: Date
43
+ Plants?: PlantI[]
44
+ yearOfCulture: number
45
+ GardenMap?: {
46
+ name: string
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Those are the different possible types for a selection.
52
+ */
53
+ export type SelectionType = 'Serre' | 'Potager' | 'Recette' | 'Coup de coeur' | "Jardin d'intérieur" | 'Autres'
54
+
55
+ export interface SelectionTypeI {
56
+ name: SelectionType
57
+ iconName?: IconName
58
+ }