Universal UI kit and style system for React Native + Web - with an optimizing compiler 🚄

Overview
Tamagui

A style system, UI kit and optimizing compiler for React Native & Web

  • @tamagui/core - Independent minimal style system on top of React Native/Web.
  • tamagui - Complete universal UI kit built on top of @tamagui/core.
  • @tamagui/static - Optimizing compiler that works with core and tamagui.

See tamagui.dev for documentation.

Tamagui lets you share more code between web and native apps while improving, rather than sacrificing, DX, performance, and code maintainability.

It does this with an optimizing compiler that flattens your React trees and outputs platform-specific optimizations like generating atomic CSS and media queries on the web.

The compiler enables a win-win-win: more performance, easier to write, works on every platform. Typically you'd have to choose two of: performant, cross-platform, concise. With Tamagui, you don't!

The compiler actually partially evaluates code including imports, logic, spreads, and nested ternaries. Any fully analyzable JSX usage will be flattened entirely (to a div on web, or View on native, rather than your custom defined component), leading to large reductions in tree-size.

Learn more on the website.

Contributing

Tamagui is a monorepo that makes it easy to contribute. Install:

yarn

While developing, you'll want to run the build watcher in a dedicated terminal:

yarn watch

It's easiest to use the sandbox project to test and develop things for web:

yarn sandbox

This runs a client-side only vite build of tamagui, with a complete configuration already set up.

To test on native, kitchen-sink is equally light weight and well set up:

yarn kitchen-sink

Once you've made changes, you can add tests. All compiler and CSS generation tests live in packages/static.

Before submitting a PR, check everything works across every combination of environments.

To do so, run the site, first in development to test if it works entirely at runtime:

# Make sure you have run `yarn watch` before you excute this command.

yarn site

You replace _app.tsx to return just your component/use case. If it looks good, try running again with the compiler on:

yarn site:extract

Finally, if that looks good, build to production and test that:

yarn site:prod

This flow ensures it works with Vite, Webpack, Metro, Next.js with SSR, and with the compiler both on and off.

Our plan is to add integration tests to cover all this and more soon!

