1.4.7 • Published 5 years ago

@liontechnyc/gemini v1.4.7

Weekly downloads
-
License
GPL-2.0-only
Repository
github
Last release
5 years ago

Gemini

Gemini Logo

An unobtrusive UI templating framework wrapping over CSS Grid and CSS Flex, optimized for minimal markup and responsive display.

Summary

npm install @liontechnyc/gemini
ComponentDescription
<Block/>A container for wrapping design elements
<Collection/>1-Dimensional Flex container to display item arrangements
<Content/>A container for wrapping structured textual information
<Design/>2-Dimensional Flex container for templating UI designs
<Image/>A container for wrapping images
<Modal/>A container for wrapping overlays or popups
<Section/>An organizational unit for templating with <Design/>
<Page/>Wraps essential content within <main> tag, handles some page loading behavior
<UX.Provider/>Root context provider
<UX.View/>Handles responsive switching; essentially a wrapper for @artsy/fresnel's <Media/> component

Example Usage

/** src/index.tsx -- Design Templating Example */
import React from "react";
import ReactDOM from "react-dom";
import { UX, Design, Section } from "@liontechnyc/gemini";
import { DesignProps } from "@liontechnyc/gemini/Design/Design.d";

const design: DesignProps = {
    layout: [
      ['brand', 'nav'],
      ['menu', 'content'],
      ['menu', 'footer'],
    ],
    grid: {
      x: [ 150, 'auto'],
      y: [
           72,
           'auto',
           72
        ],
    },
    gutter: 8
    ),
  };
};

const Page = (
  <UX.Provider>
  <Design is="page" containerStyle={{ height: 500 }}>
    <Section name="brand" containerStyle={{ background: "#0a122a" }} />
    <Section name="nav" containerStyle={{ background: "#3772ff" }} />
    <Section name="menu" containerStyle={{ background: "#fe5e41" }} />
    <Section name="content" containerStyle={{ background: "#e5ebea" }} />
    <Section name="footer" containerStyle={{ background: "#0a122a" }} />
  </Design>
  </UX.Provider>
);

ReactDOM.render(Page, document.getElementById('root'));
/// ....
/** src/components/MessageLis.tsx -- Collection Example */
import React from "react";
import { Collection } from "@liontechnyc/gemini";
import MessageBlock from "./MessageBlock";

const MessageList = ({ messages }) => {
  const messageItems = messages.map((content, id) => {
    return <MessageBlock key={id} {...{content}}>
  })
  return(
    <Collection
      containerStyle={{ outline: "1px solid black", borderRadius: 8 }}
      items={messageItems}
    />
  );
};

/// ....

Want More Examples?

View live use cases with Storybook:

npm run storybook

Development

Install application dependencies:

npm install

Local Development

Develop the application locally with Storybook:

npm run storybook

Quality Assurance

Testing

Run integration and unit test:

npm test

Start test in watch mode:

npm run test:watch

Code Coverage TODO

Generate a coverage report:

npm run coverage

Code Formatting

Run TSLint and Prettier to analyze source code:

npm run format

License

This project is licensed under the GPLv2 License - see the LICENSE.md file for details

1.4.6

5 years ago

1.4.5

5 years ago

1.4.4

5 years ago

1.4.3

5 years ago

1.4.2

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.4.7

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.0.1-3

5 years ago

1.0.1-0

5 years ago

1.0.1-2

5 years ago

1.0.1-1

5 years ago

1.0.0

5 years ago