@naeil/ui 0.3.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 CHANGED
@@ -1,6 +1,16 @@
1
1
  # Changelog
2
2
 
3
- ## 0.3.0 — 2026-10-02
3
+ ## 0.4.0 — brand 1.1.1 integration (2026-10-11)
4
+
5
+ - Connect Logo, default Nav/Footer and site login to the checksum-verified sunset/island brand kit; remove duplicated old marks.
6
+ - Preserve Logo size/className/mono and Nav brandSlot contracts. Add outlined lockup variants, grayscale tone, explicit/automatic themes and decorative accessibility support. Preserve the leading period in the official .naeil wordmark: an ending followed by tomorrow.
7
+ - Generate React artwork and site icons with build:brand; package/Storybook builds reject drift. Keep standalone SVG/PNG/icons separate from UI runtime and retain the Lato notice.
8
+ - Shared Pretendard typography, neutral tokens and existing public import paths remain unchanged. No npm publication or site deployment is implied.
9
+
10
+
11
+ ## 0.3.0 — scope frozen 2026-10-02; published 2026-10-03
12
+
13
+ Published to npm at `2026-10-03T04:14:17.028Z`; `latest` was verified as `0.3.0` that day. The [GitHub Release](https://github.com/naeil-dev/naeil-ui/releases/tag/v0.3.0), [registry/clean-consumer evidence](https://github.com/naeil-dev/naeil-ui/releases/download/v0.3.0/npm-publication-verification.json) and [Pages deployment](https://github.com/naeil-dev/naeil-ui/actions/runs/36963256014) record publication and live Docs separately from the earlier scope freeze.
4
14
 
5
15
  - Demand-led Radix Tabs and native Textarea with exact shared deep entries, standalone guides/Docs/Usage and packed behavior checks. Native field/radio composition remains consumer-owned; no FormField/RadioGroup API or dependency added.
6
16
 
@@ -11,7 +21,7 @@
11
21
  - Include CSS side-effect metadata, migration/design guidance and third-party notices/licenses. Verify isolated tarball consumers and add package/site/Storybook/browser CI.
12
22
  - Version-scoped installation and consumer font/theme/density guidance, plus a dispatch-only hosted Docs workflow. Hosted Docs and the brand website have separate deployment scopes; native/manual coverage is recorded separately from automated browser checks.
13
23
 
14
- This entry describes the 0.3.0 release scope; registry availability and tags are verified separately during publication. The historical registry baseline on 2026-10-02 was npm `latest` at `0.2.0`. Changes to the 0.x API boundary use a minor increment; there is no npm 2.0 release implied by UI v2.
24
+ This entry describes the 0.3.0 release scope frozen on 2026-10-02; publication on 2026-10-03 is recorded above without redating earlier implementation evidence. The historical registry baseline on 2026-10-02 was npm `latest` at `0.2.0`. Changes to the 0.x API boundary use a minor increment; there is no npm 2.0 release implied by UI v2.
15
25
 
16
26
  ## 0.2.0 — published 2026-03-22
17
27
 
package/DESIGN.md CHANGED
@@ -134,6 +134,14 @@ For application layout changes, compare affected routes side by side under the s
134
134
 
135
135
  The visual comparisons and implementation scope are accepted. Token generation, component behavior, packed consumption, and actual browser examples have been implemented and checked; see the verification report for results and limits.
136
136
 
137
+ ## Brand assets and shared components
138
+
139
+ The approved naeil sunset/island identity is managed independently under `brand/naeil/1.1.1/`. The standalone SVG/PNG/favicon kit is usable without React or this UI package. Its version is separate from the npm version; released brand directories are immutable. New artwork requires a new reviewed brand version. The official wordmark is `.naeil`; its leading period means an ending followed by tomorrow (historical decision: commit 2efb1b0, reaffirmed by the user on 2026-10-11). Keep the period in outlined lettering; standalone symbols need no extra dot.
140
+
141
+ The shared `Logo` is the React adapter for that source. `brand/current.json` selects the active release for generation, Storybook and consumer checks. `pnpm build:brand` generates `src/components/brand-artwork.generated.tsx`, the Lato notice and app-owned site icons from checksum-verified release files; do not hand-edit the generated artwork. `pnpm check:brand` checks drift and runs before package/Storybook builds. Nav, Footer and the website login use the shared Logo instead of maintaining inline copies. Consumer brand slots remain supported.
142
+
143
+ Lato Regular 400 is outlined lettering inside the logo only. It does not replace Pretendard, add a webfont dependency or turn the sunset palette into shared action tokens. Logo sizes and placement remain brand guidance, not numeric UI foundation tokens. See the [brand component contract](docs/design/v2-migration.md#brand-logo-integration-040) for themes, sizing, legacy mono behavior and accessibility. The standalone kit, research artifacts and high-resolution PNGs stay out of the npm package; generated artwork and the [Lato notice](licenses/Lato-OFL.txt) ship with the component. Brand names/marks are not relicensed by the repository MIT license.
144
+
137
145
  ## Historical design studies
138
146
 
139
147
  The sections below record prototype-stage decisions and checks as they occurred. Their references to pending production work describe that earlier stage; current implementation status is above.
package/README.md CHANGED
@@ -13,14 +13,14 @@ This repository also contains the **naeil.dev brand/example website** and an **o
13
13
 
14
14
  ## Use the UI
15
15
 
16
- This guide targets **@naeil/ui 0.3.0** with React 19 / ReactDOM 19 and Tailwind 4. UI v2 names the design generation, independently of npm versioning. Install the exact version in your app:
16
+ This guide targets **@naeil/ui 0.4.0** with React 19 / ReactDOM 19 and Tailwind 4. UI v2 names the design generation, independently of npm versioning. Install the exact version in your app:
17
17
 
18
18
  ```sh
19
- pnpm add --save-exact @naeil/ui@0.3.0
20
- # npm install --save-exact @naeil/ui@0.3.0
19
+ pnpm add --save-exact @naeil/ui@0.4.0
20
+ # npm install --save-exact @naeil/ui@0.4.0
21
21
  ```
22
22
 
23
- The command requires that version to be available in your registry. For source checkout validation before publication, use the local package workflow below. The [changelog](CHANGELOG.md) describes this version's changes; this guide does not assert the registry's current `latest` tag.
23
+ This source targets 0.4.0, which adds the approved `.naeil` brand 1.1.1. Registry availability and release evidence are recorded separately in the [release](https://github.com/naeil-dev/naeil-ui/releases/tag/v0.4.0). See the [changelog](CHANGELOG.md) and [brand usage](docs/design/v2-migration.md#brand-logo-integration-040); the local package workflow below works before publication.
24
24
 
25
25
  Import primitives from the dedicated entrypoint:
26
26
 
@@ -76,7 +76,7 @@ Storybook uses the actual public components with simulated example data. It need
76
76
  ```sh
77
77
  pnpm build:pkg
78
78
  pnpm pack --pack-destination /tmp
79
- # In your consumer app: pnpm add /tmp/naeil-ui-0.3.0.tgz
79
+ # In your consumer app: pnpm add /tmp/naeil-ui-0.4.0.tgz
80
80
  ```
81
81
 
82
82
  | Command | Purpose |
@@ -88,11 +88,11 @@ pnpm pack --pack-destination /tmp
88
88
  | `pnpm build:pkg` / `pnpm check:package` | Build package / inspect package boundary and independently install/build packed React + Next consumers |
89
89
  | `pnpm dev` / `pnpm build` | Brand/example website development / build |
90
90
 
91
- A [reusable React consumer example](https://github.com/naeil-dev/naeil-ui/blob/81fd395031dc5b20074c4d915a8585360ce2d28a/examples/react/README.md) shows a settings form. [Release policy](docs/package-release.md) and [changelog](CHANGELOG.md) distinguish implementation, publication and deployment. CI verifies the package and separate website/Storybook. Downloadable preview artifacts include notices and local fonts. The hosted Docs destination is [naeil-dev.github.io/naeil-ui](https://naeil-dev.github.io/naeil-ui/), configured for workflow builds and main-only deployment. See [Docs deployment status](https://github.com/naeil-dev/naeil-ui/actions/workflows/publish-docs-manual.yml); live availability is confirmed separately in [release evidence](https://github.com/naeil-dev/naeil-ui/releases) with deployment and hosted HTTP/navigation results. See [preview instructions](docs/package-release.md#storybook-preview-artifact) and [support limits](docs/design/public-ui-support.md).
91
+ A [reusable React consumer example](https://github.com/naeil-dev/naeil-ui/blob/81fd395031dc5b20074c4d915a8585360ce2d28a/examples/react/README.md) shows a settings form. [Release policy](docs/package-release.md) and [changelog](CHANGELOG.md) distinguish implementation, publication and deployment. CI verifies the package and separate website/Storybook. Downloadable preview artifacts include notices and local fonts. [Hosted Docs](https://naeil-dev.github.io/naeil-ui/) are live: the [2026-10-02 Pages run](https://github.com/naeil-dev/naeil-ui/actions/runs/36963256014) and [release evidence](https://github.com/naeil-dev/naeil-ui/releases/tag/v0.3.0) record deployment and hosted HTTP/navigation/font checks. See [preview instructions](docs/package-release.md#storybook-preview-artifact) and [support limits](docs/design/public-ui-support.md). Native/manual platform acceptance and adoption in a real consumer product remain open.
92
92
 
93
93
  Read [DESIGN.md](DESIGN.md) before shared UI changes. Numeric values live in `src/tokens/`; generated CSS is not edited by hand. Shared styles live in `src/styles/`, site-only styles in `src/app/`. Hero art, 3D scenes, cursor effects, and site content belong to the example website.
94
94
 
95
- [Documentation index](https://github.com/naeil-dev/naeil-ui/blob/81fd395031dc5b20074c4d915a8585360ce2d28a/docs/README.md) separates maintained guides from dated implementation/review evidence. Historical checks describe their recorded revision and scope; publishing, merging, and site deployment are separate actions.
95
+ [Documentation index](https://github.com/naeil-dev/naeil-ui/blob/04c5b8cce145a4c387763db6f28d29e62f7664c7/docs/README.md) separates maintained guides from dated implementation/review evidence. Historical checks describe their recorded revision and scope; publishing, merging, and site deployment are separate actions.
96
96
 
97
97
  ## Project and license
98
98
 
@@ -40,6 +40,8 @@ Storybook 10.4.6 also bundles Nunito Sans for its manager interface. The origina
40
40
 
41
41
  The site's `src/app/layout.tsx` separately requests JetBrains Mono via `next/font/google`; no copied font binary is tracked here. Before redistributing fetched site-build fonts, retain the original license/notice supplied with that font (https://github.com/JetBrains/JetBrainsMono). This audit did not inspect the fetched Google font binary/license and does not certify a deployed site's font-notice bundle. Prototype HTML uses external CDNs separately from packed UI styles.
42
42
 
43
+ The naeil brand wordmark uses outlined Lato Regular 400 from Google Fonts commit `bd8f81ddb5c74d5c8897b36ad88b440266245103`, `ofl/lato/Lato-Regular.ttf`. The exact [Lato OFL 1.1 notice](licenses/Lato-OFL.txt) accompanies generated artwork in the package and Storybook. The independent brand kit retains the original font and source hashes; the UI package does not redistribute a runtime Lato font. Logo graphics do not become OFL-licensed font software, and naeil brand rights are separate from repository code licensing.
44
+
43
45
  ## Dependencies and references
44
46
 
45
47
  Radix, Sonner, Lucide, React, Next.js and other npm dependencies carry licenses in their own distributions. They are not newly attributed as copied sources here; preserve their notices if bundling their code. DESIGN.md's Linear analysis is design reference material, not an official Linear specification or a component license. The optional workflow grants no blanket license to 21st catalog code; inspect each retrieved original before adoption.
@@ -1,6 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ThemeProvider as ThemeProvider$1 } from 'next-themes';
3
3
  import * as React$1 from 'react';
4
+ import { SVGProps } from 'react';
4
5
 
5
6
  interface NavProps {
6
7
  /** Internal Link component (from consumer's next-intl routing) */
@@ -9,11 +10,11 @@ interface NavProps {
9
10
  }>;
10
11
  /** Current pathname value (already resolved, not a hook) */
11
12
  usePathname: () => string;
12
- /** Where the .naeil logo links to. Default: "/" */
13
+ /** Where the naeil logo links to. Default: "/" */
13
14
  brandHref?: string;
14
15
  /** Whether brandHref is external (renders <a>) or internal (renders Link). Default: false */
15
16
  brandExternal?: boolean;
16
- /** Custom brand content (replaces default Logo + ".naeil" text) */
17
+ /** Custom brand content (replaces the default naeil wordmark lockup) */
17
18
  brandSlot?: React.ReactNode;
18
19
  /** When true, project links (except current) are rendered as external <a> to externalBaseUrl. Default: false */
19
20
  projectsExternal?: boolean;
@@ -70,11 +71,19 @@ declare function ThemeProvider({ children, ...props }: React.ComponentProps<type
70
71
 
71
72
  declare function ThemeToggleIcon(): react_jsx_runtime.JSX.Element;
72
73
 
73
- declare function Logo({ size, mono, className, }: {
74
+ interface LogoProps extends Omit<SVGProps<SVGSVGElement>, "children" | "width" | "height" | "viewBox"> {
75
+ /** Rendered height. Symbol stays square; lockups preserve their aspect ratio. */
74
76
  size?: number;
77
+ /** Legacy single-ink currentColor silhouette. Prefer tone="gray" for tonal detail. */
75
78
  mono?: boolean;
76
- className?: string;
77
- }): react_jsx_runtime.JSX.Element;
79
+ variant?: "symbol" | "horizontal" | "footer" | "stacked" | "wordmark";
80
+ tone?: "color" | "gray";
81
+ /** Auto follows the nearest .light/.dark or data-theme ancestor, then the OS. */
82
+ theme?: "auto" | "light" | "dark";
83
+ /** null marks a decorative logo; label the containing link instead. */
84
+ label?: string | null;
85
+ }
86
+ declare function Logo({ size, mono, variant, tone, theme, label, className, ...props }: LogoProps): react_jsx_runtime.JSX.Element;
78
87
 
79
88
  type HeadingProps = React$1.HTMLAttributes<HTMLHeadingElement> & {
80
89
  children: React$1.ReactNode;
@@ -84,4 +93,4 @@ declare const sectionTitleClass = "text-foreground text-xl font-semibold";
84
93
  declare function PageTitle({ className, children, ...props }: HeadingProps): react_jsx_runtime.JSX.Element;
85
94
  declare function SectionTitle({ className, children, ...props }: HeadingProps): react_jsx_runtime.JSX.Element;
86
95
 
87
- export { Footer, LocaleSwitcher, Logo, Nav, PageTitle, SectionTitle, ThemeProvider, ThemeToggle, ThemeToggleIcon, pageTitleClass, sectionTitleClass };
96
+ export { Footer, LocaleSwitcher, Logo, type LogoProps, Nav, PageTitle, SectionTitle, ThemeProvider, ThemeToggle, ThemeToggleIcon, pageTitleClass, sectionTitleClass };