@naeil/ui 0.2.0 → 0.4.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/CHANGELOG.md +28 -0
- package/DESIGN.md +194 -0
- package/LICENSE +21 -0
- package/README.md +77 -53
- package/THIRD_PARTY_NOTICES.md +51 -0
- package/dist/{chunk-SYI3IKIC.js → chunk-QKVN6Q6C.js} +102 -19
- package/dist/components/index.d.ts +17 -8
- package/dist/components/index.js +1278 -251
- package/dist/components/ui/index.d.ts +27 -5
- package/dist/components/ui/index.js +288 -33
- package/dist/source/components/brand-artwork.generated.d.ts +162 -0
- package/dist/source/components/brand-artwork.generated.js +1103 -0
- package/dist/source/components/footer.d.ts +15 -0
- package/dist/source/components/footer.js +128 -0
- package/dist/source/components/index.d.ts +11 -0
- package/dist/source/components/index.js +26 -0
- package/dist/source/components/locale-switcher.d.ts +17 -0
- package/dist/source/components/locale-switcher.js +66 -0
- package/dist/source/components/logo.d.ts +18 -0
- package/dist/source/components/logo.js +91 -0
- package/dist/source/components/nav.d.ts +39 -0
- package/dist/source/components/nav.js +375 -0
- package/dist/source/components/theme-provider.d.ts +6 -0
- package/dist/source/components/theme-provider.js +45 -0
- package/dist/source/components/theme-toggle-icon.d.ts +5 -0
- package/dist/source/components/theme-toggle-icon.js +62 -0
- package/dist/source/components/theme-toggle.d.ts +5 -0
- package/dist/source/components/theme-toggle.js +34 -0
- package/dist/source/components/typography.d.ts +12 -0
- package/dist/source/components/typography.js +49 -0
- package/dist/source/components/ui/avatar.d.ts +14 -0
- package/dist/source/components/ui/avatar.js +137 -0
- package/dist/source/components/ui/badge.d.ts +13 -0
- package/dist/source/components/ui/badge.js +76 -0
- package/dist/source/components/ui/button.d.ts +14 -0
- package/dist/source/components/ui/button.js +88 -0
- package/dist/source/components/ui/card.d.ts +13 -0
- package/dist/source/components/ui/card.js +135 -0
- package/dist/source/components/ui/checkbox.d.ts +7 -0
- package/dist/source/components/ui/checkbox.js +58 -0
- package/dist/source/components/ui/dialog.d.ts +20 -0
- package/dist/source/components/ui/dialog.js +182 -0
- package/dist/source/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/source/components/ui/dropdown-menu.js +282 -0
- package/dist/source/components/ui/index.d.ts +19 -0
- package/dist/source/components/ui/index.js +131 -0
- package/dist/source/components/ui/input.d.ts +6 -0
- package/dist/source/components/ui/input.js +49 -0
- package/dist/source/components/ui/select.d.ts +16 -0
- package/dist/source/components/ui/select.js +197 -0
- package/dist/source/components/ui/sonner.d.ts +6 -0
- package/dist/source/components/ui/sonner.js +80 -0
- package/dist/source/components/ui/switch.d.ts +7 -0
- package/dist/source/components/ui/switch.js +54 -0
- package/dist/source/components/ui/tabs.d.ts +10 -0
- package/dist/source/components/ui/tabs.js +57 -0
- package/dist/source/components/ui/textarea.d.ts +6 -0
- package/dist/source/components/ui/textarea.js +46 -0
- package/dist/source/i18n/config.d.ts +6 -0
- package/dist/source/i18n/config.js +12 -0
- package/dist/source/i18n/routing.d.ts +371 -0
- package/dist/source/i18n/routing.js +17 -0
- package/dist/source/lib/design/modal-inert.d.ts +6 -0
- package/dist/source/lib/design/modal-inert.js +73 -0
- package/dist/source/lib/utils.d.ts +5 -0
- package/dist/source/lib/utils.js +8 -0
- package/dist/tokens.ts +217 -0
- package/docs/components/README.md +21 -0
- package/docs/components/avatar.md +47 -0
- package/docs/components/badge.md +29 -0
- package/docs/components/button.md +39 -0
- package/docs/components/card.md +32 -0
- package/docs/components/checkbox.md +35 -0
- package/docs/components/common.md +31 -0
- package/docs/components/composition.md +68 -0
- package/docs/components/dialog.md +41 -0
- package/docs/components/dropdown-menu.md +38 -0
- package/docs/components/input.md +32 -0
- package/docs/components/select.md +39 -0
- package/docs/components/sonner.md +37 -0
- package/docs/components/switch.md +33 -0
- package/docs/components/tabs.md +40 -0
- package/docs/components/textarea.md +35 -0
- package/docs/design/component-demand.md +30 -0
- package/docs/design/public-ui-final-verification.md +96 -0
- package/docs/design/public-ui-release-validation.md +86 -0
- package/docs/design/public-ui-stage3-verification.md +98 -0
- package/docs/design/public-ui-stage4-verification.md +129 -0
- package/docs/design/public-ui-support.md +42 -0
- package/docs/design/v2-migration.md +229 -0
- package/docs/package-release.md +108 -0
- package/licenses/Lato-OFL.txt +93 -0
- package/licenses/Noto-Sans-JP-OFL.txt +93 -0
- package/licenses/Nunito-Sans-OFL.txt +93 -0
- package/licenses/Pretendard-OFL.txt +94 -0
- package/licenses/React-MIT.txt +21 -0
- package/licenses/Storybook-MIT.txt +21 -0
- package/licenses/popper-MIT.txt +25 -0
- package/licenses/react-remove-scroll-bar-MIT.txt +21 -0
- package/licenses/store2-MIT.txt +22 -0
- package/licenses/toggle-selection-MIT.txt +21 -0
- package/package.json +184 -34
- package/src/styles/components.css +276 -0
- package/src/styles/globals.css +18 -0
- package/src/styles/theme.css +185 -98
- package/messages/en.json +0 -221
- package/messages/ja.json +0 -221
- package/messages/ko.json +0 -221
- package/src/app/globals.css +0 -32
package/src/styles/theme.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
/* Generated from src/tokens — DO NOT EDIT. */
|
|
1
2
|
@theme inline {
|
|
2
3
|
--color-background: var(--background);
|
|
3
4
|
--color-foreground: var(--foreground);
|
|
4
5
|
--color-card: var(--card);
|
|
5
|
-
--color-card-elevated: var(--card-elevated);
|
|
6
6
|
--color-card-foreground: var(--card-foreground);
|
|
7
7
|
--color-popover: var(--popover);
|
|
8
8
|
--color-popover-foreground: var(--popover-foreground);
|
|
@@ -35,6 +35,18 @@
|
|
|
35
35
|
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
36
36
|
--color-sidebar-border: var(--sidebar-border);
|
|
37
37
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
38
|
+
--color-card-elevated: var(--card-elevated);
|
|
39
|
+
--color-primary-hover: var(--primary-hover);
|
|
40
|
+
--color-surface-selected: var(--surface-selected);
|
|
41
|
+
--color-border-strong: var(--border-strong);
|
|
42
|
+
--color-error: var(--error);
|
|
43
|
+
--color-error-bg: var(--error-bg);
|
|
44
|
+
--color-success: var(--success);
|
|
45
|
+
--color-success-bg: var(--success-bg);
|
|
46
|
+
--color-warning: var(--warning);
|
|
47
|
+
--color-warning-bg: var(--warning-bg);
|
|
48
|
+
--color-info: var(--info);
|
|
49
|
+
--color-info-bg: var(--info-bg);
|
|
38
50
|
|
|
39
51
|
--color-project-cc: var(--project-cc);
|
|
40
52
|
--color-project-sa: var(--project-sa);
|
|
@@ -42,9 +54,26 @@
|
|
|
42
54
|
--color-project-naeilUi: var(--project-naeilUi);
|
|
43
55
|
--color-project-baby: var(--project-baby);
|
|
44
56
|
|
|
45
|
-
--font-sans: 'Pretendard Variable', Pretendard, -apple-system, system-ui, sans-serif;
|
|
57
|
+
--font-sans: 'Pretendard Variable', Pretendard, 'Noto Sans JP', -apple-system, system-ui, sans-serif;
|
|
46
58
|
--font-mono: 'JetBrains Mono', 'Geist Mono', ui-monospace, monospace;
|
|
47
59
|
|
|
60
|
+
--text-xs: 0.8125rem;
|
|
61
|
+
--text-sm: 0.875rem;
|
|
62
|
+
--text-base: 1rem;
|
|
63
|
+
--text-lg: 1.125rem;
|
|
64
|
+
--text-xl: 1.25rem;
|
|
65
|
+
--text-2xl: 1.5rem;
|
|
66
|
+
--text-3xl: 2rem;
|
|
67
|
+
--text-4xl: 2.25rem;
|
|
68
|
+
--font-weight-normal: 400;
|
|
69
|
+
--font-weight-medium: 500;
|
|
70
|
+
--font-weight-bold: 700;
|
|
71
|
+
--font-weight-semibold: 600;
|
|
72
|
+
--leading-tight: 1.25;
|
|
73
|
+
--leading-normal: 1.5625;
|
|
74
|
+
--leading-relaxed: 1.875;
|
|
75
|
+
--shadow-sm: 0 1px 2px 0 oklch(0 0 0 / 0.05);
|
|
76
|
+
--shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.1), 0 2px 4px -2px oklch(0 0 0 / 0.1);
|
|
48
77
|
--radius-none: var(--radius-none-value);
|
|
49
78
|
--radius-sm: var(--radius-sm-value);
|
|
50
79
|
--radius-md: var(--radius-md-value);
|
|
@@ -64,43 +93,69 @@
|
|
|
64
93
|
}
|
|
65
94
|
|
|
66
95
|
:root {
|
|
67
|
-
--background:
|
|
68
|
-
--foreground:
|
|
69
|
-
--card:
|
|
70
|
-
--card-
|
|
71
|
-
--
|
|
72
|
-
--popover:
|
|
73
|
-
--
|
|
74
|
-
--primary:
|
|
75
|
-
--
|
|
76
|
-
--secondary:
|
|
77
|
-
--
|
|
78
|
-
--muted:
|
|
79
|
-
--
|
|
80
|
-
--accent:
|
|
81
|
-
--
|
|
82
|
-
--destructive:
|
|
83
|
-
--
|
|
84
|
-
--border:
|
|
85
|
-
--border-subtle:
|
|
86
|
-
--
|
|
87
|
-
--
|
|
88
|
-
--
|
|
89
|
-
--ring: oklch(0.708 0 0);
|
|
96
|
+
--background: #f7f8fa;
|
|
97
|
+
--foreground: #202127;
|
|
98
|
+
--card: #ffffff;
|
|
99
|
+
--card-foreground: #202127;
|
|
100
|
+
--popover: #ffffff;
|
|
101
|
+
--popover-foreground: #202127;
|
|
102
|
+
--primary: #292929;
|
|
103
|
+
--primary-foreground: #ffffff;
|
|
104
|
+
--secondary: #ebebeb;
|
|
105
|
+
--secondary-foreground: #202127;
|
|
106
|
+
--muted: #f0f1f5;
|
|
107
|
+
--muted-foreground: #5f626e;
|
|
108
|
+
--accent: #ebebeb;
|
|
109
|
+
--accent-foreground: #202127;
|
|
110
|
+
--destructive: #b73a45;
|
|
111
|
+
--destructive-foreground: #ffffff;
|
|
112
|
+
--border: #e2e3e9;
|
|
113
|
+
--border-subtle: #e2e3e9;
|
|
114
|
+
--border-subtle-hover: #8c8f9b;
|
|
115
|
+
--surface-subtle: #f0f1f5;
|
|
116
|
+
--input: #8c8f9b;
|
|
117
|
+
--ring: #616161;
|
|
90
118
|
--chart-1: oklch(0.646 0.222 41.116);
|
|
91
119
|
--chart-2: oklch(0.6 0.118 184.704);
|
|
92
120
|
--chart-3: oklch(0.398 0.07 227.392);
|
|
93
121
|
--chart-4: oklch(0.828 0.189 84.429);
|
|
94
122
|
--chart-5: oklch(0.769 0.188 70.08);
|
|
95
|
-
--sidebar:
|
|
96
|
-
--sidebar-foreground:
|
|
97
|
-
--sidebar-primary:
|
|
98
|
-
--sidebar-primary-foreground:
|
|
99
|
-
--sidebar-accent:
|
|
100
|
-
--sidebar-accent-foreground:
|
|
101
|
-
--sidebar-border:
|
|
102
|
-
--sidebar-ring:
|
|
123
|
+
--sidebar: #ffffff;
|
|
124
|
+
--sidebar-foreground: #202127;
|
|
125
|
+
--sidebar-primary: #292929;
|
|
126
|
+
--sidebar-primary-foreground: #ffffff;
|
|
127
|
+
--sidebar-accent: #ebebeb;
|
|
128
|
+
--sidebar-accent-foreground: #202127;
|
|
129
|
+
--sidebar-border: #e2e3e9;
|
|
130
|
+
--sidebar-ring: #616161;
|
|
131
|
+
--card-elevated: #ffffff;
|
|
132
|
+
--primary-hover: #414141;
|
|
133
|
+
--surface-selected: #ebebeb;
|
|
134
|
+
--border-strong: #8c8f9b;
|
|
135
|
+
--error: #b73a45;
|
|
136
|
+
--error-bg: #fff0f1;
|
|
137
|
+
--success: #246a49;
|
|
138
|
+
--success-bg: #e9f5ee;
|
|
139
|
+
--warning: #865d17;
|
|
140
|
+
--warning-bg: #fff3da;
|
|
141
|
+
--info: #245ec7;
|
|
142
|
+
--info-bg: #edf3ff;
|
|
103
143
|
|
|
144
|
+
--ui-control-height: 40px;
|
|
145
|
+
--ui-control-height-compact: 36px;
|
|
146
|
+
--ui-touch-target: 44px;
|
|
147
|
+
--ui-row-height: 72px;
|
|
148
|
+
--ui-row-height-compact: 60px;
|
|
149
|
+
--ui-panel-padding: 24px;
|
|
150
|
+
--ui-panel-padding-compact: 20px;
|
|
151
|
+
--ui-field-gap: 24px;
|
|
152
|
+
--ui-field-gap-compact: 16px;
|
|
153
|
+
--ui-width-reading: 640px;
|
|
154
|
+
--ui-width-settings: 640px;
|
|
155
|
+
--ui-width-list: 1200px;
|
|
156
|
+
--ui-width-short-form: 480px;
|
|
157
|
+
--ui-motion-fast: 120ms;
|
|
158
|
+
--ui-motion-standard: 180ms;
|
|
104
159
|
--project-cc: oklch(0.704 0.140 181);
|
|
105
160
|
--project-sa: oklch(0.723 0.219 149);
|
|
106
161
|
--project-pkm: oklch(0.627 0.265 303);
|
|
@@ -108,9 +163,9 @@
|
|
|
108
163
|
--project-baby: oklch(0.769 0.188 70.08);
|
|
109
164
|
|
|
110
165
|
--radius-none-value: 0px;
|
|
111
|
-
--radius-sm-value:
|
|
112
|
-
--radius-md-value:
|
|
113
|
-
--radius-lg-value:
|
|
166
|
+
--radius-sm-value: 4px;
|
|
167
|
+
--radius-md-value: 8px;
|
|
168
|
+
--radius-lg-value: 12px;
|
|
114
169
|
|
|
115
170
|
--spacing-0-value: 0px;
|
|
116
171
|
--spacing-1-value: 4px;
|
|
@@ -126,81 +181,113 @@
|
|
|
126
181
|
}
|
|
127
182
|
|
|
128
183
|
.dark {
|
|
129
|
-
--background:
|
|
130
|
-
--foreground:
|
|
131
|
-
--card:
|
|
132
|
-
--card-
|
|
133
|
-
--
|
|
134
|
-
--popover:
|
|
135
|
-
--
|
|
136
|
-
--primary:
|
|
137
|
-
--
|
|
138
|
-
--secondary:
|
|
139
|
-
--
|
|
140
|
-
--muted:
|
|
141
|
-
--
|
|
142
|
-
--accent:
|
|
143
|
-
--
|
|
144
|
-
--destructive:
|
|
145
|
-
--
|
|
146
|
-
--border:
|
|
147
|
-
--border-subtle:
|
|
148
|
-
--
|
|
149
|
-
--
|
|
150
|
-
--
|
|
151
|
-
--ring: oklch(0.556 0 0);
|
|
184
|
+
--background: #0b0c0e;
|
|
185
|
+
--foreground: #eff0f3;
|
|
186
|
+
--card: #111215;
|
|
187
|
+
--card-foreground: #eff0f3;
|
|
188
|
+
--popover: #191a1f;
|
|
189
|
+
--popover-foreground: #eff0f3;
|
|
190
|
+
--primary: #e5e5e5;
|
|
191
|
+
--primary-foreground: #171717;
|
|
192
|
+
--secondary: #262626;
|
|
193
|
+
--secondary-foreground: #eff0f3;
|
|
194
|
+
--muted: #202127;
|
|
195
|
+
--muted-foreground: #a4a6b0;
|
|
196
|
+
--accent: #262626;
|
|
197
|
+
--accent-foreground: #eff0f3;
|
|
198
|
+
--destructive: #b73a45;
|
|
199
|
+
--destructive-foreground: #ffffff;
|
|
200
|
+
--border: #292b33;
|
|
201
|
+
--border-subtle: #292b33;
|
|
202
|
+
--border-subtle-hover: #646773;
|
|
203
|
+
--surface-subtle: #202127;
|
|
204
|
+
--input: #646773;
|
|
205
|
+
--ring: #b5b5b5;
|
|
152
206
|
--chart-1: oklch(0.488 0.243 264.376);
|
|
153
207
|
--chart-2: oklch(0.696 0.17 162.48);
|
|
154
208
|
--chart-3: oklch(0.769 0.188 70.08);
|
|
155
209
|
--chart-4: oklch(0.627 0.265 303.9);
|
|
156
210
|
--chart-5: oklch(0.645 0.246 16.439);
|
|
157
|
-
--sidebar:
|
|
158
|
-
--sidebar-foreground:
|
|
159
|
-
--sidebar-primary:
|
|
160
|
-
--sidebar-primary-foreground:
|
|
161
|
-
--sidebar-accent:
|
|
162
|
-
--sidebar-accent-foreground:
|
|
163
|
-
--sidebar-border:
|
|
164
|
-
--sidebar-ring:
|
|
211
|
+
--sidebar: #111215;
|
|
212
|
+
--sidebar-foreground: #eff0f3;
|
|
213
|
+
--sidebar-primary: #e5e5e5;
|
|
214
|
+
--sidebar-primary-foreground: #171717;
|
|
215
|
+
--sidebar-accent: #262626;
|
|
216
|
+
--sidebar-accent-foreground: #eff0f3;
|
|
217
|
+
--sidebar-border: #292b33;
|
|
218
|
+
--sidebar-ring: #b5b5b5;
|
|
219
|
+
--card-elevated: #191a1f;
|
|
220
|
+
--primary-hover: #cccccc;
|
|
221
|
+
--surface-selected: #262626;
|
|
222
|
+
--border-strong: #646773;
|
|
223
|
+
--error: #f0a0a0;
|
|
224
|
+
--error-bg: #342021;
|
|
225
|
+
--success: #87c9a6;
|
|
226
|
+
--success-bg: #182b23;
|
|
227
|
+
--warning: #e4bf78;
|
|
228
|
+
--warning-bg: #302819;
|
|
229
|
+
--info: #a2c2ff;
|
|
230
|
+
--info-bg: #18263f;
|
|
165
231
|
}
|
|
166
232
|
|
|
167
233
|
@media (prefers-color-scheme: dark) {
|
|
168
234
|
:root:not(.light) {
|
|
169
|
-
--background:
|
|
170
|
-
--foreground:
|
|
171
|
-
--card:
|
|
172
|
-
--card-
|
|
173
|
-
--
|
|
174
|
-
--popover:
|
|
175
|
-
--
|
|
176
|
-
--primary:
|
|
177
|
-
--
|
|
178
|
-
--secondary:
|
|
179
|
-
--
|
|
180
|
-
--muted:
|
|
181
|
-
--
|
|
182
|
-
--accent:
|
|
183
|
-
--
|
|
184
|
-
--destructive:
|
|
185
|
-
--
|
|
186
|
-
--border:
|
|
187
|
-
--border-subtle:
|
|
188
|
-
--
|
|
189
|
-
--
|
|
190
|
-
--
|
|
191
|
-
--ring: oklch(0.556 0 0);
|
|
235
|
+
--background: #0b0c0e;
|
|
236
|
+
--foreground: #eff0f3;
|
|
237
|
+
--card: #111215;
|
|
238
|
+
--card-foreground: #eff0f3;
|
|
239
|
+
--popover: #191a1f;
|
|
240
|
+
--popover-foreground: #eff0f3;
|
|
241
|
+
--primary: #e5e5e5;
|
|
242
|
+
--primary-foreground: #171717;
|
|
243
|
+
--secondary: #262626;
|
|
244
|
+
--secondary-foreground: #eff0f3;
|
|
245
|
+
--muted: #202127;
|
|
246
|
+
--muted-foreground: #a4a6b0;
|
|
247
|
+
--accent: #262626;
|
|
248
|
+
--accent-foreground: #eff0f3;
|
|
249
|
+
--destructive: #b73a45;
|
|
250
|
+
--destructive-foreground: #ffffff;
|
|
251
|
+
--border: #292b33;
|
|
252
|
+
--border-subtle: #292b33;
|
|
253
|
+
--border-subtle-hover: #646773;
|
|
254
|
+
--surface-subtle: #202127;
|
|
255
|
+
--input: #646773;
|
|
256
|
+
--ring: #b5b5b5;
|
|
192
257
|
--chart-1: oklch(0.488 0.243 264.376);
|
|
193
258
|
--chart-2: oklch(0.696 0.17 162.48);
|
|
194
259
|
--chart-3: oklch(0.769 0.188 70.08);
|
|
195
260
|
--chart-4: oklch(0.627 0.265 303.9);
|
|
196
261
|
--chart-5: oklch(0.645 0.246 16.439);
|
|
197
|
-
--sidebar:
|
|
198
|
-
--sidebar-foreground:
|
|
199
|
-
--sidebar-primary:
|
|
200
|
-
--sidebar-primary-foreground:
|
|
201
|
-
--sidebar-accent:
|
|
202
|
-
--sidebar-accent-foreground:
|
|
203
|
-
--sidebar-border:
|
|
204
|
-
--sidebar-ring:
|
|
262
|
+
--sidebar: #111215;
|
|
263
|
+
--sidebar-foreground: #eff0f3;
|
|
264
|
+
--sidebar-primary: #e5e5e5;
|
|
265
|
+
--sidebar-primary-foreground: #171717;
|
|
266
|
+
--sidebar-accent: #262626;
|
|
267
|
+
--sidebar-accent-foreground: #eff0f3;
|
|
268
|
+
--sidebar-border: #292b33;
|
|
269
|
+
--sidebar-ring: #b5b5b5;
|
|
270
|
+
--card-elevated: #191a1f;
|
|
271
|
+
--primary-hover: #cccccc;
|
|
272
|
+
--surface-selected: #262626;
|
|
273
|
+
--border-strong: #646773;
|
|
274
|
+
--error: #f0a0a0;
|
|
275
|
+
--error-bg: #342021;
|
|
276
|
+
--success: #87c9a6;
|
|
277
|
+
--success-bg: #182b23;
|
|
278
|
+
--warning: #e4bf78;
|
|
279
|
+
--warning-bg: #302819;
|
|
280
|
+
--info: #a2c2ff;
|
|
281
|
+
--info-bg: #18263f;
|
|
205
282
|
}
|
|
206
283
|
}
|
|
284
|
+
|
|
285
|
+
:root[data-ui-density="compact"] {
|
|
286
|
+
--ui-control-height: 36px;
|
|
287
|
+
--ui-row-height: 60px;
|
|
288
|
+
--ui-panel-padding: 20px;
|
|
289
|
+
--ui-field-gap: 16px;
|
|
290
|
+
}
|
|
291
|
+
@media (max-width: 560px), (pointer: coarse) {
|
|
292
|
+
:root, :root[data-ui-density="compact"] { --ui-control-height: var(--ui-touch-target); --ui-row-height: 72px; }
|
|
293
|
+
}
|
package/messages/en.json
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"common": {
|
|
3
|
-
"appName": "naeil",
|
|
4
|
-
"home": "Home",
|
|
5
|
-
"projects": "Projects",
|
|
6
|
-
"design": "Design System",
|
|
7
|
-
"loading": "Loading..."
|
|
8
|
-
},
|
|
9
|
-
"nav": {
|
|
10
|
-
"home": "Home",
|
|
11
|
-
"projects": "Projects",
|
|
12
|
-
"blog": "Blog"
|
|
13
|
-
},
|
|
14
|
-
"hero": {
|
|
15
|
-
"title": ".naeil",
|
|
16
|
-
"subtitle": "Build · Ship · Iterate"
|
|
17
|
-
},
|
|
18
|
-
"projects": {
|
|
19
|
-
"title": "Projects",
|
|
20
|
-
"subtitle": "Personal tools built for real use — not demos.",
|
|
21
|
-
"cc": {
|
|
22
|
-
"name": "Content Collector",
|
|
23
|
-
"description": "Automated content collection from RSS, YouTube, Reddit + AI summarization"
|
|
24
|
-
},
|
|
25
|
-
"pkm": {
|
|
26
|
-
"name": "PKM",
|
|
27
|
-
"description": "Personal knowledge management — document parsing, embeddings, semantic search"
|
|
28
|
-
},
|
|
29
|
-
"naeilUi": {
|
|
30
|
-
"name": "naeil-ui",
|
|
31
|
-
"description": "Minimal design system — OKLCH tokens, Tailwind v4, shadcn"
|
|
32
|
-
},
|
|
33
|
-
"babyAgent": {
|
|
34
|
-
"name": "Baby Agent",
|
|
35
|
-
"description": "Parenting AI agent — LINE-based Q&A, records, reminders"
|
|
36
|
-
},
|
|
37
|
-
"status": {
|
|
38
|
-
"active": "Active",
|
|
39
|
-
"coming": "Coming Soon"
|
|
40
|
-
},
|
|
41
|
-
"sa": {
|
|
42
|
-
"name": "Sustainability Analyzer",
|
|
43
|
-
"description": "AI-powered ESG report analysis — PDF parsing, qualitative assessment, comparison tables"
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
"stack": {
|
|
47
|
-
"label": "Built with"
|
|
48
|
-
},
|
|
49
|
-
"cc": {
|
|
50
|
-
"name": "Content Collector",
|
|
51
|
-
"description": "Autonomous local pipeline — noisy tech streams to a daily, decision-ready brief.",
|
|
52
|
-
"overview": "Automated content pipeline with local AI processing.\n\nTech content from multiple sources — GitHub, Reddit, Threads — through a local AI pipeline. Embedding, classification, clustering, summarization. Raw content to daily editorial digest.\n\nFull local execution — Ollama + free APIs. Structured data in PostgreSQL + pgvector. Semantic search built in.",
|
|
53
|
-
"features": {
|
|
54
|
-
"collect": {
|
|
55
|
-
"title": "Multi-Source Ingestion",
|
|
56
|
-
"desc": "RSS, Reddit, Threads — pulled and normalized into one pipeline"
|
|
57
|
-
},
|
|
58
|
-
"classify": {
|
|
59
|
-
"title": "Local AI Triage",
|
|
60
|
-
"desc": "Qwen3 14B on-device — relevance scoring, topic labeling, priority ranking"
|
|
61
|
-
},
|
|
62
|
-
"embed": {
|
|
63
|
-
"title": "Semantic Vector Index",
|
|
64
|
-
"desc": "BGE-M3 embeddings in pgvector — fast similarity search and topic-level recall"
|
|
65
|
-
},
|
|
66
|
-
"digest": {
|
|
67
|
-
"title": "Daily Digest",
|
|
68
|
-
"desc": "Gemini-generated editorial summaries — LINE message + clean HTML report"
|
|
69
|
-
},
|
|
70
|
-
"zeroCost": {
|
|
71
|
-
"title": "Zero Monthly Cost",
|
|
72
|
-
"desc": "Local Mac Mini, open models, free-tier APIs — no paid infrastructure"
|
|
73
|
-
},
|
|
74
|
-
"alerts": {
|
|
75
|
-
"title": "Real-Time Alerts",
|
|
76
|
-
"desc": "Immediate notifications on high-priority signals — not hours later"
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"workflow": {
|
|
80
|
-
"github": {
|
|
81
|
-
"desc": "GitHub releases and discussions via RSS feeds",
|
|
82
|
-
"meta": "30min interval"
|
|
83
|
-
},
|
|
84
|
-
"reddit": {
|
|
85
|
-
"desc": "Subreddit posts via RSS and JSON search API",
|
|
86
|
-
"meta": "30min interval"
|
|
87
|
-
},
|
|
88
|
-
"threads": {
|
|
89
|
-
"desc": "Profile scraping via Playwright headless browser",
|
|
90
|
-
"meta": "30min interval"
|
|
91
|
-
},
|
|
92
|
-
"collector": {
|
|
93
|
-
"desc": "Source-specific dispatch, content-hash deduplication",
|
|
94
|
-
"meta": "SHA-256 dedup"
|
|
95
|
-
},
|
|
96
|
-
"postgres": {
|
|
97
|
-
"desc": "Raw items, classifications, embeddings, clusters, digest history"
|
|
98
|
-
},
|
|
99
|
-
"embed": {
|
|
100
|
-
"desc": "1024-dim multilingual vectors for similarity search",
|
|
101
|
-
"meta": "~2s per item"
|
|
102
|
-
},
|
|
103
|
-
"classify": {
|
|
104
|
-
"desc": "Topic, importance score, content type, tags — auto-labeled",
|
|
105
|
-
"meta": "~18s per item"
|
|
106
|
-
},
|
|
107
|
-
"cluster": {
|
|
108
|
-
"desc": "Cosine similarity grouping, hot score ranking"
|
|
109
|
-
},
|
|
110
|
-
"digest": {
|
|
111
|
-
"desc": "Editorial LINE summary + detailed HTML report from top content",
|
|
112
|
-
"meta": "Free API"
|
|
113
|
-
},
|
|
114
|
-
"line": {
|
|
115
|
-
"desc": "Concise daily summary pushed to LINE group"
|
|
116
|
-
},
|
|
117
|
-
"html": {
|
|
118
|
-
"desc": "Full categorized report with links and scores"
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
"pkm": {
|
|
123
|
-
"name": "PKM",
|
|
124
|
-
"description": "Personal knowledge base — parse, embed, search your own documents."
|
|
125
|
-
},
|
|
126
|
-
"babyAgent": {
|
|
127
|
-
"name": "Baby Agent",
|
|
128
|
-
"description": "Parenting AI companion on LINE — Q&A, growth tracking, schedule reminders."
|
|
129
|
-
},
|
|
130
|
-
"design": {
|
|
131
|
-
"title": "naeil-ui",
|
|
132
|
-
"subtitle": "Design System Showcase — Tokens · Components · Themes"
|
|
133
|
-
},
|
|
134
|
-
"blogPage": {
|
|
135
|
-
"title": "Blog",
|
|
136
|
-
"subtitle": "Build notes, research, and iteration logs.",
|
|
137
|
-
"comingSoon": "Coming Soon"
|
|
138
|
-
},
|
|
139
|
-
"footer": {
|
|
140
|
-
"tagline": "Tomorrow starts here.",
|
|
141
|
-
"navigation": "Navigation",
|
|
142
|
-
"projects": "Projects",
|
|
143
|
-
"blog": "Blog",
|
|
144
|
-
"social": "Social"
|
|
145
|
-
},
|
|
146
|
-
"auth": {
|
|
147
|
-
"login": "Sign in",
|
|
148
|
-
"loginWithGoogle": "Sign in with Google",
|
|
149
|
-
"loginWithGithub": "Sign in with GitHub",
|
|
150
|
-
"loginDescription": "Sign in to access all features",
|
|
151
|
-
"redirecting": "Redirecting...",
|
|
152
|
-
"logout": "Sign out",
|
|
153
|
-
"profile": "Profile"
|
|
154
|
-
},
|
|
155
|
-
"locale": {
|
|
156
|
-
"switchLabel": "Language"
|
|
157
|
-
},
|
|
158
|
-
"sa": {
|
|
159
|
-
"name": "Sustainability Analyzer",
|
|
160
|
-
"description": "AI-driven ESG report analysis — topic discovery, qualitative assessment, automated cross-company comparison.",
|
|
161
|
-
"overview": "An analysis pipeline that parses corporate ESG report PDFs and performs systematic qualitative assessments with AI.\n\nDocling layout parser preserves table and text structure through hierarchical chunking. BGE-M3 embeddings (Dense+Sparse) enable hybrid semantic search. Claude auto-discovers 41 ESG topics and generates 415 checklist items for qualitative evaluation.\n\nLocal embeddings + free APIs. Structured storage in PostgreSQL + pgvector.",
|
|
162
|
-
"features": {
|
|
163
|
-
"ingest": {
|
|
164
|
-
"title": "Structure-Preserving PDF Parsing",
|
|
165
|
-
"desc": "Docling layout parser — hierarchical chunking that preserves tables and section boundaries"
|
|
166
|
-
},
|
|
167
|
-
"embed": {
|
|
168
|
-
"title": "Hybrid Search",
|
|
169
|
-
"desc": "BGE-M3 Dense+Sparse embeddings — pgvector hybrid semantic search"
|
|
170
|
-
},
|
|
171
|
-
"topics": {
|
|
172
|
-
"title": "Auto Topic Discovery",
|
|
173
|
-
"desc": "Claude Sonnet — auto-discovers 41 topics and 415 checklist items from ESG reports"
|
|
174
|
-
},
|
|
175
|
-
"assess": {
|
|
176
|
-
"title": "AI Qualitative Assessment",
|
|
177
|
-
"desc": "Checklist-based evaluation per topic — cited evidence, scores, and commentary"
|
|
178
|
-
},
|
|
179
|
-
"compare": {
|
|
180
|
-
"title": "Cross-Company Comparison",
|
|
181
|
-
"desc": "Sector-filtered topic × company matrix — auto-generated comparison tables"
|
|
182
|
-
},
|
|
183
|
-
"zeroCost": {
|
|
184
|
-
"title": "Local + Free",
|
|
185
|
-
"desc": "BGE-M3 on-device embeddings, Claude & Gemini free-tier usage"
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
"workflow": {
|
|
189
|
-
"pdf": {
|
|
190
|
-
"desc": "Corporate ESG/sustainability report PDF input",
|
|
191
|
-
"meta": "Annual reports"
|
|
192
|
-
},
|
|
193
|
-
"docling": {
|
|
194
|
-
"desc": "Layout-based structural parsing — single-chunk tables, section boundary preservation",
|
|
195
|
-
"meta": "Tables+Text"
|
|
196
|
-
},
|
|
197
|
-
"chunk": {
|
|
198
|
-
"desc": "Parent-child hierarchical chunking — context preservation + granular retrieval",
|
|
199
|
-
"meta": "parent 1K / child 512"
|
|
200
|
-
},
|
|
201
|
-
"bgem3": {
|
|
202
|
-
"desc": "Dense (1024d) + Sparse (learned BM25) simultaneous embedding generation",
|
|
203
|
-
"meta": "FlagEmbedding"
|
|
204
|
-
},
|
|
205
|
-
"pgvector": {
|
|
206
|
-
"desc": "Chunks, embeddings, assessments, comparisons — full structured storage"
|
|
207
|
-
},
|
|
208
|
-
"search": {
|
|
209
|
-
"desc": "Dense+Sparse hybrid search with parent context expansion"
|
|
210
|
-
},
|
|
211
|
-
"claude": {
|
|
212
|
-
"desc": "Topic discovery, checklist generation, evidence-based qualitative assessment",
|
|
213
|
-
"meta": "Sonnet"
|
|
214
|
-
},
|
|
215
|
-
"report": {
|
|
216
|
-
"desc": "Topic × company comparison table HTML report generation",
|
|
217
|
-
"meta": "Sector filter"
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|