@simonarcher/fika-types 2.0.0-rc.1 → 2.0.0-rc.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/dist/shop.d.ts CHANGED
@@ -284,6 +284,10 @@ export interface DailyVisitorStats {
284
284
  updatedAt: AdminTimestamp;
285
285
  }
286
286
  export interface ShopInfo {
287
+ /** Editorial description of the shop, written by FIKA curators. */
288
+ description?: string | null;
289
+ /** Owner-authored public note, edited through the owner portal. */
290
+ ownerDescription?: string | null;
287
291
  features: Partial<Record<ShopFeatureKey, boolean | null>> & Record<string, boolean | null>;
288
292
  wifiDetails?: {
289
293
  name?: string;
@@ -341,6 +345,15 @@ export interface SpecialtyConfig {
341
345
  translationKey?: string;
342
346
  priority: 'high' | 'medium' | 'low';
343
347
  }
348
+ export type FeatureGroupKey = 'Space & Seating' | 'Work & Facilities' | 'Food & Drink' | 'Service' | 'Payment';
349
+ /** Maps each feature key to its display group. */
350
+ export declare const featureGroupMap: Record<ShopFeatureKey, FeatureGroupKey>;
351
+ /** Display labels for each feature key. */
352
+ export declare const featureLabelMap: Record<ShopFeatureKey, string>;
353
+ /** Maps each specialty key to its category (matches the groupings on `ShopSpecialtyKey`). */
354
+ export declare const specialtyCategoryMap: Record<ShopSpecialtyKey, SpecialtyCategoryKey>;
355
+ /** Display labels for each specialty key. */
356
+ export declare const specialtyLabelMap: Record<ShopSpecialtyKey, string>;
344
357
  interface OpeningTime {
345
358
  day: number;
346
359
  hour: number | null;
package/dist/shop.js CHANGED
@@ -1,2 +1,161 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.specialtyLabelMap = exports.specialtyCategoryMap = exports.featureLabelMap = exports.featureGroupMap = void 0;
4
+ /** Maps each feature key to its display group. */
5
+ exports.featureGroupMap = {
6
+ // Space & Seating
7
+ indoorSeating: 'Space & Seating',
8
+ outdoorSeating: 'Space & Seating',
9
+ petFriendly: 'Space & Seating',
10
+ // Work & Facilities
11
+ wifi: 'Work & Facilities',
12
+ powerOutlets: 'Work & Facilities',
13
+ laptopFriendly: 'Work & Facilities',
14
+ restrooms: 'Work & Facilities',
15
+ parking: 'Work & Facilities',
16
+ accessibility: 'Work & Facilities',
17
+ // Food & Drink
18
+ breakfast: 'Food & Drink',
19
+ lunch: 'Food & Drink',
20
+ vegetarian: 'Food & Drink',
21
+ glutenFree: 'Food & Drink',
22
+ alcohol: 'Food & Drink',
23
+ // Service
24
+ takeaway: 'Service',
25
+ delivery: 'Service',
26
+ loyaltyCard: 'Service',
27
+ discountOnReusableCup: 'Service',
28
+ // Payment
29
+ acceptsCash: 'Payment',
30
+ acceptsCreditCards: 'Payment',
31
+ acceptsNfc: 'Payment',
32
+ };
33
+ /** Display labels for each feature key. */
34
+ exports.featureLabelMap = {
35
+ // Space & Seating
36
+ indoorSeating: 'Indoor Seating',
37
+ outdoorSeating: 'Outdoor Seating',
38
+ petFriendly: 'Pet Friendly',
39
+ // Work & Facilities
40
+ wifi: 'Free WiFi',
41
+ powerOutlets: 'Power Outlets',
42
+ laptopFriendly: 'Laptop Friendly',
43
+ restrooms: 'Restrooms',
44
+ parking: 'Parking',
45
+ accessibility: 'Wheelchair Accessible',
46
+ // Food & Drink
47
+ breakfast: 'Serves Breakfast',
48
+ lunch: 'Serves Lunch',
49
+ vegetarian: 'Vegetarian Options',
50
+ glutenFree: 'Gluten-Free Options',
51
+ alcohol: 'Serves Alcohol',
52
+ // Service
53
+ takeaway: 'Takeaway',
54
+ delivery: 'Delivery',
55
+ loyaltyCard: 'Loyalty Card',
56
+ discountOnReusableCup: 'Discount for Reusable Cup',
57
+ // Payment
58
+ acceptsCash: 'Cash Payments',
59
+ acceptsCreditCards: 'Card Payments',
60
+ acceptsNfc: 'Contactless / NFC',
61
+ };
62
+ /** Maps each specialty key to its category (matches the groupings on `ShopSpecialtyKey`). */
63
+ exports.specialtyCategoryMap = {
64
+ // Coffee Excellence
65
+ pourOverSpecialty: 'Coffee Excellence',
66
+ espressoExpert: 'Coffee Excellence',
67
+ singleOriginFocus: 'Coffee Excellence',
68
+ localRoaster: 'Coffee Excellence',
69
+ brewingEducation: 'Coffee Excellence',
70
+ cuppingEvents: 'Coffee Excellence',
71
+ matchaSpecialty: 'Coffee Excellence',
72
+ decafSpecialty: 'Coffee Excellence',
73
+ inHouseRoastery: 'Coffee Excellence',
74
+ // Atmosphere
75
+ relaxingVibes: 'Atmosphere',
76
+ bustlingEnergy: 'Atmosphere',
77
+ quietStudySpace: 'Atmosphere',
78
+ uniqueExperience: 'Atmosphere',
79
+ instagramWorthy: 'Atmosphere',
80
+ cozyAmbiance: 'Atmosphere',
81
+ // Food & Treats
82
+ freshPastries: 'Food & Treats',
83
+ homemadeTreats: 'Food & Treats',
84
+ artisanBread: 'Food & Treats',
85
+ localBakery: 'Food & Treats',
86
+ healthyOptions: 'Food & Treats',
87
+ dessertDestination: 'Food & Treats',
88
+ inHouseBakery: 'Food & Treats',
89
+ signatureBakedGoods: 'Food & Treats',
90
+ // Community & Values
91
+ lgbtqFriendly: 'Community & Values',
92
+ womenOwned: 'Community & Values',
93
+ familyOwned: 'Community & Values',
94
+ communityHub: 'Community & Values',
95
+ sociallyConscious: 'Community & Values',
96
+ localArtSupport: 'Community & Values',
97
+ // Entertainment
98
+ liveMusic: 'Entertainment',
99
+ localArt: 'Entertainment',
100
+ bookExchange: 'Entertainment',
101
+ boardGames: 'Entertainment',
102
+ culturalEvents: 'Entertainment',
103
+ workshopSpace: 'Entertainment',
104
+ // Work & Study
105
+ laptopFriendlyPro: 'Work & Study',
106
+ meetingSpaceAvailable: 'Work & Study',
107
+ quietZones: 'Work & Study',
108
+ fastWifi: 'Work & Study',
109
+ longStayWelcome: 'Work & Study',
110
+ coworkingVibes: 'Work & Study',
111
+ };
112
+ /** Display labels for each specialty key. */
113
+ exports.specialtyLabelMap = {
114
+ // Coffee Excellence
115
+ pourOverSpecialty: 'Pour-Over / Filter Focus',
116
+ espressoExpert: 'Espresso Specialists',
117
+ singleOriginFocus: 'Single Origin Focus',
118
+ localRoaster: 'Local Roaster',
119
+ brewingEducation: 'Brewing Education',
120
+ cuppingEvents: 'Cupping Events',
121
+ matchaSpecialty: 'Matcha Specialty',
122
+ decafSpecialty: 'Decaf Specialty',
123
+ inHouseRoastery: 'In-House Roastery',
124
+ // Atmosphere
125
+ relaxingVibes: 'Relaxing Vibes',
126
+ bustlingEnergy: 'Lively Atmosphere',
127
+ quietStudySpace: 'Quiet Study Space',
128
+ uniqueExperience: 'Unique Concept',
129
+ instagramWorthy: 'Instagram-Worthy',
130
+ cozyAmbiance: 'Cosy & Welcoming',
131
+ // Food & Treats
132
+ freshPastries: 'Fresh Pastries',
133
+ homemadeTreats: 'Homemade Treats',
134
+ artisanBread: 'Artisan Bread',
135
+ localBakery: 'Local Bakery Partner',
136
+ healthyOptions: 'Healthy Options',
137
+ dessertDestination: 'Dessert Destination',
138
+ inHouseBakery: 'In-House Bakery',
139
+ signatureBakedGoods: 'Signature Baked Goods',
140
+ // Community & Values
141
+ lgbtqFriendly: 'LGBTQ+ Friendly',
142
+ womenOwned: 'Women Owned & Led',
143
+ familyOwned: 'Family Owned',
144
+ communityHub: 'Community Hub',
145
+ sociallyConscious: 'Socially Conscious',
146
+ localArtSupport: 'Local Art Support',
147
+ // Entertainment
148
+ liveMusic: 'Live Music',
149
+ localArt: 'Local Art',
150
+ bookExchange: 'Book Exchange',
151
+ boardGames: 'Board Games',
152
+ culturalEvents: 'Cultural Events',
153
+ workshopSpace: 'Workshop Space',
154
+ // Work & Study
155
+ laptopFriendlyPro: 'Laptop Friendly',
156
+ meetingSpaceAvailable: 'Meeting Space Available',
157
+ quietZones: 'Quiet Zones',
158
+ fastWifi: 'Fast WiFi',
159
+ longStayWelcome: 'Long Stays Welcome',
160
+ coworkingVibes: 'Coworking Vibes',
161
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simonarcher/fika-types",
3
- "version": "2.0.0-rc.1",
3
+ "version": "2.0.0-rc.3",
4
4
  "description": "Shared TypeScript types for Fika projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",