@godxjp/ui 19.2.0 → 19.3.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.
- package/dist/components/data-display/badge.d.ts +18 -2
- package/dist/components/data-display/badge.js +18 -4
- package/dist/props/components/data-display.prop.d.ts +7 -0
- package/dist/props/registry.d.ts +5 -1
- package/dist/props/registry.js +12 -1
- package/dist/styles/badge-layout.css +15 -0
- package/dist/tokens/components/badge.css +8 -0
- package/docs/data-display/badge.tsx +36 -0
- package/docs/data-display/carousel.tsx +8 -4
- package/docs/data-display/data-table/examples/grid-features.tsx +1 -1
- package/docs/data-display/permission-matrix.tsx +13 -9
- package/docs/data-display/popover.tsx +2 -1
- package/docs/data-display/scroll-area.tsx +107 -75
- package/docs/data-display/table.tsx +1 -1
- package/docs/data-entry/calendar.tsx +1 -1
- package/docs/data-entry/checkbox.tsx +1 -1
- package/docs/data-entry/country-picker-recipe.tsx +11 -6
- package/docs/data-entry/form-field/index.tsx +33 -29
- package/docs/data-entry/form-root.tsx +1 -1
- package/docs/data-entry/password-input.tsx +1 -5
- package/docs/data-entry/select.tsx +7 -7
- package/docs/data-entry/textarea.tsx +2 -2
- package/docs/feedback/sheet.tsx +112 -102
- package/docs/feedback/skeleton.tsx +2 -2
- package/docs/foundation/colors.tsx +8 -6
- package/docs/foundation/email-tokens.tsx +82 -65
- package/docs/foundation/radius-shadow.tsx +13 -11
- package/docs/layout/app-shell.tsx +2 -2
- package/docs/layout/aspect-ratio.tsx +30 -14
- package/docs/layout/flex.tsx +6 -2
- package/docs/layout/page-container.tsx +9 -1
- package/docs/layout/responsive-grid.tsx +10 -2
- package/docs/layout/sidebar.tsx +169 -146
- package/docs/layout/split-pane.tsx +44 -27
- package/docs/layout/topbar.tsx +17 -15
- package/docs/navigation/app-setting-picker.tsx +5 -4
- package/docs/navigation/breadcrumb.tsx +12 -5
- package/docs/navigation/context-menu.tsx +10 -4
- package/docs/navigation/navigation-menu.tsx +89 -96
- package/docs/navigation/steps.tsx +12 -10
- package/docs/navigation/tabs.tsx +26 -20
- package/docs/navigation/toolbar.tsx +15 -15
- package/docs/providers/format-date.tsx +2 -2
- package/docs/showcase/acme-portal.tsx +41 -27
- package/docs/showcase/acme-website.tsx +60 -54
- package/docs/showcase/case1-warehouse-dashboard.tsx +46 -30
- package/docs/showcase/case2-employee-me.tsx +23 -20
- package/docs/showcase/case3-approval-workflow.tsx +34 -32
- package/docs/showcase/case4-login.tsx +119 -113
- package/docs/showcase/case5-shift-calendar.tsx +3 -3
- package/docs/showcase/case6-agency-handy.tsx +340 -299
- package/docs/showcase/futurelastic-web.tsx +23 -21
- package/docs/showcase/org-switcher.tsx +2 -2
- package/docs/showcase/permission-matrix.tsx +7 -4
- package/docs/showcase/table-conditional-format.tsx +8 -8
- package/docs/showcase/table-crud-list.tsx +3 -3
- package/docs/showcase/table-density.tsx +49 -42
- package/docs/showcase/table-expandable-rows.tsx +24 -15
- package/docs/showcase/table-filter-chips.tsx +2 -7
- package/docs/showcase/table-footer-totals.tsx +7 -4
- package/docs/showcase/table-grouped-subtotals.tsx +25 -22
- package/docs/showcase/table-master-detail.tsx +15 -10
- package/docs/showcase/table-pagination.tsx +34 -27
- package/docs/showcase/table-states.tsx +8 -5
- package/docs/showcase/table-sticky-columns.tsx +8 -5
- package/package.json +2 -3
|
@@ -156,7 +156,11 @@ export default function LoginShowcase() {
|
|
|
156
156
|
</Flex>
|
|
157
157
|
|
|
158
158
|
{/* Centered auth area. Split brand panel + card sit side-by-side from lg. */}
|
|
159
|
-
<
|
|
159
|
+
<Flex
|
|
160
|
+
align="center"
|
|
161
|
+
gap="xs"
|
|
162
|
+
className="mx-auto min-h-[calc(100vh-64px)] w-full max-w-5xl px-4 py-8 sm:px-6"
|
|
163
|
+
>
|
|
160
164
|
<ResponsiveGrid
|
|
161
165
|
columns={{ sm: 1, lg: 2, md: 1 }}
|
|
162
166
|
gap="xl"
|
|
@@ -165,50 +169,54 @@ export default function LoginShowcase() {
|
|
|
165
169
|
{/* Split brand panel — hidden on mobile (mobile-first), shown from lg. */}
|
|
166
170
|
<aside className="hidden lg:flex">
|
|
167
171
|
<Card className="bg-primary/5 w-full">
|
|
168
|
-
<CardContent solo className="
|
|
169
|
-
<
|
|
170
|
-
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
</Flex>
|
|
179
|
-
<dl className="border-border grid grid-cols-3 gap-4 border-t pt-6">
|
|
180
|
-
<div>
|
|
181
|
-
<Text as="dt" size="2xs" tone="muted">
|
|
182
|
-
導入企業
|
|
183
|
-
</Text>
|
|
184
|
-
<Text as="dd" size="lg" weight="bold" tabular>
|
|
185
|
-
1,240
|
|
186
|
-
</Text>
|
|
187
|
-
</div>
|
|
188
|
-
<div>
|
|
189
|
-
<Text as="dt" size="2xs" tone="muted">
|
|
190
|
-
稼働拠点
|
|
191
|
-
</Text>
|
|
192
|
-
<Text as="dd" size="lg" weight="bold" tabular>
|
|
193
|
-
8,600
|
|
194
|
-
</Text>
|
|
195
|
-
</div>
|
|
196
|
-
<div>
|
|
197
|
-
<Text as="dt" size="2xs" tone="muted">
|
|
198
|
-
月間打刻
|
|
172
|
+
<CardContent solo className="h-full">
|
|
173
|
+
<Flex direction="col" justify="between" gap="xl">
|
|
174
|
+
<BrandLockup size="lg" />
|
|
175
|
+
<Flex direction="col" gap="md">
|
|
176
|
+
<Heading level={2} className="leading-snug">
|
|
177
|
+
打刻から承認まで、ひとつの勤怠基盤で。
|
|
178
|
+
</Heading>
|
|
179
|
+
<Text as="p" tone="muted" className="leading-relaxed">
|
|
180
|
+
出勤・休憩・残業の打刻、シフト調整、欠勤・遅刻の承認を一元化します。
|
|
181
|
+
多拠点・多テナントに対応し、現場と管理をつなぎます。
|
|
199
182
|
</Text>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
183
|
+
</Flex>
|
|
184
|
+
<dl className="border-border border-t pt-6">
|
|
185
|
+
<ResponsiveGrid columns={3} gap="md">
|
|
186
|
+
<div>
|
|
187
|
+
<Text as="dt" size="2xs" tone="muted">
|
|
188
|
+
導入企業
|
|
189
|
+
</Text>
|
|
190
|
+
<Text as="dd" size="lg" weight="bold" tabular>
|
|
191
|
+
1,240
|
|
192
|
+
</Text>
|
|
193
|
+
</div>
|
|
194
|
+
<div>
|
|
195
|
+
<Text as="dt" size="2xs" tone="muted">
|
|
196
|
+
稼働拠点
|
|
197
|
+
</Text>
|
|
198
|
+
<Text as="dd" size="lg" weight="bold" tabular>
|
|
199
|
+
8,600
|
|
200
|
+
</Text>
|
|
201
|
+
</div>
|
|
202
|
+
<div>
|
|
203
|
+
<Text as="dt" size="2xs" tone="muted">
|
|
204
|
+
月間打刻
|
|
205
|
+
</Text>
|
|
206
|
+
<Text as="dd" size="lg" weight="bold" tabular>
|
|
207
|
+
21M
|
|
208
|
+
</Text>
|
|
209
|
+
</div>
|
|
210
|
+
</ResponsiveGrid>
|
|
211
|
+
</dl>
|
|
212
|
+
</Flex>
|
|
205
213
|
</CardContent>
|
|
206
214
|
</Card>
|
|
207
215
|
</aside>
|
|
208
216
|
|
|
209
217
|
{/* Auth card — the one surface allowed a resting shadow (shadow-lg). */}
|
|
210
218
|
<Card className="mx-auto w-full max-w-sm self-center shadow-lg lg:mx-0">
|
|
211
|
-
<CardHeader className="
|
|
219
|
+
<CardHeader className="text-center lg:text-start">
|
|
212
220
|
<Flex justify="center" className="lg:hidden">
|
|
213
221
|
<BrandLockup />
|
|
214
222
|
</Flex>
|
|
@@ -218,90 +226,88 @@ export default function LoginShowcase() {
|
|
|
218
226
|
</CardDescription>
|
|
219
227
|
</CardHeader>
|
|
220
228
|
|
|
221
|
-
<CardContent solo
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
<
|
|
225
|
-
<
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
229
|
+
<CardContent solo>
|
|
230
|
+
<Flex direction="col" gap="lg">
|
|
231
|
+
{/* SSO buttons — outline, full-width, 44px (comfortable). */}
|
|
232
|
+
<Flex direction="col" gap="sm">
|
|
233
|
+
<Button variant="outline" className="w-full justify-center">
|
|
234
|
+
<GoogleMark />
|
|
235
|
+
Google で続ける
|
|
236
|
+
</Button>
|
|
237
|
+
<Button variant="outline" className="w-full justify-center">
|
|
238
|
+
シングルサインオン (SSO)
|
|
239
|
+
</Button>
|
|
240
|
+
</Flex>
|
|
232
241
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
242
|
+
{/* Divider "または" — Separator pair + centered label. */}
|
|
243
|
+
<Flex align="center" gap="md">
|
|
244
|
+
<Separator className="flex-1" />
|
|
245
|
+
<Text size="xs" tone="muted">
|
|
246
|
+
または
|
|
247
|
+
</Text>
|
|
248
|
+
<Separator className="flex-1" />
|
|
249
|
+
</Flex>
|
|
241
250
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
251
|
+
{/* Email — uncontrolled, seeded so the filled state shows at rest. */}
|
|
252
|
+
<form
|
|
253
|
+
onSubmit={(e) => {
|
|
254
|
+
e.preventDefault();
|
|
255
|
+
}}
|
|
256
|
+
>
|
|
257
|
+
<Flex direction="col" gap="md">
|
|
258
|
+
<FormField id="login-email" label="メールアドレス" required>
|
|
259
|
+
<Input
|
|
260
|
+
type="email"
|
|
261
|
+
name="email"
|
|
262
|
+
autoComplete="email"
|
|
263
|
+
inputMode="email"
|
|
264
|
+
placeholder="name@example.com"
|
|
265
|
+
defaultValue="m.tanaka@famgia.com"
|
|
266
|
+
/>
|
|
267
|
+
</FormField>
|
|
259
268
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
className="ms-auto h-auto p-0 text-xs"
|
|
269
|
+
{/* Password — labelAddon hosts the right-aligned "忘れた場合" link. */}
|
|
270
|
+
<FormField
|
|
271
|
+
id="login-password"
|
|
272
|
+
label="パスワード"
|
|
273
|
+
required
|
|
274
|
+
labelAddon={
|
|
275
|
+
<Button type="button" variant="link" size="sm" className="ms-auto text-xs">
|
|
276
|
+
お忘れの場合
|
|
277
|
+
</Button>
|
|
278
|
+
}
|
|
271
279
|
>
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
placeholder="パスワードを入力"
|
|
280
|
-
defaultValue="example-pass"
|
|
281
|
-
/>
|
|
282
|
-
</FormField>
|
|
280
|
+
<PasswordInput
|
|
281
|
+
name="password"
|
|
282
|
+
autoComplete="current-password"
|
|
283
|
+
placeholder="パスワードを入力"
|
|
284
|
+
defaultValue="example-pass"
|
|
285
|
+
/>
|
|
286
|
+
</FormField>
|
|
283
287
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
288
|
+
{/* The single --primary action of the view. */}
|
|
289
|
+
<Button type="submit" className="w-full justify-center">
|
|
290
|
+
ログイン
|
|
291
|
+
</Button>
|
|
292
|
+
</Flex>
|
|
293
|
+
</form>
|
|
289
294
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
<Text as="p" size="2xs" tone="muted" align="center" className="leading-relaxed">
|
|
296
|
+
ログインすると{" "}
|
|
297
|
+
<Button variant="link" size="sm" className="text-[var(--font-size-2xs)]">
|
|
298
|
+
利用規約
|
|
299
|
+
</Button>{" "}
|
|
300
|
+
·{" "}
|
|
301
|
+
<Button variant="link" size="sm" className="text-[var(--font-size-2xs)]">
|
|
302
|
+
プライバシーポリシー
|
|
303
|
+
</Button>{" "}
|
|
304
|
+
に同意したものとみなされます。
|
|
305
|
+
</Text>
|
|
306
|
+
</Flex>
|
|
301
307
|
</CardContent>
|
|
302
308
|
</Card>
|
|
303
309
|
</ResponsiveGrid>
|
|
304
|
-
</
|
|
310
|
+
</Flex>
|
|
305
311
|
</div>
|
|
306
312
|
);
|
|
307
313
|
}
|
|
@@ -354,7 +354,7 @@ export default function ShiftCalendarShowcase() {
|
|
|
354
354
|
2026年5月
|
|
355
355
|
</Button>
|
|
356
356
|
</PopoverTrigger>
|
|
357
|
-
<PopoverContent className="w-auto
|
|
357
|
+
<PopoverContent className="w-auto" style={{ padding: 0 }} align="start">
|
|
358
358
|
<Calendar
|
|
359
359
|
mode="single"
|
|
360
360
|
selected={jumpMonth}
|
|
@@ -572,13 +572,13 @@ function MonthGrid({ onPick }: { onPick: (d: DayCell) => void }) {
|
|
|
572
572
|
</Badge>
|
|
573
573
|
) : null}
|
|
574
574
|
</Flex>
|
|
575
|
-
<Flex direction="col"
|
|
575
|
+
<Flex direction="col" gap="xs">
|
|
576
576
|
{cell.holiday ? <ShiftPill kind="holiday" staff={cell.holiday} /> : null}
|
|
577
577
|
{shown.map((s, i) => (
|
|
578
578
|
<ShiftPill key={`${s.kind}-${i}`} kind={s.kind} staff={s.staff} />
|
|
579
579
|
))}
|
|
580
580
|
{overflow > 0 ? (
|
|
581
|
-
<Text as="span" size="2xs" tone="muted" tabular
|
|
581
|
+
<Text as="span" size="2xs" tone="muted" tabular>
|
|
582
582
|
+{overflow} 件
|
|
583
583
|
</Text>
|
|
584
584
|
) : null}
|