@nuskin/react-mysite-elements 1.5.0-ui-fixes.11 → 1.5.0
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 +0 -226
- package/dist/common/carousel/ProductTabCarousel.d.ts +1 -1
- package/dist/common/headers/MysiteHero.d.ts +6 -2
- package/dist/common/headers/index.d.ts +1 -0
- package/dist/common/index.d.ts +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/ui/index.d.ts +1 -0
- package/package.json +11 -29
- package/dist/common/icon/icons/SocialMediaIcons.styled.d.ts +0 -5
- package/dist/common/shopping-dashboard/MysiteDashboardWithNavigation.d.ts +0 -55
- package/dist/common/shopping-dashboard/PoDashboardWithNavigation.d.ts +0 -4
- package/dist/common/shopping-dashboard/ProductOfferDashboard.d.ts +0 -4
- package/dist/common/shopping-dashboard/ProductOfferDashboard.styled.d.ts +0 -20
- package/dist/common/shopping-dashboard/ShoppingDashboard.d.ts +0 -37
- package/dist/common/shopping-dashboard/ShoppingDashboard.styled.d.ts +0 -20
- package/dist/common/shopping-dashboard/TranslationContext.d.ts +0 -10
- package/dist/common/shopping-dashboard/TranslationKeys/ProductOfferDashboardTranslationKeys.d.ts +0 -242
- package/dist/common/shopping-dashboard/TranslationKeys/ShoppingDashboardTranslationKeys.d.ts +0 -546
- package/dist/common/shopping-dashboard/TranslationKeys/translationResolver.d.ts +0 -8
- package/dist/common/shopping-dashboard/fixtures/index.d.ts +0 -1
- package/dist/common/shopping-dashboard/fixtures/mockDashboardData.d.ts +0 -10
- package/dist/common/shopping-dashboard/fixtures/mockProductOfferData.d.ts +0 -8
- package/dist/common/shopping-dashboard/hooks/useProductOfferWidgetExports.d.ts +0 -15
- package/dist/common/shopping-dashboard/index.d.ts +0 -47
- package/dist/common/shopping-dashboard/shared/ConversionRate/ConversionRateChart.d.ts +0 -15
- package/dist/common/shopping-dashboard/shared/ConversionRate/ConversionRateChart.styled.d.ts +0 -62
- package/dist/common/shopping-dashboard/shared/ConversionRate/ConversionRateFullView.d.ts +0 -18
- package/dist/common/shopping-dashboard/shared/ConversionRate/ConversionRateFullView.styled.d.ts +0 -50
- package/dist/common/shopping-dashboard/shared/ConversionRate/ConversionRateFullView.test.d.ts +0 -3
- package/dist/common/shopping-dashboard/shared/DashboardHeader.d.ts +0 -14
- package/dist/common/shopping-dashboard/shared/DashboardHeader.styled.d.ts +0 -48
- package/dist/common/shopping-dashboard/shared/DataTable.d.ts +0 -18
- package/dist/common/shopping-dashboard/shared/DataTable.styled.d.ts +0 -42
- package/dist/common/shopping-dashboard/shared/FilterBar.d.ts +0 -7
- package/dist/common/shopping-dashboard/shared/FilterBar.styled.d.ts +0 -12
- package/dist/common/shopping-dashboard/shared/FullViewComponents.styled.d.ts +0 -52
- package/dist/common/shopping-dashboard/shared/LoadingSkeletons.d.ts +0 -8
- package/dist/common/shopping-dashboard/shared/LoadingSkeletons.styled.d.ts +0 -121
- package/dist/common/shopping-dashboard/shared/PageHeader.d.ts +0 -32
- package/dist/common/shopping-dashboard/shared/PageHeader.styled.d.ts +0 -56
- package/dist/common/shopping-dashboard/shared/Pagination.d.ts +0 -9
- package/dist/common/shopping-dashboard/shared/Pagination.styled.d.ts +0 -18
- package/dist/common/shopping-dashboard/shared/Signups/SignupsChart.d.ts +0 -13
- package/dist/common/shopping-dashboard/shared/Signups/SignupsChart.styled.d.ts +0 -56
- package/dist/common/shopping-dashboard/shared/Signups/SignupsFullView.d.ts +0 -24
- package/dist/common/shopping-dashboard/shared/Signups/SignupsFullView.styled.d.ts +0 -25
- package/dist/common/shopping-dashboard/shared/Signups/SignupsFullView.test.d.ts +0 -3
- package/dist/common/shopping-dashboard/shared/StatsCard.d.ts +0 -13
- package/dist/common/shopping-dashboard/shared/StatsCard.styled.d.ts +0 -66
- package/dist/common/shopping-dashboard/shared/TopCategories/CategoriesFullView.d.ts +0 -16
- package/dist/common/shopping-dashboard/shared/TopCategories/CategoriesFullView.styled.d.ts +0 -79
- package/dist/common/shopping-dashboard/shared/TopCategories/CategoriesFullView.test.d.ts +0 -3
- package/dist/common/shopping-dashboard/shared/TopCategories/TopCategoriesPieChart.d.ts +0 -13
- package/dist/common/shopping-dashboard/shared/TopCategories/TopCategoriesPieChart.styled.d.ts +0 -100
- package/dist/common/shopping-dashboard/shared/TopPerformingOffers/TopPerformingOffersFullView.d.ts +0 -15
- package/dist/common/shopping-dashboard/shared/TopPerformingOffers/TopPerformingOffersFullView.styled.d.ts +0 -86
- package/dist/common/shopping-dashboard/shared/TopPerformingOffers/TopPerformingOffersPieChart.d.ts +0 -12
- package/dist/common/shopping-dashboard/shared/TopProducts/ProductsFullView.d.ts +0 -15
- package/dist/common/shopping-dashboard/shared/TopProducts/ProductsFullView.styled.d.ts +0 -48
- package/dist/common/shopping-dashboard/shared/TopProducts/TopSellingProductsList.d.ts +0 -12
- package/dist/common/shopping-dashboard/shared/TopProducts/TopSellingProductsList.styled.d.ts +0 -74
- package/dist/common/shopping-dashboard/shared/WidgetMenu.d.ts +0 -7
- package/dist/common/shopping-dashboard/shared/WidgetMenu.styled.d.ts +0 -5
- package/dist/common/shopping-dashboard/shared/types.d.ts +0 -13
- package/dist/common/shopping-dashboard/shared/useViewport.d.ts +0 -2
- package/dist/common/shopping-dashboard/specs/CategoriesFullView.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/ConversionRateChart.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/ConversionRateFullView.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/DashboardHeader.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/DataTable.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/FilterBar.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/MysiteDashboardWithNavigation.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/Pagination.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/PoDashboardWithNavigation.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/ProductOfferDashboard.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/ProductsFullView.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/ShoppingDashboard.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/SignupsFullView.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/TopCategoriesPieChart.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/TopPerformingOffersFullView.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/TopPerformingOffersPieChart.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/TopSellingProductsList.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/WidgetMenu.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/dataUtils.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/dateFormat.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/excelExport.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/marketOptions.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/productOfferExport.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/productOfferTranslation.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/translationResolver.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/trendUtils.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/specs/useProductOfferWidgetExports.spec.d.ts +0 -1
- package/dist/common/shopping-dashboard/stories/CategoriesFullView.stories.d.ts +0 -10
- package/dist/common/shopping-dashboard/stories/ConversionRateChart.stories.d.ts +0 -9
- package/dist/common/shopping-dashboard/stories/ConversionRateFullView.stories.d.ts +0 -10
- package/dist/common/shopping-dashboard/stories/DashboardHeader.stories.d.ts +0 -9
- package/dist/common/shopping-dashboard/stories/DataTable.stories.d.ts +0 -8
- package/dist/common/shopping-dashboard/stories/PageHeader.stories.d.ts +0 -8
- package/dist/common/shopping-dashboard/stories/Pagination.stories.d.ts +0 -9
- package/dist/common/shopping-dashboard/stories/ProductOfferDashboard.stories.d.ts +0 -13
- package/dist/common/shopping-dashboard/stories/ProductsFullView.stories.d.ts +0 -9
- package/dist/common/shopping-dashboard/stories/ShoppingDashboard.stories.d.ts +0 -13
- package/dist/common/shopping-dashboard/stories/SignupsChart.stories.d.ts +0 -10
- package/dist/common/shopping-dashboard/stories/SignupsFullView.stories.d.ts +0 -9
- package/dist/common/shopping-dashboard/stories/StatsCard.stories.d.ts +0 -11
- package/dist/common/shopping-dashboard/stories/TopCategoriesPieChart.stories.d.ts +0 -10
- package/dist/common/shopping-dashboard/stories/TopPerformingOffersFullView.stories.d.ts +0 -10
- package/dist/common/shopping-dashboard/stories/TopPerformingOffersPieChart.stories.d.ts +0 -11
- package/dist/common/shopping-dashboard/stories/TopSellingProductsList.stories.d.ts +0 -11
- package/dist/common/shopping-dashboard/utils/comparisonTextUtils.d.ts +0 -8
- package/dist/common/shopping-dashboard/utils/dataUtils.d.ts +0 -24
- package/dist/common/shopping-dashboard/utils/dateConstants.d.ts +0 -6
- package/dist/common/shopping-dashboard/utils/dateFormat.d.ts +0 -23
- package/dist/common/shopping-dashboard/utils/excelExport.d.ts +0 -14
- package/dist/common/shopping-dashboard/utils/marketOptions.d.ts +0 -4
- package/dist/common/shopping-dashboard/utils/productOfferExport.d.ts +0 -3
- package/dist/common/shopping-dashboard/utils/trendUtils.d.ts +0 -11
package/README.md
CHANGED
|
@@ -123,202 +123,6 @@ The main hero component for Mysite pages with advanced scroll behavior and respo
|
|
|
123
123
|
[];
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
### Shopping Dashboard Suite
|
|
127
|
-
|
|
128
|
-
The Shopping Dashboard provides a complete analytics experience with overview widgets,
|
|
129
|
-
full-detail views, and stateful in-page navigation.
|
|
130
|
-
|
|
131
|
-
#### Highlights
|
|
132
|
-
|
|
133
|
-
- Dashboard overview with stats cards and 4 widgets (Top Products, Sign-ups, Conversion Rate, Top Categories)
|
|
134
|
-
- Full views for each widget with filtering, sorting, and pagination
|
|
135
|
-
- History-state navigation between dashboard and full views (back/forward/refresh aware)
|
|
136
|
-
- Loading skeletons and explicit empty/error states
|
|
137
|
-
- Translation-ready text (`getTranslation` + key catalog)
|
|
138
|
-
- Accessibility and test automation support with stable `data-testid` selectors
|
|
139
|
-
- Responsive mobile/desktop rendering with performance-focused optimizations
|
|
140
|
-
|
|
141
|
-
#### Main Exports
|
|
142
|
-
|
|
143
|
-
- `ShoppingDashboard`
|
|
144
|
-
- `MysiteDashboardWithNavigation`
|
|
145
|
-
- `ProductOfferDashboard`
|
|
146
|
-
- `PoDashboardWithNavigation`
|
|
147
|
-
- `ProductsFullView`
|
|
148
|
-
- `SignupsFullView`
|
|
149
|
-
- `ConversionRateFullView`
|
|
150
|
-
- `CategoriesFullView`
|
|
151
|
-
- `TopPerformingOffersFullView`
|
|
152
|
-
- `StatsCard`, `DashboardHeader`, `WidgetMenu`
|
|
153
|
-
- `TopSellingProductsList`, `SignupsChart`, `ConversionRateChart`, `TopCategoriesPieChart`, `TopPerformingOffersPieChart`
|
|
154
|
-
|
|
155
|
-
#### Quick Usage
|
|
156
|
-
|
|
157
|
-
```tsx
|
|
158
|
-
import React, { useState } from 'react';
|
|
159
|
-
import {
|
|
160
|
-
MysiteDashboardWithNavigation,
|
|
161
|
-
mockStats,
|
|
162
|
-
mockTopProducts,
|
|
163
|
-
mockConversionData,
|
|
164
|
-
mockSignupData,
|
|
165
|
-
mockCategories,
|
|
166
|
-
mockOrders,
|
|
167
|
-
mockSignupDetails,
|
|
168
|
-
} from '@nuskin/react-mysite-elements';
|
|
169
|
-
|
|
170
|
-
export default function DashboardExample() {
|
|
171
|
-
const [dateRange, setDateRange] = useState('last30days');
|
|
172
|
-
const [market, setMarket] = useState('all');
|
|
173
|
-
|
|
174
|
-
return (
|
|
175
|
-
<MysiteDashboardWithNavigation
|
|
176
|
-
stats={mockStats}
|
|
177
|
-
topProducts={mockTopProducts}
|
|
178
|
-
conversionData={mockConversionData}
|
|
179
|
-
signupData={mockSignupData}
|
|
180
|
-
categories={mockCategories}
|
|
181
|
-
orders={mockOrders}
|
|
182
|
-
signups={mockSignupDetails}
|
|
183
|
-
dateRange={dateRange}
|
|
184
|
-
market={market}
|
|
185
|
-
onDateRangeChange={setDateRange}
|
|
186
|
-
onMarketChange={setMarket}
|
|
187
|
-
/>
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
#### Translations (i18n)
|
|
193
|
-
|
|
194
|
-
The dashboard ships built-in **English** fallback strings for every label (see the
|
|
195
|
-
`ShoppingDashboardTranslationKeys` catalog). To localize, pass an optional
|
|
196
|
-
`translate` resolver — `(key, fallback) => string` — into the top-level component.
|
|
197
|
-
Every internal `getTranslation` call routes through it; any key the resolver can't
|
|
198
|
-
localize (or an empty/throwing result) safely falls back to the built-in English text,
|
|
199
|
-
so partial catalogs are fine. Omit the prop to keep the current English-only behavior.
|
|
200
|
-
|
|
201
|
-
```tsx
|
|
202
|
-
import { MysiteDashboardWithNavigation } from '@nuskin/react-mysite-elements';
|
|
203
|
-
// e.g. a ContentStack-backed resolver in the host app
|
|
204
|
-
import { translate } from '@/utils/translation';
|
|
205
|
-
|
|
206
|
-
<MysiteDashboardWithNavigation
|
|
207
|
-
translate={translate} // (key: string, fallback: string) => string
|
|
208
|
-
stats={stats}
|
|
209
|
-
/* …other props… */
|
|
210
|
-
/>;
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
A declarative `TranslationProvider` and a `useTranslation()` hook are also exported for
|
|
214
|
-
advanced/standalone usage:
|
|
215
|
-
|
|
216
|
-
```tsx
|
|
217
|
-
import { TranslationProvider } from '@nuskin/react-mysite-elements';
|
|
218
|
-
|
|
219
|
-
<TranslationProvider translate={translate}>{/* any dashboard components */}</TranslationProvider>;
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
Translation keys follow the `shoppingDashboard.*` namespace; the host maps these to its
|
|
223
|
-
locale resources.
|
|
224
|
-
|
|
225
|
-
#### Storybook
|
|
226
|
-
|
|
227
|
-
Shopping Dashboard stories are available under the `ShoppingDashboard` group, including
|
|
228
|
-
loading, error, navigation, and full-view scenarios.
|
|
229
|
-
|
|
230
|
-
#### Product Offer Dashboard
|
|
231
|
-
|
|
232
|
-
```tsx
|
|
233
|
-
import {
|
|
234
|
-
PoDashboardWithNavigation,
|
|
235
|
-
mockProductOfferStats,
|
|
236
|
-
mockTopProducts,
|
|
237
|
-
mockConversionData,
|
|
238
|
-
mockTopOffers,
|
|
239
|
-
} from '@nuskin/react-mysite-elements';
|
|
240
|
-
|
|
241
|
-
export default function ProductOfferDashboardExample() {
|
|
242
|
-
return (
|
|
243
|
-
<PoDashboardWithNavigation
|
|
244
|
-
stats={mockProductOfferStats}
|
|
245
|
-
topProducts={mockTopProducts}
|
|
246
|
-
conversionData={mockConversionData}
|
|
247
|
-
topOffers={mockTopOffers}
|
|
248
|
-
/>
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
#### Dashboard Architecture
|
|
254
|
-
|
|
255
|
-
The dashboard is a **presentational (dumb) component library**. It renders whatever
|
|
256
|
-
data the host application passes in and owns none of the data fetching. Hosts
|
|
257
|
-
(`Mysite-Admin`, `Personal-offer-mfe`) are responsible for calling the analytics APIs,
|
|
258
|
-
adapting the raw responses into the view models below, and passing them in as props.
|
|
259
|
-
|
|
260
|
-
```
|
|
261
|
-
┌──────────────────────── Host application (Mysite-Admin / PO-MFE) ───────────────────────┐
|
|
262
|
-
│ API call ──▶ adapters (adaptDashboardResponse / drilldownAdapters) ──▶ view models │
|
|
263
|
-
└───────────────────────────────────────────┬─────────────────────────────────────────────┘
|
|
264
|
-
│ props (stats, topProducts, categories, …)
|
|
265
|
-
▼
|
|
266
|
-
┌──────────────── *DashboardWithNavigation (stateful wrapper) ────────────────┐
|
|
267
|
-
│ Owns view state + history-state navigation (overview ⇄ full views) │
|
|
268
|
-
│ │
|
|
269
|
-
│ ┌── Overview ──────────────┐ ┌── Full views ───────────────────┐ │
|
|
270
|
-
│ │ StatsCard × n │ │ ProductsFullView │ │
|
|
271
|
-
│ │ TopSellingProductsList │ ⇄ │ CategoriesFullView │ │
|
|
272
|
-
│ │ ConversionRateChart │ │ ConversionRateFullView │ │
|
|
273
|
-
│ │ TopCategoriesPieChart │ │ TopPerformingOffersFullView … │ │
|
|
274
|
-
│ └──────────────────────────┘ └──────────────────────────────────┘ │
|
|
275
|
-
│ │
|
|
276
|
-
│ shared/ primitives: DataTable · Pagination · FilterBar · PageHeader · │
|
|
277
|
-
│ WidgetMenu · LoadingSkeletons │
|
|
278
|
-
│ utils/: dataUtils (formatMoney, usePaginatedItems) · trendUtils · │
|
|
279
|
-
│ marketOptions · dateFormat │
|
|
280
|
-
└──────────────────────────────────────────────────────────────────────────────┘
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
##### Layers
|
|
284
|
-
|
|
285
|
-
| Layer | Location | Responsibility |
|
|
286
|
-
| ----------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
287
|
-
| Stateful wrapper | `MysiteDashboardWithNavigation`, `PoDashboardWithNavigation` | View selection, history-state (back/forward/refresh) navigation, prop routing |
|
|
288
|
-
| Overview screens | `ShoppingDashboard`, `ProductOfferDashboard` | Compose stats cards + widgets for the landing view |
|
|
289
|
-
| Widgets | `shared/TopProducts`, `shared/TopCategories`, `shared/ConversionRate`, `shared/Signups`, `shared/TopPerformingOffers` | Summarized charts/lists shown on the overview |
|
|
290
|
-
| Full views | `*FullView.tsx` in each `shared/*` folder | Detailed tables/charts with filtering, sorting, and pagination |
|
|
291
|
-
| Shared primitives | `shared/` (`DataTable`, `Pagination`, `FilterBar`, `PageHeader`, `WidgetMenu`, `LoadingSkeletons`) | Reusable building blocks across every screen |
|
|
292
|
-
| Utilities | `utils/` | `formatMoney`, `usePaginatedItems`, trend parsing, market/date helpers |
|
|
293
|
-
| Types | `types.d.ts`, `types/` | Shared view-model contracts (`TopProduct`, `CategoryRevenue`, `OrderHistory`, …) |
|
|
294
|
-
| Translations | `TranslationContext.tsx`, `TranslationKeys/` | `getTranslation` catalog + optional host `translate` resolver |
|
|
295
|
-
|
|
296
|
-
##### Navigation model
|
|
297
|
-
|
|
298
|
-
`*DashboardWithNavigation` keeps the active view in local state and mirrors it into
|
|
299
|
-
`window.history` state, so browser **back / forward / refresh** move between the overview
|
|
300
|
-
and a full view without a hard reload. Filter, sort, and page selections live in the
|
|
301
|
-
component that owns the view and reset appropriately when the underlying data changes.
|
|
302
|
-
|
|
303
|
-
##### Currency formatting
|
|
304
|
-
|
|
305
|
-
Monetary values are formatted **inside the library** so charts, totals, and sorting keep
|
|
306
|
-
working with numeric revenue while still displaying the correct symbol. Each data item
|
|
307
|
-
carries an optional `currencyCode` (ISO code, e.g. `USD`, `EUR`) that the host adapters
|
|
308
|
-
stamp from the API `currency_code` field. Rendering goes through the `formatMoney` helper:
|
|
309
|
-
|
|
310
|
-
```ts
|
|
311
|
-
formatMoney(value, currencyCode?, locale = 'en-US', fractionDigits?)
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
- When `currencyCode` is present it uses `Intl.NumberFormat` (code → symbol) with natural
|
|
315
|
-
decimals (`0`–`2`); pass `fractionDigits` to force fixed decimals (order totals use `2`).
|
|
316
|
-
- When `currencyCode` is missing or invalid it falls back to a `$` prefix, so existing
|
|
317
|
-
behavior is preserved.
|
|
318
|
-
|
|
319
|
-
Hosts should populate `currencyCode` on every money-bearing item (products, categories,
|
|
320
|
-
offers, order rows). See `HOST_APP_API_RESPONSE.md` for the expected API payload shape.
|
|
321
|
-
|
|
322
126
|
## ✨ Advanced Features
|
|
323
127
|
|
|
324
128
|
### Intelligent Scroll Behavior
|
|
@@ -446,36 +250,6 @@ The component automatically detects and integrates with Nu Skin's external heade
|
|
|
446
250
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
447
251
|
5. Open a Pull Request
|
|
448
252
|
|
|
449
|
-
### Constitution Compliance (Required)
|
|
450
|
-
|
|
451
|
-
All UI contributions must follow the repository constitution in
|
|
452
|
-
`.specify/memory/constitution.md`.
|
|
453
|
-
|
|
454
|
-
Core non-negotiable rules:
|
|
455
|
-
|
|
456
|
-
- No inline CSS in production components (`style={{}}`, inline `sx`, runtime `.style` mutation)
|
|
457
|
-
- Styled component definitions must live in dedicated `*.styled.tsx` files, not inside component files
|
|
458
|
-
- No hardcoded user-visible strings in component code (use translation keys)
|
|
459
|
-
- Accessibility-first implementation (ADA/WCAG aligned)
|
|
460
|
-
- Mobile and desktop viewport validation for changed flows
|
|
461
|
-
- Stable `data-testid` selectors for critical interactions
|
|
462
|
-
|
|
463
|
-
PR validation checklist:
|
|
464
|
-
|
|
465
|
-
- [ ] UI styles are in stylesheet/styled-component files only
|
|
466
|
-
- [ ] Styled components are defined in `*.styled.tsx` files, not inline in component files
|
|
467
|
-
- [ ] All user-facing text is sourced from translation files
|
|
468
|
-
- [ ] Keyboard and semantic accessibility checks were completed
|
|
469
|
-
- [ ] Mobile and desktop behavior was validated
|
|
470
|
-
- [ ] Critical interactive elements include `data-testid`
|
|
471
|
-
|
|
472
|
-
Recommended verification commands:
|
|
473
|
-
|
|
474
|
-
```bash
|
|
475
|
-
npx jest --testPathPattern="shopping-dashboard" --no-coverage
|
|
476
|
-
npx tsc --noEmit --project tsconfig.json
|
|
477
|
-
```
|
|
478
|
-
|
|
479
253
|
### Commit Convention
|
|
480
254
|
|
|
481
255
|
We use [Conventional Commits](https://www.conventionalcommits.org/) for semantic versioning:
|
|
@@ -34,7 +34,7 @@ interface ProductTabCarouselProps {
|
|
|
34
34
|
readonly emptyProductMessage?: string;
|
|
35
35
|
readonly showCustomCategory?: boolean;
|
|
36
36
|
readonly productsCountLabel?: string;
|
|
37
|
-
readonly getCategoryId
|
|
37
|
+
readonly getCategoryId: (categoryId: string) => Promise<Category[]>;
|
|
38
38
|
readonly history?: {
|
|
39
39
|
push: (path: string) => void;
|
|
40
40
|
};
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* `MysiteHero`'s prop contract, and the single definition of that shape.
|
|
4
|
+
* `@nuskin/react-mysite-sdk`'s `buildHeroProps` imports this as its return type
|
|
5
|
+
* so the producer and the consumer can never drift.
|
|
6
|
+
*/
|
|
7
|
+
export type MysiteHeroProps = {
|
|
3
8
|
readonly imageDetails?: {
|
|
4
9
|
imageSrc: string;
|
|
5
10
|
imageAlt: string;
|
|
@@ -25,4 +30,3 @@ type MysiteHeroProps = {
|
|
|
25
30
|
readonly totalSavings?: string;
|
|
26
31
|
};
|
|
27
32
|
export default function MysiteHero({ className, shopTitle, shopDescription, socialTitleText, imageDetails, email, phone, bannerProps, socialIcons, expirationDate, showBadges, totalSavings, }: MysiteHeroProps): ReactElement;
|
|
28
|
-
export {};
|
package/dist/common/index.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './ui';
|