@naeil/ui 0.1.0 → 0.3.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.
Files changed (170) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/DESIGN.md +186 -0
  3. package/LICENSE +21 -0
  4. package/README.md +85 -22
  5. package/THIRD_PARTY_NOTICES.md +49 -0
  6. package/dist/chunk-JBTDRVZ7.js +46 -0
  7. package/dist/chunk-QKVN6Q6C.js +438 -0
  8. package/dist/components/index.d.ts +87 -0
  9. package/dist/components/index.js +832 -0
  10. package/dist/components/ui/index.d.ts +105 -0
  11. package/dist/components/ui/index.js +736 -0
  12. package/dist/lib/utils.d.ts +5 -0
  13. package/dist/lib/utils.js +7 -0
  14. package/dist/source/components/footer.d.ts +15 -0
  15. package/dist/source/components/footer.js +172 -0
  16. package/dist/source/components/index.d.ts +11 -0
  17. package/dist/source/components/index.js +26 -0
  18. package/dist/source/components/locale-switcher.d.ts +17 -0
  19. package/dist/source/components/locale-switcher.js +66 -0
  20. package/dist/source/components/logo.d.ts +9 -0
  21. package/dist/source/components/logo.js +52 -0
  22. package/dist/source/components/nav.d.ts +39 -0
  23. package/dist/source/components/nav.js +412 -0
  24. package/dist/source/components/theme-provider.d.ts +6 -0
  25. package/dist/source/components/theme-provider.js +45 -0
  26. package/dist/source/components/theme-toggle-icon.d.ts +5 -0
  27. package/dist/source/components/theme-toggle-icon.js +62 -0
  28. package/dist/source/components/theme-toggle.d.ts +5 -0
  29. package/dist/source/components/theme-toggle.js +34 -0
  30. package/dist/source/components/typography.d.ts +12 -0
  31. package/dist/source/components/typography.js +49 -0
  32. package/dist/source/components/ui/avatar.d.ts +14 -0
  33. package/dist/source/components/ui/avatar.js +137 -0
  34. package/dist/source/components/ui/badge.d.ts +13 -0
  35. package/dist/source/components/ui/badge.js +76 -0
  36. package/dist/source/components/ui/button.d.ts +14 -0
  37. package/dist/source/components/ui/button.js +88 -0
  38. package/dist/source/components/ui/card.d.ts +13 -0
  39. package/dist/source/components/ui/card.js +135 -0
  40. package/dist/source/components/ui/checkbox.d.ts +7 -0
  41. package/dist/source/components/ui/checkbox.js +58 -0
  42. package/dist/source/components/ui/dialog.d.ts +20 -0
  43. package/dist/source/components/ui/dialog.js +182 -0
  44. package/dist/source/components/ui/dropdown-menu.d.ts +28 -0
  45. package/dist/source/components/ui/dropdown-menu.js +282 -0
  46. package/dist/source/components/ui/index.d.ts +19 -0
  47. package/dist/source/components/ui/index.js +131 -0
  48. package/dist/source/components/ui/input.d.ts +6 -0
  49. package/dist/source/components/ui/input.js +49 -0
  50. package/dist/source/components/ui/select.d.ts +16 -0
  51. package/dist/source/components/ui/select.js +197 -0
  52. package/dist/source/components/ui/sonner.d.ts +6 -0
  53. package/dist/source/components/ui/sonner.js +80 -0
  54. package/dist/source/components/ui/switch.d.ts +7 -0
  55. package/dist/source/components/ui/switch.js +54 -0
  56. package/dist/source/components/ui/tabs.d.ts +10 -0
  57. package/dist/source/components/ui/tabs.js +57 -0
  58. package/dist/source/components/ui/textarea.d.ts +6 -0
  59. package/dist/source/components/ui/textarea.js +46 -0
  60. package/dist/source/i18n/config.d.ts +6 -0
  61. package/dist/source/i18n/config.js +12 -0
  62. package/dist/source/i18n/routing.d.ts +371 -0
  63. package/dist/source/i18n/routing.js +17 -0
  64. package/dist/source/lib/design/modal-inert.d.ts +6 -0
  65. package/dist/source/lib/design/modal-inert.js +73 -0
  66. package/dist/source/lib/utils.d.ts +5 -0
  67. package/dist/source/lib/utils.js +8 -0
  68. package/dist/tokens.ts +217 -0
  69. package/docs/components/README.md +21 -0
  70. package/docs/components/avatar.md +47 -0
  71. package/docs/components/badge.md +29 -0
  72. package/docs/components/button.md +39 -0
  73. package/docs/components/card.md +32 -0
  74. package/docs/components/checkbox.md +35 -0
  75. package/docs/components/common.md +31 -0
  76. package/docs/components/composition.md +68 -0
  77. package/docs/components/dialog.md +41 -0
  78. package/docs/components/dropdown-menu.md +38 -0
  79. package/docs/components/input.md +32 -0
  80. package/docs/components/select.md +39 -0
  81. package/docs/components/sonner.md +37 -0
  82. package/docs/components/switch.md +33 -0
  83. package/docs/components/tabs.md +40 -0
  84. package/docs/components/textarea.md +35 -0
  85. package/docs/design/component-demand.md +30 -0
  86. package/docs/design/public-ui-final-verification.md +96 -0
  87. package/docs/design/public-ui-release-validation.md +86 -0
  88. package/docs/design/public-ui-stage3-verification.md +98 -0
  89. package/docs/design/public-ui-stage4-verification.md +129 -0
  90. package/docs/design/public-ui-support.md +40 -0
  91. package/docs/design/v2-migration.md +199 -0
  92. package/docs/package-release.md +89 -0
  93. package/licenses/Noto-Sans-JP-OFL.txt +93 -0
  94. package/licenses/Nunito-Sans-OFL.txt +93 -0
  95. package/licenses/Pretendard-OFL.txt +94 -0
  96. package/licenses/React-MIT.txt +21 -0
  97. package/licenses/Storybook-MIT.txt +21 -0
  98. package/licenses/popper-MIT.txt +25 -0
  99. package/licenses/react-remove-scroll-bar-MIT.txt +21 -0
  100. package/licenses/store2-MIT.txt +22 -0
  101. package/licenses/toggle-selection-MIT.txt +21 -0
  102. package/package.json +215 -26
  103. package/src/styles/components.css +276 -0
  104. package/src/styles/globals.css +18 -0
  105. package/src/styles/theme.css +293 -0
  106. package/messages/en.json +0 -221
  107. package/messages/ja.json +0 -221
  108. package/messages/ko.json +0 -221
  109. package/postcss.config.mjs +0 -7
  110. package/src/app/[locale]/(content)/baby-agent/page.tsx +0 -30
  111. package/src/app/[locale]/(content)/blog/page.tsx +0 -68
  112. package/src/app/[locale]/(content)/cc/page.tsx +0 -216
  113. package/src/app/[locale]/(content)/design/page.tsx +0 -703
  114. package/src/app/[locale]/(content)/layout.tsx +0 -7
  115. package/src/app/[locale]/(content)/pkm/page.tsx +0 -31
  116. package/src/app/[locale]/(content)/projects/page.tsx +0 -100
  117. package/src/app/[locale]/(content)/sa/page.tsx +0 -179
  118. package/src/app/[locale]/(landing)/page.tsx +0 -157
  119. package/src/app/[locale]/layout.tsx +0 -72
  120. package/src/app/[locale]/login/actions.ts +0 -10
  121. package/src/app/[locale]/login/oauth-buttons.tsx +0 -78
  122. package/src/app/[locale]/login/page.tsx +0 -85
  123. package/src/app/auth/callback/route.ts +0 -78
  124. package/src/app/favicon.ico +0 -0
  125. package/src/app/globals.css +0 -32
  126. package/src/app/layout.tsx +0 -22
  127. package/src/app/sitemap.ts +0 -26
  128. package/src/components/accent-picker.tsx +0 -62
  129. package/src/components/auth-slot.tsx +0 -96
  130. package/src/components/footer-wrapper.tsx +0 -8
  131. package/src/components/footer.tsx +0 -193
  132. package/src/components/hero-scene.tsx +0 -948
  133. package/src/components/hero-section.tsx +0 -57
  134. package/src/components/locale-switcher.tsx +0 -74
  135. package/src/components/logo.tsx +0 -51
  136. package/src/components/nav-server-wrapper.tsx +0 -22
  137. package/src/components/nav-wrapper.tsx +0 -45
  138. package/src/components/nav.tsx +0 -550
  139. package/src/components/paraglider-cursor.tsx +0 -112
  140. package/src/components/project-layout.tsx +0 -194
  141. package/src/components/theme-provider.tsx +0 -10
  142. package/src/components/theme-toggle-icon.tsx +0 -62
  143. package/src/components/theme-toggle.tsx +0 -39
  144. package/src/components/typography.tsx +0 -27
  145. package/src/components/ui/avatar.tsx +0 -109
  146. package/src/components/ui/badge.tsx +0 -47
  147. package/src/components/ui/button.tsx +0 -65
  148. package/src/components/ui/card.tsx +0 -106
  149. package/src/components/ui/dialog.tsx +0 -158
  150. package/src/components/ui/dropdown-menu.tsx +0 -257
  151. package/src/components/ui/input.tsx +0 -21
  152. package/src/components/ui/sonner.tsx +0 -54
  153. package/src/components/workflow-diagram.tsx +0 -414
  154. package/src/i18n/config.ts +0 -8
  155. package/src/i18n/request.ts +0 -16
  156. package/src/i18n/routing.ts +0 -12
  157. package/src/lib/supabase/client.ts +0 -18
  158. package/src/lib/supabase/middleware.ts +0 -42
  159. package/src/lib/supabase/server.ts +0 -37
  160. package/src/lib/utils.ts +0 -6
  161. package/src/proxy.ts +0 -62
  162. package/src/tokens/.gitkeep +0 -0
  163. package/src/tokens/color.json +0 -56
  164. package/src/tokens/radius.json +0 -9
  165. package/src/tokens/semantic.json +0 -81
  166. package/src/tokens/shadow.json +0 -7
  167. package/src/tokens/spacing.json +0 -16
  168. package/src/tokens/typography.json +0 -34
  169. package/src/types/i18n.d.ts +0 -6
  170. package/src/utils/.gitkeep +0 -0
