@pondipondi/mimas 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/lib/components/crumbs/Button/Button.stories.ts +56 -0
- package/lib/components/crumbs/Button/Button.tsx +162 -0
- package/lib/components/crumbs/LoadingRing/LoadingRing.stories.ts +33 -0
- package/lib/components/crumbs/LoadingRing/LoadingRing.tsx +33 -0
- package/lib/components/crumbs/ToggleSet/ToggleSet.tsx +12 -0
- package/lib/components/index.ts +5 -0
- package/lib/components/util/Noise/Noise.tsx +25 -0
- package/lib/index.css +99 -0
- package/lib/vite-env.d.ts +1 -0
- package/package.json +81 -0
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# React + TypeScript + Vite
|
|
2
|
+
|
|
3
|
+
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
4
|
+
|
|
5
|
+
Currently, two official plugins are available:
|
|
6
|
+
|
|
7
|
+
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
|
|
8
|
+
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
|
9
|
+
|
|
10
|
+
## Expanding the ESLint configuration
|
|
11
|
+
|
|
12
|
+
If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
|
|
13
|
+
|
|
14
|
+
- Configure the top-level `parserOptions` property like this:
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
export default {
|
|
18
|
+
// other rules...
|
|
19
|
+
parserOptions: {
|
|
20
|
+
ecmaVersion: 'latest',
|
|
21
|
+
sourceType: 'module',
|
|
22
|
+
project: ['./tsconfig.json', './tsconfig.node.json'],
|
|
23
|
+
tsconfigRootDir: __dirname,
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
|
|
29
|
+
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
|
|
30
|
+
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { fn } from "@storybook/test";
|
|
3
|
+
import Button from "./Button";
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
6
|
+
const meta = {
|
|
7
|
+
title: "Mimas/Crumbs/Button",
|
|
8
|
+
component: Button,
|
|
9
|
+
parameters: {
|
|
10
|
+
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
|
|
11
|
+
layout: "centered",
|
|
12
|
+
},
|
|
13
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
14
|
+
tags: ["autodocs"],
|
|
15
|
+
// More on argTypes: https://storybook.js.org/docs/api/argtypes
|
|
16
|
+
argTypes: {
|
|
17
|
+
size: {
|
|
18
|
+
control: "radio",
|
|
19
|
+
options: ["large", "small"],
|
|
20
|
+
},
|
|
21
|
+
width: {
|
|
22
|
+
control: "radio",
|
|
23
|
+
options: ["fit", "grow"],
|
|
24
|
+
},
|
|
25
|
+
colour: {
|
|
26
|
+
control: "select",
|
|
27
|
+
options: ["red", "blue", "green", "white", "neutral"],
|
|
28
|
+
},
|
|
29
|
+
corners: {
|
|
30
|
+
control: "select",
|
|
31
|
+
options: ["sharp", "round", "circle"],
|
|
32
|
+
},
|
|
33
|
+
leftCorners: {
|
|
34
|
+
control: "select",
|
|
35
|
+
options: ["none", "sharp", "round", "circle"],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
|
|
39
|
+
args: {
|
|
40
|
+
onClick: fn(),
|
|
41
|
+
size: "large",
|
|
42
|
+
noise: "medium",
|
|
43
|
+
colour: "neutral",
|
|
44
|
+
text: "Button",
|
|
45
|
+
width: "fit",
|
|
46
|
+
corners: "round",
|
|
47
|
+
},
|
|
48
|
+
} satisfies Meta<typeof Button>;
|
|
49
|
+
|
|
50
|
+
export default meta;
|
|
51
|
+
type Story = StoryObj<typeof meta>;
|
|
52
|
+
|
|
53
|
+
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
|
|
54
|
+
export const Primary: Story = {
|
|
55
|
+
args: {},
|
|
56
|
+
};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import LoadingRing from "../LoadingRing/LoadingRing";
|
|
2
|
+
import Noise from "../../util/Noise/Noise";
|
|
3
|
+
import { tv, VariantProps } from "tailwind-variants";
|
|
4
|
+
|
|
5
|
+
const button = tv({
|
|
6
|
+
slots: {
|
|
7
|
+
outer: "group p-[2px] bg-neutral-200 dark:bg-neutral-900",
|
|
8
|
+
inner: "relative shadow-form border overflow-hidden animate-press",
|
|
9
|
+
chip: "pb-[2px]",
|
|
10
|
+
},
|
|
11
|
+
variants: {
|
|
12
|
+
corners: {
|
|
13
|
+
sharp: {
|
|
14
|
+
inner: "rounded-sm",
|
|
15
|
+
outer: "rounded-sm",
|
|
16
|
+
chip: "rounded-sm",
|
|
17
|
+
},
|
|
18
|
+
round: {
|
|
19
|
+
inner: "rounded-md",
|
|
20
|
+
outer: "rounded-lg",
|
|
21
|
+
chip: "rounded-md",
|
|
22
|
+
},
|
|
23
|
+
circle: {
|
|
24
|
+
inner: "rounded-full",
|
|
25
|
+
outer: "rounded-full",
|
|
26
|
+
chip: "rounded-full",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
leftCorners: {
|
|
30
|
+
none: {},
|
|
31
|
+
sharp: {
|
|
32
|
+
inner: "rounded-s-sm",
|
|
33
|
+
outer: "rounded-s-sm",
|
|
34
|
+
chip: "rounded-s-sm",
|
|
35
|
+
},
|
|
36
|
+
round: {
|
|
37
|
+
inner: "rounded-s-md",
|
|
38
|
+
outer: "rounded-s-lg",
|
|
39
|
+
chip: "rounded-s-md",
|
|
40
|
+
},
|
|
41
|
+
circle: {
|
|
42
|
+
inner: "rounded-s-full",
|
|
43
|
+
outer: "rounded-s-full",
|
|
44
|
+
chip: "rounded-s-full",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
size: {
|
|
48
|
+
small: {
|
|
49
|
+
inner: "py-[2px] px-2 text-xs min-h-5",
|
|
50
|
+
},
|
|
51
|
+
large: {
|
|
52
|
+
inner: "py-1 px-3 min-h-8",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
colour: {
|
|
56
|
+
neutral: {
|
|
57
|
+
inner:
|
|
58
|
+
"bg-neutral-800 border-neutral-700/70 group-disabled:border-neutral-700/40 group-active:border-neutral-700/40 text-neutral-200",
|
|
59
|
+
chip: "bg-neutral-800",
|
|
60
|
+
},
|
|
61
|
+
red: {
|
|
62
|
+
inner:
|
|
63
|
+
"bg-red-700 border-red-500/60 group-disabled:border-red-600/40 group-active:border-red-600/40 text-neutral-200",
|
|
64
|
+
chip: "bg-red-900",
|
|
65
|
+
},
|
|
66
|
+
green: {
|
|
67
|
+
inner:
|
|
68
|
+
"bg-lime-700 border-lime-600/70 group-disabled:border-lime-600/40 group-active:border-lime-600/40 text-neutral-200",
|
|
69
|
+
chip: "bg-lime-900",
|
|
70
|
+
},
|
|
71
|
+
blue: {
|
|
72
|
+
inner:
|
|
73
|
+
"bg-sky-700 border-sky-600/70 group-disabled:border-sky-600/40 group-active:border-sky-600/40 text-neutral-200",
|
|
74
|
+
chip: "bg-sky-900",
|
|
75
|
+
},
|
|
76
|
+
white: {
|
|
77
|
+
inner:
|
|
78
|
+
"bg-neutral-300 border-neutral-300/70 group-disabled:border-neutral-300/40 group-active:border-neutral-300/40 text-neutral-800",
|
|
79
|
+
chip: "bg-neutral-400",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
width: {
|
|
83
|
+
fit: {},
|
|
84
|
+
grow: {
|
|
85
|
+
inner: "w-full",
|
|
86
|
+
outer: "w-full",
|
|
87
|
+
chip: "w-full",
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
defaultVariants: {
|
|
92
|
+
size: "large",
|
|
93
|
+
colour: "neutral",
|
|
94
|
+
corners: "round",
|
|
95
|
+
leftCorners: "none",
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
interface ButtonProps
|
|
100
|
+
extends VariantProps<typeof button>,
|
|
101
|
+
React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
102
|
+
noise?: "low" | "medium" | "high";
|
|
103
|
+
loading?: boolean;
|
|
104
|
+
text?: string;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function Button({
|
|
108
|
+
size,
|
|
109
|
+
noise,
|
|
110
|
+
colour,
|
|
111
|
+
width,
|
|
112
|
+
corners,
|
|
113
|
+
leftCorners,
|
|
114
|
+
loading,
|
|
115
|
+
text,
|
|
116
|
+
children,
|
|
117
|
+
className,
|
|
118
|
+
disabled,
|
|
119
|
+
onClick,
|
|
120
|
+
...props
|
|
121
|
+
}: ButtonProps) {
|
|
122
|
+
const { outer, chip, inner } = button({
|
|
123
|
+
size,
|
|
124
|
+
colour,
|
|
125
|
+
width,
|
|
126
|
+
corners,
|
|
127
|
+
leftCorners,
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// TODO handle keyboard
|
|
131
|
+
|
|
132
|
+
return (
|
|
133
|
+
<button
|
|
134
|
+
className={outer()}
|
|
135
|
+
disabled={disabled || loading}
|
|
136
|
+
onClick={onClick}
|
|
137
|
+
{...props}
|
|
138
|
+
>
|
|
139
|
+
<div className={chip()}>
|
|
140
|
+
<div className={inner({ className })}>
|
|
141
|
+
<span
|
|
142
|
+
className="relative block z-10 text-inherit group-disabled:opacity-50"
|
|
143
|
+
style={{ visibility: loading ? "hidden" : "visible" }}
|
|
144
|
+
>
|
|
145
|
+
{children}
|
|
146
|
+
{text}
|
|
147
|
+
</span>
|
|
148
|
+
|
|
149
|
+
{loading && (
|
|
150
|
+
<div className="absolute inset-0 w-full h-full flex justify-center items-center">
|
|
151
|
+
<LoadingRing size={size} />
|
|
152
|
+
</div>
|
|
153
|
+
)}
|
|
154
|
+
|
|
155
|
+
<Noise strength={noise ?? "medium"} />
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</button>
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export default Button;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import LoadingRing from "./LoadingRing";
|
|
3
|
+
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
5
|
+
const meta = {
|
|
6
|
+
title: "Mimas/Crumbs/LoadingRing",
|
|
7
|
+
component: LoadingRing,
|
|
8
|
+
parameters: {
|
|
9
|
+
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
|
|
10
|
+
layout: "centered",
|
|
11
|
+
},
|
|
12
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
13
|
+
tags: ["autodocs"],
|
|
14
|
+
// More on argTypes: https://storybook.js.org/docs/api/argtypes
|
|
15
|
+
argTypes: {
|
|
16
|
+
size: {
|
|
17
|
+
control: "radio",
|
|
18
|
+
options: ["large", "small"],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
|
|
22
|
+
args: {
|
|
23
|
+
size: "large",
|
|
24
|
+
},
|
|
25
|
+
} satisfies Meta<typeof LoadingRing>;
|
|
26
|
+
|
|
27
|
+
export default meta;
|
|
28
|
+
type Story = StoryObj<typeof meta>;
|
|
29
|
+
|
|
30
|
+
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
|
|
31
|
+
export const Primary: Story = {
|
|
32
|
+
args: {},
|
|
33
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { tv, VariantProps } from "tailwind-variants";
|
|
2
|
+
|
|
3
|
+
const loadingRing = tv({
|
|
4
|
+
base: "animate-spin",
|
|
5
|
+
variants: {
|
|
6
|
+
size: {
|
|
7
|
+
small: "w-5 h-5",
|
|
8
|
+
large: "w-8 h-8",
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
function LoadingRing({ size }: VariantProps<typeof loadingRing>) {
|
|
14
|
+
return (
|
|
15
|
+
<div className={loadingRing({ size })}>
|
|
16
|
+
<svg viewBox="0 0 800 800" xmlns="http://www.w3.org/2000/svg">
|
|
17
|
+
<circle
|
|
18
|
+
cx="400"
|
|
19
|
+
cy="400"
|
|
20
|
+
fill="none"
|
|
21
|
+
r="200"
|
|
22
|
+
stroke-width="50"
|
|
23
|
+
stroke-dasharray="269 150"
|
|
24
|
+
stroke="currentColor"
|
|
25
|
+
opacity={0.5}
|
|
26
|
+
stroke-linecap="round"
|
|
27
|
+
/>
|
|
28
|
+
</svg>
|
|
29
|
+
</div>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default LoadingRing;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { tv, VariantProps } from "tailwind-variants";
|
|
2
|
+
|
|
3
|
+
const noise = tv({
|
|
4
|
+
base: "bg-neutral-200 noise absolute w-full h-full inset-0 z-0",
|
|
5
|
+
variants: {
|
|
6
|
+
strength: {
|
|
7
|
+
low: "noise",
|
|
8
|
+
medium: "noise-2",
|
|
9
|
+
high: "noise-4",
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
defaultVariants: {
|
|
13
|
+
strength: "medium",
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
interface NoiseProps extends VariantProps<typeof noise> {
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function Noise({ strength, className }: NoiseProps) {
|
|
22
|
+
return <div className={noise({ strength, className })} />;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default Noise;
|
package/lib/index.css
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
@import "tailwindcss/base";
|
|
2
|
+
@import "tailwindcss/components";
|
|
3
|
+
@import "tailwindcss/utilities";
|
|
4
|
+
|
|
5
|
+
@import url("https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap");
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
font-family: "Rubik", sans-serif;
|
|
9
|
+
color: white;
|
|
10
|
+
|
|
11
|
+
--lines: 0.0007px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.noise {
|
|
15
|
+
/* nerdy.dev */
|
|
16
|
+
mask: repeating-radial-gradient(
|
|
17
|
+
circle at center,
|
|
18
|
+
#0000,
|
|
19
|
+
var(--lines),
|
|
20
|
+
#0000,
|
|
21
|
+
0,
|
|
22
|
+
rgba(0, 0, 0, 0.02),
|
|
23
|
+
calc(var(--lines) * 2),
|
|
24
|
+
rgba(0, 0, 0, 0.02) 0
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.noise-2 {
|
|
29
|
+
/* nerdy.dev */
|
|
30
|
+
mask: repeating-radial-gradient(
|
|
31
|
+
circle at center,
|
|
32
|
+
#0000,
|
|
33
|
+
var(--lines),
|
|
34
|
+
#0000,
|
|
35
|
+
0,
|
|
36
|
+
rgba(0, 0, 0, 0.04),
|
|
37
|
+
calc(var(--lines) * 2),
|
|
38
|
+
rgba(0, 0, 0, 0.04) 0
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.noise-4 {
|
|
43
|
+
/* nerdy.dev */
|
|
44
|
+
mask: repeating-radial-gradient(
|
|
45
|
+
circle at center,
|
|
46
|
+
#0000,
|
|
47
|
+
var(--lines),
|
|
48
|
+
#0000,
|
|
49
|
+
0,
|
|
50
|
+
rgba(0, 0, 0, 0.06),
|
|
51
|
+
calc(var(--lines) * 2),
|
|
52
|
+
rgba(0, 0, 0, 0.06) 0
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.shadow-form {
|
|
57
|
+
box-shadow:
|
|
58
|
+
inset 0 1px 8px 2px rgba(255, 255, 255, 0.03),
|
|
59
|
+
inset 0 -6px 5px -3px rgba(0, 0, 0, 0.08);
|
|
60
|
+
|
|
61
|
+
transition:
|
|
62
|
+
background-color 200ms ease,
|
|
63
|
+
box-shadow 200ms ease;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.group:hover .shadow-form,
|
|
67
|
+
.shadow-form:hover {
|
|
68
|
+
box-shadow:
|
|
69
|
+
inset 0 1px 5px 3px rgba(255, 255, 255, 0.03),
|
|
70
|
+
inset 0 -7px 5px -3px rgba(0, 0, 0, 0.1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.group:active .shadow-form,
|
|
74
|
+
.shadow-form:active {
|
|
75
|
+
box-shadow:
|
|
76
|
+
inset 0 2px 6px 6px rgba(0, 0, 0, 0.12),
|
|
77
|
+
inset 0 -7px 5px -3px rgba(0, 0, 0, 0);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.group:disabled .shadow-form,
|
|
81
|
+
.shadow-form:disabled,
|
|
82
|
+
.shadow-form:disabled:hover {
|
|
83
|
+
box-shadow:
|
|
84
|
+
inset 0 2px 6px 6px rgba(0, 0, 0, 0.12),
|
|
85
|
+
inset 0 -7px 5px -3px rgba(0, 0, 0, 0);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.animate-press {
|
|
89
|
+
transition: all 100ms ease;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.group:hover .animate-press {
|
|
93
|
+
translate: 0 -1px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.group:disabled .animate-press,
|
|
97
|
+
.group:active .animate-press {
|
|
98
|
+
translate: 0 1px;
|
|
99
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pondipondi/mimas",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "vite",
|
|
7
|
+
"build": "tsc -b && vite build",
|
|
8
|
+
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
9
|
+
"preview": "vite preview",
|
|
10
|
+
"storybook": "storybook dev -p 6006",
|
|
11
|
+
"build-storybook": "storybook build",
|
|
12
|
+
"transpile": "rimraf lib && babel src -d lib --copy-files",
|
|
13
|
+
"prepublishOnly": "npm run transpile"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"autoprefixer": "^10.4.19",
|
|
17
|
+
"postcss": "^8.4.39",
|
|
18
|
+
"react": "^18.3.1",
|
|
19
|
+
"react-dom": "^18.3.1",
|
|
20
|
+
"tailwind-variants": "^0.2.1",
|
|
21
|
+
"tailwindcss": "^3.4.4"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"react": ">=18.3.1",
|
|
25
|
+
"react-dom": ">=18.3.1"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@babel/cli": "^7.27.2",
|
|
29
|
+
"@babel/core": "^7.27.4",
|
|
30
|
+
"@babel/preset-env": "^7.27.2",
|
|
31
|
+
"@babel/preset-react": "^7.27.1",
|
|
32
|
+
"@chromatic-com/storybook": "1.6.1",
|
|
33
|
+
"@storybook/addon-essentials": "^8.2.2",
|
|
34
|
+
"@storybook/addon-interactions": "^8.2.2",
|
|
35
|
+
"@storybook/addon-links": "^8.2.1",
|
|
36
|
+
"@storybook/addon-onboarding": "^8.2.1",
|
|
37
|
+
"@storybook/blocks": "^8.2.1",
|
|
38
|
+
"@storybook/manager-api": "^8.2.1",
|
|
39
|
+
"@storybook/react": "^8.2.2",
|
|
40
|
+
"@storybook/react-vite": "^8.2.2",
|
|
41
|
+
"@storybook/test": "^8.2.2",
|
|
42
|
+
"@storybook/theming": "^8.2.1",
|
|
43
|
+
"@types/react": "^18.3.3",
|
|
44
|
+
"@types/react-dom": "^18.3.0",
|
|
45
|
+
"@typescript-eslint/eslint-plugin": "^7.13.1",
|
|
46
|
+
"@typescript-eslint/parser": "^7.13.1",
|
|
47
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
48
|
+
"eslint": "^8.57.0",
|
|
49
|
+
"eslint-plugin-react-hooks": "^4.6.2",
|
|
50
|
+
"eslint-plugin-react-refresh": "^0.4.7",
|
|
51
|
+
"eslint-plugin-storybook": "^0.8.0",
|
|
52
|
+
"rimraf": "^6.0.1",
|
|
53
|
+
"storybook": "^8.2.1",
|
|
54
|
+
"storybook-dark-mode": "^4.0.2",
|
|
55
|
+
"typescript": "^5.2.2",
|
|
56
|
+
"vite": "^5.3.1"
|
|
57
|
+
},
|
|
58
|
+
"description": "This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.",
|
|
59
|
+
"main": "dist/index.js",
|
|
60
|
+
"repository": {
|
|
61
|
+
"type": "git",
|
|
62
|
+
"url": "git+https://github.com/bevans-o/mimas.git"
|
|
63
|
+
},
|
|
64
|
+
"files": [
|
|
65
|
+
"lib",
|
|
66
|
+
"README.md"
|
|
67
|
+
],
|
|
68
|
+
"keywords": [
|
|
69
|
+
"react",
|
|
70
|
+
"components"
|
|
71
|
+
],
|
|
72
|
+
"publishConfig": {
|
|
73
|
+
"access": "public"
|
|
74
|
+
},
|
|
75
|
+
"author": "bevans",
|
|
76
|
+
"license": "ISC",
|
|
77
|
+
"bugs": {
|
|
78
|
+
"url": "https://github.com/bevans-o/mimas/issues"
|
|
79
|
+
},
|
|
80
|
+
"homepage": "https://github.com/bevans-o/mimas#readme"
|
|
81
|
+
}
|