Anonymous View
1.70.0 • Published 1 year ago

@leather.io/ui v1.70.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

UI

This package contains Leather Wallet's UI library for our web + React Native applications.

Architecture

This package colocates Web and React Native code, such that commonalities such as shared logic and types are shared. The naming convention must be followed.

  • *.web.ts — bundled only for Web
  • *.native.ts — bundled only for React Native
  • *.shared.ts — bundled for all platforms

Web Setup

Our web apps use panda css. To setup in your application you need to:

  • Install @pandacss/dev
  • Setup panda css and configure it to acknowledge the library code
  • Configure Webpack to load the files correctly
  • Import the library styles from @leather.io/ui/styles

Panda configuration

Specify the library as part of the panda.config include:

  include: [
    './node_modules/@leather.io/ui/dist-web/**/*.{js,jsx,ts,tsx}',
    './src/**/*.{js,jsx,ts,tsx}',
  ],

Webpack configuration

  • Alias react and react-dom to avoid react errors.

  • Configure your module to handle jsx files

export const config = {
...
  module: {
    resolve: {
    ...
    alias: {
    'leather-styles': path.resolve('leather-styles'),
    'react': path.resolve('./node_modules/react'),
    'react-dom': path.resolve('./node_modules/react-dom')
    },
      ...
    rules: [
      ...
      {
        test: /\.(js)$/,
        include: [/node_modules\/@leather.io\/ui/],
        loader: 'esbuild-loader',
        options: { tsconfig: './tsconfig.json', loader: {'jsx'},target: 'es2020' },
      },

Security: Dynamic Content Sanitization

All dynamic HTML content rendered in the web app (such as FAQs, explainers, and CMS-driven posts) is sanitized using DOMPurify via a shared utility (sanitizeContent).

  • Browser: Uses DOMPurify to remove unsafe HTML and prevent XSS.
  • SSR: Falls back to escaping HTML tags to prevent injection.

This is enforced in all UI components that render user- or CMS-driven HTML, including FAQ, explainer, and post-driven UI elements.

A shared utility, sanitizeContent, is used throughout the codebase to sanitize any post content before rendering. Example usage:

import { sanitizeContent } from '@leather.io/ui/utils/sanitize-content';

const safeHtml = sanitizeContent(post.Summary);

This is applied in all FAQ, explainer, hover card, and heading components that render post content.

License

MIT © Leather Wallet LLC


⬅ Back


1.56.0

1 year ago

1.37.0

2 years ago

1.40.0

2 years ago

1.63.0

1 year ago

1.40.1

2 years ago

1.44.0

2 years ago

1.44.2

2 years ago

1.44.1

2 years ago

1.48.0

1 year ago

1.44.4

2 years ago

1.44.3

2 years ago

1.48.2

1 year ago

1.44.6

2 years ago

1.48.1

1 year ago

1.44.5

2 years ago

1.48.4

1 year ago

1.48.3

1 year ago

1.48.6

1 year ago

1.48.5

1 year ago

1.70.0

1 year ago

1.51.0

1 year ago

1.51.2

1 year ago

1.32.0

2 years ago

1.51.1

1 year ago

1.32.1

2 years ago

1.55.0

1 year ago

1.51.4

1 year ago

1.51.3

1 year ago

1.57.0

1 year ago

1.34.0

2 years ago

1.34.1

2 years ago

1.38.0

2 years ago

1.60.0

1 year ago

1.41.1

2 years ago

1.64.0

1 year ago

1.41.0

2 years ago

1.64.1

1 year ago

1.41.2

2 years ago

1.68.0

1 year ago

1.45.0

2 years ago

1.68.1

1 year ago

1.68.2

1 year ago

1.68.3

1 year ago

1.49.1

1 year ago

1.68.4

1 year ago

1.49.0

1 year ago

1.68.5

1 year ago

1.49.3

1 year ago

1.68.6

1 year ago

1.49.2

1 year ago

1.68.7

1 year ago

1.49.5

1 year ago

1.68.8

1 year ago

1.49.4

1 year ago

1.68.9

1 year ago

1.49.6

1 year ago

1.52.1

1 year ago

1.52.0

1 year ago

1.33.0

2 years ago

1.58.0

1 year ago

1.35.0

2 years ago

1.39.1

2 years ago

1.39.2

2 years ago

1.39.0

2 years ago

1.61.1

1 year ago

1.61.0

1 year ago

1.42.0

2 years ago

1.65.0

1 year ago

1.42.2

2 years ago

1.42.1

2 years ago

1.46.0

1 year ago

1.42.3

2 years ago

1.69.0

1 year ago

1.53.0

1 year ago

1.36.0

2 years ago

1.36.1

2 years ago

1.59.0

1 year ago

1.32.2

2 years ago

1.36.2

2 years ago

1.62.0

1 year ago

1.43.1

2 years ago

1.66.0

1 year ago

1.43.0

2 years ago

1.66.1

1 year ago

1.66.2

1 year ago

1.47.1

1 year ago

1.47.0

1 year ago

1.47.3

1 year ago

1.47.2

1 year ago

1.47.5

1 year ago

1.47.4

1 year ago

1.47.7

1 year ago

1.47.6

1 year ago

1.50.1

1 year ago

1.50.0

1 year ago

1.50.2

1 year ago

1.54.1

1 year ago

1.54.0

1 year ago

1.31.2

2 years ago

1.31.1

2 years ago

1.31.0

2 years ago

1.29.0

2 years ago

1.29.1

2 years ago

1.30.0

2 years ago

1.25.0

2 years ago

1.24.1

2 years ago

1.26.0

2 years ago

1.25.1

2 years ago

1.24.0

2 years ago

1.23.1

2 years ago

1.27.0

2 years ago

1.28.0

2 years ago

1.27.1

2 years ago

1.23.0

2 years ago

1.22.0

2 years ago

1.21.1

2 years ago

1.21.0

2 years ago

1.20.0

2 years ago

1.19.0

2 years ago

1.18.0

2 years ago

1.17.2

2 years ago

1.17.1

2 years ago

1.17.0

2 years ago

1.16.0

2 years ago

1.15.0

2 years ago

1.14.3

2 years ago

1.14.2

2 years ago

1.14.1

2 years ago

1.14.0

2 years ago

1.13.1

2 years ago

1.13.0

2 years ago

1.12.0

2 years ago

1.11.0

2 years ago

1.10.1

2 years ago

1.10.0

2 years ago

1.9.2

2 years ago

1.9.1

2 years ago

1.9.0

2 years ago

1.8.1

2 years ago

1.8.0

2 years ago

1.7.0

2 years ago

1.6.5

2 years ago

1.6.4

2 years ago

1.6.3

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago