@plyaz/ui 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +77 -0
  2. package/dist/types/App.d.ts +5 -0
  3. package/dist/types/components/Box/Box.d.ts +9 -0
  4. package/dist/types/components/Box/Box.stories.d.ts +12 -0
  5. package/dist/types/components/Container/Container.d.ts +9 -0
  6. package/dist/types/components/Container/Container.stories.d.ts +6 -0
  7. package/dist/types/components/Flex/Flex.d.ts +26 -0
  8. package/dist/types/components/Flex/Flex.stories.d.ts +7 -0
  9. package/dist/types/components/Grid/Grid.d.ts +30 -0
  10. package/dist/types/components/Grid/Grid.stories.d.ts +7 -0
  11. package/dist/types/components/Heading/Heading.d.ts +19 -0
  12. package/dist/types/components/Heading/Heading.stories.d.ts +11 -0
  13. package/dist/types/components/Link/Link.d.ts +8 -0
  14. package/dist/types/components/Link/Link.stories.d.ts +7 -0
  15. package/dist/types/components/Paragraph/Paragraph.d.ts +14 -0
  16. package/dist/types/components/Paragraph/Paragraph.stories.d.ts +9 -0
  17. package/dist/types/components/Section/Section.d.ts +7 -0
  18. package/dist/types/components/Section/Section.stories.d.ts +6 -0
  19. package/dist/types/components/Stack/Stack.d.ts +11 -0
  20. package/dist/types/components/Stack/Stack.stories.d.ts +7 -0
  21. package/dist/types/components/Text/Text.d.ts +39 -0
  22. package/dist/types/components/Text/Text.stories.d.ts +8 -0
  23. package/dist/types/docs/DocTemplate.d.ts +1 -0
  24. package/dist/types/index.d.ts +1 -0
  25. package/dist/types/main.d.ts +0 -0
  26. package/dist/types/types/type.d.ts +1 -0
  27. package/dist/types/ui.es.d.ts +2 -0
  28. package/dist/ui.cjs.js +22 -0
  29. package/dist/ui.css +1 -0
  30. package/dist/ui.es.js +281 -0
  31. package/dist/vite.svg +1 -0
  32. package/package.json +90 -0