@@ -1,30 +0,0 @@
1
- import { setRequestLocale } from "next-intl/server";
2
- import { useTranslations } from "next-intl";
3
- import { ProjectLayout } from "@/components/project-layout";
4
- import type { ProjectData } from "@/components/project-layout";
5
-
6
- export default async function BabyAgentPage({
7
- params,
8
- }: {
9
- params: Promise<{ locale: string }>;
10
- }) {
11
- const { locale } = await params;
12
- setRequestLocale(locale);
13
-
14
- return <BabyAgentContent />;
15
- }
16
-
17
- function BabyAgentContent() {
18
- const t = useTranslations("babyAgent");
19
-
20
- const data: ProjectData = {
21
- icon: "/images/turtle.png",
22
- name: t("name"),
23
- description: t("description"),
24
- accent: "oklch(0.769 0.188 70.08)",
25
- tags: ["OpenClaw", "LINE", "AI Agent"],
26
- comingSoon: true,
27
- };
28
-
29
- return <ProjectLayout data={data} />;
30
- }
@@ -1,68 +0,0 @@
1
- import { setRequestLocale } from "next-intl/server";
2
- import { useTranslations } from "next-intl";
3
- import { PageTitle } from "@/components/typography";
4
- import Image from "next/image";
5
-
6
- export default async function BlogPage({
7
- params,
8
- }: {
9
- params: Promise<{ locale: string }>;
10
- }) {
11
- const { locale } = await params;
12
- setRequestLocale(locale);
13
-
14
- return <BlogContent />;
15
- }
16
-
17
- function BlogContent() {
18
- const t = useTranslations("blogPage");
19
-
20
- return (
21
- <>
22
- <section className="mx-auto max-w-4xl px-6 pb-16">
23
- <div className="flex flex-col-reverse items-start gap-8 md:flex-row md:items-start md:justify-between">
24
- <div className="flex-1">
25
- <PageTitle className="mb-3">{t("title")}</PageTitle>
26
- <p className="text-muted-foreground mb-5 max-w-lg text-lg leading-relaxed">
27
- {t("subtitle")}
28
- </p>
29
- <div className="mb-6 flex flex-wrap gap-2">
30
- {[
31
- "Deep Dive",
32
- "Research",
33
- "Build Logs",
34
- ].map((tag) => (
35
- <span
36
- key={tag}
37
- className="rounded-full border border-border-subtle px-2.5 py-1 text-[11px] text-zinc-400"
38
- >
39
- {tag}
40
- </span>
41
- ))}
42
- </div>
43
- </div>
44
-
45
- <div className="flex-shrink-0">
46
- <Image
47
- src="/images/diver.png"
48
- alt=""
49
- width={220}
50
- height={220}
51
- className="animate-float object-contain"
52
- style={{
53
- filter:
54
- "drop-shadow(0 4px 12px color-mix(in oklch, var(--project-naeilUi) 15%, transparent))",
55
- }}
56
- />
57
- </div>
58
- </div>
59
- </section>
60
-
61
- <section className="mx-auto max-w-4xl px-6 pb-24">
62
- <div className="rounded-2xl border border-dashed border-border-subtle p-12 text-center">
63
- <p className="text-muted-foreground text-sm">{t("comingSoon")}</p>
64
- </div>
65
- </section>
66
- </>
67
- );
68
- }
@@ -1,216 +0,0 @@
1
- import { setRequestLocale } from "next-intl/server";
2
- import { useTranslations } from "next-intl";
3
- import { ProjectLayout } from "@/components/project-layout";
4
- import type { ProjectData } from "@/components/project-layout";
5
-
6
- export default async function CCPage({
7
- params,
8
- }: {
9
- params: Promise<{ locale: string }>;
10
- }) {
11
- const { locale } = await params;
12
- setRequestLocale(locale);
13
-
14
- return <CCContent />;
15
- }
16
-
17
- function CCContent() {
18
- const t = useTranslations("cc");
19
-
20
- const data: ProjectData = {
21
- icon: "/images/coral.png",
22
- name: t("name"),
23
- description: t("description"),
24
- accent: "oklch(0.704 0.140 181)",
25
- tags: ["Python", "PostgreSQL", "Ollama", "Gemini", "LINE"],
26
- github: "https://github.com/naeil-dev/content-collector",
27
-
28
- overview: t("overview"),
29
-
30
- features: [
31
- {
32
- icon: "📡",
33
- title: t("features.collect.title"),
34
- description: t("features.collect.desc"),
35
- },
36
- {
37
- icon: "🤖",
38
- title: t("features.classify.title"),
39
- description: t("features.classify.desc"),
40
- },
41
- {
42
- icon: "🧲",
43
- title: t("features.embed.title"),
44
- description: t("features.embed.desc"),
45
- },
46
- {
47
- icon: "📊",
48
- title: t("features.digest.title"),
49
- description: t("features.digest.desc"),
50
- },
51
- {
52
- icon: "⚡",
53
- title: t("features.zeroCost.title"),
54
- description: t("features.zeroCost.desc"),
55
- },
56
- {
57
- icon: "🔔",
58
- title: t("features.alerts.title"),
59
- description: t("features.alerts.desc"),
60
- },
61
- ],
62
-
63
- workflow: {
64
- nodes: [
65
- {
66
- id: "github",
67
- label: "GitHub RSS",
68
- type: "source",
69
- position: { x: 20, y: 5 },
70
- detail: {
71
- description: t("workflow.github.desc"),
72
- tech: ["feedparser", "httpx"],
73
- meta: t("workflow.github.meta"),
74
- },
75
- },
76
- {
77
- id: "reddit",
78
- label: "Reddit",
79
- type: "source",
80
- position: { x: 50, y: 5 },
81
- detail: {
82
- description: t("workflow.reddit.desc"),
83
- tech: ["RSS", "JSON API"],
84
- meta: t("workflow.reddit.meta"),
85
- },
86
- },
87
- {
88
- id: "threads",
89
- label: "Threads",
90
- type: "source",
91
- position: { x: 80, y: 5 },
92
- detail: {
93
- description: t("workflow.threads.desc"),
94
- tech: ["Playwright", "httpx"],
95
- meta: t("workflow.threads.meta"),
96
- },
97
- },
98
- {
99
- id: "collector",
100
- label: "Collector",
101
- type: "process",
102
- position: { x: 50, y: 22 },
103
- detail: {
104
- description: t("workflow.collector.desc"),
105
- tech: ["Python", "LaunchAgent"],
106
- meta: t("workflow.collector.meta"),
107
- },
108
- },
109
- {
110
- id: "postgres",
111
- label: "PostgreSQL",
112
- type: "storage",
113
- position: { x: 50, y: 38 },
114
- detail: {
115
- description: t("workflow.postgres.desc"),
116
- tech: ["PostgreSQL 17", "pgvector", "Docker"],
117
- },
118
- },
119
- {
120
- id: "embed",
121
- label: "BGE-M3",
122
- type: "ai",
123
- position: { x: 25, y: 53 },
124
- detail: {
125
- description: t("workflow.embed.desc"),
126
- tech: ["Ollama", "BGE-M3"],
127
- meta: t("workflow.embed.meta"),
128
- },
129
- },
130
- {
131
- id: "classify",
132
- label: "Qwen3 14B",
133
- type: "ai",
134
- position: { x: 75, y: 53 },
135
- detail: {
136
- description: t("workflow.classify.desc"),
137
- tech: ["Ollama", "Qwen3 14B"],
138
- meta: t("workflow.classify.meta"),
139
- },
140
- },
141
- {
142
- id: "cluster",
143
- label: "Cluster + Score",
144
- type: "process",
145
- position: { x: 50, y: 68 },
146
- detail: {
147
- description: t("workflow.cluster.desc"),
148
- tech: ["pgvector", "cosine similarity"],
149
- },
150
- },
151
- {
152
- id: "digest",
153
- label: "Gemini Flash",
154
- type: "ai",
155
- position: { x: 50, y: 82 },
156
- detail: {
157
- description: t("workflow.digest.desc"),
158
- tech: ["Gemini 2.5 Flash", "Jinja2"],
159
- meta: t("workflow.digest.meta"),
160
- },
161
- },
162
- {
163
- id: "line",
164
- label: "LINE Summary",
165
- type: "output",
166
- position: { x: 30, y: 95 },
167
- detail: {
168
- description: t("workflow.line.desc"),
169
- tech: ["LINE Push API"],
170
- },
171
- },
172
- {
173
- id: "html",
174
- label: "HTML Digest",
175
- type: "output",
176
- position: { x: 70, y: 95 },
177
- detail: {
178
- description: t("workflow.html.desc"),
179
- tech: ["Jinja2", "HTML"],
180
- meta: "digest.naeil.dev",
181
- },
182
- },
183
- ],
184
- edges: [
185
- { from: "github", to: "collector" },
186
- { from: "reddit", to: "collector" },
187
- { from: "threads", to: "collector" },
188
- { from: "collector", to: "postgres" },
189
- { from: "postgres", to: "embed" },
190
- { from: "postgres", to: "classify" },
191
- { from: "embed", to: "cluster" },
192
- { from: "classify", to: "cluster" },
193
- { from: "cluster", to: "digest" },
194
- { from: "digest", to: "line" },
195
- { from: "digest", to: "html" },
196
- ],
197
- },
198
-
199
- stack: [
200
- { icon: "🐍", name: "Python 3.12" },
201
- { icon: "🐘", name: "PostgreSQL 17" },
202
- { icon: "🧮", name: "pgvector" },
203
- { icon: "🦙", name: "Ollama" },
204
- { icon: "🤖", name: "Qwen3 14B" },
205
- { icon: "🔤", name: "BGE-M3" },
206
- { icon: "✨", name: "Gemini 2.5 Flash" },
207
- { icon: "📱", name: "LINE API" },
208
- { icon: "🤖", name: "Telegram Bot API" },
209
- { icon: "🐳", name: "Docker Compose" },
210
- { icon: "⏰", name: "LaunchAgent" },
211
- { icon: "🎭", name: "Playwright" },
212
- ],
213
- };
214
-
215
- return <ProjectLayout data={data} />;
216
- }