@naeil/ui 0.7.2 → 0.8.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/dist/{chunk-QQQQZEPV.js → chunk-KPE4KKYM.js} +111 -14
- package/dist/{chunk-MGCCKOGU.js → chunk-ULZPJI5X.js} +102 -44
- package/dist/{chunk-7JBLPGZ4.js → chunk-WA5D7UI2.js} +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.js +3 -3
- package/dist/components/naeil-footer.d.ts +2 -2
- package/dist/components/naeil-footer.js +3 -1
- package/dist/components/naeil-header.d.ts +8 -2
- package/dist/components/naeil-header.js +3 -3
- package/dist/components/ui/index.d.ts +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/lib/ui-release.d.ts +1 -1
- package/dist/lib/ui-release.js +1 -1
- package/dist/{navigation-CgPeL9tF.d.ts → navigation-D8N1tMTu.d.ts} +4 -2
- package/dist/{site-footer-vXDa_6yr.d.ts → site-footer-s113FZgC.d.ts} +1 -1
- package/dist/source/components/naeil-footer.js +2 -0
- package/dist/source/components/naeil-header-account.js +54 -19
- package/dist/source/components/naeil-header.d.ts +8 -2
- package/dist/source/components/naeil-header.js +49 -23
- package/dist/source/components/ui/navigation.d.ts +8 -2
- package/dist/source/components/ui/navigation.js +112 -15
- package/dist/source/lib/ui-release.d.ts +1 -1
- package/dist/source/lib/ui-release.js +1 -1
- package/docs/components/application-layout.md +7 -4
- package/docs/components/naeil-header.md +33 -5
- package/docs/package-release.md +15 -4
- package/package.json +1 -1
- package/src/styles/components.css +113 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# NaeilHeader — branded whole-header composition
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The published registry baseline is **@naeil/ui 0.7.2**. This guide also describes the **unpublished 0.8.0 candidate** APIs below. Install exact `@naeil/ui@0.7.2` for the published API; the new Home props require the reviewed 0.8.0 archive. Hosted Docs and service activation have separate receipts. See [release identities and publication status](../package-release.md#publication-and-deployment). Import this opt-in React-only entry when an application inherits the actual naeil.dev header. Generic `Navigation` from `/ui` remains available for different product menus.
|
|
4
4
|
|
|
5
5
|
```tsx
|
|
6
6
|
import { NaeilHeader, NaeilHeaderAccountControl } from '@naeil/ui/naeil-header';
|
|
@@ -16,7 +16,7 @@ import '@naeil/ui/globals.css';
|
|
|
16
16
|
|
|
17
17
|
Load shared styles once. Apps that already own their Tailwind/base styles may import both `@naeil/ui/theme.css` and `@naeil/ui/components.css` instead of globals. Tailwind 4 consumers must register the installed `dist` with `@source`; see [setup](../design/v2-migration.md#시작하기).
|
|
18
18
|
|
|
19
|
-
The module owns the brand,
|
|
19
|
+
The module owns the brand, single-project naeil-ui catalog and header-only translations, project artwork references/status, theme/optional locale controls, toolbar order, fixed positioning, branded frame and Radix desktop/mobile behavior. Do not copy menu JSX or styles into a consumer. The website's `NavWrapper` imports this same module and supplies locale/router/auth state; estimate consumes the built package entry. Legacy `Nav` retains its Next/next-intl compatibility API.
|
|
20
20
|
|
|
21
21
|
## Consumer contract
|
|
22
22
|
|
|
@@ -33,6 +33,10 @@ Only provide `onLocaleChange` when the application's interface supports all thre
|
|
|
33
33
|
| `authSlot` | Canonical `NaeilHeaderAccountControl`, with consumer-owned auth state/actions. Legacy arbitrary markup remains supported. |
|
|
34
34
|
| `brandHref`, `brandSlot`, `brandLinkProps`, `brandLinkComponent` | Explicit brand destination/content/anchor overrides; default accessible brand name is `.naeil`. |
|
|
35
35
|
| `projects`, `projectsExternal`, `showProjects`, `showBlog` | Legacy catalog/visibility/native-link overrides; defaults use the complete canonical catalog. |
|
|
36
|
+
| `appNavigation` (0.8.0) | `NavigationItem[]` passed unchanged after catalog/blog and before flat `subNav`. Owned product menus use this with `showProjects={false} showBlog={false}`. |
|
|
37
|
+
| `brandSuffix` (0.8.0) | Product qualifier inside the brand link; the package owns its 14px type, 4px gap and optical alignment. Ignored when `brandSlot` replaces the complete content. Set `brandLinkProps["aria-label"]` for a product name. |
|
|
38
|
+
| `statusSlot` (0.8.0) | Exactly once, outside and 8px after the brand link at every width. The consumer owns the content and accessible status. No wrapper is added when omitted. |
|
|
39
|
+
| `mobileOpen`, `onMobileOpenChange` (0.8.0) | Controlled/uncontrolled sheet state, also on generic Navigation. Omit `mobileOpen` for internal state; a callback alone observes it. Accepted transitions notify once. In controlled mode callbacks request a change against the committed prop, so another close request is reported if the parent rejects or delays the previous one; an external prop update emits no request. Route changes, ordinary links, close/overlay/Escape dismiss. Desktop crossing dismisses when the desktop navigation gains width; an empty menu retains B1's open sheet until Escape/close/overlay/route change. Modified/middle clicks preserve it; nested menus consume the first Escape. |
|
|
36
40
|
| `subNav`, `currentProjectKey`, `currentProjectHref` | Legacy extra links and current-project destination. |
|
|
37
41
|
| `translations`, `labels` | Legacy header/project lookup overrides and navigation/menu/close accessible labels. |
|
|
38
42
|
| `toolbarSlot` | Replaces the complete default theme/locale/auth toolbar. |
|
|
@@ -47,7 +51,9 @@ Standard header attributes and the remaining inherited [Navigation props](naviga
|
|
|
47
51
|
- `{ status: 'signed-out', loginHref }` renders the shared login link through that adapter.
|
|
48
52
|
- `{ status: 'signed-in', onLogout, busy?, displayName?, email? }` renders the same account icon in every app; optional identity appears only inside its menu. There is no shared identity or avatar fetch.
|
|
49
53
|
- `onLogout` starts the app's guarded action; the app handles async errors, cancellation, session endpoints and redirects. `busy` disables the menu action while keeping the trigger available, with `aria-busy`, for inspection and focus restoration. Cancel/failure clears busy and permits retry.
|
|
50
|
-
-
|
|
54
|
+
- Desktop and uncontrolled-mobile account controls retain B1: `onLogout` runs during selection, then Radix closes the account menu and restores its trigger; the mobile sheet may remain open during a failed action. A controlled mobile sheet instead defers the callback until its account menu and sheet finish closing, focuses a surviving visible header control, and invokes the callback once. Reopening the sheet or account menu, a new sheet dismissal request, or unmounting the header cancels the queued action. The account menu uses the existing Radix overlay/inert implementation.
|
|
55
|
+
|
|
56
|
+
While a controlled parent keeps `mobileOpen=true`, its rejection and delayed acceptance are indistinguishable. A later `false` prop without an intervening cancellation accepts the queued selection; assigning `true` when it is already `true` creates no observable reopen transition.
|
|
51
57
|
|
|
52
58
|
Keep errors visible in the consumer's recovery UI or toast. The package never calls an authentication endpoint. Compare signed-in and signed-out render states separately; anonymous-only acceptance cannot establish authenticated parity. `AccountStates` is a synthetic Storybook example for pending/cancel/error/retry.
|
|
53
59
|
|
|
@@ -59,10 +65,32 @@ The fixed header is 65px: the current 64px navigation token plus a 1px border. C
|
|
|
59
65
|
|
|
60
66
|
## Artwork and package boundary
|
|
61
67
|
|
|
62
|
-
The
|
|
68
|
+
The 0.7.2 default catalog contains naeil-ui and references only `https://naeil.dev/images/whale.png`. Rendering that decorative image requires network access to the official origin. Its bytes are not redistributed in npm; [third-party notices](../../THIRD_PARTY_NOTICES.md) retain unresolved artwork provenance and redistribution limits. Brand marks are not relicensed by the repository MIT license. Captions and links remain usable when images fail.
|
|
63
69
|
|
|
64
70
|
This entry requires no Next.js, next-intl, site session/auth backend, full application message catalog, hero or site public folder. Generic `/ui` imports do not import its catalog. Storybook provides **Brand / NaeilHeader / Docs, Usage, JapaneseApplication, AccountStates, ReferenceFull, ReferenceCompact**; the Japanese example omits unsupported locale switching and supplies application state to the shared account control. Local examples do not establish hosted deployment.
|
|
65
71
|
|
|
66
72
|
Verify actual packed consumption, Storybook behavior and rendered comparisons at matching viewport/language/theme. Source imports alone do not prove visual parity. Native Safari, devices, assistive technology, full OAuth and unresolved accessibility observations retain the [documented support limits](../design/public-ui-support.md).
|
|
67
73
|
|
|
68
|
-
Pair owned-service headers with [NaeilFooter](naeil-footer.md).
|
|
74
|
+
Pair owned-service headers with [NaeilFooter](naeil-footer.md). The 0.7.2 source is `40a3928e24cd2f0141be3e605eed0a75260938fd`. Both 0.7.2 and the 0.8.0 candidate emit package version and chrome contract `1`; archive identities, maintained guidance and hosted Docs remain separate evidence.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## Host typography and mobile handoff (0.8.0 candidate)
|
|
78
|
+
|
|
79
|
+
Import either `globals.css` or `theme.css` plus `components.css`, and register the installed `dist` with Tailwind `@source`. Header/footer roots and the actual navigation popover, sheet, account menu and locale menu Content elements carry `data-naeil-chrome` and `lang=locale`; the locale Select Content also carries `data-naeil-locale-menu`. Generic Navigation/Select/DropdownMenu do not acquire these markers. Do not identify chrome by option text or by the presence of a Japanese body option.
|
|
80
|
+
|
|
81
|
+
Marker-and-language-scoped final typography uses a package-local font stack and explicit sizes, weights, line heights, letter spacing and smoothing. It supports a host `@theme` / `@theme inline` with different text tokens/font stacks and unlayered element/role rules at Home's specificity, including `(0,3,0)` `:root[attr] [role="menuitem"]` and Home's `[role="dialog"] p` rules. Host rules can load before or after either supported package CSS entry; owned text declarations outrank them. Rules with `!important` or IDs aimed at chrome are outside this guarantee. Ordinary body Select/menu/dialog typography remains host-owned; custom slot content remains consumer-owned. Font files are still consumer-supplied; Japanese chrome and portals use Noto Sans JP even when the document language differs.
|
|
82
|
+
|
|
83
|
+
A controlled mobile sheet defers its shared account action until the account menu and sheet finish closing and restore a surviving header control. The consumer still owns dirty state, confirmation, logout, busy state and the request lock; `onLogout` must tolerate this asynchronous handoff. When a confirmation saves its opener, its restoration policy must also handle a viewport change hiding that opener. Verify normal and reduced motion, cancellation after a desktop transition, pending requests, reopen and retry in the actual application; the candidate's unresolved acceptance gates are not a production guarantee.
|
|
84
|
+
|
|
85
|
+
The empty-menu desktop exception is intentional B1 compatibility: a zero-width desktop navigation cannot signal the crossing, so the sheet stays open. Escape, its close button, the overlay or a `currentHref` change still close it. Home owns the confirmation's desktop cancel fallback to the visible row account trigger; the package supplies a visible, focusable control and does not implement the confirmation's restoration policy.
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
<NaeilHeader locale={locale} currentHref={pathname} Link={GuardedLink}
|
|
89
|
+
showProjects={false} showBlog={false} appNavigation={navigationItems}
|
|
90
|
+
brandHref="/" brandSuffix="Home" brandLinkProps={{ 'aria-label': 'Naeil Home' }}
|
|
91
|
+
statusSlot={readinessStatus} mobileOpen={mobileOpen} onMobileOpenChange={setMobileOpen}
|
|
92
|
+
onLocaleChange={changeLanguage}
|
|
93
|
+
authSlot={<NaeilHeaderAccountControl locale={locale} account={account} />} />
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Keep the default theme/locale/separator/account toolbar for this profile; `toolbarSlot` is a compatibility override, not the Home migration path. Omitting all new props preserves the 0.7.2 canonical profile, apart from markers, language correction, release identity and Radix-generated IDs. SVG/Logo IDs and consumer-supplied IDs are not normalized away. See the `docs/superpowers/specs/2026-10-28-canonical-home-chrome.md` acceptance contract for gates and the four allowed Home differences.
|
package/docs/package-release.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Package verification and release policy
|
|
2
2
|
|
|
3
|
-
**0.7.
|
|
3
|
+
**Published baseline: 0.7.2** (`40a3928`, registry archive SHA-256 `b7919ed182307c5c3b48515f68567b0e4f51c611c86b7acf8861e769f596e2ec`, 139 files). **0.8.0 is an unpublished candidate** adding the canonical Home menu/brand/status/controlled-sheet API and package-owned chrome typography. Contract version stays `1` only while every existing invariant passes. The historical 0.7.1 publication and immutable archive below remain unchanged. UI v2 names a design generation, not an npm major. Hosted Docs and per-service activation retain separate receipts. Version-scoped installation is in the [README](../README.md#use-the-ui).
|
|
4
4
|
|
|
5
5
|
## Architecture
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ One repository contains the shared package and the separate Next.js brand/exampl
|
|
|
8
8
|
|
|
9
9
|
Owned services use `@naeil/ui/naeil-footer` for the canonical localized destinations in full/compact variants; generic SiteFooter and legacy Footer retain their APIs. Footer navigation adapters preserve application save/flush decisions and modified-click behavior. `@naeil/ui/release` is server-safe metadata; it contains no application artifact, credential or environment. Applications compile their own allowlisted artifact/source identity. See [the footer contract](components/naeil-footer.md). Current coordinator policy, selected services, activation and recovery evidence are maintained in the [rollout records](https://github.com/naeil-dev/naeil-ui/tree/main/docs/rollout); historical disabled-policy statements describe their dated checkpoints. Publishing a package, creating an update PR or merging it never establishes complete consumer rollout. Home Console is outside the selected shared-UI rollout.
|
|
10
10
|
|
|
11
|
-
Website tools remain development dependencies so maintainers can develop both products. npm tarball consumers install only component runtime dependencies and their host React/ReactDOM. Build entries, package exports and packed checks constrain the public boundary. There is no bundled website action, Supabase helper, Three/hero/cursor module, blog engine or full application message catalog. The opt-in header includes only its three header dictionaries and canonical project catalog. Its
|
|
11
|
+
Website tools remain development dependencies so maintainers can develop both products. npm tarball consumers install only component runtime dependencies and their host React/ReactDOM. Build entries, package exports and packed checks constrain the public boundary. There is no bundled website action, Supabase helper, Three/hero/cursor module, blog engine or full application message catalog. The opt-in header includes only its three header dictionaries and canonical project catalog. Its 0.7.2 default catalog contains naeil-ui and references the official `https://naeil.dev/images/whale.png` URL and require network access; no image bytes are bundled, and unresolved artwork redistribution provenance remains in [third-party notices](../THIRD_PARTY_NOTICES.md).
|
|
12
12
|
|
|
13
13
|
## Checks
|
|
14
14
|
|
|
@@ -104,7 +104,7 @@ The immutable npm archive's bundled guides are the release-preparation snapshot.
|
|
|
104
104
|
|
|
105
105
|
### Release procedure
|
|
106
106
|
|
|
107
|
-
Maintained Storybook resolves relative Markdown guide links against `v0.7.
|
|
107
|
+
Maintained Storybook resolves relative Markdown guide links against the published `v0.7.2` source `40a3928e24cd2f0141be3e605eed0a75260938fd`. The unpublished 0.8.0 candidate keeps that published guide-link target until a separately reviewed Docs release. That tag is independent of the reviewed Docs deployment SHA. Hosted verification checks that the pinned links resolve; the unpublished `v0.7.0` tag is not a valid target. Historical foundation/source-authority links remain at their original revisions. Freeze subsequent documentation changes separately from immutable release archives.
|
|
108
108
|
|
|
109
109
|
The authorized 0.3.0 release completed main merge, npm 0.3.0, a GitHub Release and hosted Docs as recorded above. The release maintainer performs external authentication and publication; documentation preparation does not itself execute those operations. The automatic verification workflow does not publish or deploy. Record native/manual observations with their actual scope and carry unrun checks as limitations; do not substitute automated WebKit/axe checks or publication authorization for human certification.
|
|
110
110
|
|
|
@@ -120,6 +120,17 @@ npm publication, GitHub Releases, main merge and hosted Docs are distinct operat
|
|
|
120
120
|
|
|
121
121
|
`vercel.json` disables Git deployments only for `feat/public-ui-readiness`. Other branches retain Vercel's default behavior, so merging or pushing another branch requires a separate deployment decision. The automatic GitHub Actions checks are verification-only; enabling repository workflows is not evidence of a hosted site or approved release.
|
|
122
122
|
|
|
123
|
+
|
|
124
|
+
### Manual exact-archive preparation for 0.8.0
|
|
125
|
+
|
|
126
|
+
The standing `scripts/rollout/prepare-release.mjs` accepts consecutive stable 0.7.x releases only. Do not change rollout policy, `release.json` or the chrome contract to admit 0.8.0. Use the manual release procedure above: complete P1–P7 from the `docs/superpowers/specs/2026-10-28-canonical-home-chrome.md` acceptance contract, freeze the exact source SHA/archive, then run boundary and clean React/Next checks with `NAEIL_UI_EXPECTED_ARCHIVE_SHA256`. The paired browser gate accepts `NAEIL_UI_CHROME_PACKAGE=/absolute/extracted/package` to exercise that exact archive, alongside SHA-512-pinned B1. It retains numeric differences and screenshots for human review; new renders never replace expectations automatically.
|
|
127
|
+
|
|
128
|
+
The candidate adds `appNavigation`, `brandSuffix`, `statusSlot` and controlled/observer sheet props; see [NaeilHeader](components/naeil-header.md) for supported host CSS and consumer-supplied fonts. Default catalog/blog/legacy overrides must remain equivalent to B1. Home uses the complete default toolbar and full footer. A source rollback must revert adapter, CSS and manifest/lock together; pin-only rollback cannot support the new API.
|
|
129
|
+
|
|
130
|
+
The shipped guide records the B1 empty-menu desktop limitation, controlled-mobile asynchronous account/focus handoff versus desktop/uncontrolled selection-time behavior, and Home's confirmation-owned desktop cancel fallback. Compatibility comparisons normalize only the contract markers/language/release identity and Radix-generated IDs; SVG/Logo and consumer IDs stay exact. Source or guide corrections require a new archive and exact-archive gates; earlier candidate digests are historical evidence.
|
|
131
|
+
|
|
132
|
+
Package publication, tag, GitHub Release, main merge and Home deployment each require separate explicit approval. naeil.dev imports this repository's source, so a main merge upgrades its default header to 0.8.0 and is held until the owner approves that site impact and timing. Estimate/Jev stay on 0.7.2, and STOP remains. A prepared archive or local gate result grants no publication or rollout authority.
|
|
133
|
+
|
|
123
134
|
## Storybook preview artifact
|
|
124
135
|
|
|
125
136
|
`pnpm build:storybook` builds 17 actual Docs pages: 15 UI families (the 13 primitives plus Navigation and SiteFooter) and Brand / Logo and NaeilHeader. Interactive examples include the complete branded header, JapaneseApplication, canonical footer ReferenceFull/ReferenceCompact and AccountStates. Canonical footer/account examples live within existing stories, without a separate NaeilFooter Docs family. It copies generated documentation notices and approved canonical brand SVGs, bundles locally installed Pretendard/Noto Sans JP and disables Vite publicDir. The artifact check verifies real Docs/story entries, exact MIT/shadcn/font notices, brand references and absence of website public images/SVGs/HTML. It does not claim those excluded site assets have cleared rights.
|
|
@@ -148,7 +159,7 @@ Select **Publish reviewed UI docs (manual only)** in Actions (or use the command
|
|
|
148
159
|
gh workflow run publish-docs-manual.yml --ref main -f reviewed_sha=FULL_REVIEWED_DOCS_COMMIT_SHA -f confirmation=PUBLISH_REVIEWED_DOCS
|
|
149
160
|
```
|
|
150
161
|
|
|
151
|
-
After the
|
|
162
|
+
After the reviewed Docs deployment, verify the manager and iframe under `/naeil-ui/`, all 15 UI and 2 Brand Docs pages, their Usage examples, NaeilHeader JapaneseApplication, canonical footer full/compact destinations, and signed-out/signed-in/menu/busy account states. Check the maintained `v0.7.2` guide links (or the separately approved release target), canonical artwork and official image references, local fonts and exact LICENSE/THIRD_PARTY_NOTICES/font notices over HTTP. Retain the deployment URL, Docs source SHA, workflow run and observed results separately from the package source/tag. Hosted Storybook uses simulated data and requires no Supabase project, design API key or external font server. Only the reviewed Storybook directory is uploaded; website public assets stay excluded.
|
|
152
163
|
|
|
153
164
|
Normal builds are network-independent after dependency installation. Vite collects notices for actual preview modules; checked-in manager notices conservatively cover named embedded packages and versions from Storybook 10.4.6's original source lock. `check-storybook` fails if a named embedded module lacks a full notice. Four vendored tiny modules have no embedded version in that lock/comments; their original npm notice source is explicitly marked, without an exact-version claim. The exact use-composed-ref@1.4.0 tarball/repository provides MIT metadata but no standalone notice; its metadata plus full declared terms are retained without inventing a year/holder. The client-only@0.0.1 React marker retains its exact metadata and the original React MIT notice. Other missing notices fail the build; no generic MIT fallback passes arbitrary packages.
|
|
154
165
|
|
package/package.json
CHANGED
|
@@ -536,6 +536,119 @@
|
|
|
536
536
|
}
|
|
537
537
|
}
|
|
538
538
|
|
|
539
|
+
|
|
540
|
+
/* Canonical chrome owns final typography. Unlayered, marker-scoped rules also
|
|
541
|
+
beat supported (0,3,0) host rules even when loaded later. Body portals stay local. */
|
|
542
|
+
html:root [data-naeil-chrome][lang] {
|
|
543
|
+
/* Keep the base :lang(ja) fallback local while slot font utilities still win. */
|
|
544
|
+
--font-sans: 'Pretendard Variable', Pretendard, 'Noto Sans JP', -apple-system, system-ui, sans-serif;
|
|
545
|
+
--naeil-chrome-font: "Pretendard Variable", Pretendard, "Noto Sans JP", -apple-system, system-ui, sans-serif;
|
|
546
|
+
font-family: var(--naeil-chrome-font);
|
|
547
|
+
font-size: 16px;
|
|
548
|
+
font-weight: 400;
|
|
549
|
+
line-height: 1.5625;
|
|
550
|
+
letter-spacing: normal;
|
|
551
|
+
-webkit-font-smoothing: antialiased;
|
|
552
|
+
-moz-osx-font-smoothing: grayscale;
|
|
553
|
+
}
|
|
554
|
+
html:root [data-naeil-chrome][lang] .ui-navigation-link:not([data-app-toolbar] *):not([data-app-brand]),
|
|
555
|
+
html:root [data-naeil-chrome][lang] .naeil-header-login,
|
|
556
|
+
html:root [data-naeil-chrome][lang] .naeil-header-account-trigger,
|
|
557
|
+
html:root [data-naeil-chrome][lang] .ui-navigation-title,
|
|
558
|
+
html:root [data-naeil-chrome][lang][data-app-toolbar] > [data-slot="button"]:first-child,
|
|
559
|
+
html:root [data-naeil-chrome][lang][data-app-toolbar] > [data-slot="select-trigger"]:nth-child(2) {
|
|
560
|
+
font-family: var(--naeil-chrome-font);
|
|
561
|
+
font-size: 16px;
|
|
562
|
+
font-weight: 400;
|
|
563
|
+
line-height: 1.5625;
|
|
564
|
+
letter-spacing: normal;
|
|
565
|
+
}
|
|
566
|
+
html:root [data-naeil-chrome][lang] :is(.ui-navigation-title, .naeil-header-login) {
|
|
567
|
+
font-weight: 500;
|
|
568
|
+
}
|
|
569
|
+
html:root [data-naeil-chrome][lang] .ui-navigation-entry[aria-current="page"] .ui-navigation-title {
|
|
570
|
+
font-weight: 600;
|
|
571
|
+
}
|
|
572
|
+
html:root [data-naeil-chrome][lang] :is(.ui-navigation-description, .ui-navigation-group-label, .ui-site-footer-description, .ui-site-footer-label, .ui-site-footer-link, .ui-site-footer-meta) {
|
|
573
|
+
font-family: var(--naeil-chrome-font);
|
|
574
|
+
font-size: 14px;
|
|
575
|
+
font-weight: 400;
|
|
576
|
+
line-height: 1.5625;
|
|
577
|
+
letter-spacing: normal;
|
|
578
|
+
}
|
|
579
|
+
html:root [data-naeil-chrome][lang] :is(.ui-navigation-group-label, .ui-site-footer-label) {
|
|
580
|
+
font-weight: 600;
|
|
581
|
+
}
|
|
582
|
+
html:root [data-naeil-chrome][lang] .ui-navigation-sheet-heading > h2 {
|
|
583
|
+
font-family: var(--naeil-chrome-font);
|
|
584
|
+
font-size: 20px;
|
|
585
|
+
font-weight: 600;
|
|
586
|
+
line-height: 28px;
|
|
587
|
+
letter-spacing: normal;
|
|
588
|
+
}
|
|
589
|
+
html:root [data-naeil-chrome][lang] :is([data-slot="select-item"], [data-slot="dropdown-menu-item"]) {
|
|
590
|
+
font-family: var(--naeil-chrome-font);
|
|
591
|
+
font-size: 16px;
|
|
592
|
+
font-weight: 400;
|
|
593
|
+
line-height: 24px;
|
|
594
|
+
letter-spacing: normal;
|
|
595
|
+
}
|
|
596
|
+
html:root [data-naeil-chrome][lang] [data-slot="dropdown-menu-label"] {
|
|
597
|
+
font-family: var(--naeil-chrome-font);
|
|
598
|
+
font-size: 14px;
|
|
599
|
+
font-weight: 400;
|
|
600
|
+
line-height: 20px;
|
|
601
|
+
letter-spacing: normal;
|
|
602
|
+
}
|
|
603
|
+
html:root [data-naeil-chrome][lang] [data-slot="dropdown-menu-label"] > .text-base {
|
|
604
|
+
font-family: var(--naeil-chrome-font);
|
|
605
|
+
font-size: 16px;
|
|
606
|
+
font-weight: 500;
|
|
607
|
+
line-height: 24px;
|
|
608
|
+
letter-spacing: normal;
|
|
609
|
+
}
|
|
610
|
+
html:root [data-naeil-chrome][lang] [data-slot="dropdown-menu-label"] > .text-sm {
|
|
611
|
+
font-family: var(--naeil-chrome-font);
|
|
612
|
+
font-size: 14px;
|
|
613
|
+
font-weight: 400;
|
|
614
|
+
line-height: 20px;
|
|
615
|
+
letter-spacing: normal;
|
|
616
|
+
}
|
|
617
|
+
html:root [data-naeil-chrome][lang][data-app-toolbar] > [data-slot="button"]:first-child {
|
|
618
|
+
font-weight: 500;
|
|
619
|
+
line-height: 24px;
|
|
620
|
+
}
|
|
621
|
+
html:root [data-naeil-chrome][lang]:lang(ja),
|
|
622
|
+
html:root [data-naeil-locale-menu][lang] :lang(ja) {
|
|
623
|
+
--naeil-chrome-font: "Noto Sans JP", "Pretendard Variable", Pretendard, "Noto Sans JP", -apple-system, system-ui, sans-serif;
|
|
624
|
+
font-family: var(--naeil-chrome-font);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.naeil-header-brand-row {
|
|
628
|
+
display: flex;
|
|
629
|
+
align-items: center;
|
|
630
|
+
gap: 8px;
|
|
631
|
+
width: max-content;
|
|
632
|
+
}
|
|
633
|
+
html:root [data-naeil-chrome][lang] .naeil-header-brand-suffix {
|
|
634
|
+
font-family: var(--naeil-chrome-font);
|
|
635
|
+
margin-inline-start: 4px;
|
|
636
|
+
font-size: 14px;
|
|
637
|
+
font-weight: 400;
|
|
638
|
+
line-height: 21.875px;
|
|
639
|
+
letter-spacing: normal;
|
|
640
|
+
white-space: nowrap;
|
|
641
|
+
transform: translateY(1px);
|
|
642
|
+
}
|
|
643
|
+
@supports (text-box-trim: trim-both) {
|
|
644
|
+
html:root [data-naeil-chrome][lang] .naeil-header-brand-suffix {
|
|
645
|
+
font-family: var(--naeil-chrome-font);
|
|
646
|
+
text-box-trim: trim-both;
|
|
647
|
+
text-box-edge: cap alphabetic;
|
|
648
|
+
transform: none;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
|
|
539
652
|
@keyframes ui-reveal {
|
|
540
653
|
from {
|
|
541
654
|
opacity: 0;
|