package/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # ui
2
+
3
+ A reusable, accessible, and themeable component library powering the Plyaz Web App interface. Built with performance and consistency in mind, @plyaz/ui delivers modular React components aligned with the Plyaz design system — enabling seamless development across fan-facing features, quests, NFTs, and loyalty flows in the Web3 ecosystem.
4
+
5
+ ## Project Structure
6
+
7
+ ```text
8
+ src/ # source code
9
+ src/components # component source code
10
+ tests/ # Unit tests
11
+ .storybook/ # Storybook configuration
12
+ dist/ # Build output
13
+ package.json
14
+ tsconfig.json
15
+ vite.config.ts
16
+ tailwind.config.js
17
+ ```
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install @plyaz/ui
23
+ ```
24
+
25
+ or
26
+
27
+ ```bash
28
+ yarn add @plyaz/ui
29
+ ```
30
+
31
+ or
32
+
33
+ ```bash
34
+ pnpm add @plyaz/ui
35
+ ```
36
+
37
+ ## Storybook
38
+
39
+ ```bash
40
+ pnpm run storybook
41
+ ```
42
+
43
+ ## Plop Utility for Auto-Generating Storybook Stories
44
+
45
+ ### Requirement
46
+
47
+ Manually creating Storybook story files for each component can be repetitive. So we needed a way to automatically generate story files with consistent structure and boilerplate.
48
+
49
+ ### Solution
50
+
51
+ We integrated the **Plop** library, a micro-generator framework that automates file creation using custom templates (in our case, a story template). With Plop, we can generate story files for components quickly and consistently.
52
+
53
+ ### How It Works
54
+
55
+ Plop takes three inputs and generates a story file based on a defined template:
56
+
57
+ - **Path to the component:** The target path where the file should be generated (relative to src/)
58
+ - **Component directory name (PascalCase):** The component directory name (e.g., Button)
59
+ - **Component name (PascalCase):** The component name in PascalCase format based on these inputs, Plop processes a predefined template plop-templates/Component.stories.tsx.hbs file and generates the corresponding story file in the specified location.
60
+
61
+ **Plop** then executes a custom template file and generates the new story file at the target path with the provided name.
62
+
63
+ ### Folder Structure
64
+
65
+ ```
66
+ plopfile.js
67
+ /plop-templates
68
+ └── Component.stories.tsx.hbs # template for story file
69
+ ```
70
+
71
+ ### Usage
72
+
73
+ To generate a new story file:
74
+
75
+ ```bash
76
+ pnpm run generate
77
+ ```
@@ -0,0 +1,5 @@
1
+ export type AppProps = {
2
+ children?: React.ReactNode;
3
+ };
4
+ declare function App(): import("react/jsx-runtime").JSX.Element;
5
+ export default App;
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { ElementType } from '../../types/type';
3
+ interface BoxProps extends React.HTMLAttributes<HTMLElement> {
4
+ children: React.ReactNode;
5
+ element?: ElementType;
6
+ className?: string;
7
+ }
8
+ export declare const Box: ({ children, element, className, ...props }: BoxProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,12 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Box } from './Box';
3
+ type Story = StoryObj<typeof Box>;
4
+ declare const meta: Meta<typeof Box>;
5
+ export default meta;
6
+ export declare const Default: Story;
7
+ export declare const Section: Story;
8
+ export declare const Article: Story;
9
+ export declare const Aside: Story;
10
+ export declare const Nav: Story;
11
+ export declare const Header: Story;
12
+ export declare const Footer: Story;
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { ElementType } from '../../types/type';
3
+ interface ContainerProps extends React.HTMLAttributes<HTMLElement> {
4
+ className?: string;
5
+ children?: React.ReactNode;
6
+ element?: ElementType;
7
+ }
8
+ export declare const Container: ({ className, children, element, ...props }: ContainerProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Container } from './Container';
3
+ declare const meta: Meta<typeof Container>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Container>;
6
+ export declare const Default: Story;
@@ -0,0 +1,26 @@
1
+ import { default as React } from 'react';
2
+ import { ALIGN_MAPPER, JUASTIFY_MAPPER } from '../Grid/Grid';
3
+ import { ElementType } from '../../types/type';
4
+ declare const DIRECTION_MAPPER: {
5
+ row: string;
6
+ col: string;
7
+ "row-reverse": string;
8
+ "col-reverse": string;
9
+ };
10
+ declare const WRAP_MAPPER: {
11
+ wrap: string;
12
+ nowrap: string;
13
+ "wrap-reverse": string;
14
+ };
15
+ interface FlexProps extends React.HTMLAttributes<HTMLElement> {
16
+ children: React.ReactNode;
17
+ gap?: string;
18
+ direction?: keyof typeof DIRECTION_MAPPER;
19
+ justify?: keyof typeof JUASTIFY_MAPPER;
20
+ align?: keyof typeof ALIGN_MAPPER;
21
+ wrap?: keyof typeof WRAP_MAPPER;
22
+ className?: string;
23
+ element?: ElementType;
24
+ }
25
+ export declare const Flex: ({ children, gap, direction, justify, align, wrap, className, element, ...props }: FlexProps) => import("react/jsx-runtime").JSX.Element;
26
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Flex } from './Flex';
3
+ declare const meta: Meta<typeof Flex>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Flex>;
6
+ export declare const Default: Story;
7
+ export declare const ColumnCentered: Story;
@@ -0,0 +1,30 @@
1
+ import { default as React } from 'react';
2
+ import { ElementType } from '../../types/type';
3
+ export declare const JUASTIFY_MAPPER: {
4
+ start: string;
5
+ end: string;
6
+ center: string;
7
+ between: string;
8
+ around: string;
9
+ evenly: string;
10
+ stretch: string;
11
+ };
12
+ export declare const ALIGN_MAPPER: {
13
+ start: string;
14
+ end: string;
15
+ center: string;
16
+ baseline: string;
17
+ stretch: string;
18
+ };
19
+ interface GridProps extends React.HTMLAttributes<HTMLElement> {
20
+ children?: React.ReactNode;
21
+ className?: string;
22
+ cols?: string;
23
+ rows?: string;
24
+ gap?: string;
25
+ justify?: keyof typeof JUASTIFY_MAPPER;
26
+ align?: keyof typeof ALIGN_MAPPER;
27
+ element?: ElementType;
28
+ }
29
+ export declare const Grid: ({ children, className, cols, rows, gap, justify, align, element, ...props }: GridProps) => import("react/jsx-runtime").JSX.Element;
30
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Grid } from './Grid';
3
+ declare const meta: Meta<typeof Grid>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Grid>;
6
+ export declare const Default: Story;
7
+ export declare const Justified: Story;
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ declare const SIZE_MAP: {
3
+ readonly xs: "xs";
4
+ readonly sm: "sm";
5
+ readonly base: "base";
6
+ readonly lg: "lg";
7
+ readonly xl: "xl";
8
+ readonly "2xl": "2xl";
9
+ readonly "3xl": "3xl";
10
+ readonly "4xl": "4xl";
11
+ };
12
+ interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
13
+ children: React.ReactNode;
14
+ className?: string;
15
+ element: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
16
+ size: keyof typeof SIZE_MAP;
17
+ }
18
+ export declare const Heading: ({ children, element, className, size, ...props }: HeadingProps) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Heading } from './Heading';
3
+ declare const meta: Meta<typeof Heading>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Heading>;
6
+ export declare const H1: Story;
7
+ export declare const H2: Story;
8
+ export declare const H3: Story;
9
+ export declare const H4: Story;
10
+ export declare const H5: Story;
11
+ export declare const H6: Story;
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ interface LinkProps extends React.HTMLAttributes<HTMLAnchorElement> {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ href?: string;
6
+ }
7
+ export declare const Link: ({ children, className, href, ...props }: LinkProps) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Link } from './Link';
3
+ declare const meta: Meta<typeof Link>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Link>;
6
+ export declare const Default: Story;
7
+ export declare const CustomClass: Story;
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ declare const SIZE_MAP: {
3
+ readonly xs: "xs";
4
+ readonly sm: "sm";
5
+ readonly base: "base";
6
+ readonly lg: "lg";
7
+ };
8
+ interface ParagraphProps extends React.HTMLAttributes<HTMLElement> {
9
+ children: React.ReactNode;
10
+ className?: string;
11
+ size: keyof typeof SIZE_MAP;
12
+ }
13
+ export declare const Paragraph: ({ children, className, size, ...props }: ParagraphProps) => import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Paragraph } from './Paragraph';
3
+ declare const meta: Meta<typeof Paragraph>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Paragraph>;
6
+ export declare const Default: Story;
7
+ export declare const Small: Story;
8
+ export declare const ExtraSmall: Story;
9
+ export declare const Large: Story;
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ interface SectionProps extends React.HTMLAttributes<HTMLElement> {
3
+ className?: string;
4
+ children?: React.ReactNode;
5
+ }
6
+ export declare const Section: ({ className, children, ...props }: SectionProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Section } from './Section';
3
+ declare const meta: Meta<typeof Section>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Section>;
6
+ export declare const Default: Story;
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+ import { ElementType } from '../../types/type';
3
+ interface StackProps extends React.HTMLAttributes<HTMLElement> {
4
+ children: React.ReactNode;
5
+ className?: string;
6
+ direction?: "vertical" | "horizontal";
7
+ spacing?: string;
8
+ element?: ElementType;
9
+ }
10
+ export declare const Stack: ({ children, direction, spacing, element, className, ...props }: StackProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Stack } from './Stack';
3
+ declare const meta: Meta<typeof Stack>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Stack>;
6
+ export declare const Default: Story;
7
+ export declare const Vertical: Story;
@@ -0,0 +1,39 @@
1
+ import { default as React } from 'react';
2
+ declare const VARIANT_MAPPER: {
3
+ body: string;
4
+ heading: string;
5
+ caption: string;
6
+ };
7
+ declare const SIZES_MAPPER: {
8
+ xs: string;
9
+ sm: string;
10
+ base: string;
11
+ lg: string;
12
+ xl: string;
13
+ "2xl": string;
14
+ "3xl": string;
15
+ "4xl": string;
16
+ "5xl": string;
17
+ "6xl": string;
18
+ '7xl': string;
19
+ '8xl': string;
20
+ '9xl': string;
21
+ };
22
+ declare const TEXT_WEIGHT_MAPPER: {
23
+ normal: string;
24
+ medium: string;
25
+ semibold: string;
26
+ bold: string;
27
+ light: string;
28
+ };
29
+ type TextElement = "p" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
30
+ interface TextProps extends React.HTMLAttributes<HTMLElement> {
31
+ className?: string;
32
+ children: React.ReactNode;
33
+ element: TextElement;
34
+ weight: keyof typeof TEXT_WEIGHT_MAPPER;
35
+ variant: keyof typeof VARIANT_MAPPER;
36
+ size?: keyof typeof SIZES_MAPPER;
37
+ }
38
+ export declare const Text: ({ className, children, element, weight, variant, size, ...props }: TextProps) => import("react/jsx-runtime").JSX.Element;
39
+ export {};
@@ -0,0 +1,8 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Text } from './Text';
3
+ declare const meta: Meta<typeof Text>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Text>;
6
+ export declare const Default: Story;
7
+ export declare const Heading: Story;
8
+ export declare const Caption: Story;
@@ -0,0 +1 @@
1
+ export declare const autoDocsTemplate: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from './App';
File without changes
@@ -0,0 +1 @@
1
+ export type ElementType = "div" | "section" | "article" | "aside" | "nav" | "header" | "footer" | "main" | "span";
@@ -0,0 +1,2 @@
1
+ export * from './index'
2
+ export {}
package/dist/ui.cjs.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";const ee=require("react");var T={exports:{}},R={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var $;function re(){if($)return R;$=1;var l=Symbol.for("react.transitional.element"),_=Symbol.for("react.fragment");function f(d,a,s){var m=null;if(s!==void 0&&(m=""+s),a.key!==void 0&&(m=""+a.key),"key"in a){s={};for(var E in a)E!=="key"&&(s[E]=a[E])}else s=a;return a=s.ref,{$$typeof:l,type:d,key:m,ref:a!==void 0?a:null,props:s}}return R.Fragment=_,R.jsx=f,R.jsxs=f,R}var b={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var F;function te(){return F||(F=1,process.env.NODE_ENV!=="production"&&function(){function l(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Z?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case p:return"Fragment";case q:return"Profiler";case U:return"StrictMode";case G:return"Suspense";case X:return"SuspenseList";case H:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case W:return"Portal";case z:return(e.displayName||"Context")+".Provider";case J:return(e._context.displayName||"Context")+".Consumer";case V:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case B:return r=e.displayName||null,r!==null?r:l(e.type)||"Memo";case h:r=e._payload,e=e._init;try{return l(e(r))}catch{}}return null}function _(e){return""+e}function f(e){try{_(e);var r=!1}catch{r=!0}if(r){r=console;var t=r.error,n=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",n),_(e)}}function d(e){if(e===p)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===h)return"<...>";try{var r=l(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function a(){var e=k.A;return e===null?null:e.getOwner()}function s(){return Error("react-stack-top-frame")}function m(e){if(x.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function E(e,r){function t(){y||(y=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}function L(){var e=l(this.type);return N[e]||(N[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function M(e,r,t,n,c,u,A,S){return t=u.ref,e={$$typeof:g,type:e,key:r,props:u,_owner:c},(t!==void 0?t:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:L}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:A}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:S}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function w(e,r,t,n,c,u,A,S){var o=r.children;if(o!==void 0)if(n)if(Q(o)){for(n=0;n<o.length;n++)j(o[n]);Object.freeze&&Object.freeze(o)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else j(o);if(x.call(r,"key")){o=l(e);var i=Object.keys(r).filter(function(K){return K!=="key"});n=0<i.length?"{key: someKey, "+i.join(": ..., ")+": ...}":"{key: someKey}",I[o+n]||(i=0<i.length?"{"+i.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,n,o,i,o),I[o+n]=!0)}if(o=null,t!==void 0&&(f(t),o=""+t),m(r)&&(f(r.key),o=""+r.key),"key"in r){t={};for(var P in r)P!=="key"&&(t[P]=r[P])}else t=r;return o&&E(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),M(e,o,u,c,a(),t,A,S)}function j(e){typeof e=="object"&&e!==null&&e.$$typeof===g&&e._store&&(e._store.validated=1)}var v=ee,g=Symbol.for("react.transitional.element"),W=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),U=Symbol.for("react.strict_mode"),q=Symbol.for("react.profiler"),J=Symbol.for("react.consumer"),z=Symbol.for("react.context"),V=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),X=Symbol.for("react.suspense_list"),B=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),Z=Symbol.for("react.client.reference"),k=v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,x=Object.prototype.hasOwnProperty,Q=Array.isArray,O=console.createTask?console.createTask:function(){return null};v={"react-stack-bottom-frame":function(e){return e()}};var y,N={},C=v["react-stack-bottom-frame"].bind(v,s)(),Y=O(d(s)),I={};b.Fragment=p,b.jsx=function(e,r,t,n,c){var u=1e4>k.recentlyCreatedOwnerStacks++;return w(e,r,t,!1,n,c,u?Error("react-stack-top-frame"):C,u?O(d(e)):Y)},b.jsxs=function(e,r,t,n,c){var u=1e4>k.recentlyCreatedOwnerStacks++;return w(e,r,t,!0,n,c,u?Error("react-stack-top-frame"):C,u?O(d(e)):Y)}}()),b}var D;function ne(){return D||(D=1,process.env.NODE_ENV==="production"?T.exports=re():T.exports=te()),T.exports}ne();
package/dist/ui.css ADDED
@@ -0,0 +1 @@
1
+ #root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
package/dist/ui.es.js ADDED
@@ -0,0 +1,281 @@
1
+ import ee from "react";
2
+ var T = { exports: {} }, R = {};
3
+ /**
4
+ * @license React
5
+ * react-jsx-runtime.production.js
6
+ *
7
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ var $;
13
+ function re() {
14
+ if ($) return R;
15
+ $ = 1;
16
+ var l = Symbol.for("react.transitional.element"), _ = Symbol.for("react.fragment");
17
+ function f(d, a, s) {
18
+ var m = null;
19
+ if (s !== void 0 && (m = "" + s), a.key !== void 0 && (m = "" + a.key), "key" in a) {
20
+ s = {};
21
+ for (var E in a)
22
+ E !== "key" && (s[E] = a[E]);
23
+ } else s = a;
24
+ return a = s.ref, {
25
+ $$typeof: l,
26
+ type: d,
27
+ key: m,
28
+ ref: a !== void 0 ? a : null,
29
+ props: s
30
+ };
31
+ }
32
+ return R.Fragment = _, R.jsx = f, R.jsxs = f, R;
33
+ }
34
+ var b = {};
35
+ /**
36
+ * @license React
37
+ * react-jsx-runtime.development.js
38
+ *
39
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
40
+ *
41
+ * This source code is licensed under the MIT license found in the
42
+ * LICENSE file in the root directory of this source tree.
43
+ */
44
+ var F;
45
+ function te() {
46
+ return F || (F = 1, process.env.NODE_ENV !== "production" && function() {
47
+ function l(e) {
48
+ if (e == null) return null;
49
+ if (typeof e == "function")
50
+ return e.$$typeof === Z ? null : e.displayName || e.name || null;
51
+ if (typeof e == "string") return e;
52
+ switch (e) {
53
+ case p:
54
+ return "Fragment";
55
+ case q:
56
+ return "Profiler";
57
+ case U:
58
+ return "StrictMode";
59
+ case G:
60
+ return "Suspense";
61
+ case X:
62
+ return "SuspenseList";
63
+ case H:
64
+ return "Activity";
65
+ }
66
+ if (typeof e == "object")
67
+ switch (typeof e.tag == "number" && console.error(
68
+ "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
69
+ ), e.$$typeof) {
70
+ case W:
71
+ return "Portal";
72
+ case z:
73
+ return (e.displayName || "Context") + ".Provider";
74
+ case J:
75
+ return (e._context.displayName || "Context") + ".Consumer";
76
+ case V:
77
+ var r = e.render;
78
+ return e = e.displayName, e || (e = r.displayName || r.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
79
+ case B:
80
+ return r = e.displayName || null, r !== null ? r : l(e.type) || "Memo";
81
+ case h:
82
+ r = e._payload, e = e._init;
83
+ try {
84
+ return l(e(r));
85
+ } catch {
86
+ }
87
+ }
88
+ return null;
89
+ }
90
+ function _(e) {
91
+ return "" + e;
92
+ }
93
+ function f(e) {
94
+ try {
95
+ _(e);
96
+ var r = !1;
97
+ } catch {
98
+ r = !0;
99
+ }
100
+ if (r) {
101
+ r = console;
102
+ var t = r.error, n = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
103
+ return t.call(
104
+ r,
105
+ "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
106
+ n
107
+ ), _(e);
108
+ }
109
+ }
110
+ function d(e) {
111
+ if (e === p) return "<>";
112
+ if (typeof e == "object" && e !== null && e.$$typeof === h)
113
+ return "<...>";
114
+ try {
115
+ var r = l(e);
116
+ return r ? "<" + r + ">" : "<...>";
117
+ } catch {
118
+ return "<...>";
119
+ }
120
+ }
121
+ function a() {
122
+ var e = k.A;
123
+ return e === null ? null : e.getOwner();
124
+ }
125
+ function s() {
126
+ return Error("react-stack-top-frame");
127
+ }
128
+ function m(e) {
129
+ if (x.call(e, "key")) {
130
+ var r = Object.getOwnPropertyDescriptor(e, "key").get;
131
+ if (r && r.isReactWarning) return !1;
132
+ }
133
+ return e.key !== void 0;
134
+ }
135
+ function E(e, r) {
136
+ function t() {
137
+ y || (y = !0, console.error(
138
+ "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
139
+ r
140
+ ));
141
+ }
142
+ t.isReactWarning = !0, Object.defineProperty(e, "key", {
143
+ get: t,
144
+ configurable: !0
145
+ });
146
+ }
147
+ function L() {
148
+ var e = l(this.type);
149
+ return N[e] || (N[e] = !0, console.error(
150
+ "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
151
+ )), e = this.props.ref, e !== void 0 ? e : null;
152
+ }
153
+ function M(e, r, t, n, c, u, A, S) {
154
+ return t = u.ref, e = {
155
+ $$typeof: g,
156
+ type: e,
157
+ key: r,
158
+ props: u,
159
+ _owner: c
160
+ }, (t !== void 0 ? t : null) !== null ? Object.defineProperty(e, "ref", {
161
+ enumerable: !1,
162
+ get: L
163
+ }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
164
+ configurable: !1,
165
+ enumerable: !1,
166
+ writable: !0,
167
+ value: 0
168
+ }), Object.defineProperty(e, "_debugInfo", {
169
+ configurable: !1,
170
+ enumerable: !1,
171
+ writable: !0,
172
+ value: null
173
+ }), Object.defineProperty(e, "_debugStack", {
174
+ configurable: !1,
175
+ enumerable: !1,
176
+ writable: !0,
177
+ value: A
178
+ }), Object.defineProperty(e, "_debugTask", {
179
+ configurable: !1,
180
+ enumerable: !1,
181
+ writable: !0,
182
+ value: S
183
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
184
+ }
185
+ function w(e, r, t, n, c, u, A, S) {
186
+ var o = r.children;
187
+ if (o !== void 0)
188
+ if (n)
189
+ if (Q(o)) {
190
+ for (n = 0; n < o.length; n++)
191
+ j(o[n]);
192
+ Object.freeze && Object.freeze(o);
193
+ } else
194
+ console.error(
195
+ "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
196
+ );
197
+ else j(o);
198
+ if (x.call(r, "key")) {
199
+ o = l(e);
200
+ var i = Object.keys(r).filter(function(K) {
201
+ return K !== "key";
202
+ });
203
+ n = 0 < i.length ? "{key: someKey, " + i.join(": ..., ") + ": ...}" : "{key: someKey}", I[o + n] || (i = 0 < i.length ? "{" + i.join(": ..., ") + ": ...}" : "{}", console.error(
204
+ `A props object containing a "key" prop is being spread into JSX:
205
+ let props = %s;
206
+ <%s {...props} />
207
+ React keys must be passed directly to JSX without using spread:
208
+ let props = %s;
209
+ <%s key={someKey} {...props} />`,
210
+ n,
211
+ o,
212
+ i,
213
+ o
214
+ ), I[o + n] = !0);
215
+ }
216
+ if (o = null, t !== void 0 && (f(t), o = "" + t), m(r) && (f(r.key), o = "" + r.key), "key" in r) {
217
+ t = {};
218
+ for (var P in r)
219
+ P !== "key" && (t[P] = r[P]);
220
+ } else t = r;
221
+ return o && E(
222
+ t,
223
+ typeof e == "function" ? e.displayName || e.name || "Unknown" : e
224
+ ), M(
225
+ e,
226
+ o,
227
+ u,
228
+ c,
229
+ a(),
230
+ t,
231
+ A,
232
+ S
233
+ );
234
+ }
235
+ function j(e) {
236
+ typeof e == "object" && e !== null && e.$$typeof === g && e._store && (e._store.validated = 1);
237
+ }
238
+ var v = ee, g = Symbol.for("react.transitional.element"), W = Symbol.for("react.portal"), p = Symbol.for("react.fragment"), U = Symbol.for("react.strict_mode"), q = Symbol.for("react.profiler"), J = Symbol.for("react.consumer"), z = Symbol.for("react.context"), V = Symbol.for("react.forward_ref"), G = Symbol.for("react.suspense"), X = Symbol.for("react.suspense_list"), B = Symbol.for("react.memo"), h = Symbol.for("react.lazy"), H = Symbol.for("react.activity"), Z = Symbol.for("react.client.reference"), k = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, x = Object.prototype.hasOwnProperty, Q = Array.isArray, O = console.createTask ? console.createTask : function() {
239
+ return null;
240
+ };
241
+ v = {
242
+ "react-stack-bottom-frame": function(e) {
243
+ return e();
244
+ }
245
+ };
246
+ var y, N = {}, C = v["react-stack-bottom-frame"].bind(
247
+ v,
248
+ s
249
+ )(), Y = O(d(s)), I = {};
250
+ b.Fragment = p, b.jsx = function(e, r, t, n, c) {
251
+ var u = 1e4 > k.recentlyCreatedOwnerStacks++;
252
+ return w(
253
+ e,
254
+ r,
255
+ t,
256
+ !1,
257
+ n,
258
+ c,
259
+ u ? Error("react-stack-top-frame") : C,
260
+ u ? O(d(e)) : Y
261
+ );
262
+ }, b.jsxs = function(e, r, t, n, c) {
263
+ var u = 1e4 > k.recentlyCreatedOwnerStacks++;
264
+ return w(
265
+ e,
266
+ r,
267
+ t,
268
+ !0,
269
+ n,
270
+ c,
271
+ u ? Error("react-stack-top-frame") : C,
272
+ u ? O(d(e)) : Y
273
+ );
274
+ };
275
+ }()), b;
276
+ }
277
+ var D;
278
+ function ne() {
279
+ return D || (D = 1, process.env.NODE_ENV === "production" ? T.exports = re() : T.exports = te()), T.exports;
280
+ }
281
+ ne();
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/package.json ADDED
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "@plyaz/ui",
3
+ "version": "0.1.4",
4
+ "description": "A reusable, accessible, and themeable component library powering the Plyaz Web App interface. Built with performance and consistency in mind, @plyaz/ui delivers modular React components aligned with the Plyaz design system — enabling seamless development across fan-facing features, quests, NFTs, and loyalty flows in the Web3 ecosystem.",
5
+ "main": "index.ts",
6
+ "type": "module",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/ui.es.js",
13
+ "require": "./dist/ui.cjs.js"
14
+ }
15
+ },
16
+ "dependencies": {
17
+ "@tailwindcss/vite": "^4.1.8",
18
+ "@testing-library/jest-dom": "^6.6.3",
19
+ "@testing-library/user-event": "^14.6.1",
20
+ "clsx": "^2.1.1",
21
+ "react": "^19.1.0",
22
+ "react-dom": "^19.1.0",
23
+ "tailwindcss": "^4.1.8"
24
+ },
25
+ "peerDependencies": {
26
+ "react": "^18.0.0 || ^19.0.0",
27
+ "react-dom": "^18.0.0 || ^19.0.0"
28
+ },
29
+ "devDependencies": {
30
+ "@eslint/js": "^9.25.0",
31
+ "@storybook/addon-a11y": "^8.6.12",
32
+ "@storybook/addon-controls": "^8.6.12",
33
+ "@storybook/addon-docs": "^8.6.12",
34
+ "@storybook/addon-essentials": "^8.6.12",
35
+ "@storybook/addon-interactions": "^8.6.12",
36
+ "@storybook/addon-onboarding": "^8.6.12",
37
+ "@storybook/addon-viewport": "^8.6.12",
38
+ "@storybook/blocks": "^8.6.12",
39
+ "@storybook/manager-api": "^8.6.12",
40
+ "@storybook/react": "^8.6.12",
41
+ "@storybook/react-vite": "^8.6.12",
42
+ "@storybook/test": "^8.6.12",
43
+ "@storybook/theming": "^8.6.12",
44
+ "@testing-library/dom": "^10.4.0",
45
+ "@testing-library/react": "^16.3.0",
46
+ "@types/react": "^19.1.2",
47
+ "@types/react-dom": "^19.1.2",
48
+ "@vitejs/plugin-react": "^4.4.1",
49
+ "@vitest/coverage-v8": "3.1.3",
50
+ "autoprefixer": "^10.4.21",
51
+ "chromatic": "^11.28.2",
52
+ "eslint": "^9.25.0",
53
+ "eslint-plugin-react-hooks": "^5.2.0",
54
+ "eslint-plugin-react-refresh": "^0.4.19",
55
+ "eslint-plugin-storybook": "^0.12.0",
56
+ "globals": "^16.0.0",
57
+ "happy-dom": "^17.4.7",
58
+ "plop": "^4.0.1",
59
+ "postcss": "^8.5.3",
60
+ "standard-version": "^9.5.0",
61
+ "storybook": "^8.6.12",
62
+ "storybook-addon-tailwind-autodocs": "^1.0.8",
63
+ "ts-node": "^10.9.2",
64
+ "typescript": "~5.8.3",
65
+ "vite": "^6.3.5",
66
+ "vite-plugin-dts": "^4.5.3",
67
+ "vitest": "^3.1.3"
68
+ },
69
+ "eslintConfig": {
70
+ "extends": [
71
+ "plugin:storybook/recommended"
72
+ ]
73
+ },
74
+ "packageManager": "pnpm@10.5.2+sha512.da9dc28cd3ff40d0592188235ab25d3202add8a207afbedc682220e4a0029ffbff4562102b9e6e46b4e3f9e8bd53e6d05de48544b0c57d4b0179e22c76d1199b",
75
+ "scripts": {
76
+ "dev": "vite",
77
+ "build": "vite build",
78
+ "preview": "vite preview",
79
+ "lint": "eslint .",
80
+ "storybook": "storybook dev -p 6006",
81
+ "build-storybook": "storybook build",
82
+ "generate": "plop",
83
+ "test": "vitest",
84
+ "coverage": "vitest run --coverage",
85
+ "chromatic": "chromatic",
86
+ "release:publish": "pnpm publish --access public",
87
+ "publish:ci": "pnpm publish --access public --no-git-checks",
88
+ "release": "standard-version"
89
+ }
90
+ }