reso-ui 3.0.0-alpha.19 → 3.0.0-alpha.20
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 +378 -4
- package/dist/cjs/components/Buttons/Back/Back.js +3 -1
- package/dist/cjs/components/Buttons/Back/Back.js.map +1 -1
- package/dist/cjs/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.js +28 -0
- package/dist/cjs/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.js.map +1 -0
- package/dist/cjs/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.js +14 -0
- package/dist/cjs/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.js.map +1 -0
- package/dist/cjs/components/Dialog/Dialog.js +1 -1
- package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
- package/dist/cjs/components/Enlarged-Image-Modal/Enlarged-Image-Modal.js +82 -0
- package/dist/cjs/components/Enlarged-Image-Modal/Enlarged-Image-Modal.js.map +1 -0
- package/dist/cjs/components/Icon/Icon.js +1 -1
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Infinite-Scroll-Container/Infinite-Scroll-Container.js +2 -1
- package/dist/cjs/components/Infinite-Scroll-Container/Infinite-Scroll-Container.js.map +1 -1
- package/dist/cjs/components/Loaders/ShimmerLoader/ShimmerLoader.js.map +1 -1
- package/dist/cjs/forms/Controls/Dropdown/Dropdown-Select/Dropdown-Select.js +2 -2
- package/dist/cjs/index.js +6 -6
- package/dist/cjs/providers/ThemeProvider.js +4 -1
- package/dist/cjs/providers/ThemeProvider.js.map +1 -1
- package/dist/esm/components/Buttons/Back/Back.js +3 -1
- package/dist/esm/components/Buttons/Back/Back.js.map +1 -1
- package/dist/esm/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.d.ts +12 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.js +26 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.js.map +1 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card/index.d.ts +2 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.d.ts +9 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.js +12 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.js.map +1 -0
- package/dist/esm/components/Card/Dashboard-Overview-Card-Container/index.d.ts +2 -0
- package/dist/esm/components/Card/index.d.ts +2 -3
- package/dist/esm/components/Dialog/Dialog.js +1 -1
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Enlarged-Image-Modal/Enlarged-Image-Modal.d.ts +20 -0
- package/dist/esm/components/Enlarged-Image-Modal/Enlarged-Image-Modal.js +80 -0
- package/dist/esm/components/Enlarged-Image-Modal/Enlarged-Image-Modal.js.map +1 -0
- package/dist/esm/components/Enlarged-Image-Modal/index.d.ts +2 -0
- package/dist/esm/components/Icon/Icon.js +1 -1
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Infinite-Scroll-Container/Infinite-Scroll-Container.js +2 -1
- package/dist/esm/components/Infinite-Scroll-Container/Infinite-Scroll-Container.js.map +1 -1
- package/dist/esm/components/Loaders/ShimmerLoader/ShimmerLoader.d.ts +1 -0
- package/dist/esm/components/Loaders/ShimmerLoader/ShimmerLoader.js.map +1 -1
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/forms/Controls/Dropdown/Dropdown-Select/Dropdown-Select.js +2 -2
- package/dist/esm/index.js +3 -3
- package/dist/esm/providers/ThemeProvider.js +4 -1
- package/dist/esm/providers/ThemeProvider.js.map +1 -1
- package/dist/src/library/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.d.ts +12 -0
- package/dist/src/library/components/Card/Dashboard-Overview-Card/index.d.ts +2 -0
- package/dist/src/library/components/Card/Dashboard-Overview-Card/stories/Dashboard-Overview-Card.stories.d.ts +20 -0
- package/dist/src/library/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.d.ts +9 -0
- package/dist/src/library/components/Card/Dashboard-Overview-Card-Container/index.d.ts +2 -0
- package/dist/src/library/components/Card/Dashboard-Overview-Card-Container/stories/Dashboard-Overview-Card-Container.stories.d.ts +18 -0
- package/dist/src/library/components/Card/index.d.ts +2 -3
- package/dist/src/library/components/Containers/Flex/stories/Flex.stories.d.ts +1 -0
- package/dist/src/library/components/Dialog/stories/Dialog.stories.d.ts +30 -0
- package/dist/src/library/components/Enlarged-Image-Modal/Enlarged-Image-Modal.d.ts +20 -0
- package/dist/src/library/components/Enlarged-Image-Modal/index.d.ts +2 -0
- package/dist/src/library/components/Enlarged-Image-Modal/stories/Enlarged-Image-Modal.stories.d.ts +9 -0
- package/dist/src/library/components/Errors/Full-Screen-Error/stories/Full-Screen-Error.stories.d.ts +9 -0
- package/dist/src/library/components/Loaders/ShimmerLoader/ShimmerLoader.d.ts +1 -0
- package/dist/src/library/components/index.d.ts +1 -0
- package/dist/src/{library/components/Card/Card-Container/stories/Card-Container.stories.d.ts → utility-classes.stories.d.ts} +1 -3
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/cjs/components/Card/Card-Container/Card-Container.js +0 -16
- package/dist/cjs/components/Card/Card-Container/Card-Container.js.map +0 -1
- package/dist/cjs/components/Card/Card-Content/Card-Content.js +0 -15
- package/dist/cjs/components/Card/Card-Content/Card-Content.js.map +0 -1
- package/dist/cjs/components/Card/Card-Summary-Value/Card-Summary-Value.js +0 -14
- package/dist/cjs/components/Card/Card-Summary-Value/Card-Summary-Value.js.map +0 -1
- package/dist/esm/components/Card/Card-Container/Card-Container.d.ts +0 -9
- package/dist/esm/components/Card/Card-Container/Card-Container.js +0 -14
- package/dist/esm/components/Card/Card-Container/Card-Container.js.map +0 -1
- package/dist/esm/components/Card/Card-Container/index.d.ts +0 -2
- package/dist/esm/components/Card/Card-Content/Card-Content.d.ts +0 -9
- package/dist/esm/components/Card/Card-Content/Card-Content.js +0 -13
- package/dist/esm/components/Card/Card-Content/Card-Content.js.map +0 -1
- package/dist/esm/components/Card/Card-Content/index.d.ts +0 -2
- package/dist/esm/components/Card/Card-Summary-Value/Card-Summary-Value.d.ts +0 -7
- package/dist/esm/components/Card/Card-Summary-Value/Card-Summary-Value.js +0 -12
- package/dist/esm/components/Card/Card-Summary-Value/Card-Summary-Value.js.map +0 -1
- package/dist/esm/components/Card/Card-Summary-Value/index.d.ts +0 -2
- package/dist/src/library/components/Card/Card-Container/Card-Container.d.ts +0 -9
- package/dist/src/library/components/Card/Card-Container/index.d.ts +0 -2
- package/dist/src/library/components/Card/Card-Content/Card-Content.d.ts +0 -9
- package/dist/src/library/components/Card/Card-Content/index.d.ts +0 -2
- package/dist/src/library/components/Card/Card-Content/stories/Card-Content.stories.d.ts +0 -17
- package/dist/src/library/components/Card/Card-Summary-Value/Card-Summary-Value.d.ts +0 -7
- package/dist/src/library/components/Card/Card-Summary-Value/index.d.ts +0 -2
- package/dist/src/library/components/Card/Card-Summary-Value/stories/Card-Summary-Value.stories.d.ts +0 -17
- /package/dist/src/library/components/Card/{Card-Content/__test__/Card-Content.test.d.ts → Dashboard-Overview-Card/__test__/Dashboard-Overview-Card.test.d.ts} +0 -0
- /package/dist/src/library/components/Card/{Card-Container/__test__/Card-Container.test.d.ts → Dashboard-Overview-Card-Container/__test__/Dashboard-Overview-Card-Container.test.d.ts} +0 -0
- /package/dist/src/library/components/{Card/Card-Summary-Value/__test__/Card-Summary-Value.test.d.ts → Enlarged-Image-Modal/__test__/Enlarged-Image-Modal.test.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
# Reso UI
|
|
2
2
|
|
|
3
|
-
React component library
|
|
3
|
+
A React component library built with TypeScript + SCSS. Ships as tree-shakeable ESM + CJS output via Rollup.
|
|
4
4
|
|
|
5
5
|
**Storybook:** [reso-ui-storybook.s3-website-ap-southeast-1.amazonaws.com](http://reso-ui-storybook.s3-website-ap-southeast-1.amazonaws.com/)
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## Guiding Principles
|
|
10
|
+
|
|
11
|
+
1. **Customizability-first** — Clients can and should be able to override most if not all units of a UI component. Override the entire palette via `<ResoUiProvider theme={...}>`, or override colours and behaviour directly on individual components via props. Clients should NOT override styles by hacky CSS means (e.g. directly overwriting compiled CSS class names in their projects).
|
|
12
|
+
|
|
13
|
+
2. **Clean and minimalistic** — We eliminate clutter and prioritize ease of interaction for app users AND ease of component use for developers. Maximum configurability, yet minimal complication. Easy. Simple. Minimal.
|
|
14
|
+
|
|
15
|
+
3. **In-house solutions** — We build everything ourselves (drag and drop, date selector calculations, etc). No dependencies on third-party component libraries unless absolutely necessary.
|
|
16
|
+
|
|
17
|
+
4. **Performant and zero runtime cost** — Theming via CSS custom properties; no theme object traversal at render time.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
9
21
|
## Table of Contents
|
|
10
22
|
|
|
11
23
|
- [Using the Library (Client Setup)](#using-the-library-client-setup)
|
|
12
24
|
- [Requirements](#requirements)
|
|
13
25
|
- [Install](#install)
|
|
14
26
|
- [Client project files](#client-project-files)
|
|
15
|
-
- [
|
|
27
|
+
- [Bundler Setup](#bundler-setup)
|
|
28
|
+
- [Vite](#vite)
|
|
29
|
+
- [Webpack](#webpack)
|
|
30
|
+
- [Next.js](#nextjs)
|
|
31
|
+
- [Create React App (CRA)](#create-react-app-cra)
|
|
16
32
|
- [Provider setup](#provider-setup)
|
|
17
33
|
- [Import styles](#import-styles)
|
|
18
34
|
- [Basic usage](#basic-usage)
|
|
19
35
|
- [Theming & Dark Mode Setup](#theming--dark-mode-setup)
|
|
20
36
|
- [Overriding the Color Palette](#overriding-the-color-palette)
|
|
37
|
+
- [Utility Classes](#utility-classes)
|
|
21
38
|
- [Dev Notes](#dev-notes)
|
|
22
39
|
- [CI/CD Notes](#cicd-notes)
|
|
23
40
|
|
|
@@ -85,13 +102,71 @@ Then add it to your `tsconfig.json`:
|
|
|
85
102
|
|
|
86
103
|
---
|
|
87
104
|
|
|
88
|
-
###
|
|
105
|
+
### Bundler Setup
|
|
106
|
+
|
|
107
|
+
The library ships pre-compiled JS (ESM + CJS), a single CSS file, and the Poppins and DancingScript font files — all locally bundled with no external network dependency.
|
|
108
|
+
|
|
109
|
+
Pick the section that matches your bundler:
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
#### Vite
|
|
114
|
+
|
|
115
|
+
Tested with Vite **6.x** (`@vitejs/plugin-react` 5.x).
|
|
116
|
+
|
|
117
|
+
Vite handles CSS imports and font asset resolution out of the box. **No `vite.config.ts` changes are required** for reso-ui to work.
|
|
118
|
+
|
|
119
|
+
Install the core Vite dependencies:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
npm install -D vite@^6.4.2 @vitejs/plugin-react@^5.2.0
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If your project uses its own SCSS files, install the `sass` package:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm install -D sass@^1.87.0
|
|
129
|
+
```
|
|
89
130
|
|
|
90
|
-
|
|
131
|
+
If your project imports `.svg` files as React components, add `vite-plugin-svgr`:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npm install -D vite-plugin-svgr@^5.2.0
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
// vite.config.ts
|
|
139
|
+
import { defineConfig } from "vite";
|
|
140
|
+
import react from "@vitejs/plugin-react";
|
|
141
|
+
import svgr from "vite-plugin-svgr";
|
|
142
|
+
|
|
143
|
+
export default defineConfig({
|
|
144
|
+
plugins: [react(), svgr()],
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
That's it — `import "reso-ui/styles"` works immediately since Vite natively processes CSS from `node_modules` and resolves the relative `url(fonts/...)` paths in the stylesheet.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
#### Webpack
|
|
153
|
+
|
|
154
|
+
Tested with Webpack **5.x** (matches the Reso online-store and web-storefront projects).
|
|
155
|
+
|
|
156
|
+
Your webpack config needs:
|
|
91
157
|
|
|
92
158
|
1. **CSS loader** — to handle `import "reso-ui/styles"`
|
|
93
159
|
2. **asset modules** — to resolve the `.ttf` font files referenced in the library CSS
|
|
94
160
|
|
|
161
|
+
Install the required loaders:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -D webpack@^5.99.6 webpack-cli@^6.0.1 webpack-dev-server@^5.2.1 \
|
|
165
|
+
ts-loader@^9.5.2 style-loader@^4.0.0 css-loader@^7.1.2 \
|
|
166
|
+
sass-loader@^16.0.5 sass@^1.87.0 \
|
|
167
|
+
html-webpack-plugin@^5.6.3
|
|
168
|
+
```
|
|
169
|
+
|
|
95
170
|
Minimum webpack rules:
|
|
96
171
|
|
|
97
172
|
```js
|
|
@@ -132,6 +207,146 @@ module.exports = {
|
|
|
132
207
|
|
|
133
208
|
---
|
|
134
209
|
|
|
210
|
+
#### Next.js
|
|
211
|
+
|
|
212
|
+
Tested with Next.js **15.x** (App Router and Pages Router).
|
|
213
|
+
|
|
214
|
+
Next.js handles CSS imports, font asset resolution, and TypeScript out of the box. **No `next.config` changes are required** for reso-ui to work.
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
npm install next@^15.5.18 react@^18.2.0 react-dom@^18.2.0
|
|
218
|
+
npm install reso-ui classnames
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
If your project uses its own SCSS files:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
npm install -D sass@^1.87.0
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
If your project imports `.svg` files as React components, configure `@svgr/webpack` in `next.config`:
|
|
228
|
+
|
|
229
|
+
```js
|
|
230
|
+
// next.config.mjs
|
|
231
|
+
const nextConfig = {
|
|
232
|
+
webpack(config) {
|
|
233
|
+
config.module.rules.push({
|
|
234
|
+
test: /\.svg$/,
|
|
235
|
+
use: ["@svgr/webpack"],
|
|
236
|
+
});
|
|
237
|
+
return config;
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
export default nextConfig;
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
npm install -D @svgr/webpack@^8.1.0
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
##### App Router setup
|
|
249
|
+
|
|
250
|
+
Reso UI components use React context and hooks internally, so they require a `"use client"` boundary. Create a client-side provider wrapper:
|
|
251
|
+
|
|
252
|
+
```tsx
|
|
253
|
+
// src/providers/ResoUiClientProvider.tsx
|
|
254
|
+
"use client";
|
|
255
|
+
|
|
256
|
+
import { ResoUiProvider } from "reso-ui";
|
|
257
|
+
|
|
258
|
+
export const ResoUiClientProvider = ({ children }: { children: React.ReactNode }) => (
|
|
259
|
+
<ResoUiProvider mode="system">
|
|
260
|
+
{children}
|
|
261
|
+
</ResoUiProvider>
|
|
262
|
+
);
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Then import the styles and provider in your root layout:
|
|
266
|
+
|
|
267
|
+
```tsx
|
|
268
|
+
// src/app/layout.tsx
|
|
269
|
+
import "reso-ui/styles";
|
|
270
|
+
import "./globals.css";
|
|
271
|
+
import { ResoUiClientProvider } from "@/providers/ResoUiClientProvider";
|
|
272
|
+
|
|
273
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
274
|
+
return (
|
|
275
|
+
<html lang="en">
|
|
276
|
+
<body>
|
|
277
|
+
<ResoUiClientProvider>
|
|
278
|
+
{children}
|
|
279
|
+
</ResoUiClientProvider>
|
|
280
|
+
</body>
|
|
281
|
+
</html>
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Use reso-ui components in any Client Component:
|
|
287
|
+
|
|
288
|
+
```tsx
|
|
289
|
+
// src/app/dashboard/page.tsx
|
|
290
|
+
"use client";
|
|
291
|
+
|
|
292
|
+
import { Button, Text, View } from "reso-ui";
|
|
293
|
+
|
|
294
|
+
export default function DashboardPage() {
|
|
295
|
+
return (
|
|
296
|
+
<View pt={9} ph={4}>
|
|
297
|
+
<Text Element="h1">Dashboard</Text>
|
|
298
|
+
<Button text="Click me" onClick={() => alert("clicked")} />
|
|
299
|
+
</View>
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
##### Pages Router setup
|
|
305
|
+
|
|
306
|
+
Import styles and wrap with the provider in `_app.tsx`:
|
|
307
|
+
|
|
308
|
+
```tsx
|
|
309
|
+
// pages/_app.tsx
|
|
310
|
+
import "reso-ui/styles";
|
|
311
|
+
import "../styles/globals.css";
|
|
312
|
+
import { ResoUiProvider } from "reso-ui";
|
|
313
|
+
import type { AppProps } from "next/app";
|
|
314
|
+
|
|
315
|
+
export default function App({ Component, pageProps }: AppProps) {
|
|
316
|
+
return (
|
|
317
|
+
<ResoUiProvider mode="system">
|
|
318
|
+
<Component {...pageProps} />
|
|
319
|
+
</ResoUiProvider>
|
|
320
|
+
);
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
> **Note:** Reso UI does not ship `"use client"` directives. In the App Router, all pages and components that use reso-ui components must be Client Components (marked with `"use client"`), or the reso-ui components must be wrapped in a Client Component.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
#### Create React App (CRA)
|
|
329
|
+
|
|
330
|
+
Tested with **react-scripts 5.x**.
|
|
331
|
+
|
|
332
|
+
CRA handles CSS imports, font asset resolution, and SVG imports out of the box. **No configuration changes are required.**
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
npx create-react-app my-app --template typescript
|
|
336
|
+
cd my-app
|
|
337
|
+
npm install reso-ui classnames
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
If your project uses its own SCSS files, install the `sass` package:
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
npm install -D sass@^1.87.0
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
Everything else works immediately — CRA's built-in webpack config already includes CSS loaders, asset modules for fonts, and `@svgr/webpack` for SVG imports.
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
135
350
|
### Provider setup
|
|
136
351
|
|
|
137
352
|
Wrap your application root with `ResoUiProvider`. It provides theming and responsive context to all Reso UI components.
|
|
@@ -385,6 +600,165 @@ Pass a partial `theme.colors` object to override semantic color roles. Keys map
|
|
|
385
600
|
|
|
386
601
|
---
|
|
387
602
|
|
|
603
|
+
## Utility Classes
|
|
604
|
+
|
|
605
|
+
Reso UI ships utility CSS classes that consumer projects can apply directly via `className` or `rootClassName`. These are included in the `reso-ui/styles` stylesheet and support dark mode automatically where applicable.
|
|
606
|
+
|
|
607
|
+
### Quick Reference
|
|
608
|
+
|
|
609
|
+
| Class | Category | Dark Mode | Description |
|
|
610
|
+
|-------|----------|-----------|-------------|
|
|
611
|
+
| [`resoui_section_border`](#section-border) | Layout | Yes | Bordered section container with default border-radius |
|
|
612
|
+
| [`resoui_table_base`](#tables) | Tables | Yes | Base `<table>` styling (font, collapse, full width) |
|
|
613
|
+
| [`resoui_th_base`](#tables) | Tables | Yes | Table header cell (padding, border, font-weight) |
|
|
614
|
+
| [`resoui_tr_base`](#tables) | Tables | Yes | Table row (border, hover highlight) |
|
|
615
|
+
| [`resoui_tr_base_selected`](#tables) | Tables | Yes | Selected table row highlight |
|
|
616
|
+
| [`resoui_td_base`](#tables) | Tables | No | Table data cell (padding) |
|
|
617
|
+
| [`resoui_navItem_base`](#nav-item-base) | Navigation | No | Nav item base layout for custom NavItem renders |
|
|
618
|
+
| [`resoui_dropdown_option_base`](#dropdown-option-base) | Forms | Yes | Dropdown option base for custom DropdownSelect options |
|
|
619
|
+
| [`resoui_no_select`](#general-utilities) | General | No | Disable text selection |
|
|
620
|
+
| [`resoui_component_disabled`](#general-utilities) | General | No | Disabled overlay with pointer-events disabled |
|
|
621
|
+
| [`resoui_background_image`](#general-utilities) | General | No | Background image with cover |
|
|
622
|
+
| [`resoui_truncate`](#text-utilities) | Text | No | Truncate text with ellipsis |
|
|
623
|
+
| [`resoui_text_no_block_margin`](#text-utilities) | Text | No | Remove default block margins |
|
|
624
|
+
| [`resoui_text_no_inline_margin`](#text-utilities) | Text | No | Remove default inline margins |
|
|
625
|
+
|
|
626
|
+
### Section Border
|
|
627
|
+
|
|
628
|
+
A bordered container for card-like content sections. Apply via `rootClassName` on `Flex` or `View`.
|
|
629
|
+
|
|
630
|
+
```tsx
|
|
631
|
+
import { Flex, Text } from "reso-ui";
|
|
632
|
+
|
|
633
|
+
<Flex direction="column" rootClassName="resoui_section_border" pa={5}>
|
|
634
|
+
<Text Element="h3">Section Title</Text>
|
|
635
|
+
<Text>Section content goes here.</Text>
|
|
636
|
+
</Flex>
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
Light mode: `1px solid` neutral border + default border-radius. Dark mode: border color automatically darkens.
|
|
640
|
+
|
|
641
|
+
### Tables
|
|
642
|
+
|
|
643
|
+
Base styles for native HTML `<table>` elements. Apply via the `className` attribute. Dark mode is handled automatically.
|
|
644
|
+
|
|
645
|
+
| Class | Apply to | What it does |
|
|
646
|
+
|-------|----------|-------------|
|
|
647
|
+
| `resoui_table_base` | `<table>` | Font-family, border-collapse, full width, font size |
|
|
648
|
+
| `resoui_th_base` | `<th>` | Padding, bottom border, font-weight 500, left-aligned |
|
|
649
|
+
| `resoui_tr_base` | `<tr>` | Bottom border, hover background highlight |
|
|
650
|
+
| `resoui_tr_base_selected` | `<tr>` | Selected row highlight (combine with `resoui_tr_base`) |
|
|
651
|
+
| `resoui_td_base` | `<td>` | Cell padding |
|
|
652
|
+
|
|
653
|
+
```tsx
|
|
654
|
+
<table className="resoui_table_base">
|
|
655
|
+
<thead>
|
|
656
|
+
<tr>
|
|
657
|
+
<th className="resoui_th_base">Name</th>
|
|
658
|
+
<th className="resoui_th_base">Email</th>
|
|
659
|
+
<th className="resoui_th_base">Role</th>
|
|
660
|
+
</tr>
|
|
661
|
+
</thead>
|
|
662
|
+
<tbody>
|
|
663
|
+
<tr className="resoui_tr_base">
|
|
664
|
+
<td className="resoui_td_base">John Doe</td>
|
|
665
|
+
<td className="resoui_td_base">john@example.com</td>
|
|
666
|
+
<td className="resoui_td_base">Admin</td>
|
|
667
|
+
</tr>
|
|
668
|
+
</tbody>
|
|
669
|
+
</table>
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
For selected rows, combine both classes:
|
|
673
|
+
|
|
674
|
+
```tsx
|
|
675
|
+
<tr className={`resoui_tr_base ${selectedId === item.id ? "resoui_tr_base_selected" : ""}`}>
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
Add custom column-specific styles alongside the utility classes:
|
|
679
|
+
|
|
680
|
+
```tsx
|
|
681
|
+
<th className="resoui_th_base myPage_th_right">Amount</th>
|
|
682
|
+
<td className="resoui_td_base myPage_td_mono">$120.00</td>
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
```scss
|
|
686
|
+
.myPage_th_right { text-align: right; }
|
|
687
|
+
.myPage_td_mono { font-family: monospace; font-size: 12px; }
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
### Nav Item Base
|
|
691
|
+
|
|
692
|
+
Base layout class for custom nav items rendered inside `NavItem` via `renderCustomNavItem`. Provides standard sizing consistent with the `Navbar`.
|
|
693
|
+
|
|
694
|
+
```tsx
|
|
695
|
+
import { NavItem } from "reso-ui";
|
|
696
|
+
import { Link, useLocation } from "react-router-dom";
|
|
697
|
+
|
|
698
|
+
const AppNavItem = ({ to, children }) => {
|
|
699
|
+
const { pathname } = useLocation();
|
|
700
|
+
|
|
701
|
+
return (
|
|
702
|
+
<NavItem
|
|
703
|
+
renderCustomNavItem={() => (
|
|
704
|
+
<Link
|
|
705
|
+
to={to}
|
|
706
|
+
className={`navItem_base ${pathname === to ? "my_nav_active" : ""}`}
|
|
707
|
+
>
|
|
708
|
+
{children}
|
|
709
|
+
</Link>
|
|
710
|
+
)}
|
|
711
|
+
>
|
|
712
|
+
{children}
|
|
713
|
+
</NavItem>
|
|
714
|
+
);
|
|
715
|
+
};
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
### Dropdown Option Base
|
|
719
|
+
|
|
720
|
+
Base class for custom dropdown options rendered inside `DropdownSelect`. Provides consistent sizing, padding, and dark mode text color.
|
|
721
|
+
|
|
722
|
+
```tsx
|
|
723
|
+
import { DropdownSelect } from "reso-ui";
|
|
724
|
+
import { Link } from "react-router-dom";
|
|
725
|
+
|
|
726
|
+
<DropdownSelect label="Account">
|
|
727
|
+
<Link to="/profile" className="resoui_dropdown_option_base">My Profile</Link>
|
|
728
|
+
<Link to="/settings" className="resoui_dropdown_option_base">Settings</Link>
|
|
729
|
+
</DropdownSelect>
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
### General Utilities
|
|
733
|
+
|
|
734
|
+
| Class | What it does |
|
|
735
|
+
|-------|-------------|
|
|
736
|
+
| `resoui_no_select` | Prevent text selection (all browser prefixes) |
|
|
737
|
+
| `resoui_component_disabled` | Semi-transparent overlay + disable pointer events |
|
|
738
|
+
| `resoui_background_image` | Background image: cover, centered, no-repeat |
|
|
739
|
+
|
|
740
|
+
```tsx
|
|
741
|
+
<Flex rootClassName={isLocked ? "resoui_component_disabled" : ""}>
|
|
742
|
+
<Text>This section is locked</Text>
|
|
743
|
+
</Flex>
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
### Text Utilities
|
|
747
|
+
|
|
748
|
+
| Class | What it does |
|
|
749
|
+
|-------|-------------|
|
|
750
|
+
| `resoui_truncate` | Truncate with ellipsis (`overflow: hidden; text-overflow: ellipsis; white-space: nowrap`) |
|
|
751
|
+
| `resoui_text_no_block_margin` | Remove block margins from headings (`margin-block-start: 0`) |
|
|
752
|
+
| `resoui_text_no_inline_margin` | Remove inline margins |
|
|
753
|
+
|
|
754
|
+
```tsx
|
|
755
|
+
<Text rootClassName="resoui_truncate" rootStyles={{ maxWidth: "200px" }}>
|
|
756
|
+
Very long product name that should be truncated
|
|
757
|
+
</Text>
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
---
|
|
761
|
+
|
|
388
762
|
## Dev Notes
|
|
389
763
|
|
|
390
764
|
### Available commands
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
+
var ChevronSingleLeft = require('../../../icons/svg/ChevronSingleLeft.svg.js');
|
|
5
|
+
var Icon = require('../../Icon/Icon.js');
|
|
4
6
|
var styles = require('../../../utils/styles.js');
|
|
5
7
|
|
|
6
8
|
const Back = ({ to, text = "Back", disabled = false, rootClassName, rootStyles = {}, linkClassName, linkStyles = {}, ...spacingsProps }) => {
|
|
@@ -13,7 +15,7 @@ const Back = ({ to, text = "Back", disabled = false, rootClassName, rootStyles =
|
|
|
13
15
|
const linkClasses = styles.createComponentStyles(styles.createLayoutStyles({}, linkClassName));
|
|
14
16
|
return (React.createElement("div", { "data-testid": "back-root", className: containerStyles, style: rootStyles, role: "navigation" },
|
|
15
17
|
React.createElement("a", { rel: "noreferrer", href: to, className: linkClasses, style: linkStyles, "data-testid": "back-link" },
|
|
16
|
-
|
|
18
|
+
React.createElement(Icon.Icon, { SvgIcon: ChevronSingleLeft.default, width: 14, height: 14 }),
|
|
17
19
|
" ",
|
|
18
20
|
text)));
|
|
19
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Back.js","sources":["../../../../../src/library/components/Buttons/Back/Back.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","withSpacingsProps"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Back.js","sources":["../../../../../src/library/components/Buttons/Back/Back.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","withSpacingsProps","Icon","ChevronSingleLeft"],"mappings":";;;;;;;AA4BO,MAAM,IAAI,GAAG,CAAC,EACnB,EAAE,EACF,IAAI,GAAG,MAAM,EACb,QAAQ,GAAG,KAAK,EAChB,aAAa,EACb,UAAU,GAAG,EAAE,EACf,aAAa,EACb,UAAU,GAAG,EAAE,EACf,GAAG,aAAa,EACL,KAAI;AACf,IAAA,MAAM,eAAe,GAAGA,4BAAqB,CAC3CC,yBAAkB,CAChBC,wBAAiB,CACf;AACE,QAAA,qBAAqB,EAAE,IAAI;AAC5B,KAAA,EACD,aAAa,CACd,EACD,aAAa,EACb;QACE,QAAQ;AACR,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA,CACF,CACF;IAED,MAAM,WAAW,GAAGF,4BAAqB,CACvCC,yBAAkB,CAAC,EAAE,EAAE,aAAa,CAAC,CACtC;AAED,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EACc,WAAW,EACvB,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAC,YAAY,EAAA;AAEjB,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAC,YAAY,EAChB,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,UAAU,iBACL,WAAW,EAAA;AAEvB,YAAA,KAAA,CAAA,aAAA,CAACE,SAAI,EAAA,EAAC,OAAO,EAAEC,yBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAA,CAAI;;YAAE,IAAI,CAC/D,CACA;AAEV;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var styles = require('../../../utils/styles.js');
|
|
5
|
+
|
|
6
|
+
const DashboardOverviewCard = ({ label, value, badge, onClick, rootClassName, rootStyles = {}, ...spacingsProps }) => {
|
|
7
|
+
const containerStyles = styles.createComponentStyles(styles.createLayoutStyles(styles.withSpacingsProps({
|
|
8
|
+
resoui_dashboard_overview_card: true,
|
|
9
|
+
resoui_dashboard_overview_card_clickable: !!onClick,
|
|
10
|
+
}, spacingsProps), rootClassName));
|
|
11
|
+
return (React.createElement("div", { className: containerStyles, style: rootStyles, "data-testid": "dashboard-overview-card-root", onClick: onClick, role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, onKeyDown: onClick
|
|
12
|
+
? (e) => {
|
|
13
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
14
|
+
e.preventDefault();
|
|
15
|
+
onClick();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
: undefined },
|
|
19
|
+
React.createElement("div", { className: "resoui_dashboard_overview_card_label" },
|
|
20
|
+
React.createElement("span", { className: "resoui_dashboard_overview_card_label_text" }, label),
|
|
21
|
+
badge != null && badge > 0 && (React.createElement("span", { className: "resoui_dashboard_overview_card_badge" },
|
|
22
|
+
"+",
|
|
23
|
+
badge))),
|
|
24
|
+
React.createElement("div", { className: "resoui_dashboard_overview_card_value" }, value)));
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.DashboardOverviewCard = DashboardOverviewCard;
|
|
28
|
+
//# sourceMappingURL=Dashboard-Overview-Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dashboard-Overview-Card.js","sources":["../../../../../src/library/components/Card/Dashboard-Overview-Card/Dashboard-Overview-Card.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","withSpacingsProps"],"mappings":";;;;;AAqBO,MAAM,qBAAqB,GAAG,CAAC,EACpC,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,aAAa,EACb,UAAU,GAAG,EAAE,EACf,GAAG,aAAa,EACY,KAAI;AAChC,IAAA,MAAM,eAAe,GAAGA,4BAAqB,CAC3CC,yBAAkB,CAChBC,wBAAiB,CACf;AACE,QAAA,8BAA8B,EAAE,IAAI;QACpC,wCAAwC,EAAE,CAAC,CAAC,OAAO;AACpD,KAAA,EACD,aAAa,CACd,EACD,aAAa,CACd,CACF;AAED,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,UAAU,iBACL,8BAA8B,EAC1C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,EACpC,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,EACjC,SAAS,EACP;AACE,cAAE,CAAC,CAAC,KAAI;AACJ,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;oBACtC,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,OAAO,EAAE;gBACX;YACF;AACF,cAAE,SAAS,EAAA;QAGf,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,EAAA;AACnD,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,2CAA2C,EAAA,EACxD,KAAK,CACD;YACN,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,KACzB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,sCAAsC,EAAA;;gBAClD,KAAK,CACF,CACR,CACG;QACN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,EAAA,EAAE,KAAK,CAAO,CAC/D;AAEV;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var styles = require('../../../utils/styles.js');
|
|
5
|
+
|
|
6
|
+
const DashboardOverviewCardContainer = ({ children, rootClassName, rootStyles = {}, ...spacingsProps }) => {
|
|
7
|
+
const containerStyles = styles.createComponentStyles(styles.createLayoutStyles(styles.withSpacingsProps({
|
|
8
|
+
resoui_dashboard_overview_card_container: true,
|
|
9
|
+
}, spacingsProps), rootClassName));
|
|
10
|
+
return (React.createElement("div", { className: containerStyles, style: rootStyles, "data-testid": "dashboard-overview-card-container-root" }, children));
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.DashboardOverviewCardContainer = DashboardOverviewCardContainer;
|
|
14
|
+
//# sourceMappingURL=Dashboard-Overview-Card-Container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dashboard-Overview-Card-Container.js","sources":["../../../../../src/library/components/Card/Dashboard-Overview-Card-Container/Dashboard-Overview-Card-Container.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","withSpacingsProps"],"mappings":";;;;;AAoBO,MAAM,8BAA8B,GAAG,CAAC,EAC7C,QAAQ,EACR,aAAa,EACb,UAAU,GAAG,EAAE,EACf,GAAG,aAAa,EACqB,KAAI;AACzC,IAAA,MAAM,eAAe,GAAGA,4BAAqB,CAC3CC,yBAAkB,CAChBC,wBAAiB,CACf;AACE,QAAA,wCAAwC,EAAE,IAAI;AAC/C,KAAA,EACD,aAAa,CACd,EACD,aAAa,CACd,CACF;AAED,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,UAAU,iBACL,wCAAwC,EAAA,EAEnD,QAAQ,CACL;AAEV;;;;"}
|
|
@@ -49,7 +49,7 @@ onClickYes, onClickNo, onClickOk, rootClassName, rootStyles, yesButtonClassName,
|
|
|
49
49
|
onClickNo();
|
|
50
50
|
}
|
|
51
51
|
}, text: noText }),
|
|
52
|
-
React.createElement(Button.Button, { rootClassName: yesButtonClasses, rootStyles: yesButtonStyles, onClick: () => {
|
|
52
|
+
React.createElement(Button.Button, { type: "primary", rootClassName: yesButtonClasses, rootStyles: yesButtonStyles, onClick: () => {
|
|
53
53
|
if (validations.methodHasValue(onClickYes)) {
|
|
54
54
|
onClickYes();
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../../../src/library/components/Dialog/Dialog.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","ModalContainer","ModalHeader","methodHasValue","ModalBody","Button"],"mappings":";;;;;;;;;;MA0Ca,MAAM,GAAG,CAAC,EACrB,MAAM,GAAG,KAAK,EACd,IAAI,GAAG,OAAO,EACd,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,SAAS,EACjB,MAAM,GAAG,eAAe,EACxB,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,IAAI,EACb,OAAO;AACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,eAAe,GAAG,EAAE,EACpB,iBAAiB,EACjB,cAAc,GAAG,EAAE,EACnB,iBAAiB,EACjB,cAAc,GAAG,EAAE,GACX,KAAI;AACZ,IAAA,MAAM,eAAe,GAAGA,4BAAqB,CAC3CC,yBAAkB,CAChB;AACE,QAAA,uBAAuB,EAAE,IAAI;KAC9B,EAED,aAAa,CACd,CACF;IAED,MAAM,uBAAuB,GAAGA,yBAAkB,CAChD;AACE,QAAA,+BAA+B,EAAE,IAAI;QACrC,qCAAqC,EAAE,IAAI,KAAK,OAAO;AACxD,KAAA,EACD,IAAI,EACJ;AACE,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA,CACF;AAED,IAAA,MAAM,gBAAgB,GAAGD,4BAAqB,CAC5CC,yBAAkB,CAChB;AACE,QAAA,wBAAwB,EAAE,IAAI;AAC/B,KAAA,EACD,kBAAkB,EAClB;AACE,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA,CACF,CACF;AAED,IAAA,MAAM,eAAe,GAAGD,4BAAqB,CAC3CC,yBAAkB,CAChB;AACE,QAAA,uBAAuB,EAAE,IAAI;AAC9B,KAAA,EACD,iBAAiB,EACjB;AACE,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA,CACF,CACF;AAED,IAAA,MAAM,eAAe,GAAGD,4BAAqB,CAC3CC,yBAAkB,CAChB;AACE,QAAA,uBAAuB,EAAE,IAAI;AAC9B,KAAA,EACD,iBAAiB,EACjB;AACE,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA,CACF,CACF;IAED,QACE,oBAACC,6BAAc,EAAA,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,CAAC,EAAA;QAEL,KAAA,CAAA,aAAA,CAACC,uBAAW,IACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAIC,0BAAc,CAAC,OAAO,CAAC,EAAE;AAC3B,oBAAA,OAAO,EAAE;gBACX;AACF,YAAA,CAAC,EAAA,CACD;AACF,QAAA,KAAA,CAAA,aAAA,CAACC,mBAAS,EAAA,IAAA;AACR,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,aAAA,EAAe,oBAAoB,EAAC,SAAS,EAAC,sBAAsB,EAAA,EACjE,MAAM,CACL;YACH,WAAW,KACV,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,aAAA,EACc,yBAAyB,EACrC,SAAS,EAAC,2BAA2B,EAAA,EAEpC,WAAW,CACV,CACL;AACD,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EACc,0BAA0B,EACtC,SAAS,EAAE,uBAAuB,EAAA,EAEjC,IAAI,KAAK,OAAO,IACf,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;AACE,gBAAA,KAAA,CAAA,aAAA,CAACC,aAAM,EAAA,EACL,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,MAAK;AACZ,wBAAA,IAAIF,0BAAc,CAAC,SAAS,CAAC,EAAE;AAC7B,4BAAA,SAAS,EAAE;wBACb;AACF,oBAAA,CAAC,EACD,IAAI,EAAE,MAAM,EAAA,CACZ;AACF,gBAAA,KAAA,CAAA,aAAA,CAACE,aAAM,EAAA,EACL,aAAa,EAAE,gBAAgB,EAC/B,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,MAAK;AACZ,wBAAA,IAAIF,0BAAc,CAAC,UAAU,CAAC,EAAE;AAC9B,4BAAA,UAAU,EAAE;wBACd;oBACF,CAAC,EACD,IAAI,EAAE,OAAO,EAAA,CACb,CACD,KAEH,KAAA,CAAA,aAAA,CAACE,aAAM,EAAA,EACL,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,MAAK;AACZ,oBAAA,IAAIF,0BAAc,CAAC,SAAS,CAAC,EAAE;AAC7B,wBAAA,SAAS,EAAE;oBACb;AACF,gBAAA,CAAC,EACD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAA,IAAA,EACN,YAAY,EAAA,IAAA,EAAA,CACZ,CACH,CACG,CACI,CACG;AAErB;;;;"}
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../../../../src/library/components/Dialog/Dialog.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","ModalContainer","ModalHeader","methodHasValue","ModalBody","Button"],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var styles = require('../../utils/styles.js');
|
|
5
|
+
var useDisableBodyScroll = require('../../hooks/useDisableBodyScroll.js');
|
|
6
|
+
var ResponsiveContext = require('../../context/ResponsiveContext.js');
|
|
7
|
+
require('../../context/ThemeContext.js');
|
|
8
|
+
var Image = require('../Images/Image/Image.js');
|
|
9
|
+
var CloseButton = require('../Buttons/Close-Button/Close-Button.js');
|
|
10
|
+
var Icon = require('../Icon/Icon.js');
|
|
11
|
+
var ChevronSingleLeft = require('../../icons/svg/ChevronSingleLeft.svg.js');
|
|
12
|
+
var ChevronSingleRight = require('../../icons/svg/ChevronSingleRight.svg.js');
|
|
13
|
+
|
|
14
|
+
const TRANSITION_DURATION = 250;
|
|
15
|
+
const EnlargedImageModal = ({ isOpen = false, onClose, imageSrc, imageAlt = "Enlarged image", hasNext = false, hasPrevious = false, onNext, onPrevious, layer = 1, width = 640, height = 640, objectFit = "contain", rootClassName, rootStyles = {}, ...spacingsProps }) => {
|
|
16
|
+
useDisableBodyScroll.useDisableBodyScroll(isOpen);
|
|
17
|
+
const { isMobile } = React.useContext(ResponsiveContext.ResponsiveContext);
|
|
18
|
+
const [_isOpen, _setIsOpen] = React.useState(false);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
if (isOpen) {
|
|
21
|
+
_setIsOpen(true);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const timeout = setTimeout(() => _setIsOpen(false), TRANSITION_DURATION);
|
|
25
|
+
return () => clearTimeout(timeout);
|
|
26
|
+
}
|
|
27
|
+
}, [isOpen]);
|
|
28
|
+
const handleKeyDown = React.useCallback((e) => {
|
|
29
|
+
if (!isOpen)
|
|
30
|
+
return;
|
|
31
|
+
if (e.key === "Escape") {
|
|
32
|
+
onClose();
|
|
33
|
+
}
|
|
34
|
+
else if (e.key === "ArrowRight" && hasNext && onNext) {
|
|
35
|
+
onNext();
|
|
36
|
+
}
|
|
37
|
+
else if (e.key === "ArrowLeft" && hasPrevious && onPrevious) {
|
|
38
|
+
onPrevious();
|
|
39
|
+
}
|
|
40
|
+
}, [isOpen, onClose, hasNext, hasPrevious, onNext, onPrevious]);
|
|
41
|
+
React.useEffect(() => {
|
|
42
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
43
|
+
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
44
|
+
}, [handleKeyDown]);
|
|
45
|
+
const backdropClasses = styles.createComponentStyles(styles.createLayoutStyles({
|
|
46
|
+
resoui_enlarged_image_modal_backdrop: true,
|
|
47
|
+
resoui_enlarged_image_modal_backdrop_transition: true,
|
|
48
|
+
resoui_enlarged_image_modal_backdrop_open: isOpen ? _isOpen : isOpen,
|
|
49
|
+
}));
|
|
50
|
+
const containerClasses = styles.createComponentStyles(styles.createLayoutStyles(styles.withSpacingsProps({
|
|
51
|
+
resoui_enlarged_image_modal_container: true,
|
|
52
|
+
resoui_enlarged_image_modal_container_transition: true,
|
|
53
|
+
resoui_enlarged_image_modal_container_open: isOpen ? _isOpen : isOpen,
|
|
54
|
+
}, spacingsProps), rootClassName));
|
|
55
|
+
const computedZIndex = layer + 10;
|
|
56
|
+
const getIsOpen = () => (isOpen ? isOpen : _isOpen);
|
|
57
|
+
const imageSize = isMobile ? 360 : width;
|
|
58
|
+
const imageHeight = isMobile ? 360 : height;
|
|
59
|
+
return (getIsOpen() && (React.createElement("div", { className: backdropClasses, style: { zIndex: computedZIndex }, "data-testid": "enlarged-image-modal-backdrop", role: "dialog", "aria-modal": "true", "aria-label": imageAlt },
|
|
60
|
+
React.createElement("div", { className: "resoui_enlarged_image_modal_close" },
|
|
61
|
+
React.createElement(CloseButton.CloseButton, { onClick: onClose })),
|
|
62
|
+
React.createElement("div", { className: containerClasses, style: { zIndex: computedZIndex + 1, ...rootStyles }, "data-testid": "enlarged-image-modal-root" },
|
|
63
|
+
React.createElement(Image.Image, { rootStyles: {
|
|
64
|
+
width: `${imageSize}px`,
|
|
65
|
+
height: `${imageHeight}px`,
|
|
66
|
+
}, src: imageSrc, alt: imageAlt, onClick: onClose, clickable: "zoomOut", objectFit: objectFit })),
|
|
67
|
+
hasPrevious && onPrevious && (React.createElement("button", { className: "resoui_enlarged_image_modal_nav resoui_enlarged_image_modal_nav_previous resoui_no_select", onClick: (e) => {
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
e.stopPropagation();
|
|
70
|
+
onPrevious();
|
|
71
|
+
}, "data-testid": "enlarged-image-modal-nav-previous", "aria-label": "Previous image", type: "button" },
|
|
72
|
+
React.createElement(Icon.Icon, { SvgIcon: ChevronSingleLeft.default, width: 24, height: 24 }))),
|
|
73
|
+
hasNext && onNext && (React.createElement("button", { className: "resoui_enlarged_image_modal_nav resoui_enlarged_image_modal_nav_next resoui_no_select", onClick: (e) => {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
e.stopPropagation();
|
|
76
|
+
onNext();
|
|
77
|
+
}, "data-testid": "enlarged-image-modal-nav-next", "aria-label": "Next image", type: "button" },
|
|
78
|
+
React.createElement(Icon.Icon, { SvgIcon: ChevronSingleRight.default, width: 24, height: 24 }))))));
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
exports.EnlargedImageModal = EnlargedImageModal;
|
|
82
|
+
//# sourceMappingURL=Enlarged-Image-Modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Enlarged-Image-Modal.js","sources":["../../../../src/library/components/Enlarged-Image-Modal/Enlarged-Image-Modal.tsx"],"sourcesContent":[null],"names":["useDisableBodyScroll","useContext","ResponsiveContext","useState","useEffect","useCallback","createComponentStyles","createLayoutStyles","withSpacingsProps","CloseButton","Image","Icon","ChevronSingleLeft","ChevronSingleRight"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var styles = require('../../utils/styles.js');
|
|
5
5
|
|
|
6
|
-
const Icon = ({ SvgIcon, width = 32, height = 32, inline = false, fill = "
|
|
6
|
+
const Icon = ({ SvgIcon, width = 32, height = 32, inline = false, fill = "currentColor", stroke = "current", rootClassName, rootStyles = {}, ...spacingsProps }) => {
|
|
7
7
|
const containerClasses = styles.createComponentStyles(styles.createLayoutStyles(styles.withSpacingsProps({
|
|
8
8
|
resoui_icon_container: true,
|
|
9
9
|
resoui_icon_container_inline: inline,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.js","sources":["../../../../src/library/components/Icon/Icon.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","withSpacingsProps"],"mappings":";;;;;AA4BO,MAAM,IAAI,GAAG,CAAC,EACnB,OAAO,EACP,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,KAAK,EACd,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"Icon.js","sources":["../../../../src/library/components/Icon/Icon.tsx"],"sourcesContent":[null],"names":["createComponentStyles","createLayoutStyles","withSpacingsProps"],"mappings":";;;;;AA4BO,MAAM,IAAI,GAAG,CAAC,EACnB,OAAO,EACP,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,KAAK,EACd,IAAI,GAAG,cAAc,EACrB,MAAM,GAAG,SAAS,EAClB,aAAa,EACb,UAAU,GAAG,EAAE,EACf,GAAG,aAAa,EACL,KAAI;AACf,IAAA,MAAM,gBAAgB,GAAGA,4BAAqB,CAC5CC,yBAAkB,CAChBC,wBAAiB,CACf;AACE,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,4BAA4B,EAAE,MAAM;AACrC,KAAA,EACD,aAAa,CACd,EACD,aAAa,CACd,CACF;IAED,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EACc,WAAW,EACvB,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,UAAU,EAAA;QAEjB,KAAA,CAAA,aAAA,CAAC,OAAO,mBACM,eAAe,EAC3B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EAAA,CACd,CACE;AAEV;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
+
var Loader = require('../Loaders/Loader/Loader.js');
|
|
4
5
|
var styles = require('../../utils/styles.js');
|
|
5
6
|
|
|
6
7
|
const InfiniteScrollContainer = ({ children, isLoading = true, currentPage = 1, setCurrentPage, totalPages = 1, fetchedForPage, onFetchData, height = "100%", loader, scrollThreshold = 1, rootClassName, rootStyles = {}, ...spacingsProps }) => {
|
|
@@ -35,7 +36,7 @@ const InfiniteScrollContainer = ({ children, isLoading = true, currentPage = 1,
|
|
|
35
36
|
};
|
|
36
37
|
return (React.createElement("div", { className: containerStyles, style: { height, maxHeight: height, ...rootStyles }, "data-testid": "infinite-scroll-container-root", onScroll: handleScroll },
|
|
37
38
|
children,
|
|
38
|
-
isLoading && (React.createElement("div", { ref: loaderRef, className: "resoui_infiniteScroll_loader", "data-testid": "infinite-scroll-loader" }, loader || React.createElement(
|
|
39
|
+
isLoading && (React.createElement("div", { ref: loaderRef, className: "resoui_infiniteScroll_loader", "data-testid": "infinite-scroll-loader" }, loader || React.createElement(Loader.Loader, { size: "small" })))));
|
|
39
40
|
};
|
|
40
41
|
|
|
41
42
|
exports.InfiniteScrollContainer = InfiniteScrollContainer;
|