lucentia-ui 0.1.1

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 (80) hide show
  1. package/dist/components/Button/Button.d.ts +2 -0
  2. package/dist/components/Button/Button.js +6 -0
  3. package/dist/components/Button/Button.module.css +64 -0
  4. package/dist/components/Button/Button.stories.d.ts +9 -0
  5. package/dist/components/Button/Button.stories.js +41 -0
  6. package/dist/components/Button/index.d.ts +2 -0
  7. package/dist/components/Button/index.js +2 -0
  8. package/dist/components/Button/types.d.ts +4 -0
  9. package/dist/components/Button/types.js +1 -0
  10. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  11. package/dist/components/Checkbox/Checkbox.js +5 -0
  12. package/dist/components/Checkbox/Checkbox.module.css +56 -0
  13. package/dist/components/Checkbox/Checkbox.stories.d.ts +7 -0
  14. package/dist/components/Checkbox/Checkbox.stories.js +13 -0
  15. package/dist/components/Checkbox/index.d.ts +2 -0
  16. package/dist/components/Checkbox/index.js +1 -0
  17. package/dist/components/Checkbox/types.d.ts +3 -0
  18. package/dist/components/Checkbox/types.js +1 -0
  19. package/dist/components/Input/Input.d.ts +2 -0
  20. package/dist/components/Input/Input.js +6 -0
  21. package/dist/components/Input/Input.module.css +33 -0
  22. package/dist/components/Input/Input.stories.d.ts +7 -0
  23. package/dist/components/Input/Input.stories.js +17 -0
  24. package/dist/components/Input/index.d.ts +2 -0
  25. package/dist/components/Input/index.js +2 -0
  26. package/dist/components/Input/types.d.ts +4 -0
  27. package/dist/components/Input/types.js +1 -0
  28. package/dist/components/Modal/Modal.d.ts +3 -0
  29. package/dist/components/Modal/Modal.js +7 -0
  30. package/dist/components/Modal/Modal.module.css +20 -0
  31. package/dist/components/Modal/Modal.stories.d.ts +6 -0
  32. package/dist/components/Modal/Modal.stories.js +15 -0
  33. package/dist/components/Modal/index.d.ts +2 -0
  34. package/dist/components/Modal/index.js +2 -0
  35. package/dist/components/Modal/types.d.ts +6 -0
  36. package/dist/components/Modal/types.js +1 -0
  37. package/dist/components/Radio/Radio.d.ts +2 -0
  38. package/dist/components/Radio/Radio.js +6 -0
  39. package/dist/components/Radio/Radio.module.css +53 -0
  40. package/dist/components/Radio/Radio.stories.d.ts +7 -0
  41. package/dist/components/Radio/Radio.stories.js +17 -0
  42. package/dist/components/Radio/index.d.ts +2 -0
  43. package/dist/components/Radio/index.js +1 -0
  44. package/dist/components/Radio/types.d.ts +3 -0
  45. package/dist/components/Radio/types.js +1 -0
  46. package/dist/components/Select/Select.d.ts +2 -0
  47. package/dist/components/Select/Select.js +6 -0
  48. package/dist/components/Select/Select.module.css +45 -0
  49. package/dist/components/Select/Select.stories.d.ts +7 -0
  50. package/dist/components/Select/Select.stories.js +22 -0
  51. package/dist/components/Select/index.d.ts +2 -0
  52. package/dist/components/Select/index.js +2 -0
  53. package/dist/components/Select/types.d.ts +4 -0
  54. package/dist/components/Select/types.js +1 -0
  55. package/dist/components/Switch/Switch.d.ts +3 -0
  56. package/dist/components/Switch/Switch.js +5 -0
  57. package/dist/components/Switch/Switch.module.css +58 -0
  58. package/dist/components/Switch/Switch.stories.d.ts +7 -0
  59. package/dist/components/Switch/Switch.stories.js +17 -0
  60. package/dist/components/Switch/index.d.ts +2 -0
  61. package/dist/components/Switch/index.js +2 -0
  62. package/dist/components/Switch/types.d.ts +11 -0
  63. package/dist/components/Switch/types.js +1 -0
  64. package/dist/components/ThemeProvider/ThemeProvider.d.ts +13 -0
  65. package/dist/components/ThemeProvider/ThemeProvider.js +11 -0
  66. package/dist/components/ThemeProvider/index.d.ts +2 -0
  67. package/dist/components/ThemeProvider/index.js +1 -0
  68. package/dist/components/ThemeProvider/types.d.ts +1 -0
  69. package/dist/components/ThemeProvider/types.js +1 -0
  70. package/dist/index.d.ts +13 -0
  71. package/dist/index.js +15 -0
  72. package/dist/styles/base.css +0 -0
  73. package/dist/styles/font.css +23 -0
  74. package/dist/styles/globals.css +0 -0
  75. package/dist/styles/reset.css +99 -0
  76. package/dist/styles/tokens/index.css +2 -0
  77. package/dist/styles/tokens/theme-dark.css +64 -0
  78. package/dist/styles/tokens/theme-light.css +67 -0
  79. package/dist/styles/tokens.css +114 -0
  80. package/package.json +33 -0
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { SwitchProps } from "./types";
3
+ export declare const Switch: React.FC<SwitchProps>;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styles from "./Switch.module.css";
3
+ export const Switch = ({ checked, defaultChecked, onChange, disabled = false, id, name, }) => {
4
+ return (_jsxs("label", { className: styles.switch, children: [_jsx("input", { type: "checkbox", id: id, name: name, checked: checked, defaultChecked: defaultChecked, onChange: onChange, disabled: disabled }), _jsx("span", { className: styles.slider })] }));
5
+ };
@@ -0,0 +1,58 @@
1
+ .switch {
2
+ position: relative;
3
+ display: inline-block;
4
+ width: 72px;
5
+ height: 40px;
6
+ }
7
+
8
+ /* input は見えなくするが状態は保持 */
9
+ .switch input {
10
+ opacity: 0;
11
+ width: 0;
12
+ height: 0;
13
+ }
14
+
15
+ /* ===== Track ===== */
16
+ .slider {
17
+ position: absolute;
18
+ inset: 0;
19
+ background: var(--color-surface-container);
20
+ border-radius: var(--radius-max);
21
+ box-shadow: var(--shadow-sm-in);
22
+ transition: background 0.2s ease;
23
+ cursor: pointer;
24
+ }
25
+
26
+ /* ===== Knob ===== */
27
+ .slider::before {
28
+ content: "";
29
+ position: absolute;
30
+ height: 24px;
31
+ width: 24px;
32
+ left: 8px;
33
+ top: 8px;
34
+ background: var(--color-on-primary);
35
+ box-shadow: var(--shadow-sm);
36
+ border-radius: var(--radius-max);
37
+ transition: transform 0.2s ease;
38
+ }
39
+
40
+ /* ===== Checked ===== */
41
+ .switch input:checked + .slider {
42
+ background: var(--color-primary);
43
+ }
44
+
45
+ .switch input:checked + .slider::before {
46
+ transform: translateX(32px);
47
+ }
48
+
49
+ /* ===== Focus ===== */
50
+ .switch input:focus-visible + .slider {
51
+ outline: none;
52
+ }
53
+
54
+ /* ===== Disabled ===== */
55
+ .switch input:disabled + .slider {
56
+ opacity: 0.25;
57
+ cursor: not-allowed;
58
+ }
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Switch } from "./Switch";
3
+ declare const meta: Meta<typeof Switch>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Switch>;
6
+ export declare const Default: Story;
7
+ export declare const State: Story;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Switch } from "./Switch";
3
+ const meta = {
4
+ title: "Components/Switch",
5
+ component: Switch,
6
+ args: {
7
+ defaultChecked: false,
8
+ disabled: false,
9
+ },
10
+ };
11
+ export default meta;
12
+ export const Default = {};
13
+ export const State = {
14
+ render: () => {
15
+ return (_jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 16 }, children: [_jsx(Switch, { defaultChecked: false }), _jsx(Switch, { defaultChecked: true }), _jsx(Switch, { defaultChecked: false, disabled: true }), _jsx(Switch, { defaultChecked: true, disabled: true })] }));
16
+ },
17
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./Switch";
2
+ export * from "./types";
@@ -0,0 +1,2 @@
1
+ export * from "./Switch";
2
+ export * from "./types";
@@ -0,0 +1,11 @@
1
+ import type { ChangeEvent } from "react";
2
+ export type SwitchProps = {
3
+ /** controlled */
4
+ checked?: boolean;
5
+ /** uncontrolled */
6
+ defaultChecked?: boolean;
7
+ onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
8
+ disabled?: boolean;
9
+ id?: string;
10
+ name?: string;
11
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { Theme } from "./types";
2
+ /**
3
+ * ThemeProvider
4
+ *
5
+ * - DOM を描画しない(ラッパー要素なし)
6
+ * - html 要素に theme class を直接付与する
7
+ * - CSS 変数の定義は styles/theme.css に集約する
8
+ */
9
+ interface ThemeProviderProps {
10
+ theme?: Theme;
11
+ }
12
+ export declare function ThemeProvider({ theme }: ThemeProviderProps): null;
13
+ export {};
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { useEffect } from "react";
3
+ export function ThemeProvider({ theme = "light" }) {
4
+ useEffect(() => {
5
+ const root = document.documentElement;
6
+ // 初期化
7
+ root.classList.remove("light", "dark");
8
+ root.classList.add("theme", theme);
9
+ }, [theme]);
10
+ return null;
11
+ }
@@ -0,0 +1,2 @@
1
+ export { ThemeProvider } from "./ThemeProvider";
2
+ export type { Theme } from "./types";
@@ -0,0 +1 @@
1
+ export { ThemeProvider } from "./ThemeProvider";
@@ -0,0 +1 @@
1
+ export type Theme = "light" | "dark";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export { ThemeProvider } from "./components/ThemeProvider";
2
+ export type { Theme } from "./components/ThemeProvider";
3
+ import "./styles/reset.css";
4
+ import "./styles/base.css";
5
+ import "./styles/index.css";
6
+ import "./styles/font.css";
7
+ export * from "./components/Button";
8
+ export * from "./components/Checkbox";
9
+ export * from "./components/Radio";
10
+ export * from "./components/Input";
11
+ export * from "./components/Select";
12
+ export * from "./components/Switch";
13
+ export * from "./components/Modal";
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ /* ===== Theme ===== */
2
+ export { ThemeProvider } from "./components/ThemeProvider";
3
+ /* ===== Styles (optional export) ===== */
4
+ import "./styles/reset.css";
5
+ import "./styles/base.css";
6
+ import "./styles/index.css";
7
+ import "./styles/font.css";
8
+ /* ===== Components ===== */
9
+ export * from "./components/Button";
10
+ export * from "./components/Checkbox";
11
+ export * from "./components/Radio";
12
+ export * from "./components/Input";
13
+ export * from "./components/Select";
14
+ export * from "./components/Switch";
15
+ export * from "./components/Modal";
File without changes
@@ -0,0 +1,23 @@
1
+ @font-face {
2
+ font-family: "Noto Sans JP";
3
+ src: url("/fonts/NotoSansJP-Regular.woff2") format("woff2");
4
+ font-weight: 400;
5
+ font-style: normal;
6
+ font-display: swap;
7
+ }
8
+
9
+ @font-face {
10
+ font-family: "Noto Sans JP";
11
+ src: url("/fonts/NotoSansJP-Medium.woff2") format("woff2");
12
+ font-weight: 500;
13
+ font-style: normal;
14
+ font-display: swap;
15
+ }
16
+
17
+ @font-face {
18
+ font-family: "Noto Sans JP";
19
+ src: url("/fonts/NotoSansJP-Bold.woff2") format("woff2");
20
+ font-weight: 600;
21
+ font-style: normal;
22
+ font-display: swap;
23
+ }
File without changes
@@ -0,0 +1,99 @@
1
+ /* ------------------------------
2
+ Reset / Base
3
+ ------------------------------ */
4
+
5
+ /* box-sizing を全要素に適用 */
6
+ *,
7
+ *::before,
8
+ *::after {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ /* マージン・パディングをリセット */
13
+ html,
14
+ body,
15
+ h1,
16
+ h2,
17
+ h3,
18
+ h4,
19
+ h5,
20
+ h6,
21
+ p,
22
+ figure,
23
+ blockquote,
24
+ dl,
25
+ dd {
26
+ margin: 0;
27
+ padding: 0;
28
+ }
29
+
30
+ /* html / body 基本設定 */
31
+ html {
32
+ -webkit-text-size-adjust: 100%;
33
+ text-size-adjust: 100%;
34
+ }
35
+
36
+ body {
37
+ line-height: 1.5;
38
+ font-family: var(--font, system-ui, -apple-system, sans-serif);
39
+ color: var(--color-text, #000);
40
+ background-color: var(--color-background, #fff);
41
+ }
42
+
43
+ /* リスト */
44
+ ul,
45
+ ol {
46
+ list-style: none;
47
+ margin: 0;
48
+ padding: 0;
49
+ }
50
+
51
+ /* リンク */
52
+ a {
53
+ color: inherit;
54
+ text-decoration: none;
55
+ }
56
+
57
+ /* 画像・メディア */
58
+ img,
59
+ picture,
60
+ video,
61
+ canvas,
62
+ svg {
63
+ display: block;
64
+ max-width: 100%;
65
+ }
66
+
67
+ /* フォーム要素 */
68
+ button,
69
+ input,
70
+ select,
71
+ textarea {
72
+ font: inherit;
73
+ color: inherit;
74
+ background: none;
75
+ border: none;
76
+ outline: none;
77
+ }
78
+
79
+ /* button */
80
+ button {
81
+ cursor: pointer;
82
+ }
83
+
84
+ /* textarea */
85
+ textarea {
86
+ resize: vertical;
87
+ }
88
+
89
+ /* テーブル */
90
+ table {
91
+ border-collapse: collapse;
92
+ border-spacing: 0;
93
+ }
94
+
95
+ /* アクセシビリティ */
96
+ :focus-visible {
97
+ outline: 2px solid var(--color-primary, #00a1a1);
98
+ outline-offset: 2px;
99
+ }
@@ -0,0 +1,2 @@
1
+ @import "./theme-light.css";
2
+ @import "./theme-dark.css";
@@ -0,0 +1,64 @@
1
+ .theme.dark{
2
+ --color-primary: #80d5d4;
3
+ --color-on-primary: #003737;
4
+ --color-primary-container: #004f4f;
5
+ --color-on-primary-container: #9cf1f0;
6
+
7
+
8
+ --color-secondary: #b0cccb;
9
+ --color-on-secondary: #1b3534;
10
+ --color-secondary-container: #324b4b;
11
+ --color-on-secondary-container: #cce8e7;
12
+
13
+
14
+ --color-error: #ffb4ab;
15
+ --color-on-error: #690005;
16
+ --color-error-container: #93000a;
17
+ --color-on-error-container: #ffdad6;
18
+
19
+
20
+ --color-background: #2b3a38;
21
+ --color-on-background: #dde4e3;
22
+
23
+
24
+ --color-surface: #1a2120bf;
25
+ --color-on-surface: #dde4e3;
26
+
27
+
28
+ --color-surface-container: #262d2d;
29
+ --color-border: #889392;
30
+ --color-scrim: rgba(0, 0, 0, 0.1);
31
+
32
+
33
+ --color-shadow-l: rgba(255, 255, 255, 0.25);
34
+ --color-shadow-d: rgba(0, 0, 0, 1);
35
+
36
+ --shadow-sm: -2px -2px 4px 2px var(--color-shadow-l),
37
+ 2px 2px 4px 4px var(--color-shadow-d);
38
+
39
+ --shadow-sm-in: inset -4px -4px 4px var(--color-shadow-l),
40
+ inset 4px 4px 4px var(--color-shadow-d);
41
+
42
+ --shadow-md: -4px -4px 16px 8px var(--color-shadow-l),
43
+ 4px 4px 16px 8px var(--color-shadow-d);
44
+
45
+ /* ===== Radius ===== */
46
+ --radius-sm: 8px;
47
+ --radius-md: 16px;
48
+ --radius-max: 999px;
49
+
50
+ /* ===== Space ===== */
51
+ --space-xs: 4px;
52
+ --space-sm: 8px;
53
+ --space-md: 12px;
54
+ --space-lg: 16px;
55
+ --space-xl: 24px;
56
+ --space-2xl: 32px;
57
+ --space-3xl: 48px;
58
+ --space-4xl: 64px;
59
+ --space-5xl: 96px;
60
+ --gap: 32px;
61
+
62
+ /* ===== Layout ===== */
63
+ --container: 1120px;
64
+ }
@@ -0,0 +1,67 @@
1
+ .theme.light {
2
+ /* font */
3
+ --font: "Noto Sans JP", sans-serif;
4
+
5
+ /* ===== Color ===== */
6
+ --color-primary: #00a1a1;
7
+ --color-on-primary: #ffffff;
8
+ --color-primary-container: #9cf1f0;
9
+ --color-on-primary-container: #004f4f;
10
+
11
+ --color-secondary: #7b9695;
12
+ --color-on-secondary: #ffffff;
13
+ --color-secondary-container: #cce8e7;
14
+ --color-on-secondary-container: #324b4b;
15
+
16
+ --color-error: #ff5449;
17
+ --color-on-error: #ffffff;
18
+ --color-error-container: #ffdad6;
19
+ --color-on-error-container: #93000a;
20
+
21
+ --color-background: #f4fbfa;
22
+ --color-on-background: #161d1d;
23
+
24
+ --color-surface: #f4fbfabf;
25
+ --color-on-surface: #161d1d;
26
+ --color-surface-container: #e9efeebf;
27
+
28
+ --color-border: #6f7979;
29
+ --color-scrim: rgba(129, 129, 129, 0.25);
30
+
31
+ /* ===== Effect ===== */
32
+ --blur: blur(8px);
33
+
34
+ --color-shadow-l: rgba(255, 255, 255, 1);
35
+ --color-shadow-d: rgba(0, 0, 0, 0.2);
36
+
37
+ --shadow-sm: -2px -2px 4px 2px var(--color-shadow-l),
38
+ 2px 2px 4px 2px var(--color-shadow-d);
39
+
40
+ --shadow-sm-in: inset -4px -4px 4px var(--color-shadow-l),
41
+ inset 4px 4px 4px var(--color-shadow-d);
42
+
43
+ --shadow-md: -4px -4px 16px 8px var(--color-shadow-l),
44
+ 4px 4px 16px 8px var(--color-shadow-d);
45
+
46
+
47
+
48
+ /* ===== Radius ===== */
49
+ --radius-sm: 8px;
50
+ --radius-md: 16px;
51
+ --radius-max: 999px;
52
+
53
+ /* ===== Space ===== */
54
+ --space-xs: 4px;
55
+ --space-sm: 8px;
56
+ --space-md: 12px;
57
+ --space-lg: 16px;
58
+ --space-xl: 24px;
59
+ --space-2xl: 32px;
60
+ --space-3xl: 48px;
61
+ --space-4xl: 64px;
62
+ --space-5xl: 96px;
63
+ --gap: 32px;
64
+
65
+ /* ===== Layout ===== */
66
+ --container: 1120px;
67
+ }
@@ -0,0 +1,114 @@
1
+ :root {
2
+ /* font */
3
+ --font: "Noto Sans JP", sans-serif;
4
+
5
+ /* ===== Color ===== */
6
+ --color-primary: #00a1a1;
7
+ --color-on-primary: #ffffff;
8
+ --color-primary-container: #9cf1f0;
9
+ --color-on-primary-container: #004f4f;
10
+
11
+ --color-secondary: #7b9695;
12
+ --color-on-secondary: #ffffff;
13
+ --color-secondary-container: #cce8e7;
14
+ --color-on-secondary-container: #324b4b;
15
+
16
+ --color-error: #ff5449;
17
+ --color-on-error: #ffffff;
18
+ --color-error-container: #ffdad6;
19
+ --color-on-error-container: #93000a;
20
+
21
+ --color-background: #f4fbfa;
22
+ --color-on-background: #161d1d;
23
+
24
+ --color-surface: #f4fbfabf;
25
+ --color-on-surface: #161d1d;
26
+ --color-surface-container: #e9efeebf;
27
+
28
+ --color-border: #6f7979;
29
+ --color-scrim: rgba(129, 129, 129, 0.25);
30
+
31
+ /* ===== Effect ===== */
32
+ --blur: blur(8px);
33
+
34
+ --color-shadow-l: rgba(255, 255, 255, 1);
35
+ --color-shadow-d: rgba(0, 0, 0, 0.2);
36
+
37
+ --shadow-sm: -2px -2px 4px 2px var(--color-shadow-l),
38
+ 2px 2px 4px 2px var(--color-shadow-d);
39
+
40
+ --shadow-sm-in: inset -4px -4px 4px var(--color-shadow-l),
41
+ inset 4px 4px 4px var(--color-shadow-d);
42
+
43
+ --shadow-md: -4px -4px 16px 8px var(--color-shadow-l),
44
+ 4px 4px 16px 8px var(--color-shadow-d);
45
+
46
+
47
+
48
+ /* ===== Radius ===== */
49
+ --radius-sm: 8px;
50
+ --radius-md: 16px;
51
+ --radius-max: 999px;
52
+
53
+ /* ===== Space ===== */
54
+ --space-xs: 4px;
55
+ --space-sm: 8px;
56
+ --space-md: 12px;
57
+ --space-lg: 16px;
58
+ --space-xl: 24px;
59
+ --space-2xl: 32px;
60
+ --space-3xl: 48px;
61
+ --space-4xl: 64px;
62
+ --space-5xl: 96px;
63
+ --gap: 32px;
64
+
65
+ /* ===== Layout ===== */
66
+ --container: 1120px;
67
+ }
68
+
69
+
70
+ .dark {
71
+ --color-primary: #80d5d4;
72
+ --color-on-primary: #003737;
73
+ --color-primary-container: #004f4f;
74
+ --color-on-primary-container: #9cf1f0;
75
+
76
+
77
+ --color-secondary: #b0cccb;
78
+ --color-on-secondary: #1b3534;
79
+ --color-secondary-container: #324b4b;
80
+ --color-on-secondary-container: #cce8e7;
81
+
82
+
83
+ --color-error: #ffb4ab;
84
+ --color-on-error: #690005;
85
+ --color-error-container: #93000a;
86
+ --color-on-error-container: #ffdad6;
87
+
88
+
89
+ --color-background: #2b3a38;
90
+ --color-on-background: #dde4e3;
91
+
92
+
93
+ --color-surface: #1a2120bf;
94
+ --color-on-surface: #dde4e3;
95
+
96
+
97
+ --color-surface-container: #262d2d;
98
+ --color-border: #889392;
99
+
100
+
101
+ --color-shadow-l: rgba(255, 255, 255, 0.25);
102
+ --color-shadow-d: rgba(0, 0, 0, 1);
103
+
104
+ --shadow-sm: -2px -2px 4px 2px var(--color-shadow-l),
105
+ 2px 2px 4px 4px var(--color-shadow-d);
106
+
107
+ --shadow-sm-in: inset -4px -4px 4px var(--color-shadow-l),
108
+ inset 4px 4px 4px var(--color-shadow-d);
109
+
110
+ --shadow-md: -4px -4px 16px 8px var(--color-shadow-l),
111
+ 4px 4px 16px 8px var(--color-shadow-d);
112
+
113
+ --color-scrim: rgba(0, 0, 0, 0.1);
114
+ }
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "lucentia-ui",
3
+ "version": "0.1.1",
4
+ "description": "Minimal React UI components with design tokens",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "dist/**/*.css"
16
+ ],
17
+ "sideEffects": [
18
+ "**/*.css"
19
+ ],
20
+ "peerDependencies": {
21
+ "react": ">=18"
22
+ },
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.json && cpy 'src/**/*.css' dist"
25
+ },
26
+ "license": "MIT",
27
+ "dependencies": {
28
+ "clsx": "^2.1.1"
29
+ },
30
+ "devDependencies": {
31
+ "cpy-cli": "^6.0.0"
32
+ }
33
+ }