Comments
  • Tamagui starter not compatible with Expo EAS build

    Tamagui starter not compatible with Expo EAS build

    Describe the bug Starting a new project with npm create [email protected] will not successful build on Expo EAS services. This is mostly I think due to the fact that the tamagui-app starter uses yarn v3 which seems not compatible with Expo services.

    To Reproduce Run npm create [email protected] and install all dependencies. After that drop a minimal eas.json into the apps/expo folder:

    {
      "build": {
        "development": {
          "distribution": "internal",
          "android": {
            "buildType": "apk"
          },
          "ios": {
            "simulator": true,
            "image": "latest"
          }
        },
        "production": {
          "distribution": "store",
          "android": {
            "buildType": "app-bundle"
          }
        }
    }
    

    Last run following command in apps/expo folder

    eas build --profile development --platform ios
    

    See attached screenshot that on ios builds the eas build hangs and does not complete.

    System Info (please complete the following information):

      System:
        OS: macOS 12.4
        CPU: (10) arm64 Apple M1 Max
        Memory: 3.20 GB / 64.00 GB
        Shell: 5.8.1 - /bin/zsh
      Binaries:
        Node: 16.16.0 - ~/.nvm/versions/node/v16.16.0/bin/node
        Yarn: 3.2.0 - ~/.nvm/versions/node/v16.16.0/bin/yarn
        npm: 8.13.2 - ~/.nvm/versions/node/v16.16.0/bin/npm
      Browsers:
        Brave Browser: 105.1.43.88
        Safari: 15.5
    
    
    Screenshot 2022-08-18 at 17 07 42
    opened by dohomi 20
  • [Windows] Required appropriate loader error when running yarn web

    [Windows] Required appropriate loader error when running yarn web

    Describe the bug Received a required appropriate loader error when running yarn web on fresh install using npx [email protected] my-app

    error - ../packages/app/provider/index.tsx
    Module parse failed: Unexpected token (5:46)
    You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
    | import { TamaguiProviderProps } from '@my/ui'
    |
    > export function Provider({ children, ...rest }: TamaguiProviderProps) {
    |   return (
    |     <Tamagui.Provider disableInjectCSS defaultTheme="light" {...rest}>
    

    To Reproduce

    1. Start a new project using npx [email protected] my-app
    2. cd to project
    3. run yarn web

    System Info (please complete the following information): Output of npx envinfo --system --npmPackages '{vitest,vite,@vitejs/*}' --binaries --browsers

      System:
        OS: Windows 10 10.0.19044
        CPU: (24) x64 AMD Ryzen 9 3900X 12-Core Processor
        Memory: 15.48 GB / 31.91 GB
      Binaries:
        Node: 16.15.1 - C:\Program Files\nodejs\node.EXE
        Yarn: 3.2.0 - C:\Program Files (x86)\Yarn\bin\yarn.CMD       
        npm: 8.11.0 - C:\Program Files\nodejs\npm.CMD
      Browsers:
        Chrome: 103.0.5060.134
        Edge: Spartan (44.19041.1266.0), Chromium (103.0.1264.77)    
        Internet Explorer: 11.0.19041.1566
    
    
    opened by vktrwlt 17
  • Ease the dependency on @expo/match-media

    Ease the dependency on @expo/match-media

    I wanted to bring attention to the hard dependency on @expo/match-media. IMO core module should not force the bare react-native developer to install the expo module, which requires changes to the native code.

    In this PR I drafted an option to make the match-media function pluggable. It will simplify the installation process for react-native developers who might not even use media props.

    @natew, let me know how we can tackle this issue.

    opened by alisherks 14
  • Buttons are not clickable on mobile

    Buttons are not clickable on mobile

    Describe the bug Buttons are not clickable on mobile when they are on the web. Reproducible on both version 1.0.1-beta.115 and 1.0.1-beta.116.

    To Reproduce

    <Button onPress={() => console.log('signIn')}>
      Sign in
    </Button>
    

    System Info (please complete the following information):

    System:
        OS: macOS 12.4
        CPU: (8) arm64 Apple M1 Pro
        Memory: 97.30 MB / 16.00 GB
        Shell: 5.8.1 - /bin/zsh
    Binaries:
        Node: 16.15.1 - ~/.nvm/versions/node/v16.15.1/bin/node
        Yarn: 1.22.15 - ~/.nvm/versions/node/v16.15.1/bin/yarn
        npm: 8.11.0 - ~/.nvm/versions/node/v16.15.1/bin/npm
    Browsers:
        Brave Browser: 103.1.40.113
        Chrome: 103.0.5060.134
        Safari: 15.5```
    
    opened by matthieuh 12
  • Vercel build fails with tamagui starter monorepo

    Vercel build fails with tamagui starter monorepo

    Is your feature request related to a problem? Please describe. The current Tamagui starter does not build successfully on Vercel using the Github monorepo approach.

    Type error: Cannot find module '@my/ui' or its corresponding type declarations.
    

    Locally NextJS works, also the build. It seems to be some config missing that Vercel recognises the path to "@my/ui" Below is the config for the Vercel build.

    Describe the solution you'd like Add the necessary config to NextJS for successful deploy to Vercel Screenshot 2022-09-15 at 09 16 58

    opened by dohomi 10
  • Unable to make Tamagui work on a managed Expo project

    Unable to make Tamagui work on a managed Expo project

    Describe the bug I recently stumbled upon Tamagui. I believe it's a great system and wanted to style an upcoming React Native Expo app using it. So I followed all the instructions for React Native and Expo, but there seems to be a problem with the Tamagui.Provider component that I am not able to resolve.

    To Reproduce

    1. Install all the Tamagui packages and upgrade react-native-web to ^0.18.1 and react-native-safe-area-context ^4.3.1.
    2. Add the following code to babel.config.js:
    plugins: [
          'react-native-reanimated/plugin',
          [
            '@tamagui/babel-plugin',
            {
              components: ['tamagui'],
              config: './app/theme/tamagui-config.ts',
              logTimings: true,
              disableExtraction: process.env.NODE_ENV === 'development',
            },
          ],
          // be sure to set TAMAGUI_TARGET
          [
            'transform-inline-environment-variables',
            {
              include: 'TAMAGUI_TARGET',
            },
          ],
        ],
    
    1. Create the following tamagui-config.ts file:
    import { createTamagui } from 'tamagui';
    import { createInterFont } from '@tamagui/font-inter';
    import { shorthands } from '@tamagui/shorthands';
    import { themes, tokens } from '@tamagui/theme-base';
    import { createAnimations } from '@tamagui/animations-reanimated';
    
    const animations = createAnimations({
      bouncy: {
        type: 'spring',
        damping: 10,
        mass: 0.9,
        stiffness: 100,
      },
      lazy: {
        type: 'spring',
        damping: 20,
        stiffness: 60,
      },
      quick: {
        type: 'spring',
        damping: 20,
        mass: 1.2,
        stiffness: 250,
      },
    });
    
    const headingFont = createInterFont({
      size: {
        6: 15,
      },
      transform: {
        6: 'uppercase',
        7: 'none',
      },
      weight: {
        6: '400',
        7: '700',
      },
      color: {
        6: '$colorFocus',
        7: '$color',
      },
      letterSpacing: {
        5: 2,
        6: 1,
        7: 0,
        8: -1,
        9: -2,
        10: -3,
        12: -4,
        14: -5,
        15: -6,
      },
    });
    
    const bodyFont = createInterFont(
      {},
      {
        sizeSize: (size: number) => Math.round(size * 1.1),
        sizeLineHeight: (size: number) =>
          Math.round(size * 1.1 + (size > 20 ? 10 : 10)),
      },
    );
    
    const config = createTamagui({
      animations,
      defaultTheme: 'light',
      shouldAddPrefersColorThemes: true,
      themeClassNameOnRoot: true,
      shorthands,
      fonts: {
        heading: headingFont,
        body: bodyFont,
      },
      themes,
      tokens,
      media: {
        xs: { maxWidth: 660 },
        sm: { maxWidth: 800 },
        md: { maxWidth: 1020 },
        lg: { maxWidth: 1280 },
        xl: { maxWidth: 1420 },
        xxl: { maxWidth: 1600 },
        gtXs: { minWidth: 660 + 1 },
        gtSm: { minWidth: 800 + 1 },
        gtMd: { minWidth: 1020 + 1 },
        gtLg: { minWidth: 1280 + 1 },
        short: { maxHeight: 820 },
        tall: { minHeight: 820 },
        hoverNone: { hover: 'none' },
        pointerCoarse: { pointer: 'coarse' },
      },
    });
    
    export type Conf = typeof config;
    
    declare module 'tamagui' {
      interface TamaguiCustomConfig extends Conf {}
    }
    
    export default config;
    
    1. Add provider to App.tsx:
    import React, { useCallback, useEffect } from 'react';
    import { StatusBar } from 'expo-status-bar';
    import * as SplashScreen from 'expo-splash-screen';
    import { SafeAreaProvider } from 'react-native-safe-area-context';
    
    import './localization/i18n';
    
    import useCachedResources from './hooks/useCachedResources';
    import useColorScheme from './hooks/useColorScheme';
    import Navigation from './navigation';
    import { View } from 'react-native';
    import Tamagui from './theme/tamagui-config';
    
    export default function App() {
      const isLoadingComplete = useCachedResources();
      const colorScheme = useColorScheme();
    
      useEffect(() => {
        const preventSplashFromHiding = async () => {
          await SplashScreen.preventAutoHideAsync();
        };
        preventSplashFromHiding();
      }, []);
    
      const onLayoutRootView = useCallback(async () => {
        if (isLoadingComplete) {
          // This tells the splash screen to hide immediately! If we call this after
          // `setAppIsReady`, then we may see a blank screen while the app is
          // loading its initial state and rendering its first pixels. So instead,
          // we hide the splash screen once we know the root view has already
          // performed layout.
          await SplashScreen.hideAsync();
        }
      }, [isLoadingComplete]);
    
      if (!isLoadingComplete) {
        return null;
      }
    
      return (
        <SafeAreaProvider onLayout={onLayoutRootView}>
          <Tamagui.Provider disableInjectCSS defaultTheme="light"></Tamagui.Provider>
        </SafeAreaProvider>
      );
    }
    
    1. You will get this error every time the app starts: TypeError: null is not an object (evaluating 'dispatcher.useMemo'). Which makes it impossible for it to start. If, leaving all the rest of the files the same, you were to replace the provider with a simple view with text, the app runs perfectly.

    Environment (please complete the following information):

    • OS: iOS 15.5 (Expo)
    • Version: ^1.0.1-beta.75
    opened by inakineitor 10
  • Local images not shown

    Local images not shown

    Describe the bug I am trying to integrate cross platform images in my tamagui app. I started from create-tamagui-app, and now I am trying to add an Image component, so I added an assets folder to my app

    Screenshot 2022-09-19 at 12 32 52

    Then inside my packages/app/features/home/screen.ts file I am trying to require it

    const logo = require('../../assets/logo.png')`
    

    and to render it with

    <Image  style={{ width: 100, height: 100 }} source={{ uri: logo }}></Image>
    

    or

    <Image  style={{ width: 100, height: 100 }} source={{ logo }}></Image>
    

    But there is no way to make it show up.

    I also tried to import the Image component directly from react-native instead of tamagui without luck.

    What is the proper way to render local assets?

    Thank you

    To Reproduce Try to render a local image

    System Info (please complete the following information):

    System: OS: macOS 12.6 CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz Memory: 22.40 MB / 16.00 GB Shell: 5.8.1 - /bin/zsh Binaries: Node: 16.17.0 - /usr/local/bin/node Yarn: 3.2.0 - ~/.nvm/versions/node/v16.17.0/bin/yarn npm: 8.15.0 - ~/.nvm/versions/node/v16.17.0/bin/npm Browsers: Chrome: 105.0.5195.125 Firefox: 104.0.2 Safari: 16.0

    opened by apperside 9
  • Reanimated crashing when using animations

    Reanimated crashing when using animations

    When using the code:

    <Square
      bc="$pink10"
      animation="bouncy"
      elevation="$4"
      size={110}
      br="$9"
      hoverStyle={{
        scale: 1.2,
      }}
      pressStyle={{
        scale: 0.9,
      }}
    >
      <MyComponent width="$4" height="$4" />
    </Square>;
    

    I'm getting the following error: Tried to synchronously call anonymous function from a different thread.

    opened by cmaycumber 9
  • [bug] `<ThemeInverse />` breaks with `next build`

    [bug] `` breaks with `next build`

    I'll make a full repro soon...but the following issues exist with ThemeInverse:

    1. Broken in web prod

    If I yarn next build, then ThemeInverse doesn't seem to apply at all. Kinda odd. I inspected the output HTML, and it's outputting class="light" in the place where I put ThemeInverse. I believe it should be class="t_light", right? When I change it to t_light it gets fixed.

    2. Doesn't SSR (separate issue, I believe)

    In dev mode, the themeInverse does work, but it has a pretty significant flicker since it's not SSR'ing. Not as big of a deal as the issue above, but maybe it could be made a bit faster by using a layout effect or something. Separate issue, just thought I'd flag it first.

    opened by nandorojo 8
  • Vite compatibility?

    Vite compatibility?

    1. Is Tamagui compatible with Vite? As you know, Vite enables unbundled development (much faster than Webpack) and uses esbuild to transpile types (20-30x faster than tsc), and uses Rollup for production builds.

    I’d like to use Tamagui with vite-plugin-ssr instead of NextJS (which is tied to Webpack…).

    I see that you use Webpack and Babel currently.

    1. Also, how do you bundle Tamagui for native? I’ve looked at the docs, but it doesn’t say anything about Expo / Metro procedure or compatibility.
    opened by redbar0n 8
  • Can be use on React Native CLI project?

    Can be use on React Native CLI project?

    Hello! I'm wondering if Tamagui can be use on pure React Native CLI projects. I've tried and found following error wrapping my app with Tamagui Provider.

    ERROR Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:

    1. You might have mismatching versions of React and the renderer (such as React DOM)
    2. You might be breaking the Rules of Hooks
    3. You might have more than one copy of React in the same app See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem. at _TamaguiProvider (http://localhost:8081/node_modules/tamagui/node_modules/@tamagui/core/dist/cjs/views/TamaguiProvider.bundle?platform=android&app=com.userapp&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:55:24) at anonymous (http://localhost:8081/node_modules/tamagui/dist/cjs/views/TamaguiProvider.bundle?platform=android&app=com.userapp&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:46:24) at App (http://localhost:8081/src/App.bundle?platform=android&app=com.userapp&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:41:54) at RCTView at View at RCTView at View at AppContainer (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.userapp&modulesOnly=false&runModule=true:88956:36) at userapp(RootComponent) (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.userapp&modulesOnly=false&runModule=true:93667:28) ERROR TypeError: Cannot read property 'useEffect' of null

    This error is located at: in _TamaguiProvider in Unknown (created by App) in App in RCTView (created by View) in View (created by AppContainer) in RCTView (created by View) in View (created by AppContainer) in AppContainer in userapp(RootComponent), js engine: hermes`

    I've followed docs for installing, add some tamagui dependencies: "@tamagui/babel-plugin": "1.0.1-beta.195", "@tamagui/font-inter": "1.0.1-beta.195", "@tamagui/shorthands": "1.0.1-beta.195", "@tamagui/theme-base": "1.0.1-beta.195"

    and also add expo unimodules.

    There is something else I should try? Thanks!

    opened by ManuelMGM 7
  • [bug] Responsive props (e.g `$gtSm`) don't work in native.

    [bug] Responsive props (e.g `$gtSm`) don't work in native.

    Describe the bug

    On expo/in-native responsive props on Tamagui elements do not work at all

    Repro here: https://github.com/jonsherrard/responsive-prop-repro

    Example component: https://github.com/jonsherrard/responsive-prop-repro/blob/main/packages/ui/src/MyComponent.tsx

    To Reproduce

    npx [email protected]

    Add a prop to your component, compare in Next.js and Expo

    Try to use the object syntax with a $xs or $gtLg style prop on any tamagui element.

    Repro: https://github.com/jonsherrard/responsive-prop-repro

    Video

    https://user-images.githubusercontent.com/631670/206288311-596b99f6-aebc-4169-b466-b45d0840bc0d.mp4

    System Info (please complete the following information):

    Output of npx envinfo --system --npmPackages --binaries --browsers

      System:
        OS: macOS 12.6
        CPU: (16) x64 Intel(R) Xeon(R) W-2140B CPU @ 3.20GHz
        Memory: 425.63 MB / 32.00 GB
        Shell: 5.8.1 - /bin/zsh
      Binaries:
        Node: 16.17.0 - ~/.nvm/versions/node/v16.17.0/bin/node
        Yarn: 3.2.3 - ~/.yarn/bin/yarn
        npm: 2.15.12 - ~/node_modules/.bin/npm
        Watchman: 2022.07.04.00 - /usr/local/bin/watchman
      Browsers:
        Brave Browser: 107.1.45.123
        Chrome: 108.0.5359.94
        Firefox: 107.0
        Safari: 16.0
      npmPackages:
        @babel/runtime: ^7.18.9 => 7.20.6 
        @manypkg/cli: ^0.19.1 => 0.19.2 
        @types/react: ^18.0.15 => 17.0.21 
        @types/react-native: ^0.69.6 => 0.69.15 
        eslint: ^8.21.0 => 8.28.0 
        prettier: ^2.7.1 => 2.8.0 
        turbo: ^1.4.2 => 1.6.3 
        typescript: ^4.7.4 => 4.9.3 
    
    opened by jonsherrard 4
  • [bug] Can't style composable parts, such as `Dialog.Title`

    [bug] Can't style composable parts, such as `Dialog.Title`

    Describe the bug

    import { Dialog as TDialog, styled } from 'tamagui'
    
    export const Dialog = TDialog
    
    Dialog.Title = styled(Dialog.Title, {
      fontWeight: 'bold',
      color: '$color12',
      fontSize: '$7',
    })
    

    I expect this usage to override Dialog.Title's styles. However, styled doesn't appear to work. This makes it hard to have a reusable dialog component.

    To Reproduce

    Lmk if you need a repro.

    opened by nandorojo 1
  • [windows] tamagui-build runs recursively and must be manually stopped by Ctrl+C

    [windows] tamagui-build runs recursively and must be manually stopped by Ctrl+C

     yarn build
    ➤ YN0000: built @my/ui in 8527 ms
    ➤ YN0000: ➤ YN0000: built @my/ui in 10290 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11270 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11449 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11762 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11998 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11981 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12231 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12195 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12657 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12445 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12153 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11312 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11212 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 11412 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12267 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12829 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12906 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui 
    in 12888 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 13136 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 12873 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 13565 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14040 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14197 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14908 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14457 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14233 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 13985 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14255 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14959 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15109 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15671 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 16023 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15527 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14362 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 16205 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 18313 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 18918 ms  
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 
    16260 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built 
    @my/ui in 15145 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 14924 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15335 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15988 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 16259 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15595 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15003 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15719 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15877 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15879 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 15334 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: built @my/ui in 16322 ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 8s 606ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 15s 456ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 21s 713ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 28s 310ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 35s 140ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 41s 663ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 47s 766ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 54s 234ms
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 2s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 8s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 15s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 21s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 27s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 34s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 41s  
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 50s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 1m 56s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 2s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 8s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 16s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 22s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 29s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 35s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 41s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 47s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 52s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 2m 59s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 5s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 11s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 17s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 23s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 28s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 34s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 39s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 45s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 50s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 3m 56s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 1s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 5s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 10s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 15s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 21s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 26s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 32s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 37s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 42s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 47s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 53s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 4m 58s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 5m 3s
    ➤ YN0000: ➤ YN0000: ➤ YN0000: Done in 5m 8s
    ➤ YN0000: ➤ YN0000: Done in 5m 11s
    ➤ YN0000: Done in 5m 14s
    

    Describe the bug @tamagui/build's cli runs recursively and never ends on windows

    To Reproduce

    1. bootstrap a new tamagui app with create-tamagui-app
    2. run yarn build
    npm create [email protected]
    yarn build
    

    Make your changes and then push and link it here. 🙏🙏🙏🙏🙏

    System Info (please complete the following information):

    Output of npx envinfo --system --npmPackages --binaries --browsers:

     npx envinfo --system --npmPackages --binaries --browsers
    
      System:
        OS: Windows 10 10.0.19044
        CPU: (8) x64 Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
        Memory: 9.73 GB / 15.85 GB
      Binaries:
        Node: 16.18.1 - ~\scoop\apps\nvm\current\nodejs\nodejs\node.EXE
        Yarn: 3.2.3 - ~\scoop\apps\nvm\current\nodejs\nodejs\yarn.CMD
        npm: 8.19.2 - ~\scoop\apps\nvm\current\nodejs\nodejs\npm.CMD
      Browsers:
        Edge: Spartan (44.19041.1266.0), Chromium (107.0.1418.62)
        Internet Explorer: 11.0.19041.1566
      npmPackages:
        @babel/runtime: ^7.18.9 => 7.20.6
        @manypkg/cli: ^0.19.1 => 0.19.2
        @types/react: ^18.2.0 => 18.0.21
        @types/react-native: ^0.70.7 => 0.70.7
        eslint: ^8.21.0 => 8.28.0
        prettier: ^2.7.1 => 2.8.0
        turbo: ^1.4.2 => 1.6.3
        typescript: ^4.7.4 => 4.9.3
    
    
    opened by raphtlw 1
  • [bug] SelectSheetContents must be used within Select - beta226 - Release Build - Android

    [bug] SelectSheetContents must be used within Select - beta226 - Release Build - Android

    Usage is correct nearly 1:1 with docs, latest everything.

    import { Check, ChevronDown, ChevronUp } from '@tamagui/lucide-icons'
    import {
      LinearGradient,
      Select,
      SelectProps,
      SelectTriggerProps,
      YStack,
    } from 'tamagui'
    
    export type ItemType = { value: string; label: string; valueLabel: string }
    export type SimpleSelectProps<T> = {
      items: ItemType[]
      value?: string
      onValueChange: (val: string) => void
      id?: string
      sheetBreakpoint?: SelectProps['sheetBreakpoint']
      placeholder?: string
      triggerProps?: SelectTriggerProps
    }
    
    export function SimpleSelect<T>({
      id,
      items,
      value,
      onValueChange,
      sheetBreakpoint = 'sm',
      placeholder = 'Select',
      triggerProps = { w: '$4' },
    }: SimpleSelectProps<T>) {
      return (
        <Select
          id={id}
          sheetBreakpoint={sheetBreakpoint}
          value={value}
          onValueChange={onValueChange}
        >
          <Select.Trigger {...triggerProps} iconAfter={ChevronDown}>
            <Select.Value placeholder={placeholder}>
              {items.find((item) => item.value === value)?.valueLabel}
            </Select.Value>
          </Select.Trigger>
    
          <Select.Sheet modal dismissOnSnapToBottom>
            <Select.Sheet.Frame>
              <Select.Sheet.ScrollView>
                <Select.SheetContents />
              </Select.Sheet.ScrollView>
            </Select.Sheet.Frame>
            <Select.Sheet.Overlay />
          </Select.Sheet>
    
          <Select.Content zIndex={200_000}>
            <Select.ScrollUpButton
              ai="center"
              jc="center"
              pos="relative"
              w="100%"
              h="$3"
            >
              <YStack zi={10}>
                <ChevronUp size={20} />
              </YStack>
              <LinearGradient
                start={[0, 0]}
                end={[0, 1]}
                fullscreen
                colors={['$background', '$backgroundTransparent']}
                br="$4"
              />
            </Select.ScrollUpButton>
    
            <Select.Viewport minWidth={200}>
              <Select.Group>
                <Select.Label>{placeholder}</Select.Label>
                {items.map((item, i) => {
                  return (
                    <Select.Item index={i} key={item.value} value={item.value}>
                      <Select.ItemText>{item.label}</Select.ItemText>
                      <Select.ItemIndicator ml="auto">
                        <Check size={16} />
                      </Select.ItemIndicator>
                    </Select.Item>
                  )
                })}
              </Select.Group>
            </Select.Viewport>
    
            <Select.ScrollDownButton
              ai="center"
              jc="center"
              pos="relative"
              w="100%"
              h="$3"
            >
              <YStack zi={10}>
                <ChevronDown size={20} />
              </YStack>
              <LinearGradient
                start={[0, 0]}
                end={[0, 1]}
                fullscreen
                colors={['$backgroundTransparent', '$background']}
                br="$4"
              />
            </Select.ScrollDownButton>
          </Select.Content>
        </Select>
      )
    }
    
    opened by lightchaser411 0
  • [bug] NextJS dev and build has different output with Input component

    [bug] NextJS dev and build has different output with Input component

    Describe the bug I have a different css output with Input while using NextJS dev mode vs. build mode. It seems the compiler does not add borders to Input while it should. I use tamagui-extras component

    To Reproduce Use Input component from tamagui-extras which exports a component with defaults and renders <Input/> as you can see here: https://github.com/dohomi/tamagui-kitchen-sink/blob/master/packages/ui/src/components/forms/LmInput.tsx#L67

    The issue might be connected to tamagui-build, but I am not sure. I use latest version.

    NextJS build: Screenshot 2022-12-01 at 15 42 19 NextJS dev: Screenshot 2022-12-01 at 15 40 27

    opened by dohomi 0
Releases(v1.0.1-rc.0.3)
  • v1.0.1-beta.223(Nov 28, 2022)

    Bug Fixes

    • portal: Fix Popover display issues due to setting display contents on Portal (natew)

    Continuous Integration

    • fix hanging deps after release (natew)

    Commits

    • c1ab59a: update-starters-v1.0.1-beta.222 (natew)
    • fb6fec0: v1.0.1-beta.223 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.222(Nov 28, 2022)

    Bug Fixes

    • core: Fix useThemeName not changing on creating a new manager rather than just replacing an existing one (natew)
    • core: Align onPress and other event handler types to React Native Pressable (and web-specific ones to HTMLDivElement) (natew)
    • vite internal plugin missing devDep (natew)

    Commits

    • 7c6057b: update-starters-v1.0.1-beta.221 (natew)
    • 588fad4: fix dependencies (natew)
    • 9ff3c2b: improve ci logging (natew)
    • 927cf9f: fix types and ci (natew)
    • 73f9466: v1.0.1-beta.222 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.221(Nov 28, 2022)

    Breaking Changes

    • core: Remove <ThemeReset /> and <ThemeInvert /> (prefer <Theme reset invert />) #374 (natew)
    • shapes: Remove default background from Circle and Square #374 (natew)

    Features

    • core: setReactNative can be called incrementally for better tree-shaking #374 (natew)
    • starters: Remove need for build step in ui package #374 (natew)
    • starters: Update to Next 13, update and cleanup dependencies #374 (natew)

    Bug Fixes

    • starters: update solito to fix expo/next13 compat (natew)
    • subtitle: Fixed map key not provided issue #384 (wenbin)
    • core: Cleanup and improve reverse logic, allow reverse on useTheme, and make inverse move from sub-themes (dark_red reversed => light_red instead of just light) #374 (natew)
    • core: Remove dependency on @tamagui/react-native-use-responder-events #374 (natew)
    • core: Fix merging extracted className pseudos only if not already used #374 (natew)
    • core: Fix themes updating more reliably and cleanup logic #374 (natew)
    • core: Fix simpleHash for dot values in keys #374 (natew)
    • core: Fix pseudos merging default onto base #374 (natew)
    • site: Fix themes section carousel scroll sync #374 (natew)
    • core: De-opt compiler on explicit style prop usage #374 (natew)
    • core: Fix native Input placeholderTextColor #374 (natew)
    • starters: Fix starters native deps for new expo #374 (natew)
    • starters: update solito to fix expo/next13 compat #374 (natew)
    • core: Improve and simplify setupReactNative internals #374 (natew)
    • animations-css: Fix transform styles not stringifying object before passing to DOM #374 (natew)
    • sheet: Fix CSS animations Sheet not hiding or disabling consistently #374 (natew)
    • helpers-tamagui: Dont override color or size on themedIcon if manually passed in (Button, ListItem) #374 (natew)
    • button: Remove default opacity style from disabled button #374 (natew)
    • core: Fix edge case finding higher priority sibling component theme when name is passed #374 (natew)

    Documentation

    • site: clarify experimental defaultProps #374 (natew)
    • site: Clarify some featuers of core #374 (natew)
    • site: Remove advanced styled() section as its not necessary #374 (natew)

    Code Refactoring

    • core: Remove and #374 (natew)
    • shapes: Remove default background from Circle and Square #374 (natew)
    • core: Refactor animations - simplify and de-dupe style logic, integrate presence into core so it can do so #374 (natew)

    Performance Improvements

    • core: Less work on startup when not calling getCSS (SSR optimization) #374 (natew)

    Chores

    Commits

    • 6af82a3: update-starters-v1.0.1-beta.220 (natew)
    • da7456b: fix weight usage in docs to be string rather than number (Aleed) #378
    • 59cf130: fix typo in button customization code (Joseph Odunsi) #379
    • 61938bd: revert broken starter for native (natew)
    • 8e5476d: site docs new animations exception (natew)
    • 1ad7932: big cleanup to useTheme (natew) #374
    • b6501a6: remove unagi experiment (natew) #374
    • 92dcbea: revert broken starter for native (natew) #374
    • 9a10e95: site docs new animations exception (natew) #374
    • 5b3f80e: fix rebase (natew) #374
    • 823d0d5: fix tests (natew) #374
    • 9b41455: add vercel build command (natew) #374
    • 0e65d10: disable dynamic load tests for now (natew)
    • a98099a: v1.0.1-beta.221 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.220(Nov 20, 2022)

    Features

    • starters: Remove need for build step in ui package #376 (natew)
    • starters: Update to Next 13, update and cleanup dependencies #376 (natew)

    Bug Fixes

    • core: Toggle inverse on native fix (natew)
    • core: Fix native fill value for face to default to fontFamily (natew)
    • starters: Fix starters native deps for new expo (natew)

    Chores

    Commits

    • 2364061: update-starters-v1.0.1-beta.219 (natew)
    • unagi: Remove successful unagi experiment (natew)
    • write (natew)
    • ef626da: v1.0.1-beta.220 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.219(Nov 18, 2022)

    Bug Fixes

    • list-item: Default to space-between style for icons (natew)

    Performance Improvements

    • core: avoid tree recalculations on changing themeInverse/theme props #373 (natew)

    Commits

    • d154c3d: update-starters-v1.0.1-beta.218 (natew)
    • Add Dimension as a sponsor (natew)
    • 7226f99: v1.0.1-beta.219 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.218(Nov 17, 2022)

    Bug Fixes

    • list-item: Make sure icon after spacer does not use the full width if not content will end up being cropped #364 (Anthony Mittaz)
    • lucide-icons: Loosen react-native-svg package.json version to >=12 (natew)
    • core: delete weight/style when face applies #363 (Michael Kilbane)
    • select: simplify types (natew)
    • core: avoid setImmediate or process.nextTick in useMedia (natew)
    • core: Remove style attributes to avoid duplication of classNames (natew)
    • core: Fix pseudos not merging flat transform props and emitting CSS when not using className (natew)

    Performance Improvements

    • core: Avoid tracking theme keys when using classNames (natew)

    Commits

    • 81ba55e: update-starters-v1.0.1-beta.217 (natew)
    • b582887: Update package.json (阿邦) #370
    • ed1e4b4: use SizableText instead of Paragraph for SelectItemText, fixes nested p Tags (Steffen) #368
    • start rc blog post (natew)
    • 59b114a: fix use consistent react-native-svg version (natew) #371
    • d56a7ef: v1.0.1-beta.218 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.217(Nov 16, 2022)

    Features

    • tamagui-loader: Exports TamaguiPlugin for easier Webpack setup #362 (natew)
    • demos: Allows jsx optimization on demos files #362 (natew)

    Bug Fixes

    • next-plugin: Remove mini-css-extract and custom css minifier to simplify config #362 (natew)
    • core: Use more specific react and react-dom peerDependencies #362 (natew)
    • next-plugin: working finding sub-packages to parse more accurately including images #362 (natew)
    • next-plugin: Better loading logic #362 (natew)
    • static: Fix keep styles from subsequent page loads loading #362 (natew)
    • core: Fix keep variants from parents as variants for passing to children #362 (natew)
    • core: Improve merging pre-extracted classNames logic, speed it up #362 (natew)
    • core: Move useMedia over to useSyncExternalStore to get some performance and bundle size savings #362 (natew)
    • core: Fix pseudos not merging in classNames on instantiation #362 (natew)
    • select: Avoid document access when non-web #362 (natew)
    • core: Normalize zIndex for animations on web only to string #362 (natew)

    Commits

    • c3cff3e: update-starters-v1.0.1-beta.216 (natew)
    • df723f0: v1.0.1-beta.217 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.216(Nov 14, 2022)

    Bug Fixes

    • starter: fix next local image import (natew)
    • core: Fix native styled() psuedos not picking up theme values (natew)

    Commits

    • 8759d83: update-starters-v1.0.1-beta.215 (natew)
    • ba1269f: Update issue templates (Nate Wienert)
    • bd2ea5a: v1.0.1-beta.216 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.215(Nov 14, 2022)

    Bug Fixes

    • static: Fix invalid flattening when media queries preset on native (again) (natew)
    • core: Fix avoid accessing themes from getConfig in provider (natew)
    • core: Improve psuedo and variant merge ordering on styled() (natew)
    • core: Improve and simplify native pseudo style merging logic, fix bugs with pseudos merging too often (natew)
    • core: Fix passing testID properly forward to react-native views on react native web (natew)
    • config-base: Add missing import for animations driver (natew)
    • core: Improve logic around merging enter/exit pseudos, ensure override happens at right time (natew)
    • core: improve merging logic for pseudos to preserve transform property more strictly, and remove a decent amount of specialized code for it (natew)
    • core: Fix parsing reverse mapped values from cssRule to fix handling px and variables (natew)
    • next-plugin: Fix not loading css on subsequent routes (natew)
    • core: Fix regression in merging exit pseudo styles from recent changs (natew)
    • core: Fix native overriding pseudos using parent defaults when it shouldnt (natew)
    • core: Fix avoid accessing themes from getConfig in provider (natew)
    • core: Fix web extensions not supporting isDevTools check (natew)

    Documentation

    • site: Add docs around getCSS ordering to ensure no confusion (natew)
    • site: More accurate custom button types (natew)

    Commits

    • a63ac17: update-starters-v1.0.1-beta.214 (natew)
    • Add hirbod sponsor (natew)
    • bb8d0a2: update tests (natew)
    • 10e50ea: v1.0.1-beta.215 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.214(Nov 10, 2022)

    Bug Fixes

    • core: Cleanup reset a bit, Text automatically resets margin on web (natew)
    • helpers: Fix missing simple-hash dep (natew)

    Documentation

    • site: improve theme docs (natew)

    Commits

    • 7000a6e: update-starters-v1.0.1-beta.213 (natew)
    • 7ef3436: v1.0.1-beta.214 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.213(Nov 10, 2022)

  • v1.0.1-beta.212(Nov 10, 2022)

    Bug Fixes

    • core: Fix media queries on native (natew)
    • static: Fix native static extraction skip media queries (natew)

    Commits

    • d78d740: update-starters-v1.0.1-beta.211 (natew)
    • 89d47ae: next (natew)
    • bfb2f0f: next (natew)
    • d30625f: v1.0.1-beta.212 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.211(Nov 9, 2022)

    Features

    • timer: Add @tamagui/timer for profiling (natew)

    Bug Fixes

    • dialog: avoid wrapping element from react-remove-scroll (natew)
    • core: Simplify subProps merge fix correctness of order of merge (natew)
    • dialog: Fix removeScrollOutside, remove extra wrapping div (natew)
    • Fixed next-remote-watch: command not found on yarn site #348 (wenbin)
    • core: added fill support for font face config #349 (MichaelKilbane)

    Performance Improvements

    • core: Use className for display: contents (natew)

    Chores

    Commits

    • e3b783a: update-starters-v1.0.1-beta.210 (natew)
    • 5b5e425: fix spelling mistake (Anthony Mittaz) #346
    • Make it clearer for running yarn site #348 (wenbin)
    • 8877f24: v1.0.1-beta.211 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.210(Nov 7, 2022)

    Features

    • starters: next 13 support #344 (natew)
    • site: Add design system docs (natew)

    Bug Fixes

    • sheet: use setNativeProps to ensure updates happen earlier in render, fixing some mobile web drag bugs (natew)
    • dialog: Fix ScrollView disabling inside Dialog when it shouldnt (natew)

    Commits

    • 241b9f8: update-starters-v1.0.1-beta.209 (natew)
    • f38c4f5: v1.0.1-beta.210 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.209(Nov 7, 2022)

    Bug Fixes

    • core: Fix native pseudo merge logic to not need getStylesAtomic (natew)

    Commits

    • cff9b77: update-starters-v1.0.1-beta.208 (natew)
    • 8447e8d: v1.0.1-beta.209 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.208(Nov 7, 2022)

    Bug Fixes

    • create-themes: Fully generate all alternative theme types (was missing darker,, active, component themes #343 (natew)
    • core: Fix merge pseudos if not accepting classes accurately at runtime #343 (natew)
    • focusable: Wrap with extractable HOC to properly allow re-wrapping Input and TextArea with styled() #343 (natew)
    • core: Allow nullish values for theme when using themeable HOC #343 (natew)
    • static: Fix tests to use new babel output (natew)

    Commits

    • be745e5: update-starters-v1.0.1-beta.207 (natew)
    • 99f2d89: v1.0.1-beta.208 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.207(Nov 7, 2022)

    Bug Fixes

    • site: docs words (natew)
    • site: fixed typo in font language docs #338 (Michael Kilbane)
    • site: fixed typo #337 (Michael Kilbane)
    • core: Set testID to data-testid on web, fix passing accessibility down to reactNative views (natew)
    • core: Remove defaultTheme property on createTamagui(), not necessary with defaultTheme on ThemeProvider #342 (natew)
    • starters: useMemo deps fix (natew)
    • static: fix no restoring original attributes when de-opting from native non-flat views (natew)
    • core: Fix themeable() returning ThemeName type properly (natew)

    Documentation

    • site: Add Lucide icons example (natew)

    Commits

    • 3648768: update-starters-v1.0.1-beta.206 (natew)
    • dd39df1: v1.0.1-beta.207 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.206(Nov 5, 2022)

    Bug Fixes

    • font-inter: add regular weight woff2 (natew)
    • slider: Use context if size not set more reliably for first measure (natew)

    Commits

    • fb20291: update-starters-v1.0.1-beta.205 (natew)
    • bb2ecf3: v1.0.1-beta.206 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.205(Nov 5, 2022)

    Bug Fixes

    • core: fix disabled not applying style + fix disabled not removing events (natew)
    • core: remove ellipsizeMode prop from final props if not react-native view (natew)
    • static: Fix update tests (natew)
    • create-themes: return all the sub-theme types properly (natew)

    Commits

    • af57854: update-starters-v1.0.1-beta.204 (natew)
    • c8e990f: v1.0.1-beta.205 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.204(Nov 5, 2022)

    Bug Fixes

    • core: Fix extra log on debug properties (natew)
    • babel-plugin: fix broken styling on native when onExtractTag ran on un-flattened views (weirdly, not when debug logging was on) (natew)

    Commits

    • d1defc3: update-starters-v1.0.1-beta.203 (natew)
    • 4c6334e: v1.0.1-beta.204 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.203(Nov 5, 2022)

    Features

    • next-plugin: Automatically configures compiler for components passed in, using shouldExtract needed less often (natew)
    • core: Allow logging some debug output in production when DEBUG env set to tamagui (natew)

    Bug Fixes

    • next-plugin: Fix esm imports breaking build on some versions of next.js when used with useReactNativeWebLite: true (natew)
    • core: Remove extra unnecessary code for adding font family className to rnw animated views (natew)
    • animations-reanimated: Make devDependency not formal dep (natew)
    • core: Fix duplicate style/className output, fix compiler not emitting styles on styled() tags when already inserted (let the bundler handle de-dupe) (natew)

    Code Refactoring

    • core: Cleanup logic for shouldAttach events logic to be clearer (natew)

    Commits

    • 3ea541d: update-starters-v1.0.1-beta.202 (natew)
    • 23d6f5c: site remove test code from demo (natew)
    • 9ddeaff: v1.0.1-beta.203 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.202(Nov 4, 2022)

    Breaking Changes

    • group: remove Groups passing of size automatically (natew)

    Bug Fixes

    • portal: Android fall back to gorhom portal to fix sheets (natew)
    • group: remove Groups passing of size automatically (natew)
    • core: Fix duplicating styles on className and style object (natew)
    • create-theme: Fix types output to include alt themes (natew)
    • create-theme: Fix types output to include alt themes (natew)

    Commits

    • b030006: update-starters-v1.0.1-beta.201 (natew)
    • 6ca1c31: Add notes about transpiling for next app (BigBoss) #316
    • ac9a709: starters split out commands (natew)
    • add sponsors (natew)
    • 85cd842: remove old note in starter (natew)
    • bd5a17d: starter readme remove vercel deploy until working (natew)
    • 1e4c3da: revert style className fix (natew)
    • f385006: v1.0.1-beta.202 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.201(Nov 2, 2022)

    Bug Fixes

    • core: Fix dont parse accessiblity props or ID if already passing to RNW (natew)
    • vite: Fix $$typeof check failing useMedia proxy test in dev mode (natew)
    • starters: Add React deps explicitly and add serve after prod build (natew)
    • core: Fix bug in minified production builds not hoisting things in order causing an undefined function error on media state initialize (natew)

    Performance Improvements

    • sheet: Big performance improvement when being controlled and hidden (natew)

    Commits

    • 05bedff: update-starters-v1.0.1-beta.200 (natew)
    • e491e1d: vite-plugin-swc-react-refresh (natew)
    • 08d8e21: v1.0.1-beta.201 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.200(Oct 30, 2022)

    Bug Fixes

    • core: Fix invalid expansion causing undefined values in getSplitProps (natew)
    • vite-plugin: Avoid setting esbuild to tsx to fix issues with ts parsing (natew)
    • core: Fix occasionally bad env variable from expo (natew)
    • config-base: Use consistent inter font for heading and body (natew)
    • core: Fix regression in media query + space (natew)

    Chores

    • github add better debug notes (natew)

    Commits

    • 1c0fa3f: update-starters-v1.0.1-beta.199 (natew)
    • be64500: docs fix capitalization (natew)
    • d10325f: fix typo in resolutions (Daniel Jeongwoo Hong) #311
    • f721d97: benchmarks.mdx: Small clarification to intro text (redbar0n) #310
    • 4928a4f: fix lockfile (natew)
    • 1a26f12: fix use inter (natew)
    • bbb36da: v1.0.1-beta.200 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.199(Oct 28, 2022)

    Features

    • react-native-web-lite: re-add back Modal #308 (natew)
    • create-themes: Add @tamagui/create-themes to pass in your own theme colors (natew)
    • next-expo-solito: Update to solito 1.0.12 (natew)

    Bug Fixes

    • shorthands: shorten more styles #308 (natew)
    • react-native-use-responder-events: fix potentially multiply attaching event #308 (natew)
    • core: Improve import order to ensure setupReactNative happens first #308 (natew)
    • static: fix missing memoize in test mode #308 (natew)
    • react-native-web-lite: Avoid babel deps (natew)

    Commits

    • b4add54: update-starters-v1.0.1-beta.198 (natew)
    • 6445c1f: fix sheet demo (natew) #308
    • 492df47: fix benchmark install freeze (natew)
    • 27a56e1: v1.0.1-beta.199 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.198(Oct 27, 2022)

    Features

    • tamagui: Auto setup core for React Native (natew)

    Bug Fixes

    • core: Fix animated react native views not getting is_ className (natew)
    • core: Automatically set up Text to inlineWhenUnflatten fontFamily (natew)
    • core: Autodetect React Native once setupReactNative called (natew)
    • image: Automatically set up static config (natew)
    • slider: Remove log (natew)

    Chores

    • core: Remove unecessary reactNativeWebComponent config (natew)
    • update babel (natew)

    Commits

    • 8eb7f50: update-starters-v1.0.1-beta.197 (natew)
    • 77cca1f: v1.0.1-beta.198 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.197(Oct 27, 2022)

    Bug Fixes

    • static: Much more permissive config loading by just ignoring most errors (natew)

    Commits

    • 3ba6cfe: update starters (natew)
    • 85a9170: v1.0.1-beta.197 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.196(Oct 27, 2022)

    Breaking Changes

    • core: Document and expose isReactNative boolean property (natew)

    Features

    • core: Document and expose isReactNative boolean property (natew)

    Bug Fixes

    • core: Fix regression finding tag via styled() definition (natew)
    • core: Add clearer warnings on wrapping extractable components with styled() (natew)
    • core: Fix responder system not starting when using with react-native-web (natew)

    Commits

    • 84add26: update starters (natew)
    • 868740f: write more of the 1.0 blog post (natew)
    • 9912fd7: v1.0.1-beta.196 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.195(Oct 25, 2022)

    Features

    • react-native-web-lite: Export requireNativeComponent for compat (natew)

    Bug Fixes

    • static: Exclude react-native-svg by default from bundles (natew)
    • core: Fix order of merging classNames to properly respect styled parent override (natew)

    Commits

    • ce6ad60: update starters (natew)
    • 7e0e28f: v1.0.1-beta.195 (natew)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1-beta.194(Oct 25, 2022)

    Breaking Changes

    • config-base: Slightly increase heading line height (natew)
    • core: Require passing isReactNativeWeb to detect RNW styled views #280 (natew)
    • theme-base: Remove 0.5 steps past $5 - remove $5.5, $6.5, $7.5, $8.5, $9.5 #280 (natew)

    Features

    • config-base: Slightly increase heading line height (natew)
    • static: Allow disableExtractFoundComponents to take string[] to disable for just specific files #285 (natew)
    • static: Allow disable, disableExtraction, and disableExtractFoundComponents to all be set to string[] as well as true (natew)
    • core: Much improved loading of dynamic styled() usage, falls back #287 (natew)
    • react-17-patch: Create @tamagui/react-17-patch for compat with React 17 (natew)
    • core: remove react-native dep from core #280 (natew)
    • config-base: Slightly less line height on body font (visually breaking change) #280 (natew)
    • react-native-types: Split out types to avoid any deps on react-native #280 (natew)
    • react-native-use-pressable: Split out usePressable from RNW #280 (natew)
    • react-native-use-responder-events: Split out useResponderEvents from RNW #280 (natew)
    • core: Only load react-native in native mode #280 (natew)
    • core: Unbundle from RNW accessibility prop handling #280 (natew)
    • use-constant: Create dedicated use-constant package and remove from core #280 (natew)
    • use-presence: Split out @tamagui/use-presence for lighter css animation bundle size #280 (natew)
    • core: Much improved loading of dynamic styled() usage, falls back #280 (natew)
    • react-17-patch: Create @tamagui/react-17-patch for compat with React 17 #280 (natew)
    • react-17-shim: Shim useSyncExternalStore #280 (natew)
    • lucide-icons: Accept color types + accept size tokens and types #280 (natew)
    • animations-react-native: Add nice debug logging when debug prop set (natew)

    Bug Fixes

    • static: Load .web.ts and .native.ts entrypoints for configured components (natew)
    • select: Fix select occasionally rendering empty on SelectValue due to portals not re-rendering in sync (natew)
    • core: Be stricter checking imports for valid components #285 (natew)
    • static: Less problematic simple export transform for dynamic loading styled #286 (natew)
    • static: Fallback to no export gracefully when loading styled #286 (natew)
    • keep react dependency in peerDependencies (natew)
    • static: Load .web.ts and .native.ts entrypoints for configured components #280 (natew)
    • animations-css: Fix default to classNames instead of inline styles #280 (natew)
    • core: use-media run less layout effects #280 (natew)
    • core: Improve runtime media query merge logic to more consistently #280 (natew)
    • core: Fix skipping insert some styles due to regression in loop logic #280 (natew)
    • core: Fix and improve useMedia performance #280 (natew)
    • create-tamagui-app: Quote paths for clone for windows #280 (natew)
    • core: Fix regression SSR gathering all styles #280 (natew)
    • core: Compiled styles reverse map properly for animations when necessary #280 (natew)
    • tooltip: TooltipSimple defaults to z-index 100000 #280 (natew)
    • core: Fix bug in RNW not accepting classNames so ensure it wraps #280 (natew)
    • core: Fix trim only on strings when coercing values to native (natew)
    • static: Temp disable fancier extractions on native, need to fix logic better to target right properties and then can bring back most of it. It was also doing too much, so this likely is a speed and correctness improvement at once (natew)
    • static: Fix de-opt properly for native target (natew)
    • react-native-web-lite: Update to latest react-native-web changes to fix responder bugs #296 (natew)
    • core: Position relative all views (natew)
    • core: Fix web press events - avoid using pressable just apply directly (natew)
    • react-native-web-lite: Update to latest react-native-web changes to fix responder bugs (natew)
    • react-native-web-lite: Update animated driver (natew)
    • animations-react-native: Fix order for SSR bug not including transforms (natew)
    • sheet: Automatically nest zIndex for sheet inside sheet use cases (natew)
    • static: Fix avoid flatten when theme prop set on native (natew)
    • animations-react-native: Fix interpolations using unsafe refs, fix safe refs in general, fix interpolations going from same value to same value bug in react-native Animations by slightly adjusting previous value (natew)
    • static: Fix tests to match latest changes (natew)
    • react-native-web-lite: Use new pressable library function properly (natew)
    • core: Fix mount logic for animations with enter transitions (natew)

    Documentation

    • site: add link to type structure of configuration (natew)
    • site: Update feather as deprecated #286 (natew)
    • static: Add JSDocs for all public static options (natew)

    Code Refactoring

    • core: Split out a lot of helpers, unused code #280 (natew)
    • core: Require passing isReactNativeWeb to detect RNW styled views #280 (natew)

    Chores

    • drawer: Remove old drawer implementation (natew)
    • static: Move from dist to .tamagui directory #280 (natew)
    • format #295 (阿邦)

    Reverts

    • theme-base: Remove 0.5 steps past $5 - remove $5.5, $6.5, $7.5, $8.5, $9.5 #280 (natew)

    Commits

    • 0c269cd: update-starters-v1.0.1-beta.193 (natew)
    • 0eb246f: site header sizing on mobile (natew)
    • c8c00fb: site various (natew)
    • bd9bbb1: site gradient (natew)
    • 3be854e: site simplify useIntersect (natew) #285
    • 0ba152f: feat(@tamagui/lucide-icons): Create @tamagui/lucide-icons, replace usage of feather-icons with lucide-icons. (Sam Hindess) #286
    • feather-icons: Remove feather-icons (still on npm but no longer updated) in favor of lucide-icons #286 (natew)
    • b9bc84d: move repo to lucide (natew)
    • f746067: merge (natew) #287
    • 4ef3890: fix starters lockfiles (natew)
    • d475c29: remove integration starter (natew) #280
    • patch-rnw: Remove all patching of rnw #280 (natew)
    • 79cbb72: remove menu demo (natew) #280
    • 5b2b085: fix starters lockfiles (natew) #280
    • d11774f: speed up test and fix ci styled tests (natew) #280
    • edac14d: temp remove deps on unreleased animations-motion (natew) #280
    • 2698359: restore rebase (natew) #280
    • 80efb21: fix types (natew) #280
    • 8793bba: site polish (natew) #280
    • 242012a: next (natew) #280
    • 7fa09ec: next (natew) #280
    • 5917c92: remove ci-prepare necessary (natew) #280
    • 64283dc: rebase (natew) #280
    • accb5e9: Fix typo in error (Fernando Rojo) #289
    • 10a4e8c: site fix re renders (natew)
    • 9d47bf8: site fix re renders (natew)
    • 72488e4: fix docs wrong forwardRef order (natew)
    • 99480a6: site fixes (natew)
    • 83ca00b: site words (natew)
    • a9cdcbc: v1.0.1-beta.194 (natew)
    Source code(tar.gz)
    Source code(zip)
Owner
Tamagui
Less, nicer, more effective code
Tamagui
The Remote Keyboard Tutoring System is a web-based system that can be attached to any (electronic) keyboard synthesizer through a MIDI connector

The Remote Keyboard Tutoring System is a web-based system that can be attached to any (electronic) keyboard synthesizer through a MIDI connector. Once our system is connected to the keyboard, the user can interactively learn, play or teach in combination with the web application that we provide.

Department of Computer Engineering, University of Peradeniya 3 Nov 15, 2022
Decentralized-Music-Ownership-System - A decentralized Music Ownership System developed on Truffle Suite and React Bootstrap to allow Music artists to upload their content to the blockchain

Decentralized-Music-Ownership-System - A decentralized Music Ownership System developed on Truffle Suite and React Bootstrap to allow Music artists to upload their content to the blockchain

M. Adil Fayyaz 10 Sep 5, 2022
React App for style transfer using ONNX Runtime Web.

Style transfer web app Checkout the website live at : https://vicalloy.github.io/image-transformer/ React App for style transfer using ONNX Runtime We

vicalloy 12 Sep 23, 2022
Hacker News clone rewritten with universal JavaScript, using React and GraphQL.

Hacker News Clone React/GraphQL This project is a clone of hacker news rewritten with universal JavaScript, using React and GraphQL. It is intended to

Clinton D'Annolfo 4.4k Dec 7, 2022
Storybook Addon Kit: Simplify the creation of Storybook addons

Storybook Addon Kit Simplify the creation of Storybook addons ?? Live-editing in development ⚛️ React/JSX support ?? Transpiling and bundling with Bab

RRoSSeLL 0 Nov 27, 2021
This uses Azure AI Text Analytics services to teach on how to connect an AI service to a web-based system

Azure AI: Text Analytics services using react This app uses the Azure text analytics services to call various services such as sentiment analysis, ent

Uzochukwu Precious 2 Jun 7, 2022
A Twitter-style app built using Solana and Arweave.

Space Cats DAO A Twitter-style app built using Solana and Arweave. Disclaimer This was built for learning/experimental purposes. The code is not neces

space_cat 11 Sep 19, 2022
A simple Search Bar App to fetch Image from Unsplash API and display them in a Pinterest like style

A Pinterest Like Training App in React. A simple Search Bar App to fetch Image from Unsplash API and display them in a Pinterest like style. Getting S

Isabelle Lafont 3 Nov 3, 2022
a v2ex style forum made with react

a v2ex style forum made with react

null 31 Nov 3, 2022
An example of a travel style app built with Ionic React

ionic-react-travel-app An example of a travel style app built with Ionic React If you'd like to support, you can buy me a coffee ☕️ Included in this I

Alan Montgomery 29 Sep 27, 2022
Macbook computer keyboard style for react component.

React Mac Keyboard Macbook computer keyboard style for react component. Quick Start import { useState } from "react"; import MacKeyboard from "@uiw/re

uiw 14 Apr 28, 2022
Calculator - a modern style app which provides a standard calculator functionality written in ReactJS

Calculator ReactJs/Hooks/Typescript/Jest This Calculator is a modern style app which provides a standard calculator functionality, it is written in Re

Jose 1 Apr 3, 2022
Sportr is an app designed to be a 'Tinder style app', but for sports

Sportr allows users to create sport events that are shared to the larger community to be swiped on to find others to play a variety of pick-up style sports with. This project developed skills for React applications and full stack development using React, NextJS, Chakra UI, Javascript, Knex.js, postgreSQL, Google Maps API and WebSockets.

chris degroot 1 Apr 21, 2022
Personal blog and portfolio with a basic comment system created with react, php and mysql, hosted on github pages and backend hosted on heroku and clever cloud for free!

Personal blog and portfolio with a basic comment system created with react, php and mysql, hosted on github pages and backend hosted on heroku and clever cloud for free!

Andres Arturo Rodriguez Calderon 22 Oct 21, 2022
Minimalist and lightweight UI library, even with its own markup language and a CSS-In-JS library built into the template, Router and a powerful template reactivity system.

Translations: Português do Brasil Bemtv(Abbreviation of the bird's name Bem-te-vi) is a JavaScript library that brings a new approach to creating inte

Diogo Neves 28 Dec 8, 2022
DashGo - A React application for dashboard's in general with pages and pagination, login and user inclusion system

Ignite - Trilha ReactJS Sobre o projeto O projeto foi baseado no 4º módulo da tr

Gabriel Fiusa 53 Nov 23, 2022
This is a multiplayer tic tac toe game built with Next.js and React and styled with Sass, used Recoil for state management also with a built-in chat system.

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Temmy 4 Nov 17, 2022
Solana File Sharing System is a Decentralised Application which helps you share files to public Anonymously and no one can trace back to you or change the information since all the files and information is store on decentralised network

Solana File Sharing System is a Decentralized Application that helps users share files anonymously and ensure that the files are available at all times on a decentralized network, not tampered with, verifiable, and secure for all parties involved.

Athar Mohammad 6 Nov 13, 2022
Chroma is an open source design system from the team at LifeOmic built with React and TypeScript.

Chroma is an open source design system from the team at LifeOmic. It is built with React and TypeScript. The goal of Chroma is to provide design-approved components to developers to speed up their development process and build visual consistency throughout web applications.

LifeOmic 47 Nov 5, 2022