@chitrank2050/monoline-ui 0.2.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/LICENSE +21 -0
- package/README.md +313 -0
- package/chunk-2T2JZW4Z.js +2 -0
- package/chunk-2T2JZW4Z.js.map +1 -0
- package/chunk-37JB3ZNS.js +2 -0
- package/chunk-37JB3ZNS.js.map +1 -0
- package/chunk-3F6Z4CFV.js +2 -0
- package/chunk-3F6Z4CFV.js.map +1 -0
- package/chunk-5TIKYN5B.js +2 -0
- package/chunk-5TIKYN5B.js.map +1 -0
- package/chunk-6AEWSPAE.js +2 -0
- package/chunk-6AEWSPAE.js.map +1 -0
- package/chunk-7ANXAXP5.js +2 -0
- package/chunk-7ANXAXP5.js.map +1 -0
- package/chunk-7SDVYBBO.js +2 -0
- package/chunk-7SDVYBBO.js.map +1 -0
- package/chunk-7WJF6B6G.js +2 -0
- package/chunk-7WJF6B6G.js.map +1 -0
- package/chunk-A2LXX23X.js +2 -0
- package/chunk-A2LXX23X.js.map +1 -0
- package/chunk-AACTIVV7.js +2 -0
- package/chunk-AACTIVV7.js.map +1 -0
- package/chunk-B5P3RAN2.js +2 -0
- package/chunk-B5P3RAN2.js.map +1 -0
- package/chunk-COFALEVG.js +2 -0
- package/chunk-COFALEVG.js.map +1 -0
- package/chunk-D3E4G2RE.js +2 -0
- package/chunk-D3E4G2RE.js.map +1 -0
- package/chunk-DJT3EVR4.js +2 -0
- package/chunk-DJT3EVR4.js.map +1 -0
- package/chunk-EWKGYQOX.js +2 -0
- package/chunk-EWKGYQOX.js.map +1 -0
- package/chunk-FLUGXF5D.js +2 -0
- package/chunk-FLUGXF5D.js.map +1 -0
- package/chunk-GSWZL5C2.js +2 -0
- package/chunk-GSWZL5C2.js.map +1 -0
- package/chunk-H2CRII7X.js +2 -0
- package/chunk-H2CRII7X.js.map +1 -0
- package/chunk-IVTAW6SX.js +3 -0
- package/chunk-IVTAW6SX.js.map +1 -0
- package/chunk-JBOP2AJB.js +2 -0
- package/chunk-JBOP2AJB.js.map +1 -0
- package/chunk-JCKPCV2H.js +2 -0
- package/chunk-JCKPCV2H.js.map +1 -0
- package/chunk-K665XZ3N.js +2 -0
- package/chunk-K665XZ3N.js.map +1 -0
- package/chunk-K72EORST.js +2 -0
- package/chunk-K72EORST.js.map +1 -0
- package/chunk-KGLH6WI6.js +2 -0
- package/chunk-KGLH6WI6.js.map +1 -0
- package/chunk-LVMQ3ZM3.js +2 -0
- package/chunk-LVMQ3ZM3.js.map +1 -0
- package/chunk-N37GMCSK.js +2 -0
- package/chunk-N37GMCSK.js.map +1 -0
- package/chunk-NDHOUIOX.js +2 -0
- package/chunk-NDHOUIOX.js.map +1 -0
- package/chunk-NDTTLW56.js +2 -0
- package/chunk-NDTTLW56.js.map +1 -0
- package/chunk-O43OQHFN.js +2 -0
- package/chunk-O43OQHFN.js.map +1 -0
- package/chunk-QGG3J7OW.js +2 -0
- package/chunk-QGG3J7OW.js.map +1 -0
- package/chunk-QUG36ONS.js +2 -0
- package/chunk-QUG36ONS.js.map +1 -0
- package/chunk-R2YSVBHS.js +2 -0
- package/chunk-R2YSVBHS.js.map +1 -0
- package/chunk-TSOHITZ7.js +2 -0
- package/chunk-TSOHITZ7.js.map +1 -0
- package/chunk-V6PUPMAY.js +3 -0
- package/chunk-V6PUPMAY.js.map +1 -0
- package/chunk-VSATIFOR.js +2 -0
- package/chunk-VSATIFOR.js.map +1 -0
- package/chunk-XEB7C557.js +2 -0
- package/chunk-XEB7C557.js.map +1 -0
- package/chunk-Z7SIB4X6.js +2 -0
- package/chunk-Z7SIB4X6.js.map +1 -0
- package/chunk-ZOPV3BXO.js +2 -0
- package/chunk-ZOPV3BXO.js.map +1 -0
- package/chunk-ZU3HIOBU.js +2 -0
- package/chunk-ZU3HIOBU.js.map +1 -0
- package/components/action-rail/index.d.ts +18 -0
- package/components/action-rail/index.js +2 -0
- package/components/action-rail/index.js.map +1 -0
- package/components/avatar/avatar.css +47 -0
- package/components/avatar/index.d.ts +28 -0
- package/components/avatar/index.js +2 -0
- package/components/avatar/index.js.map +1 -0
- package/components/back-link/back-link.css +30 -0
- package/components/back-link/index.d.ts +18 -0
- package/components/back-link/index.js +2 -0
- package/components/back-link/index.js.map +1 -0
- package/components/badge/badge.css +27 -0
- package/components/badge/index.d.ts +26 -0
- package/components/badge/index.js +2 -0
- package/components/badge/index.js.map +1 -0
- package/components/button/button.css +238 -0
- package/components/button/index.d.ts +36 -0
- package/components/button/index.js +2 -0
- package/components/button/index.js.map +1 -0
- package/components/callout/callout.css +20 -0
- package/components/callout/index.d.ts +20 -0
- package/components/callout/index.js +2 -0
- package/components/callout/index.js.map +1 -0
- package/components/card/card.css +166 -0
- package/components/card/index.d.ts +112 -0
- package/components/card/index.js +2 -0
- package/components/card/index.js.map +1 -0
- package/components/code-block/code-block.css +23 -0
- package/components/code-block/index.d.ts +21 -0
- package/components/code-block/index.js +2 -0
- package/components/code-block/index.js.map +1 -0
- package/components/command-search/command-search.css +217 -0
- package/components/command-search/index.d.ts +73 -0
- package/components/command-search/index.js +2 -0
- package/components/command-search/index.js.map +1 -0
- package/components/container/container.css +41 -0
- package/components/container/index.d.ts +11 -0
- package/components/container/index.js +2 -0
- package/components/container/index.js.map +1 -0
- package/components/data-list/data-list.css +139 -0
- package/components/data-list/index.d.ts +45 -0
- package/components/data-list/index.js +2 -0
- package/components/data-list/index.js.map +1 -0
- package/components/editorial-line/index.d.ts +24 -0
- package/components/editorial-line/index.js +2 -0
- package/components/editorial-line/index.js.map +1 -0
- package/components/eyebrow/eyebrow.css +13 -0
- package/components/eyebrow/index.d.ts +17 -0
- package/components/eyebrow/index.js +2 -0
- package/components/eyebrow/index.js.map +1 -0
- package/components/footer/footer.css +201 -0
- package/components/footer/index.d.ts +66 -0
- package/components/footer/index.js +2 -0
- package/components/footer/index.js.map +1 -0
- package/components/input/index.d.ts +28 -0
- package/components/input/index.js +2 -0
- package/components/input/index.js.map +1 -0
- package/components/input/input.css +37 -0
- package/components/link-list/index.d.ts +47 -0
- package/components/link-list/index.js +2 -0
- package/components/link-list/index.js.map +1 -0
- package/components/link-list/link-list.css +208 -0
- package/components/media-frame/index.d.ts +31 -0
- package/components/media-frame/index.js +2 -0
- package/components/media-frame/index.js.map +1 -0
- package/components/media-frame/media-frame.css +86 -0
- package/components/meta-row/index.d.ts +22 -0
- package/components/meta-row/index.js +2 -0
- package/components/meta-row/index.js.map +1 -0
- package/components/metric/index.d.ts +22 -0
- package/components/metric/index.js +2 -0
- package/components/metric/index.js.map +1 -0
- package/components/navbar/index.d.ts +78 -0
- package/components/navbar/index.js +2 -0
- package/components/navbar/index.js.map +1 -0
- package/components/navbar/navbar.css +245 -0
- package/components/progress/index.d.ts +20 -0
- package/components/progress/index.js +2 -0
- package/components/progress/index.js.map +1 -0
- package/components/progress/progress.css +31 -0
- package/components/pull-quote/index.d.ts +18 -0
- package/components/pull-quote/index.js +2 -0
- package/components/pull-quote/index.js.map +1 -0
- package/components/rail/index.d.ts +28 -0
- package/components/rail/index.js +2 -0
- package/components/rail/index.js.map +1 -0
- package/components/rail/rail.css +118 -0
- package/components/resources-panel/index.d.ts +42 -0
- package/components/resources-panel/index.js +2 -0
- package/components/resources-panel/index.js.map +1 -0
- package/components/resources-panel/resources-panel.css +396 -0
- package/components/section-head/index.d.ts +24 -0
- package/components/section-head/index.js +2 -0
- package/components/section-head/index.js.map +1 -0
- package/components/segmented-control/index.d.ts +28 -0
- package/components/segmented-control/index.js +2 -0
- package/components/segmented-control/index.js.map +1 -0
- package/components/segmented-control/segmented-control.css +177 -0
- package/components/select/index.d.ts +65 -0
- package/components/select/index.js +2 -0
- package/components/select/index.js.map +1 -0
- package/components/select/select.css +298 -0
- package/components/skeleton/index.d.ts +19 -0
- package/components/skeleton/index.js +2 -0
- package/components/skeleton/index.js.map +1 -0
- package/components/skeleton/skeleton.css +13 -0
- package/components/status/index.d.ts +20 -0
- package/components/status/index.js +2 -0
- package/components/status/index.js.map +1 -0
- package/components/status/status.css +86 -0
- package/components/tag/index.d.ts +35 -0
- package/components/tag/index.js +2 -0
- package/components/tag/index.js.map +1 -0
- package/components/tag/tag.css +10 -0
- package/components/testimonial/index.d.ts +30 -0
- package/components/testimonial/index.js +2 -0
- package/components/testimonial/index.js.map +1 -0
- package/components/testimonial/testimonial.css +109 -0
- package/components/testimonial-grid/index.d.ts +12 -0
- package/components/testimonial-grid/index.js +2 -0
- package/components/testimonial-grid/index.js.map +1 -0
- package/components/testimonial-grid/testimonial-grid.css +58 -0
- package/components/theme-switcher/index.d.ts +24 -0
- package/components/theme-switcher/index.js +2 -0
- package/components/theme-switcher/index.js.map +1 -0
- package/components/theme-switcher/theme-switcher.css +130 -0
- package/components/toast/index.d.ts +20 -0
- package/components/toast/index.js +2 -0
- package/components/toast/index.js.map +1 -0
- package/components/toast/toast.css +22 -0
- package/components/toc/index.d.ts +27 -0
- package/components/toc/index.js +2 -0
- package/components/toc/index.js.map +1 -0
- package/components/toggle/index.d.ts +20 -0
- package/components/toggle/index.js +2 -0
- package/components/toggle/index.js.map +1 -0
- package/components/toggle/toggle.css +108 -0
- package/foundations/breakpoints.d.ts +12 -0
- package/foundations/breakpoints.js +2 -0
- package/foundations/breakpoints.js.map +1 -0
- package/foundations/use-breakpoint.d.ts +5 -0
- package/foundations/use-breakpoint.js +3 -0
- package/foundations/use-breakpoint.js.map +1 -0
- package/index.d.ts +42 -0
- package/index.js +2 -0
- package/index.js.map +1 -0
- package/lib/utils.d.ts +7 -0
- package/lib/utils.js +2 -0
- package/lib/utils.js.map +1 -0
- package/package.json +228 -0
- package/styles/theme/animations.css +206 -0
- package/styles/theme/base.css +75 -0
- package/styles/theme/tailwind.css +371 -0
- package/styles/theme/tokens.css +562 -0
- package/styles/theme/typography.css +108 -0
- package/styles/theme/utilities.css +281 -0
- package/styles/theme.css +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Chitrank Agnihotri
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./assets/logo_stroke.png" alt="monoline-ui logo" width="200" height="auto" style="background: #000; padding: 24px; border-radius: 32px;" />
|
|
3
|
+
<br/>
|
|
4
|
+
<br/>
|
|
5
|
+
<h1>monoline-ui</h1>
|
|
6
|
+
|
|
7
|
+
<p>A monochrome-first, layout-focused React component library.<br/>
|
|
8
|
+
Zero dark-mode gymnastics. Built for React 19, Next.js App Router, and Tailwind CSS v4.</p>
|
|
9
|
+
|
|
10
|
+
<p>
|
|
11
|
+
<a href="https://www.npmjs.com/package/@chitrank2050/monoline-ui">
|
|
12
|
+
<img src="https://img.shields.io/npm/v/@chitrank2050/monoline-ui" alt="npm" />
|
|
13
|
+
</a>
|
|
14
|
+
<a href="https://jsr.io/@chitrank2050/monoline-ui">
|
|
15
|
+
<img src="https://jsr.io/badges/@chitrank2050/monoline-ui" alt="JSR" />
|
|
16
|
+
</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p>
|
|
20
|
+
<a href="https://github.com/chitranklabs/monoline-ui/actions/workflows/ci.yml">
|
|
21
|
+
<img src="https://img.shields.io/github/actions/workflow/status/chitranklabs/monoline-ui/ci.yml?branch=main&style=flat-square" alt="CI Status" />
|
|
22
|
+
</a>
|
|
23
|
+
<a href="https://bestpractices.coreinfrastructure.org/projects/1">
|
|
24
|
+
<img src="https://bestpractices.coreinfrastructure.org/projects/1/badge" alt="OpenSSF Best Practices" />
|
|
25
|
+
</a>
|
|
26
|
+
<a href="https://github.com/chitranklabs/monoline-ui/actions/workflows/scorecard.yml">
|
|
27
|
+
<img src="https://github.com/chitranklabs/monoline-ui/actions/workflows/scorecard.yml/badge.svg" alt="Scorecard Status" />
|
|
28
|
+
</a>
|
|
29
|
+
<a href="https://scorecard.dev/viewer/?uri=github.com/chitranklabs/monoline-ui">
|
|
30
|
+
<img src="https://api.scorecard.dev/projects/github.com/chitranklabs/monoline-ui/badge" alt="OpenSSF Scorecard" />
|
|
31
|
+
</a>
|
|
32
|
+
<a href="https://github.com/gitleaks/gitleaks">
|
|
33
|
+
<img src="https://img.shields.io/badge/Security-Gitleaks-brightgreen?logo=gitleaks" alt="Security: Gitleaks" />
|
|
34
|
+
</a>
|
|
35
|
+
<a href="https://github.com/chitranklabs/monoline-ui/attestations">
|
|
36
|
+
<img src="https://img.shields.io/badge/SLSA-Level_3-blue?logo=slsa" alt="SLSA Level 3" />
|
|
37
|
+
</a>
|
|
38
|
+
<a href="./LICENSE">
|
|
39
|
+
<img src="https://img.shields.io/github/license/chitranklabs/monoline-ui" alt="License" />
|
|
40
|
+
</a>
|
|
41
|
+
</p>
|
|
42
|
+
|
|
43
|
+
<a href="https://ko-fi.com/D1D71U581P" target="_blank">
|
|
44
|
+
<img src="https://ko-fi.com/img/githubbutton_sm.svg" alt="Buy me a coffee at ko-fi.com" />
|
|
45
|
+
</a>
|
|
46
|
+
|
|
47
|
+
<br/>
|
|
48
|
+
<br/>
|
|
49
|
+
|
|
50
|
+
[Features](#features) • [Quick Start](#quick-start) • [Architecture](#architecture) • [Setup](#setup--integration) • [Contributing](#contributing)
|
|
51
|
+
|
|
52
|
+
<br/>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
Monoline UI is a component library for developer sites, editorial interfaces, and documentation playgrounds where layout precision matters more than color variety. Every component ships monochrome by default - no dark-mode class gymnastics, no color-token sprawl.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Why Monoline UI
|
|
60
|
+
|
|
61
|
+
> [!TIP]
|
|
62
|
+
> Most UI libraries are built around color themes. Monoline is built around **layout**. If you're building a portfolio, a docs site, or an editorial UI, you don't need 40 color scales - you need components that compose cleanly, render on the server, and ship zero client JavaScript unless you ask for it.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Features <a id="features"></a>
|
|
67
|
+
|
|
68
|
+
| Feature | Description |
|
|
69
|
+
| :------------------------ | :---------------------------------------------------------------------- |
|
|
70
|
+
| ⚫ **Monochrome-first** | Zero dark-mode overhead. One set of tokens, works everywhere. |
|
|
71
|
+
| 🚀 **RSC-native** | All compound components are Server Components by default. |
|
|
72
|
+
| ⚡ **0kb client JS** | Static layouts hydrate nothing. Client code is opt-in per subcomponent. |
|
|
73
|
+
| 🔗 **Link polymorphism** | Three-level routing control: global, per-link, and `asChild`. |
|
|
74
|
+
| 🌲 **Tree-shakeable ESM** | Import only the components you use. No barrel-file bloat. |
|
|
75
|
+
| 🎛️ **Token-driven** | Customize spacing, scale, and type via CSS custom properties. |
|
|
76
|
+
| 📦 **37+ components** | From `Avatar` to `Toc` - layout primitives for real projects. |
|
|
77
|
+
| 🌊 **Tailwind CSS v4** | First-class `@source` scanning - only used utilities ship. |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Quick Start <a id="quick-start"></a>
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pnpm add @chitrank2050/monoline-ui
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
import { Footer } from "@chitrank2050/monoline-ui/footer"
|
|
89
|
+
import "@chitrank2050/monoline-ui/theme.css"
|
|
90
|
+
|
|
91
|
+
export default function Page() {
|
|
92
|
+
return (
|
|
93
|
+
<Footer size="md">
|
|
94
|
+
<Footer.Status>Available for contracts</Footer.Status>
|
|
95
|
+
<Footer.Subscribe action={subscribeAction} />
|
|
96
|
+
</Footer>
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Documentation & Links
|
|
104
|
+
|
|
105
|
+
| Resource | URL |
|
|
106
|
+
| :------------- | :----------------------------------------------------------------------------------------------------- |
|
|
107
|
+
| **npm** | [npmjs.com/package/@chitrank2050/monoline-ui](https://www.npmjs.com/package/@chitrank2050/monoline-ui) |
|
|
108
|
+
| **Repository** | [github.com/chitranklabs/monoline-ui](https://github.com/chitranklabs/monoline-ui) |
|
|
109
|
+
| **Changelog** | [CHANGELOG.md](./CHANGELOG.md) |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Tech Stack
|
|
114
|
+
|
|
115
|
+
| Layer | Technology | Version |
|
|
116
|
+
| :------------------ | :--------------------- | :---------- |
|
|
117
|
+
| **Runtime** | Node.js | `>=22.14.0` |
|
|
118
|
+
| **Package Manager** | pnpm | `11.8.0` |
|
|
119
|
+
| **Framework** | Next.js (App Router) | `^16` |
|
|
120
|
+
| **UI Runtime** | React | `^19` |
|
|
121
|
+
| **Compiler** | TypeScript | `^6.0` |
|
|
122
|
+
| **Styling** | Tailwind CSS + PostCSS | `^4` |
|
|
123
|
+
| **Bundler** | tsup (ESM) | `^8` |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Technical Specification
|
|
128
|
+
|
|
129
|
+
- **Module format**: ESM-only (`"type": "module"`)
|
|
130
|
+
- **Target**: ES2022 / Bundler module resolution
|
|
131
|
+
- **Peer dependencies**: `react ^19`, `next ^16`, `tailwindcss ^4`
|
|
132
|
+
- **Runtime dependencies**:
|
|
133
|
+
- `@radix-ui/react-slot` - polymorphic render delegation (0kb when static)
|
|
134
|
+
- `clsx` + `tailwind-merge` - class composition
|
|
135
|
+
- **Performance invariant**: Static server-rendered layouts ship **0kb hydration overhead**
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Architecture <a id="architecture"></a>
|
|
140
|
+
|
|
141
|
+
```mermaid
|
|
142
|
+
graph TD
|
|
143
|
+
A[Consumer App] -->|import| B["@chitrank2050/monoline-ui"]
|
|
144
|
+
B --> C["RSC Components (Server)"]
|
|
145
|
+
B --> D["Interactive Subcomponents (Client)"]
|
|
146
|
+
C --> E["CSS Foundations / Token Layer"]
|
|
147
|
+
D --> E
|
|
148
|
+
F["Tailwind v4 @source scan"] --> B
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Flat single-package architecture** - no workspace sync, no symlink resolution overhead.
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
monoline-ui/
|
|
155
|
+
├── app/ ← Next.js playground & documentation
|
|
156
|
+
├── src/
|
|
157
|
+
│ ├── components/ ← 37+ UI components (Avatar, Button, Footer…)
|
|
158
|
+
│ └── foundations/ ← CSS layers, design tokens, breakpoints
|
|
159
|
+
├── scripts/
|
|
160
|
+
│ └── build-lib.mjs ← ESM bundling script
|
|
161
|
+
├── package.json
|
|
162
|
+
└── tsconfig.json
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
> [!IMPORTANT]
|
|
166
|
+
> `/app` and `/src` coexist in a single package. The playground and the library share the same `package.json` - no monorepo overhead.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Setup & Integration
|
|
171
|
+
|
|
172
|
+
### 1. Tailwind CSS v4
|
|
173
|
+
|
|
174
|
+
In your root stylesheet, point Tailwind's compiler at the compiled Monoline outputs so only used utilities ship:
|
|
175
|
+
|
|
176
|
+
```css
|
|
177
|
+
@import "tailwindcss";
|
|
178
|
+
|
|
179
|
+
/* Scan compiled outputs - only used utilities ship */
|
|
180
|
+
@source "node_modules/@chitrank2050/monoline-ui/dist/**/*.{js,mjs}";
|
|
181
|
+
|
|
182
|
+
/* Design tokens and CSS custom properties */
|
|
183
|
+
@import "@chitrank2050/monoline-ui/theme.css";
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### 2. Composable Dot-Notation (RSC)
|
|
189
|
+
|
|
190
|
+
> [!IMPORTANT]
|
|
191
|
+
> Compound components are **Server Components by default**. Client interactivity is scoped to specific subcomponents - static layouts pay zero hydration cost.
|
|
192
|
+
|
|
193
|
+
```tsx
|
|
194
|
+
import { Footer } from "@chitrank2050/monoline-ui/footer"
|
|
195
|
+
|
|
196
|
+
export default function MyFooter() {
|
|
197
|
+
return (
|
|
198
|
+
<Footer size="md">
|
|
199
|
+
<Footer.Status>Available for contracts</Footer.Status>
|
|
200
|
+
<Footer.Subscribe action={subscribeFormAction} />
|
|
201
|
+
</Footer>
|
|
202
|
+
)
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
### 3. React 19 Server Actions
|
|
209
|
+
|
|
210
|
+
Pass a standard async Server Action to the `action` prop. No client JavaScript required:
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
// app/actions.ts
|
|
214
|
+
"use server"
|
|
215
|
+
|
|
216
|
+
export async function subscribeFormAction(formData: FormData) {
|
|
217
|
+
const email = formData.get("email")
|
|
218
|
+
await db.newsletter.create({ data: { email } })
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### 4. Link Polymorphism
|
|
225
|
+
|
|
226
|
+
Monoline supports three levels of client-router control:
|
|
227
|
+
|
|
228
|
+
**A. Global** - pass your router's `Link` once to override all internal links:
|
|
229
|
+
|
|
230
|
+
```tsx
|
|
231
|
+
import Link from "next/link"
|
|
232
|
+
|
|
233
|
+
;<Footer linkComponent={Link} columns={myColumns} />
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**B. Per-link** - override individual links in the config array:
|
|
237
|
+
|
|
238
|
+
```tsx
|
|
239
|
+
import Link from "next/link"
|
|
240
|
+
|
|
241
|
+
const columns = [
|
|
242
|
+
{
|
|
243
|
+
title: "Navigate",
|
|
244
|
+
links: [
|
|
245
|
+
{ label: "Blog", href: "/blog", as: Link },
|
|
246
|
+
{ label: "Twitter", href: "https://x.com", external: true },
|
|
247
|
+
],
|
|
248
|
+
},
|
|
249
|
+
]
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**C. `asChild`** - composable override using the Radix slot pattern:
|
|
253
|
+
|
|
254
|
+
```tsx
|
|
255
|
+
import Link from "next/link"
|
|
256
|
+
|
|
257
|
+
;<Footer.Link asChild>
|
|
258
|
+
<Link href="/about">About</Link>
|
|
259
|
+
</Footer.Link>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Development Commands
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
pnpm install # Install dependencies
|
|
268
|
+
pnpm dev # Launch Next.js dev server (HMR)
|
|
269
|
+
pnpm build # Build the Next.js playground
|
|
270
|
+
pnpm build:lib # Bundle the component library into /dist
|
|
271
|
+
pnpm build:all # Both builds in sequence
|
|
272
|
+
pnpm test # Run Vitest test suite
|
|
273
|
+
pnpm typecheck # TypeScript type check (no emit)
|
|
274
|
+
pnpm lint # ESLint + Markdownlint
|
|
275
|
+
pnpm format # Prettier
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Release Process
|
|
281
|
+
|
|
282
|
+
Monoline uses a two-phase release pipeline powered by **[git-hygiene](https://github.com/chitranklabs/git-hygiene)**:
|
|
283
|
+
|
|
284
|
+
1. **Prepare** - run the `Release 1 - Prepare PR` workflow. Bumps the version, updates `CHANGELOG.md`, opens a PR.
|
|
285
|
+
2. **Finalize** - merge the PR. `Release 2 - Finalize Tag` tags the release, creates a GitHub Release, and publishes to npm.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Contributing <a id="contributing"></a>
|
|
290
|
+
|
|
291
|
+
Contributions are welcome. Please read the [Contributing Guide](./CONTRIBUTING.md) before opening a PR. All commits are validated by [git-hygiene](https://github.com/chitranklabs/git-hygiene) and must follow the [Conventional Commits](https://www.conventionalcommits.org) spec.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Community & Support
|
|
296
|
+
|
|
297
|
+
- **Security**: See [SECURITY.md](./SECURITY.md) for reporting vulnerabilities.
|
|
298
|
+
- **Conduct**: We follow the [Contributor Covenant](./CODE_OF_CONDUCT.md).
|
|
299
|
+
- **Support**: If you use Monoline UI in your project, a star or credit is appreciated. ✨
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Security & Quality
|
|
304
|
+
|
|
305
|
+
- **Secret Scanning**: Gitleaks prevents credential leaks in every commit.
|
|
306
|
+
- **Workflow Auditing**: Zizmor ensures GitHub Actions follow security best practices.
|
|
307
|
+
- **Supply Chain**: All GitHub Actions are pinned to secure commit SHAs.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
<p align="center">
|
|
312
|
+
Developed with ❤️ by <b><a href="https://www.chitrankagnihotri.com">Chitrank Agnihotri</a></b>
|
|
313
|
+
</p>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function b(s){return s.external??/^(https?:|mailto:|tel:)/.test(s.href??"")}function P(s){return `${s} total ${s===1?"resource":"resources"}`}function H({kind:s="external"}){return jsxs("svg",{"aria-hidden":"true",className:"ml-resources-panel__icon-svg",viewBox:"0 0 16 16",children:[s==="live"?jsxs(Fragment,{children:[jsx("path",{d:"M3 8h9"}),jsx("path",{d:"m9 5 3 3-3 3"})]}):null,s==="source"?jsxs(Fragment,{children:[jsx("path",{d:"m6 5-3 3 3 3"}),jsx("path",{d:"m10 5 3 3-3 3"})]}):null,s==="npm"?jsxs(Fragment,{children:[jsx("rect",{x:"2.75",y:"3",width:"10.5",height:"10",rx:"1.25"}),jsx("path",{d:"M6 10V6h4v4"}),jsx("path",{d:"M8 10V6"})]}):null,s==="docs"?jsxs(Fragment,{children:[jsx("path",{d:"M4 2.75h5.25L12 5.5v7.75H4z"}),jsx("path",{d:"M9.25 2.75V5.5H12"}),jsx("path",{d:"M6 8h4"}),jsx("path",{d:"M6 10.25h4"})]}):null,s==="changelog"?jsxs(Fragment,{children:[jsx("path",{d:"M5.25 4.5h7"}),jsx("path",{d:"M5.25 8h7"}),jsx("path",{d:"M5.25 11.5h5"}),jsx("path",{d:"M3 4.5h.01"}),jsx("path",{d:"M3 8h.01"}),jsx("path",{d:"M3 11.5h.01"})]}):null,s==="figma"?jsxs(Fragment,{children:[jsx("path",{d:"M5.5 2.75h2.75v3H5.5a1.5 1.5 0 0 1 0-3Z"}),jsx("path",{d:"M8.25 2.75H11a1.5 1.5 0 0 1 0 3H8.25Z"}),jsx("path",{d:"M5.5 5.75h2.75v3H5.5a1.5 1.5 0 0 1 0-3Z"}),jsx("path",{d:"M8.25 5.75H11a1.5 1.5 0 1 1-1.5 1.5"}),jsx("path",{d:"M5.5 8.75h2.75v1.5a1.5 1.5 0 1 1-1.5-1.5"})]}):null,s==="video"?jsxs(Fragment,{children:[jsx("rect",{x:"2.75",y:"4",width:"10.5",height:"8",rx:"1.25"}),jsx("path",{d:"m7 6.5 3 1.5-3 1.5z"})]}):null,s==="paper"?jsxs(Fragment,{children:[jsx("path",{d:"M4.25 2.75h5.5l2 2v8.5h-7.5z"}),jsx("path",{d:"M6.25 7h3.5"}),jsx("path",{d:"M6.25 9.25h3.5"}),jsx("path",{d:"M6.25 11.5h2.5"})]}):null,s==="external"?jsxs(Fragment,{children:[jsx("circle",{cx:"8",cy:"8",r:"4.75"}),jsx("path",{d:"M8 5.25v5.5"}),jsx("path",{d:"M5.25 8h5.5"})]}):null]})}function m({className:s,size:_="md",title:f,meta:n,items:o,footer:t,footerLabel:M,children:i,linkComponent:v,ref:g,...N}){let p=t===null?null:t??M??P(o.length),R=f??"Resources";return jsxs("aside",{ref:g,"data-slot":"resources-panel","data-size":_,className:a("ml-resources-panel",s),...N,children:[jsxs("header",{className:"ml-resources-panel__header",children:[jsx("span",{className:"ml-resources-panel__title",children:R}),n?jsx("span",{className:"ml-resources-panel__meta",children:n}):null]}),i??jsx("ul",{className:"ml-resources-panel__list",children:o.map((a,c)=>{let h=b(a),x=a.as??v??"a",y=typeof a.label=="string"?`${a.label}-${c}`:`${a.href??a.kind??"resource"}-${c}`,u=jsxs(Fragment,{children:[jsx("span",{className:"ml-resources-panel__icon",children:a.icon??jsx(H,{kind:a.kind})}),jsxs("span",{className:"ml-resources-panel__content",children:[jsxs("span",{className:"ml-resources-panel__label",children:[a.label,a.badge?jsx("span",{className:"ml-resources-panel__badge",children:a.badge}):null]}),a.host||a.meta?jsxs("span",{className:"ml-resources-panel__host",children:[a.host,a.host&&a.meta?" \xB7 ":null,a.meta]}):null]}),a.href?jsx("span",{className:"ml-resources-panel__arrow","aria-hidden":"true",children:"\u2197"}):null]});return jsx("li",{className:"ml-resources-panel__row",children:a.href?jsx(x,{href:a.href,target:a.target??(h?"_blank":void 0),rel:a.rel??(h?"noopener noreferrer":void 0),className:"ml-resources-panel__item","data-primary":a.primary||void 0,children:u}):jsx("div",{className:"ml-resources-panel__item","data-primary":a.primary||void 0,"data-disabled":"true",children:u})},y)})}),p?jsx("footer",{className:"ml-resources-panel__footer",children:p}):null]})}var I=m;export{m as a,I as b};//# sourceMappingURL=chunk-2T2JZW4Z.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-2T2JZW4Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/resources-panel/root.tsx","../src/components/resources-panel/index.ts"],"names":["isExternalHref","item","getDefaultFooterLabel","count","ResourceIcon","kind","jsxs","Fragment","jsx","ResourcesPanelRoot","className","size","title","meta","items","footer","footerLabel","children","linkComponent","ref","props","resolvedFooter","resolvedTitle","cn","index","external","LinkComp","key","content","ResourcesPanel"],"mappings":"sFAOA,SAASA,CAAAA,CAAeC,CAAAA,CAA0B,CACjD,OAAOA,CAAAA,CAAK,UAAY,yBAAA,CAA0B,IAAA,CAAKA,CAAAA,CAAK,IAAA,EAAQ,EAAE,CACvE,CAEA,SAASC,EAAsBC,CAAAA,CAAe,CAC7C,OAAO,CAAA,EAAGA,CAAK,CAAA,OAAA,EAAUA,CAAAA,GAAU,CAAA,CAAI,WAAa,WAAW,CAAA,CAChE,CAEA,SAASC,CAAAA,CAAa,CAAE,IAAA,CAAAC,CAAAA,CAAO,UAAW,CAAA,CAAkC,CAC3E,OACCC,IAAAA,CAAC,KAAA,CAAA,CACA,aAAA,CAAY,MAAA,CACZ,SAAA,CAAU,+BACV,OAAA,CAAQ,WAAA,CAEP,QAAA,CAAA,CAAAD,CAAAA,GAAS,MAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,UAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,QAAA,CAAS,CAAA,CACjBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAe,CAAA,CAAA,CACxB,CAAA,CACG,IAAA,CACHH,CAAAA,GAAS,QAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,eAAA,CAAgB,CAAA,CAAA,CACzB,CAAA,CACG,IAAA,CACHH,CAAAA,GAAS,KAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,OAAO,MAAA,CAAO,IAAA,CAAK,EAAA,CAAG,MAAA,CAAO,CAAA,CACxDA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAc,CAAA,CACtBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,SAAA,CAAU,CAAA,CAAA,CACnB,CAAA,CACG,IAAA,CACHH,IAAS,MAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,8BAA8B,CAAA,CACtCA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,mBAAA,CAAoB,CAAA,CAC5BA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,QAAA,CAAS,CAAA,CACjBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CAAA,CACtB,CAAA,CACG,IAAA,CACHH,CAAAA,GAAS,WAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,QAAK,CAAA,CAAE,aAAA,CAAc,CAAA,CACtBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CACpBA,IAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,EACrBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAc,CAAA,CAAA,CACvB,CAAA,CACG,IAAA,CACHH,CAAAA,GAAS,OAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,UAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,yCAAA,CAA0C,CAAA,CAClDA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,wCAAwC,CAAA,CAChDA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,yCAAA,CAA0C,CAAA,CAClDA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,qCAAA,CAAsC,CAAA,CAC9CA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,0CAAA,CAA2C,CAAA,CAAA,CACpD,CAAA,CACG,KACHH,CAAAA,GAAS,OAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,EAAA,CAAG,OAAO,CAAA,CACvDA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,qBAAA,CAAsB,CAAA,CAAA,CAC/B,CAAA,CACG,IAAA,CACHH,IAAS,OAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,+BAA+B,CAAA,CACvCA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,aAAA,CAAc,CAAA,CACtBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,gBAAA,CAAiB,CAAA,CACzBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAAA,CAC1B,CAAA,CACG,KACHH,CAAAA,GAAS,UAAA,CACTC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,QAAA,CAAA,CAAO,GAAG,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,CAAA,CAAE,MAAA,CAAO,CAAA,CAC/BA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,aAAA,CAAc,CAAA,CACtBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,aAAA,CAAc,CAAA,CAAA,CACvB,EACG,IAAA,CAAA,CACL,CAEF,CAEO,SAASC,CAAAA,CAAmB,CAClC,SAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CAAO,IAAA,CACP,KAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,OAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,EACA,GAAGC,CACJ,CAAA,CAA4C,CAC3C,IAAMC,CAAAA,CACLN,CAAAA,GAAW,IAAA,CACR,KACCA,CAAAA,EAAUC,CAAAA,EAAed,CAAAA,CAAsBY,CAAAA,CAAM,MAAM,CAAA,CAC1DQ,CAAAA,CAAgBV,CAAAA,EAAS,YAE/B,OACCN,IAAAA,CAAC,OAAA,CAAA,CACA,GAAA,CAAKa,CAAAA,CACL,WAAA,CAAU,iBAAA,CACV,WAAA,CAAWR,EACX,SAAA,CAAWY,CAAAA,CAAG,oBAAA,CAAsBb,CAAS,CAAA,CAC5C,GAAGU,CAAAA,CAEJ,QAAA,CAAA,CAAAd,KAAC,QAAA,CAAA,CAAO,SAAA,CAAU,4BAAA,CACjB,QAAA,CAAA,CAAAE,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,2BAAA,CAA6B,SAAAc,CAAAA,CAAc,CAAA,CAC1DT,CAAAA,CAAOL,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0BAAA,CAA4B,QAAA,CAAAK,EAAK,CAAA,CAAU,IAAA,CAAA,CACpE,CAAA,CACCI,CAAAA,EACAT,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,0BAAA,CACZ,SAAAM,CAAAA,CAAM,GAAA,CAAI,CAACb,CAAAA,CAAMuB,CAAAA,GAAU,CAC3B,IAAMC,CAAAA,CAAWzB,EAAeC,CAAI,CAAA,CAC9ByB,CAAAA,CAAWzB,CAAAA,CAAK,EAAA,EAAMiB,CAAAA,EAAiB,GAAA,CACvCS,CAAAA,CACL,OAAO1B,CAAAA,CAAK,KAAA,EAAU,QAAA,CACnB,CAAA,EAAGA,CAAAA,CAAK,KAAK,CAAA,CAAA,EAAIuB,CAAK,GACtB,CAAA,EAAGvB,CAAAA,CAAK,IAAA,EAAQA,CAAAA,CAAK,IAAA,EAAQ,UAAU,CAAA,CAAA,EAAIuB,CAAK,GAC9CI,CAAAA,CACLtB,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0BAAA,CACd,QAAA,CAAAP,CAAAA,CAAK,IAAA,EAAQO,GAAAA,CAACJ,CAAAA,CAAA,CAAa,IAAA,CAAMH,EAAK,IAAA,CAAM,CAAA,CAC9C,CAAA,CACAK,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,6BAAA,CACf,QAAA,CAAA,CAAAA,KAAC,MAAA,CAAA,CAAK,SAAA,CAAU,2BAAA,CACd,QAAA,CAAA,CAAAL,CAAAA,CAAK,KAAA,CACLA,CAAAA,CAAK,KAAA,CACLO,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,2BAAA,CACd,QAAA,CAAAP,CAAAA,CAAK,KAAA,CACP,CAAA,CACG,IAAA,CAAA,CACL,EACCA,CAAAA,CAAK,IAAA,EAAQA,CAAAA,CAAK,IAAA,CAClBK,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,0BAAA,CACd,UAAAL,CAAAA,CAAK,IAAA,CACLA,CAAAA,CAAK,IAAA,EAAQA,CAAAA,CAAK,IAAA,CAAO,QAAA,CAAQ,IAAA,CACjCA,EAAK,IAAA,CAAA,CACP,CAAA,CACG,IAAA,CAAA,CACL,CAAA,CACCA,CAAAA,CAAK,IAAA,CACLO,GAAAA,CAAC,MAAA,CAAA,CACA,UAAU,2BAAA,CACV,aAAA,CAAY,MAAA,CACZ,QAAA,CAAA,QAAA,CAED,CAAA,CACG,IAAA,CAAA,CACL,CAAA,CAGD,OACCA,IAAC,IAAA,CAAA,CAAa,SAAA,CAAU,yBAAA,CACtB,QAAA,CAAAP,CAAAA,CAAK,IAAA,CACLO,GAAAA,CAACkB,CAAAA,CAAA,CACA,IAAA,CAAMzB,CAAAA,CAAK,IAAA,CACX,MAAA,CAAQA,CAAAA,CAAK,MAAA,GAAWwB,CAAAA,CAAW,QAAA,CAAW,QAC9C,GAAA,CACCxB,CAAAA,CAAK,GAAA,GAAQwB,CAAAA,CAAW,qBAAA,CAAwB,MAAA,CAAA,CAEjD,SAAA,CAAU,0BAAA,CACV,eAAcxB,CAAAA,CAAK,OAAA,EAAW,MAAA,CAE7B,QAAA,CAAA2B,CAAAA,CACF,CAAA,CAEApB,GAAAA,CAAC,KAAA,CAAA,CACA,UAAU,0BAAA,CACV,cAAA,CAAcP,CAAAA,CAAK,OAAA,EAAW,MAAA,CAC9B,eAAA,CAAc,MAAA,CAEb,QAAA,CAAA2B,EACF,CAAA,CAAA,CApBOD,CAsBT,CAEF,CAAC,CAAA,CACF,CAAA,CAEAN,CAAAA,CACAb,GAAAA,CAAC,UAAO,SAAA,CAAU,4BAAA,CAA8B,QAAA,CAAAa,CAAAA,CAAe,CAAA,CAC5D,IAAA,CAAA,CACL,CAEF,KC/LaQ,CAAAA,CAAiBpB","file":"chunk-2T2JZW4Z.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport type {\n\tResourcesPanelItem,\n\tResourcesPanelKind,\n\tResourcesPanelProps,\n} from \"./types\"\n\nfunction isExternalHref(item: ResourcesPanelItem) {\n\treturn item.external ?? /^(https?:|mailto:|tel:)/.test(item.href ?? \"\")\n}\n\nfunction getDefaultFooterLabel(count: number) {\n\treturn `${count} total ${count === 1 ? \"resource\" : \"resources\"}`\n}\n\nfunction ResourceIcon({ kind = \"external\" }: { kind?: ResourcesPanelKind }) {\n\treturn (\n\t\t<svg\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"ml-resources-panel__icon-svg\"\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t>\n\t\t\t{kind === \"live\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<path d=\"M3 8h9\" />\n\t\t\t\t\t<path d=\"m9 5 3 3-3 3\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"source\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<path d=\"m6 5-3 3 3 3\" />\n\t\t\t\t\t<path d=\"m10 5 3 3-3 3\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"npm\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<rect x=\"2.75\" y=\"3\" width=\"10.5\" height=\"10\" rx=\"1.25\" />\n\t\t\t\t\t<path d=\"M6 10V6h4v4\" />\n\t\t\t\t\t<path d=\"M8 10V6\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"docs\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<path d=\"M4 2.75h5.25L12 5.5v7.75H4z\" />\n\t\t\t\t\t<path d=\"M9.25 2.75V5.5H12\" />\n\t\t\t\t\t<path d=\"M6 8h4\" />\n\t\t\t\t\t<path d=\"M6 10.25h4\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"changelog\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<path d=\"M5.25 4.5h7\" />\n\t\t\t\t\t<path d=\"M5.25 8h7\" />\n\t\t\t\t\t<path d=\"M5.25 11.5h5\" />\n\t\t\t\t\t<path d=\"M3 4.5h.01\" />\n\t\t\t\t\t<path d=\"M3 8h.01\" />\n\t\t\t\t\t<path d=\"M3 11.5h.01\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"figma\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<path d=\"M5.5 2.75h2.75v3H5.5a1.5 1.5 0 0 1 0-3Z\" />\n\t\t\t\t\t<path d=\"M8.25 2.75H11a1.5 1.5 0 0 1 0 3H8.25Z\" />\n\t\t\t\t\t<path d=\"M5.5 5.75h2.75v3H5.5a1.5 1.5 0 0 1 0-3Z\" />\n\t\t\t\t\t<path d=\"M8.25 5.75H11a1.5 1.5 0 1 1-1.5 1.5\" />\n\t\t\t\t\t<path d=\"M5.5 8.75h2.75v1.5a1.5 1.5 0 1 1-1.5-1.5\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"video\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<rect x=\"2.75\" y=\"4\" width=\"10.5\" height=\"8\" rx=\"1.25\" />\n\t\t\t\t\t<path d=\"m7 6.5 3 1.5-3 1.5z\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"paper\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<path d=\"M4.25 2.75h5.5l2 2v8.5h-7.5z\" />\n\t\t\t\t\t<path d=\"M6.25 7h3.5\" />\n\t\t\t\t\t<path d=\"M6.25 9.25h3.5\" />\n\t\t\t\t\t<path d=\"M6.25 11.5h2.5\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{kind === \"external\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<circle cx=\"8\" cy=\"8\" r=\"4.75\" />\n\t\t\t\t\t<path d=\"M8 5.25v5.5\" />\n\t\t\t\t\t<path d=\"M5.25 8h5.5\" />\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t</svg>\n\t)\n}\n\nexport function ResourcesPanelRoot({\n\tclassName,\n\tsize = \"md\",\n\ttitle,\n\tmeta,\n\titems,\n\tfooter,\n\tfooterLabel,\n\tchildren,\n\tlinkComponent,\n\tref,\n\t...props\n}: ResourcesPanelProps): React.ReactElement {\n\tconst resolvedFooter =\n\t\tfooter === null\n\t\t\t? null\n\t\t\t: (footer ?? footerLabel ?? getDefaultFooterLabel(items.length))\n\tconst resolvedTitle = title ?? \"Resources\"\n\n\treturn (\n\t\t<aside\n\t\t\tref={ref}\n\t\t\tdata-slot=\"resources-panel\"\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(\"ml-resources-panel\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<header className=\"ml-resources-panel__header\">\n\t\t\t\t<span className=\"ml-resources-panel__title\">{resolvedTitle}</span>\n\t\t\t\t{meta ? <span className=\"ml-resources-panel__meta\">{meta}</span> : null}\n\t\t\t</header>\n\t\t\t{children ?? (\n\t\t\t\t<ul className=\"ml-resources-panel__list\">\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst external = isExternalHref(item)\n\t\t\t\t\t\tconst LinkComp = item.as ?? linkComponent ?? \"a\"\n\t\t\t\t\t\tconst key =\n\t\t\t\t\t\t\ttypeof item.label === \"string\"\n\t\t\t\t\t\t\t\t? `${item.label}-${index}`\n\t\t\t\t\t\t\t\t: `${item.href ?? item.kind ?? \"resource\"}-${index}`\n\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<span className=\"ml-resources-panel__icon\">\n\t\t\t\t\t\t\t\t\t{item.icon ?? <ResourceIcon kind={item.kind} />}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"ml-resources-panel__content\">\n\t\t\t\t\t\t\t\t\t<span className=\"ml-resources-panel__label\">\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t{item.badge ? (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"ml-resources-panel__badge\">\n\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{item.host || item.meta ? (\n\t\t\t\t\t\t\t\t\t\t<span className=\"ml-resources-panel__host\">\n\t\t\t\t\t\t\t\t\t\t\t{item.host}\n\t\t\t\t\t\t\t\t\t\t\t{item.host && item.meta ? \" · \" : null}\n\t\t\t\t\t\t\t\t\t\t\t{item.meta}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{item.href ? (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName=\"ml-resources-panel__arrow\"\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t↗\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={key} className=\"ml-resources-panel__row\">\n\t\t\t\t\t\t\t\t{item.href ? (\n\t\t\t\t\t\t\t\t\t<LinkComp\n\t\t\t\t\t\t\t\t\t\thref={item.href}\n\t\t\t\t\t\t\t\t\t\ttarget={item.target ?? (external ? \"_blank\" : undefined)}\n\t\t\t\t\t\t\t\t\t\trel={\n\t\t\t\t\t\t\t\t\t\t\titem.rel ?? (external ? \"noopener noreferrer\" : undefined)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName=\"ml-resources-panel__item\"\n\t\t\t\t\t\t\t\t\t\tdata-primary={item.primary || undefined}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t\t</LinkComp>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName=\"ml-resources-panel__item\"\n\t\t\t\t\t\t\t\t\t\tdata-primary={item.primary || undefined}\n\t\t\t\t\t\t\t\t\t\tdata-disabled=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t\t{resolvedFooter ? (\n\t\t\t\t<footer className=\"ml-resources-panel__footer\">{resolvedFooter}</footer>\n\t\t\t) : null}\n\t\t</aside>\n\t)\n}\n","/**\n * @module resources-panel\n * Description for resources-panel component.\n */\nimport { ResourcesPanelRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const ResourcesPanel = ResourcesPanelRoot\n\nexport { ResourcesPanelRoot }\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {jsxs,jsx}from'react/jsx-runtime';function l({className:a$1,attribution:t,children:r,ref:u,...m}){return jsxs("figure",{ref:u,className:a("ml-pull-quote my-10 border-l-2 border-accent pl-6",a$1),...m,children:[jsx("blockquote",{className:"m-0 text-balance font-[var(--font-headline)] text-2xl font-medium leading-[1.35] tracking-[-0.015em] text-text",children:r}),t&&jsxs("figcaption",{className:"mt-3 font-mono text-[11px] uppercase tracking-[0.12em] text-text-muted",children:["- ",t]})]})}var f=Object.assign(l,{displayName:"PullQuote"});export{f as a};//# sourceMappingURL=chunk-37JB3ZNS.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-37JB3ZNS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/pull-quote/root.tsx","../src/components/pull-quote/index.ts"],"names":["PullQuoteRoot","className","attribution","children","ref","props","jsxs","cn","jsx","PullQuote"],"mappings":"6EAGO,SAASA,CAAAA,CAAc,CAC7B,SAAA,CAAAC,GAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,IAAAC,CAAAA,CACA,GAAGC,CACJ,CAAA,CAAuC,CACtC,OACCC,IAAAA,CAAC,QAAA,CAAA,CACA,GAAA,CAAKF,CAAAA,CACL,SAAA,CAAWG,CAAAA,CACV,mDAAA,CACAN,GACD,EACC,GAAGI,CAAAA,CAEJ,QAAA,CAAA,CAAAG,GAAAA,CAAC,YAAA,CAAA,CAAW,SAAA,CAAU,gHAAA,CACpB,QAAA,CAAAL,CAAAA,CACF,CAAA,CACCD,CAAAA,EACAI,IAAAA,CAAC,YAAA,CAAA,CAAW,SAAA,CAAU,wEAAA,CAAyE,QAAA,CAAA,CAAA,IAAA,CAC3FJ,CAAAA,CAAAA,CACJ,CAAA,CAAA,CAEF,CAEF,CCrBO,IAAMO,CAAAA,CAET,MAAA,CAAO,MAAA,CAAOT,CAAAA,CAAe,CAChC,WAAA,CAAa,WACd,CAAC","file":"chunk-37JB3ZNS.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport type { PullQuoteProps } from \"./types\"\n\nexport function PullQuoteRoot({\n\tclassName,\n\tattribution,\n\tchildren,\n\tref,\n\t...props\n}: PullQuoteProps): React.ReactElement {\n\treturn (\n\t\t<figure\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-pull-quote my-10 border-l-2 border-accent pl-6\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<blockquote className=\"m-0 text-balance font-[var(--font-headline)] text-2xl font-medium leading-[1.35] tracking-[-0.015em] text-text\">\n\t\t\t\t{children}\n\t\t\t</blockquote>\n\t\t\t{attribution && (\n\t\t\t\t<figcaption className=\"mt-3 font-mono text-[11px] uppercase tracking-[0.12em] text-text-muted\">\n\t\t\t\t\t- {attribution}\n\t\t\t\t</figcaption>\n\t\t\t)}\n\t\t</figure>\n\t)\n}\n","/**\n * @module PullQuote\n * Description for PullQuote component.\n */\nimport { PullQuoteRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const PullQuote: typeof PullQuoteRoot & {\n\tdisplayName: string\n} = Object.assign(PullQuoteRoot, {\n\tdisplayName: \"PullQuote\" as const,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {useState,useEffect,useMemo}from'react';import {jsx}from'react/jsx-runtime';var E={sm:"h-px",md:"h-0.5",lg:"h-1"};function p(e){return Math.max(0,Math.min(100,e))}function H(e,r){return e==null?null:!Number.isFinite(e)||!Number.isFinite(r)||r<=0?0:p(e/r*100)}function y(){if(typeof document>"u")return 0;let e=document.documentElement,r=document.body,s=e.scrollTop||r.scrollTop||0,o=Math.max(e.scrollHeight,r.scrollHeight,e.offsetHeight,r.offsetHeight),t=e.clientHeight,i=Math.max(0,o-t);return i<=0?0:p(s/i*100)}function g({className:e,value:r=null,max:s=100,size:o="md",followScroll:t=false,ref:i,...h}){let[m,P]=useState(0);useEffect(()=>{if(!t)return;let n=0,d=()=>{n=0,P(y());},a=()=>{n||(n=window.requestAnimationFrame(d));};return d(),window.addEventListener("scroll",a,{passive:true}),window.addEventListener("resize",a),()=>{n&&window.cancelAnimationFrame(n),window.removeEventListener("scroll",a),window.removeEventListener("resize",a);}},[t]);let c=useMemo(()=>t?m:H(r,s),[t,s,m,r]),l=c!=null;return jsx("div",{ref:i,role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":l?Math.round(c):void 0,"data-size":o,"data-follow-scroll":t||void 0,className:a("ml-progress",E[o],e),...h,children:jsx("span",{className:a("ml-progress__indicator",!l&&"animate-progress-loop"),style:l?{transform:`scaleX(${(c??0)/100})`}:void 0})})}var L=g;export{L as a};//# sourceMappingURL=chunk-3F6Z4CFV.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-3F6Z4CFV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/progress/root.tsx","../src/components/progress/index.ts"],"names":["progressSizeClasses","clampPercent","value","resolveProgress","max","getDocumentScrollProgress","root","body","scrollTop","scrollHeight","clientHeight","available","ProgressRoot","className","size","followScroll","ref","props","scrollValue","setScrollValue","useState","useEffect","frame","update","schedule","percentage","useMemo","determinate","jsx","cn","Progress"],"mappings":"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","file":"chunk-3F6Z4CFV.js","sourcesContent":["\"use client\"\n\nimport { useEffect, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../lib/utils\"\nimport type { ProgressProps, ProgressSize } from \"./types\"\n\nconst progressSizeClasses: Record<ProgressSize, string> = {\n\tsm: \"h-px\",\n\tmd: \"h-0.5\",\n\tlg: \"h-1\",\n}\n\nfunction clampPercent(value: number) {\n\treturn Math.max(0, Math.min(100, value))\n}\n\nfunction resolveProgress(value: number | null | undefined, max: number) {\n\tif (value == null) return null\n\tif (!Number.isFinite(value) || !Number.isFinite(max) || max <= 0) return 0\n\treturn clampPercent((value / max) * 100)\n}\n\nfunction getDocumentScrollProgress() {\n\tif (typeof document === \"undefined\") return 0\n\n\tconst root = document.documentElement\n\tconst body = document.body\n\tconst scrollTop = root.scrollTop || body.scrollTop || 0\n\tconst scrollHeight = Math.max(\n\t\troot.scrollHeight,\n\t\tbody.scrollHeight,\n\t\troot.offsetHeight,\n\t\tbody.offsetHeight\n\t)\n\tconst clientHeight = root.clientHeight\n\tconst available = Math.max(0, scrollHeight - clientHeight)\n\n\tif (available <= 0) return 0\n\n\treturn clampPercent((scrollTop / available) * 100)\n}\n\nexport function ProgressRoot({\n\tclassName,\n\tvalue = null,\n\tmax = 100,\n\tsize = \"md\",\n\tfollowScroll = false,\n\tref,\n\t...props\n}: ProgressProps): React.ReactElement {\n\tconst [scrollValue, setScrollValue] = useState(0)\n\n\tuseEffect(() => {\n\t\tif (!followScroll) return\n\n\t\tlet frame = 0\n\n\t\tconst update = () => {\n\t\t\tframe = 0\n\t\t\tsetScrollValue(getDocumentScrollProgress())\n\t\t}\n\n\t\tconst schedule = () => {\n\t\t\tif (frame) return\n\t\t\tframe = window.requestAnimationFrame(update)\n\t\t}\n\n\t\tupdate()\n\t\twindow.addEventListener(\"scroll\", schedule, { passive: true })\n\t\twindow.addEventListener(\"resize\", schedule)\n\n\t\treturn () => {\n\t\t\tif (frame) {\n\t\t\t\twindow.cancelAnimationFrame(frame)\n\t\t\t}\n\t\t\twindow.removeEventListener(\"scroll\", schedule)\n\t\t\twindow.removeEventListener(\"resize\", schedule)\n\t\t}\n\t}, [followScroll])\n\n\tconst percentage = useMemo(\n\t\t() => (followScroll ? scrollValue : resolveProgress(value, max)),\n\t\t[followScroll, max, scrollValue, value]\n\t)\n\n\tconst determinate = percentage != null\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\trole=\"progressbar\"\n\t\t\taria-valuemin={0}\n\t\t\taria-valuemax={100}\n\t\t\taria-valuenow={determinate ? Math.round(percentage) : undefined}\n\t\t\tdata-size={size}\n\t\t\tdata-follow-scroll={followScroll || undefined}\n\t\t\tclassName={cn(\"ml-progress\", progressSizeClasses[size], className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"ml-progress__indicator\",\n\t\t\t\t\t!determinate && \"animate-progress-loop\"\n\t\t\t\t)}\n\t\t\t\tstyle={\n\t\t\t\t\tdeterminate\n\t\t\t\t\t\t? { transform: `scaleX(${(percentage ?? 0) / 100})` }\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n","/**\n * @module progress\n * Description for progress component.\n */\nimport { ProgressRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const Progress = ProgressRoot\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function N(t,n){return n??/^(https?:|mailto:|tel:)/.test(t??"")}function g({item:t}){return jsxs(Fragment,{children:[t.label?jsx("span",{className:"ml-link-list__label",children:t.label}):null,t.date?jsx("span",{className:"ml-link-list__date",children:t.date}):null,jsxs("span",{className:"ml-link-list__content",children:[jsx("span",{className:"ml-link-list__title",children:t.title}),jsxs("span",{className:"ml-link-list__mobile-meta",children:[t.date,t.date&&t.tag?" \xB7 ":null,t.tag]})]}),t.tag?jsx("span",{className:"ml-link-list__tag",children:t.tag}):null,jsx("span",{className:"ml-link-list__trailing",children:t.trailing??t.meta??"\u2192"})]})}function m({className:t,item:n,linkComponent:s,ref:a$1,...k}){let o=N(n.href,n.external),c=n.as??s??"a",p=jsx(g,{item:n});return n.href?jsx(c,{href:n.href,target:n.target??(o?"_blank":void 0),rel:n.rel??(o?"noopener noreferrer":void 0),className:a("ml-link-list__item",t),children:p}):jsx("article",{ref:a$1,className:a("ml-link-list__item",t),"data-disabled":"true",...k,children:p})}function d({className:t,size:n="md",title:s,action:a$1,items:k,children:o,linkComponent:c,ref:p,...u}){return jsxs("section",{ref:p,"data-slot":"link-list","data-size":n,className:a("ml-link-list",t),...u,children:[s||a$1?jsxs("header",{className:"ml-link-list__header",children:[jsx("span",{className:"ml-link-list__heading",children:s?jsx("span",{children:s}):null}),a$1?jsx("span",{className:"ml-link-list__action",children:a$1}):null]}):null,jsx("div",{className:"ml-link-list__items",children:o??k?.map((e,f)=>jsx(m,{item:e,linkComponent:c},typeof e.title=="string"?`${e.title}-${f}`:`${e.href??e.label??"link"}-${f}`))})]})}var v=Object.assign(d,{displayName:"LinkList",Item:m});export{m as a,d as b,v as c};//# sourceMappingURL=chunk-5TIKYN5B.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-5TIKYN5B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/link-list/item.tsx","../src/components/link-list/root.tsx","../src/components/link-list/index.ts"],"names":["isExternalHref","href","external","LinkListItemContent","item","jsxs","Fragment","jsx","LinkListItem","className","linkComponent","ref","props","LinkComp","content","cn","LinkListRoot","size","title","action","items","children","index","LinkList"],"mappings":"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","file":"chunk-5TIKYN5B.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport type { LinkListItemProps } from \"./types\"\n\nfunction isExternalHref(href?: string, external?: boolean) {\n\treturn external ?? /^(https?:|mailto:|tel:)/.test(href ?? \"\")\n}\n\nfunction LinkListItemContent({ item }: Pick<LinkListItemProps, \"item\">) {\n\treturn (\n\t\t<>\n\t\t\t{item.label ? (\n\t\t\t\t<span className=\"ml-link-list__label\">{item.label}</span>\n\t\t\t) : null}\n\t\t\t{item.date ? (\n\t\t\t\t<span className=\"ml-link-list__date\">{item.date}</span>\n\t\t\t) : null}\n\t\t\t<span className=\"ml-link-list__content\">\n\t\t\t\t<span className=\"ml-link-list__title\">{item.title}</span>\n\t\t\t\t<span className=\"ml-link-list__mobile-meta\">\n\t\t\t\t\t{item.date}\n\t\t\t\t\t{item.date && item.tag ? \" · \" : null}\n\t\t\t\t\t{item.tag}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t\t{item.tag ? <span className=\"ml-link-list__tag\">{item.tag}</span> : null}\n\t\t\t<span className=\"ml-link-list__trailing\">\n\t\t\t\t{item.trailing ?? item.meta ?? \"→\"}\n\t\t\t</span>\n\t\t</>\n\t)\n}\n\nexport function LinkListItem({\n\tclassName,\n\titem,\n\tlinkComponent,\n\tref,\n\t...props\n}: LinkListItemProps): React.ReactElement {\n\tconst external = isExternalHref(item.href, item.external)\n\tconst LinkComp = item.as ?? linkComponent ?? \"a\"\n\tconst content = <LinkListItemContent item={item} />\n\n\tif (item.href) {\n\t\treturn (\n\t\t\t<LinkComp\n\t\t\t\thref={item.href}\n\t\t\t\ttarget={item.target ?? (external ? \"_blank\" : undefined)}\n\t\t\t\trel={item.rel ?? (external ? \"noopener noreferrer\" : undefined)}\n\t\t\t\tclassName={cn(\"ml-link-list__item\", className)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</LinkComp>\n\t\t)\n\t}\n\n\treturn (\n\t\t<article\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"ml-link-list__item\", className)}\n\t\t\tdata-disabled=\"true\"\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</article>\n\t)\n}\n","import { cn } from \"../../lib/utils\"\nimport { LinkListItem } from \"./item\"\nimport type { LinkListProps } from \"./types\"\n\nexport function LinkListRoot({\n\tclassName,\n\tsize = \"md\",\n\ttitle,\n\taction,\n\titems,\n\tchildren,\n\tlinkComponent,\n\tref,\n\t...props\n}: LinkListProps): React.ReactElement {\n\treturn (\n\t\t<section\n\t\t\tref={ref}\n\t\t\tdata-slot=\"link-list\"\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(\"ml-link-list\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{title || action ? (\n\t\t\t\t<header className=\"ml-link-list__header\">\n\t\t\t\t\t<span className=\"ml-link-list__heading\">\n\t\t\t\t\t\t{title ? <span>{title}</span> : null}\n\t\t\t\t\t</span>\n\t\t\t\t\t{action ? (\n\t\t\t\t\t\t<span className=\"ml-link-list__action\">{action}</span>\n\t\t\t\t\t) : null}\n\t\t\t\t</header>\n\t\t\t) : null}\n\t\t\t<div className=\"ml-link-list__items\">\n\t\t\t\t{children ??\n\t\t\t\t\titems?.map((item, index) => (\n\t\t\t\t\t\t<LinkListItem\n\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\ttypeof item.title === \"string\"\n\t\t\t\t\t\t\t\t\t? `${item.title}-${index}`\n\t\t\t\t\t\t\t\t\t: `${item.href ?? item.label ?? \"link\"}-${index}`\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tlinkComponent={linkComponent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t</div>\n\t\t</section>\n\t)\n}\n","/**\n * @module LinkList\n * Description for LinkList component.\n */\nimport { LinkListItem } from \"./item\"\nimport { LinkListRoot } from \"./root\"\n\nexport const LinkList: typeof LinkListRoot & {\n\tdisplayName: string\n\tItem: typeof LinkListItem\n} = Object.assign(LinkListRoot, {\n\tdisplayName: \"LinkList\",\n\tItem: LinkListItem,\n})\n\nexport { LinkListItem, LinkListRoot }\nexport type * from \"./types\"\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-R2YSVBHS.js';import {a as a$1}from'./chunk-N37GMCSK.js';import {a as a$2}from'./chunk-AACTIVV7.js';import {jsxs,jsx}from'react/jsx-runtime';function r({className:p,quote:c,author:e,authorHref:o,role:m,initials:d,avatarSrc:f,avatarAlt:_,size:u="md",variant:s="default",ref:N,...T}){return jsxs("figure",{ref:N,"data-slot":"testimonial","data-size":u,"data-variant":s,className:a$2("ml-testimonial",p),...T,children:[s==="default"?jsx("span",{"aria-hidden":"true",className:"ml-testimonial__mark",children:"\u201C"}):null,jsx("blockquote",{className:"ml-testimonial__quote",children:c}),jsxs("figcaption",{className:"ml-testimonial__author",children:[jsx(a$1,{size:"md",src:f,alt:_,children:d}),jsxs("div",{className:"ml-testimonial__author-copy",children:[o?jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"ml-testimonial__name",children:e}):jsx("span",{className:"ml-testimonial__name",children:e}),m?jsx("span",{className:"ml-testimonial__role",children:m}):null]})]})]})}var v=Object.assign(r,{displayName:"Testimonial",Grid:a});export{v as a};//# sourceMappingURL=chunk-6AEWSPAE.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-6AEWSPAE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/testimonial/root.tsx","../src/components/testimonial/index.ts"],"names":["TestimonialRoot","className","quote","author","authorHref","role","initials","avatarSrc","avatarAlt","size","variant","ref","props","jsxs","cn","jsx","Avatar","Testimonial","TestimonialGrid"],"mappings":"mKAIO,SAASA,CAAAA,CAAgB,CAC/B,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,EACA,UAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CAAO,IAAA,CACP,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,GAAA,CAAAC,EACA,GAAGC,CACJ,CAAA,CAAyC,CACxC,OACCC,IAAAA,CAAC,QAAA,CAAA,CACA,GAAA,CAAKF,EACL,WAAA,CAAU,aAAA,CACV,WAAA,CAAWF,CAAAA,CACX,cAAA,CAAcC,CAAAA,CACd,SAAA,CAAWI,GAAAA,CAAG,iBAAkBb,CAAS,CAAA,CACxC,GAAGW,CAAAA,CAEH,QAAA,CAAA,CAAAF,CAAAA,GAAY,SAAA,CACZK,GAAAA,CAAC,QAAK,aAAA,CAAY,MAAA,CAAO,SAAA,CAAU,sBAAA,CAAuB,QAAA,CAAA,QAAA,CAE1D,CAAA,CACG,IAAA,CACJA,GAAAA,CAAC,cAAW,SAAA,CAAU,uBAAA,CAAyB,QAAA,CAAAb,CAAAA,CAAM,CAAA,CACrDW,IAAAA,CAAC,YAAA,CAAA,CAAW,SAAA,CAAU,wBAAA,CACrB,QAAA,CAAA,CAAAE,GAAAA,CAACC,GAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAKT,EAAW,GAAA,CAAKC,CAAAA,CACrC,QAAA,CAAAF,CAAAA,CACF,CAAA,CACAO,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BACb,QAAA,CAAA,CAAAT,CAAAA,CACAW,GAAAA,CAAC,GAAA,CAAA,CACA,IAAA,CAAMX,CAAAA,CACN,MAAA,CAAO,QAAA,CACP,IAAI,qBAAA,CACJ,SAAA,CAAU,sBAAA,CAET,QAAA,CAAAD,CAAAA,CACF,CAAA,CAEAY,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,sBAAA,CAAwB,QAAA,CAAAZ,CAAAA,CAAO,CAAA,CAE/CE,CAAAA,CAAOU,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uBAAwB,QAAA,CAAAV,CAAAA,CAAK,CAAA,CAAU,IAAA,CAAA,CAChE,CAAA,CAAA,CACD,CAAA,CAAA,CACD,CAEF,KC7CaY,CAAAA,CAGT,MAAA,CAAO,MAAA,CAAOjB,CAAAA,CAAiB,CAClC,WAAA,CAAa,aAAA,CACb,IAAA,CAAMkB,CACP,CAAC","file":"chunk-6AEWSPAE.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport { Avatar } from \"../avatar\"\nimport type { TestimonialProps } from \"./types\"\n\nexport function TestimonialRoot({\n\tclassName,\n\tquote,\n\tauthor,\n\tauthorHref,\n\trole,\n\tinitials,\n\tavatarSrc,\n\tavatarAlt,\n\tsize = \"md\",\n\tvariant = \"default\",\n\tref,\n\t...props\n}: TestimonialProps): React.ReactElement {\n\treturn (\n\t\t<figure\n\t\t\tref={ref}\n\t\t\tdata-slot=\"testimonial\"\n\t\t\tdata-size={size}\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\"ml-testimonial\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{variant === \"default\" ? (\n\t\t\t\t<span aria-hidden=\"true\" className=\"ml-testimonial__mark\">\n\t\t\t\t\t“\n\t\t\t\t</span>\n\t\t\t) : null}\n\t\t\t<blockquote className=\"ml-testimonial__quote\">{quote}</blockquote>\n\t\t\t<figcaption className=\"ml-testimonial__author\">\n\t\t\t\t<Avatar size=\"md\" src={avatarSrc} alt={avatarAlt}>\n\t\t\t\t\t{initials}\n\t\t\t\t</Avatar>\n\t\t\t\t<div className=\"ml-testimonial__author-copy\">\n\t\t\t\t\t{authorHref ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={authorHref}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tclassName=\"ml-testimonial__name\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{author}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span className=\"ml-testimonial__name\">{author}</span>\n\t\t\t\t\t)}\n\t\t\t\t\t{role ? <span className=\"ml-testimonial__role\">{role}</span> : null}\n\t\t\t\t</div>\n\t\t\t</figcaption>\n\t\t</figure>\n\t)\n}\n","/**\n * @module Testimonial\n * Description for Testimonial component.\n */\nimport { TestimonialGrid } from \"../testimonial-grid\"\nimport { TestimonialRoot } from \"./root\"\n\nexport * from \"./types\"\nexport { TestimonialGrid } from \"../testimonial-grid\"\n\nexport const Testimonial: typeof TestimonialRoot & {\n\tdisplayName: string\n\tGrid: typeof TestimonialGrid\n} = Object.assign(TestimonialRoot, {\n\tdisplayName: \"Testimonial\",\n\tGrid: TestimonialGrid,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {jsxs,jsx}from'react/jsx-runtime';var i={accent:"ml-toast-dot--accent",success:"ml-toast-dot--success",warn:"ml-toast-dot--warn"};function s({className:e,variant:r="accent",children:n,onDismiss:a$1,ref:c,...p}){return jsxs("div",{ref:c,role:"status",className:a("ml-toast flex max-w-[320px] items-center gap-3 rounded-md border px-3.5 py-2.5",e),...p,children:[jsx("span",{"aria-hidden":true,className:a("size-2 shrink-0 rounded-[var(--radius-pill)]",i[r])}),jsx("span",{className:"flex-1 text-[13px] text-text",children:n}),a$1&&jsx("button",{type:"button",onClick:a$1,"aria-label":"Dismiss",className:"cursor-pointer border-none bg-transparent font-mono text-xs text-text-muted hover:text-text",children:"\u2715"})]})}var f=Object.assign(s,{displayName:"Toast"});export{f as a};//# sourceMappingURL=chunk-7ANXAXP5.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-7ANXAXP5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/toast/root.tsx","../src/components/toast/index.ts"],"names":["dotVariantClasses","ToastRoot","className","variant","children","onDismiss","ref","props","jsxs","cn","jsx","Toast"],"mappings":"6EAGA,IAAMA,EAAkD,CACvD,MAAA,CAAQ,uBACR,OAAA,CAAS,uBAAA,CACT,KAAM,oBACP,CAAA,CAEO,SAASC,CAAAA,CAAU,CACzB,UAAAC,CAAAA,CACA,OAAA,CAAAC,EAAU,QAAA,CACV,QAAA,CAAAC,EACA,SAAA,CAAAC,GAAAA,CACA,IAAAC,CAAAA,CACA,GAAGC,CACJ,CAAA,CAAmC,CAClC,OACCC,IAAAA,CAAC,KAAA,CAAA,CACA,IAAKF,CAAAA,CACL,IAAA,CAAK,SACL,SAAA,CAAWG,CAAAA,CACV,iFACAP,CACD,CAAA,CACC,GAAGK,CAAAA,CAEJ,UAAAG,GAAAA,CAAC,MAAA,CAAA,CACA,cAAW,IAAA,CACX,SAAA,CAAWD,EACV,8CAAA,CACAT,CAAAA,CAAkBG,CAAO,CAC1B,CAAA,CACD,EACAO,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,8BAAA,CAAgC,QAAA,CAAAN,EAAS,CAAA,CACxDC,GAAAA,EACAK,IAAC,QAAA,CAAA,CACA,IAAA,CAAK,SACL,OAAA,CAASL,GAAAA,CACT,aAAW,SAAA,CACX,SAAA,CAAU,8FACV,QAAA,CAAA,QAAA,CAED,CAAA,CAAA,CAEF,CAEF,CCvCO,IAAMM,EAET,MAAA,CAAO,MAAA,CAAOV,EAAW,CAC5B,WAAA,CAAa,OACd,CAAC","file":"chunk-7ANXAXP5.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport type { ToastProps, ToastVariant } from \"./types\"\n\nconst dotVariantClasses: Record<ToastVariant, string> = {\n\taccent: \"ml-toast-dot--accent\",\n\tsuccess: \"ml-toast-dot--success\",\n\twarn: \"ml-toast-dot--warn\",\n}\n\nexport function ToastRoot({\n\tclassName,\n\tvariant = \"accent\",\n\tchildren,\n\tonDismiss,\n\tref,\n\t...props\n}: ToastProps): React.ReactElement {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\trole=\"status\"\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-toast flex max-w-[320px] items-center gap-3 rounded-md border px-3.5 py-2.5\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"size-2 shrink-0 rounded-[var(--radius-pill)]\",\n\t\t\t\t\tdotVariantClasses[variant]\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<span className=\"flex-1 text-[13px] text-text\">{children}</span>\n\t\t\t{onDismiss && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onDismiss}\n\t\t\t\t\taria-label=\"Dismiss\"\n\t\t\t\t\tclassName=\"cursor-pointer border-none bg-transparent font-mono text-xs text-text-muted hover:text-text\"\n\t\t\t\t>\n\t\t\t\t\t✕\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","/**\n * @module Toast\n * Description for Toast component.\n */\nimport { ToastRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const Toast: typeof ToastRoot & {\n\tdisplayName: string\n} = Object.assign(ToastRoot, {\n\tdisplayName: \"Toast\" as const,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-QGG3J7OW.js';import {a}from'./chunk-AACTIVV7.js';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function x({className:f,n:u,date:o,title:g,readTime:s,tag:e,href:r,hover:N=true,ref:n,...i}){let m=a("ml-editorial-line grid items-center border-b border-border no-underline","grid-cols-[40px_110px_1fr_auto] sm:gap-6 sm:py-5",e&&"md:grid-cols-[40px_110px_1fr_auto_auto]","max-sm:grid-cols-[28px_1fr_auto] max-sm:gap-3 max-sm:py-4",N&&"cursor-pointer transition-colors duration-(--duration-micro) hover:bg-surface-2",f),p=jsxs(Fragment,{children:[jsx("span",{className:"font-mono text-sm text-text-muted",children:String(u).padStart(2,"0")}),jsx("time",{className:"font-mono text-[11px] uppercase tracking-widest text-text-muted max-sm:hidden",children:o}),jsxs("span",{className:"flex min-w-0 flex-col",children:[jsx("span",{className:"text-base font-medium leading-[1.3] tracking-[-0.01em] text-text sm:text-[17px]",children:g}),jsxs("span",{className:"mt-0.5 font-mono text-[10px] uppercase tracking-widest text-text-muted sm:hidden",children:[o,e&&jsxs(Fragment,{children:[" \xB7 ",e]})]})]}),e&&jsx("span",{className:"max-md:hidden",children:jsx(a$1,{size:"xs",children:e})}),jsx("span",{className:"whitespace-nowrap font-mono text-[11px] text-text-muted",children:s?`${s}m \u2192`:"\u2192"})]});return r?jsx("a",{ref:n,href:r,className:m,...i,children:p}):jsx("article",{ref:n,className:m,...i,children:p})}var b=Object.assign(x,{displayName:"EditorialLine"});export{b as a};//# sourceMappingURL=chunk-7SDVYBBO.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-7SDVYBBO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/editorial-line/root.tsx","../src/components/editorial-line/index.ts"],"names":["EditorialLineRoot","className","n","date","title","readTime","tag","href","hover","ref","props","sharedClassName","cn","content","jsxs","Fragment","jsx","Badge","EditorialLine"],"mappings":"iIAMO,SAASA,CAAAA,CAAkB,CACjC,UAAAC,CAAAA,CACA,CAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,IAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EAAQ,IAAA,CACR,GAAA,CAAAC,CAAAA,CACA,GAAGC,CACJ,CAAA,CAA2C,CAC1C,IAAMC,CAAAA,CAAkBC,EACvB,yEAAA,CACA,kDAAA,CACAN,CAAAA,EAAO,yCAAA,CACP,4DACAE,CAAAA,EACC,iFAAA,CACDP,CACD,CAAA,CAEMY,EACLC,IAAAA,CAAAC,QAAAA,CAAA,CACC,QAAA,CAAA,CAAAC,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,mCAAA,CACd,QAAA,CAAA,MAAA,CAAOd,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,EAC3B,CAAA,CACAc,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,gFACd,QAAA,CAAAb,CAAAA,CACF,CAAA,CACAW,IAAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CACf,UAAAE,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,iFAAA,CACd,QAAA,CAAAZ,CAAAA,CACF,CAAA,CACAU,KAAC,MAAA,CAAA,CAAK,SAAA,CAAU,kFAAA,CACd,QAAA,CAAA,CAAAX,EACAG,CAAAA,EAAOQ,IAAAA,CAAAC,QAAAA,CAAA,CAAE,mBAAIT,CAAAA,CAAAA,CAAI,CAAA,CAAA,CACnB,CAAA,CAAA,CACD,CAAA,CACCA,GACAU,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CACf,SAAAA,GAAAA,CAACC,GAAAA,CAAA,CAAM,IAAA,CAAK,KAAM,QAAA,CAAAX,CAAAA,CAAI,CAAA,CACvB,CAAA,CAEDU,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,yDAAA,CACd,QAAA,CAAAX,EAAW,CAAA,EAAGA,CAAQ,CAAA,QAAA,CAAA,CAAQ,QAAA,CAChC,GACD,CAAA,CAGD,OAAIE,CAAAA,CAEFS,GAAAA,CAAC,KACA,GAAA,CAAKP,CAAAA,CACL,IAAA,CAAMF,CAAAA,CACN,UAAWI,CAAAA,CACV,GAAID,CAAAA,CAEJ,QAAA,CAAAG,EACF,CAAA,CAKDG,GAAAA,CAAC,SAAA,CAAA,CAAQ,GAAA,CAAKP,EAAK,SAAA,CAAWE,CAAAA,CAAkB,GAAGD,CAAAA,CACjD,SAAAG,CAAAA,CACF,CAEF,CClEO,IAAMK,EAET,MAAA,CAAO,MAAA,CAAOlB,EAAmB,CACpC,WAAA,CAAa,eACd,CAAC","file":"chunk-7SDVYBBO.js","sourcesContent":["import type * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Badge } from \"../badge\"\nimport type { EditorialLineProps } from \"./types\"\n\nexport function EditorialLineRoot({\n\tclassName,\n\tn,\n\tdate,\n\ttitle,\n\treadTime,\n\ttag,\n\thref,\n\thover = true,\n\tref,\n\t...props\n}: EditorialLineProps): React.ReactElement {\n\tconst sharedClassName = cn(\n\t\t\"ml-editorial-line grid items-center border-b border-border no-underline\",\n\t\t\"grid-cols-[40px_110px_1fr_auto] sm:gap-6 sm:py-5\",\n\t\ttag && \"md:grid-cols-[40px_110px_1fr_auto_auto]\",\n\t\t\"max-sm:grid-cols-[28px_1fr_auto] max-sm:gap-3 max-sm:py-4\",\n\t\thover &&\n\t\t\t\"cursor-pointer transition-colors duration-(--duration-micro) hover:bg-surface-2\",\n\t\tclassName\n\t)\n\n\tconst content = (\n\t\t<>\n\t\t\t<span className=\"font-mono text-sm text-text-muted\">\n\t\t\t\t{String(n).padStart(2, \"0\")}\n\t\t\t</span>\n\t\t\t<time className=\"font-mono text-[11px] uppercase tracking-widest text-text-muted max-sm:hidden\">\n\t\t\t\t{date}\n\t\t\t</time>\n\t\t\t<span className=\"flex min-w-0 flex-col\">\n\t\t\t\t<span className=\"text-base font-medium leading-[1.3] tracking-[-0.01em] text-text sm:text-[17px]\">\n\t\t\t\t\t{title}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"mt-0.5 font-mono text-[10px] uppercase tracking-widest text-text-muted sm:hidden\">\n\t\t\t\t\t{date}\n\t\t\t\t\t{tag && <> · {tag}</>}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t\t{tag && (\n\t\t\t\t<span className=\"max-md:hidden\">\n\t\t\t\t\t<Badge size=\"xs\">{tag}</Badge>\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<span className=\"whitespace-nowrap font-mono text-[11px] text-text-muted\">\n\t\t\t\t{readTime ? `${readTime}m →` : \"→\"}\n\t\t\t</span>\n\t\t</>\n\t)\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\tref={ref as React.Ref<HTMLAnchorElement>}\n\t\t\t\thref={href}\n\t\t\t\tclassName={sharedClassName}\n\t\t\t\t{...(props as React.ComponentProps<\"a\">)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</a>\n\t\t)\n\t}\n\n\treturn (\n\t\t<article ref={ref} className={sharedClassName} {...props}>\n\t\t\t{content}\n\t\t</article>\n\t)\n}\n","/**\n * @module EditorialLine\n * Description for EditorialLine component.\n */\nimport { EditorialLineRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const EditorialLine: typeof EditorialLineRoot & {\n\tdisplayName: string\n} = Object.assign(EditorialLineRoot, {\n\tdisplayName: \"EditorialLine\" as const,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {jsx}from'react/jsx-runtime';var s={rect:"rounded-sm",pill:"rounded-[var(--radius-pill)]",circle:"aspect-square rounded-[var(--radius-pill)]"};function t({className:o,variant:r="rect",ref:n,...a$1}){return jsx("div",{ref:n,"aria-hidden":true,className:a("ml-skeleton animate-shimmer",s[r],o),...a$1})}var d=Object.assign(t,{displayName:"Skeleton"});export{d as a};//# sourceMappingURL=chunk-7WJF6B6G.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-7WJF6B6G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/skeleton/root.tsx","../src/components/skeleton/index.ts"],"names":["skeletonVariantClasses","SkeletonRoot","className","variant","ref","props","jsx","cn","Skeleton"],"mappings":"wEAGA,IAAMA,CAAAA,CAA0D,CAC/D,KAAM,YAAA,CACN,IAAA,CAAM,8BAAA,CACN,MAAA,CAAQ,4CACT,CAAA,CAEO,SAASC,CAAAA,CAAa,CAC5B,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,OACV,GAAA,CAAAC,CAAAA,CACA,GAAGC,GACJ,CAAA,CAAsC,CACrC,OACCC,GAAAA,CAAC,KAAA,CAAA,CACA,GAAA,CAAKF,CAAAA,CACL,aAAA,CAAW,IAAA,CACX,UAAWG,CAAAA,CACV,6BAAA,CACAP,CAAAA,CAAuBG,CAAO,CAAA,CAC9BD,CACD,EACC,GAAGG,GAAAA,CACL,CAEF,CCnBO,IAAMG,CAAAA,CAET,MAAA,CAAO,MAAA,CAAOP,CAAAA,CAAc,CAC/B,WAAA,CAAa,UACd,CAAC","file":"chunk-7WJF6B6G.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport type { SkeletonProps, SkeletonVariant } from \"./types\"\n\nconst skeletonVariantClasses: Record<SkeletonVariant, string> = {\n\trect: \"rounded-sm\",\n\tpill: \"rounded-[var(--radius-pill)]\",\n\tcircle: \"aspect-square rounded-[var(--radius-pill)]\",\n}\n\nexport function SkeletonRoot({\n\tclassName,\n\tvariant = \"rect\",\n\tref,\n\t...props\n}: SkeletonProps): React.ReactElement {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\taria-hidden\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-skeleton animate-shimmer\",\n\t\t\t\tskeletonVariantClasses[variant],\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n","/**\n * @module Skeleton\n * Description for Skeleton component.\n */\nimport { SkeletonRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const Skeleton: typeof SkeletonRoot & {\n\tdisplayName: string\n} = Object.assign(SkeletonRoot, {\n\tdisplayName: \"Skeleton\" as const,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {useState}from'react';import {jsxs,jsx}from'react/jsx-runtime';function s({filename:n,code:o,language:d,children:p,className:l,ref:u,...b}){let[t,a$1]=useState(false);function i(){o&&(navigator.clipboard?.writeText(o),a$1(true),setTimeout(()=>a$1(false),1400));}return jsxs("figure",{ref:u,className:a("ml-code-block relative group overflow-hidden rounded-md border",l),...b,children:[n?jsxs("header",{className:"ml-code-block__header flex items-center justify-between border-b px-4 py-2",children:[jsx("span",{className:"font-mono text-[11px] text-text-muted",children:n}),o&&jsx("button",{type:"button",onClick:i,className:"cursor-pointer border-none bg-transparent font-mono text-[10px] text-text-muted transition-colors duration-(--duration-micro) hover:text-text",children:t?"\u2713 Copied":"Copy"})]}):o&&jsx("button",{type:"button",onClick:i,className:a("absolute top-3 right-3 z-10 cursor-pointer rounded border border-border bg-card px-2 py-1 font-mono text-[10px] text-text-muted opacity-0 transition-[border-color,box-shadow,color,opacity] duration-(--duration-fast) hover:border-border-strong hover:text-text focus-visible:opacity-100 focus-visible:outline-none focus-visible:shadow-(--focus-ring) group-hover:opacity-100",t&&"opacity-100 border-accent/30 text-accent hover:text-accent"),children:t?"\u2713 Copied":"Copy"}),p??jsx("pre",{tabIndex:0,className:"ml-code-block__pre m-0 overflow-auto p-4 font-mono text-[12.5px] leading-[1.7]","data-language":d,children:jsx("code",{children:o})})]})}var v=Object.assign(s,{displayName:"CodeBlock"});export{v as a};//# sourceMappingURL=chunk-A2LXX23X.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-A2LXX23X.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/code-block/root.tsx","../src/components/code-block/index.ts"],"names":["CodeBlockRoot","filename","code","language","children","className","ref","props","copied","setCopied","useState","copy","jsxs","cn","jsx","CodeBlock"],"mappings":"0GAOO,SAASA,CAAAA,CAAc,CAC7B,QAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,IAAAC,CAAAA,CACA,GAAGC,CACJ,CAAA,CAAuC,CACtC,GAAM,CAACC,CAAAA,CAAQC,GAAS,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAE1C,SAASC,CAAAA,EAAO,CACVT,CAAAA,GACL,UAAU,SAAA,EAAW,SAAA,CAAUA,CAAI,CAAA,CACnCO,GAAAA,CAAU,IAAI,CAAA,CACd,UAAA,CAAW,IAAMA,GAAAA,CAAU,KAAK,CAAA,CAAG,IAAI,CAAA,EACxC,CAEA,OACCG,IAAAA,CAAC,UACA,GAAA,CAAKN,CAAAA,CACL,SAAA,CAAWO,CAAAA,CACV,gEAAA,CACAR,CACD,CAAA,CACC,GAAGE,EAEH,QAAA,CAAA,CAAAN,CAAAA,CACAW,IAAAA,CAAC,QAAA,CAAA,CAAO,SAAA,CAAU,4EAAA,CACjB,QAAA,CAAA,CAAAE,GAAAA,CAAC,QAAK,SAAA,CAAU,uCAAA,CACd,QAAA,CAAAb,CAAAA,CACF,CAAA,CACCC,CAAAA,EACAY,GAAAA,CAAC,QAAA,CAAA,CACA,KAAK,QAAA,CACL,OAAA,CAASH,CAAAA,CACT,SAAA,CAAU,+IAAA,CAET,QAAA,CAAAH,CAAAA,CAAS,eAAA,CAAa,OACxB,CAAA,CAAA,CAEF,CAAA,CAEAN,CAAAA,EACCY,GAAAA,CAAC,QAAA,CAAA,CACA,IAAA,CAAK,QAAA,CACL,OAAA,CAASH,EACT,SAAA,CAAWE,CAAAA,CACV,qXAAA,CACAL,CAAAA,EACC,4DACF,CAAA,CAEC,QAAA,CAAAA,CAAAA,CAAS,gBAAa,MAAA,CACxB,CAAA,CAGDJ,CAAAA,EACAU,GAAAA,CAAC,KAAA,CAAA,CAEA,QAAA,CAAU,CAAA,CACV,SAAA,CAAU,iFACV,eAAA,CAAeX,CAAAA,CAEf,QAAA,CAAAW,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAZ,CAAAA,CAAK,CAAA,CACb,GAEF,CAEF,CCpEO,IAAMa,CAAAA,CAET,OAAO,MAAA,CAAOf,CAAAA,CAAe,CAChC,WAAA,CAAa,WACd,CAAC","file":"chunk-A2LXX23X.js","sourcesContent":["\"use client\"\n\nimport { useState } from \"react\"\n\nimport { cn } from \"../../lib/utils\"\nimport type { CodeBlockProps } from \"./types\"\n\nexport function CodeBlockRoot({\n\tfilename,\n\tcode,\n\tlanguage,\n\tchildren,\n\tclassName,\n\tref,\n\t...props\n}: CodeBlockProps): React.ReactElement {\n\tconst [copied, setCopied] = useState(false)\n\n\tfunction copy() {\n\t\tif (!code) return\n\t\tnavigator.clipboard?.writeText(code)\n\t\tsetCopied(true)\n\t\tsetTimeout(() => setCopied(false), 1400)\n\t}\n\n\treturn (\n\t\t<figure\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-code-block relative group overflow-hidden rounded-md border\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{filename ? (\n\t\t\t\t<header className=\"ml-code-block__header flex items-center justify-between border-b px-4 py-2\">\n\t\t\t\t\t<span className=\"font-mono text-[11px] text-text-muted\">\n\t\t\t\t\t\t{filename}\n\t\t\t\t\t</span>\n\t\t\t\t\t{code && (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={copy}\n\t\t\t\t\t\t\tclassName=\"cursor-pointer border-none bg-transparent font-mono text-[10px] text-text-muted transition-colors duration-(--duration-micro) hover:text-text\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{copied ? \"✓ Copied\" : \"Copy\"}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</header>\n\t\t\t) : (\n\t\t\t\tcode && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={copy}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"absolute top-3 right-3 z-10 cursor-pointer rounded border border-border bg-card px-2 py-1 font-mono text-[10px] text-text-muted opacity-0 transition-[border-color,box-shadow,color,opacity] duration-(--duration-fast) hover:border-border-strong hover:text-text focus-visible:opacity-100 focus-visible:outline-none focus-visible:shadow-(--focus-ring) group-hover:opacity-100\",\n\t\t\t\t\t\t\tcopied &&\n\t\t\t\t\t\t\t\t\"opacity-100 border-accent/30 text-accent hover:text-accent\"\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{copied ? \"✓ Copied\" : \"Copy\"}\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t)}\n\t\t\t{children ?? (\n\t\t\t\t<pre\n\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tclassName=\"ml-code-block__pre m-0 overflow-auto p-4 font-mono text-[12.5px] leading-[1.7]\"\n\t\t\t\t\tdata-language={language}\n\t\t\t\t>\n\t\t\t\t\t<code>{code}</code>\n\t\t\t\t</pre>\n\t\t\t)}\n\t\t</figure>\n\t)\n}\n","/**\n * @module CodeBlock\n * Description for CodeBlock component.\n */\nimport { CodeBlockRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const CodeBlock: typeof CodeBlockRoot & {\n\tdisplayName: string\n} = Object.assign(CodeBlockRoot, {\n\tdisplayName: \"CodeBlock\" as const,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function a(...t){return twMerge(clsx(t))}function i(...t){return r=>{for(let e of t)e&&(typeof e=="function"?e(r):e.current=r);}}export{a,i as b};//# sourceMappingURL=chunk-AACTIVV7.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-AACTIVV7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts"],"names":["cn","inputs","twMerge","clsx","composeRefs","refs","node","ref"],"mappings":"6DAKO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAA8B,CACnD,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC5B,CAEO,SAASG,CAAAA,CAAAA,GACZC,CAAAA,CACoB,CACvB,OAAQC,CAAAA,EAAS,CAChB,IAAA,IAAWC,KAAOF,CAAAA,CACZE,CAAAA,GACD,OAAOA,CAAAA,EAAQ,WAClBA,CAAAA,CAAID,CAAI,EAERC,CAAAA,CAAI,OAAA,CAAUD,GAGjB,CACD","file":"chunk-AACTIVV7.js","sourcesContent":["import type * as React from \"react\"\n\nimport { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]): string {\n\treturn twMerge(clsx(inputs))\n}\n\nexport function composeRefs<T>(\n\t...refs: Array<React.Ref<T> | undefined>\n): React.RefCallback<T> {\n\treturn (node) => {\n\t\tfor (const ref of refs) {\n\t\t\tif (!ref) continue\n\t\t\tif (typeof ref === \"function\") {\n\t\t\t\tref(node)\n\t\t\t} else {\n\t\t\t\tref.current = node\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {jsx}from'react/jsx-runtime';import {Slot}from'@radix-ui/react-slot';function p({className:a$1,ref:t,...o}){return jsx("span",{ref:t,className:a("ml-0.5 font-mono text-[0.72em] font-normal opacity-60",a$1),...o})}var y={sm:"min-h-ml-7 gap-ml-1 whitespace-nowrap px-ml-2 text-xs",md:"min-h-ml-8 gap-ml-1-5 whitespace-nowrap px-ml-3 text-sm",lg:"min-h-ml-9 gap-ml-2 whitespace-nowrap px-ml-4 text-base"},R={filter:"ml-control-surface--secondary font-medium",chip:"ml-control-surface--secondary text-body"},x={filter:"cursor-pointer disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-45 focus-visible:outline-none focus-visible:shadow-(--focus-ring)",chip:"cursor-pointer disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-45 focus-visible:outline-none focus-visible:shadow-(--focus-ring)"};function m({className:a$1,active:t=false,size:o="md",variant:r="filter",interactive:d,asChild:f=false,ref:s,...n}){let i=d??r==="filter",c=a("ml-tag inline-flex select-none items-center rounded-[var(--radius-pill)] border transition-[background-color,border-color,color,box-shadow,opacity] duration-(--duration-micro) ease-out",y[o],R[r],i?x[r]:"cursor-default",a$1);if(f)return jsx(Slot,{ref:s,"data-active":t,"data-interactive":i?"true":"false",className:c,...n});if(!i){let{...T}=n;return jsx("span",{ref:s,"data-active":t,"data-interactive":"false",className:c,...T})}let{type:u,...g}=n;return jsx("button",{ref:s,type:u??"button","aria-pressed":t,"data-active":t,"data-interactive":"true",className:c,...g})}var H=Object.assign(m,{displayName:"Tag",Count:p});export{H as a};//# sourceMappingURL=chunk-B5P3RAN2.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-B5P3RAN2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/tag/count.tsx","../src/components/tag/root.tsx","../src/components/tag/index.ts"],"names":["TagCount","className","ref","props","jsx","cn","tagSizeClasses","tagVariantClasses","interactiveVariantClasses","TagRoot","active","size","variant","interactive","asChild","isInteractive","sharedClassName","Slot","spanProps","type","buttonProps","Tag"],"mappings":"gHAGO,SAASA,EAAS,CACxB,SAAA,CAAAC,IACA,GAAA,CAAAC,CAAAA,CACA,GAAGC,CACJ,CAAA,CAAsC,CACrC,OACCC,GAAAA,CAAC,QACA,GAAA,CAAKF,CAAAA,CACL,UAAWG,CAAAA,CACV,uDAAA,CACAJ,GACD,CAAA,CACC,GAAGE,EACL,CAEF,CCbA,IAAMG,CAAAA,CAA0C,CAC/C,EAAA,CAAI,uDAAA,CACJ,GAAI,yDAAA,CACJ,EAAA,CAAI,yDACL,CAAA,CAEMC,CAAAA,CAAgD,CACrD,MAAA,CAAQ,2CAAA,CACR,KAAM,yCACP,CAAA,CAEMC,EAAwD,CAC7D,MAAA,CACC,6JACD,IAAA,CAAM,4JACP,EAEO,SAASC,CAAAA,CAAQ,CACvB,SAAA,CAAAR,GAAAA,CACA,OAAAS,CAAAA,CAAS,KAAA,CACT,KAAAC,CAAAA,CAAO,IAAA,CACP,QAAAC,CAAAA,CAAU,QAAA,CACV,YAAAC,CAAAA,CACA,OAAA,CAAAC,EAAU,KAAA,CACV,GAAA,CAAAZ,EACA,GAAGC,CACJ,EAAiC,CAChC,IAAMY,EAAgBF,CAAAA,EAAeD,CAAAA,GAAY,SAE3CI,CAAAA,CAAkBX,CAAAA,CACvB,2LACAC,CAAAA,CAAeK,CAAI,CAAA,CACnBJ,CAAAA,CAAkBK,CAAO,CAAA,CACzBG,CAAAA,CAAgBP,EAA0BI,CAAO,CAAA,CAAI,iBACrDX,GACD,CAAA,CAEA,GAAIa,CAAAA,CACH,OACCV,IAACa,IAAAA,CAAA,CACA,IAAKf,CAAAA,CACL,aAAA,CAAaQ,EACb,kBAAA,CAAkBK,CAAAA,CAAgB,OAAS,OAAA,CAC3C,SAAA,CAAWC,EACV,GAAIb,CAAAA,CACN,EAIF,GAAI,CAACY,EAAe,CACnB,GAAM,CAAE,GAAGG,CAAU,EAAIf,CAAAA,CAKzB,OACCC,IAAC,MAAA,CAAA,CACA,GAAA,CAAKF,EACL,aAAA,CAAaQ,CAAAA,CACb,mBAAiB,OAAA,CACjB,SAAA,CAAWM,EACV,GAAGE,CAAAA,CACL,CAEF,CAEA,GAAM,CAAE,IAAA,CAAAC,CAAAA,CAAM,GAAGC,CAAY,CAAA,CAAIjB,EAKjC,OACCC,GAAAA,CAAC,UACA,GAAA,CAAKF,CAAAA,CACL,KAAMiB,CAAAA,EAAQ,QAAA,CACd,eAAcT,CAAAA,CACd,aAAA,CAAaA,EACb,kBAAA,CAAiB,MAAA,CACjB,UAAWM,CAAAA,CACV,GAAGI,EACL,CAEF,KC9EaC,CAAAA,CAGT,MAAA,CAAO,OAAOZ,CAAAA,CAAS,CAC1B,YAAa,KAAA,CACb,KAAA,CAAOT,CACR,CAAC","file":"chunk-B5P3RAN2.js","sourcesContent":["import { cn } from \"../../lib/utils\"\nimport type { TagCountProps } from \"./types\"\n\nexport function TagCount({\n\tclassName,\n\tref,\n\t...props\n}: TagCountProps): React.ReactElement {\n\treturn (\n\t\t<span\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-0.5 font-mono text-[0.72em] font-normal opacity-60\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n","import { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"../../lib/utils\"\nimport type { TagProps, TagSize, TagVariant } from \"./types\"\n\nconst tagSizeClasses: Record<TagSize, string> = {\n\tsm: \"min-h-ml-7 gap-ml-1 whitespace-nowrap px-ml-2 text-xs\",\n\tmd: \"min-h-ml-8 gap-ml-1-5 whitespace-nowrap px-ml-3 text-sm\",\n\tlg: \"min-h-ml-9 gap-ml-2 whitespace-nowrap px-ml-4 text-base\",\n}\n\nconst tagVariantClasses: Record<TagVariant, string> = {\n\tfilter: \"ml-control-surface--secondary font-medium\",\n\tchip: \"ml-control-surface--secondary text-body\",\n}\n\nconst interactiveVariantClasses: Record<TagVariant, string> = {\n\tfilter:\n\t\t\"cursor-pointer disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-45 focus-visible:outline-none focus-visible:shadow-(--focus-ring)\",\n\tchip: \"cursor-pointer disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-45 focus-visible:outline-none focus-visible:shadow-(--focus-ring)\",\n}\n\nexport function TagRoot({\n\tclassName,\n\tactive = false,\n\tsize = \"md\",\n\tvariant = \"filter\",\n\tinteractive,\n\tasChild = false,\n\tref,\n\t...props\n}: TagProps): React.ReactElement {\n\tconst isInteractive = interactive ?? variant === \"filter\"\n\n\tconst sharedClassName = cn(\n\t\t\"ml-tag inline-flex select-none items-center rounded-[var(--radius-pill)] border transition-[background-color,border-color,color,box-shadow,opacity] duration-(--duration-micro) ease-out\",\n\t\ttagSizeClasses[size],\n\t\ttagVariantClasses[variant],\n\t\tisInteractive ? interactiveVariantClasses[variant] : \"cursor-default\",\n\t\tclassName\n\t)\n\n\tif (asChild) {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\tref={ref as React.Ref<HTMLElement>}\n\t\t\t\tdata-active={active}\n\t\t\t\tdata-interactive={isInteractive ? \"true\" : \"false\"}\n\t\t\t\tclassName={sharedClassName}\n\t\t\t\t{...(props as React.ComponentProps<typeof Slot>)}\n\t\t\t/>\n\t\t)\n\t}\n\n\tif (!isInteractive) {\n\t\tconst { ...spanProps } = props as Omit<\n\t\t\tExtract<TagProps, { interactive?: false }>,\n\t\t\t\"active\" | \"interactive\" | \"size\" | \"variant\" | \"asChild\"\n\t\t>\n\n\t\treturn (\n\t\t\t<span\n\t\t\t\tref={ref as React.Ref<HTMLSpanElement>}\n\t\t\t\tdata-active={active}\n\t\t\t\tdata-interactive=\"false\"\n\t\t\t\tclassName={sharedClassName}\n\t\t\t\t{...spanProps}\n\t\t\t/>\n\t\t)\n\t}\n\n\tconst { type, ...buttonProps } = props as Omit<\n\t\tExtract<TagProps, { interactive?: true }>,\n\t\t\"active\" | \"interactive\" | \"size\" | \"variant\" | \"asChild\"\n\t>\n\n\treturn (\n\t\t<button\n\t\t\tref={ref as React.Ref<HTMLButtonElement>}\n\t\t\ttype={type ?? \"button\"}\n\t\t\taria-pressed={active}\n\t\t\tdata-active={active}\n\t\t\tdata-interactive=\"true\"\n\t\t\tclassName={sharedClassName}\n\t\t\t{...buttonProps}\n\t\t/>\n\t)\n}\n","/**\n * @module Tag\n * Description for Tag component.\n */\nimport { TagCount } from \"./count\"\nimport { TagRoot } from \"./root\"\n\nexport * from \"./types\"\n\nexport const Tag: typeof TagRoot & {\n\tdisplayName: string\n\tCount: typeof TagCount\n} = Object.assign(TagRoot, {\n\tdisplayName: \"Tag\",\n\tCount: TagCount,\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AACTIVV7.js';import {Slot}from'@radix-ui/react-slot';import {jsx,jsxs}from'react/jsx-runtime';function w({asChild:o,className:a$1,ref:n,...s}){return jsx(o?Slot:"a",{ref:n,className:a("group/link inline-flex w-fit items-center leading-none text-body no-underline transition-[color,box-shadow] duration-(--duration-micro) ease-out hover:text-primary focus-visible:outline-none focus-visible:shadow-(--focus-ring)",a$1),...s})}function p({description:o="One essay a month. No tracking, no nonsense.",placeholder:a$1="you@studio.com",inputName:n="email",submitLabel:s="Subscribe",action:l="#",method:f="post",className:c,ref:d,...b}){return jsxs("form",{ref:d,action:l,method:f,className:a("flex min-w-0 flex-col gap-ml-3",c),...b,children:[jsx("p",{className:"max-w-(--ml-footer-subscribe-copy-max) text-base leading-relaxed text-body",children:o}),jsxs("div",{className:"flex h-(--ml-footer-subscribe-control-height) w-full max-w-(--ml-footer-subscribe-control-max) overflow-hidden rounded-md border border-border-strong bg-card p-ml-1 transition-[border-color,box-shadow] duration-(--duration-micro) ease-out focus-within:border-accent focus-within:shadow-(--focus-ring)",children:[jsx("input",{type:"email",name:n,required:true,autoComplete:"email",placeholder:a$1,"aria-label":"Email address",className:"placeholder:text-muted-foreground min-w-0 flex-1 bg-transparent px-ml-3 text-sm text-primary outline-none transition-colors duration-(--duration-micro) ease-out focus:placeholder:text-muted-foreground/70"}),jsx("button",{type:"submit","aria-label":s,className:"group/submit inline-flex aspect-square h-full items-center justify-center rounded-sm bg-accent text-accent-foreground transition-[background-color,box-shadow,opacity] duration-(--duration-micro) ease-out active:opacity-90 focus-visible:outline-none focus-visible:shadow-(--focus-ring)",children:jsx("span",{"aria-hidden":"true",className:"transition-opacity duration-(--duration-micro) ease-out group-hover/submit:opacity-80",children:"\u2192"})})]})]})}function M(o){return o.external??/^(https?:|mailto:|tel:)/.test(o.href)}function k({size:o="md",brand:a$1,description:n,status:s,localTime:l,columns:f,links:c,subscribe:d,credit:b,meta:_,attribution:h,linkComponent:L,className:R,ref:P,...C}){let E=`\xA9 ${new Date().getFullYear()}`,v=f??(c?.length?[{title:"Links",links:c}]:[]),x=d===void 0?jsx(p,{}):d,F=_??b??E,g=v.length+(x?1:0);return jsx("footer",{ref:P,"data-slot":"footer","data-size":o,className:a("ml-footer border-border bg-background w-full border-t text-body",R),...C,children:jsxs("div",{className:"ml-footer__container mx-auto w-full",children:[jsxs("div",{className:"ml-footer__layout grid",children:[jsxs("div",{className:"ml-footer__intro flex flex-col",children:[a$1?jsx("div",{className:"ml-footer__brand font-script leading-none font-bold text-primary",children:a$1}):null,n?jsx("p",{className:"ml-footer__description text-body",children:n}):null,s||l?jsxs("div",{className:"flex flex-wrap items-center gap-x-ml-5 gap-y-ml-3",children:[s,l?jsx("span",{className:"text-muted-foreground font-mono text-xs tracking-(--ml-footer-local-time-tracking)",children:l}):null]}):null]}),jsxs("div",{className:a("ml-footer__columns grid min-w-0",g<=1&&"grid-cols-1",g===2&&"grid-cols-2",g>=3&&"grid-cols-2 md:grid-cols-3"),children:[v.map((m,$)=>jsxs("nav",{"aria-label":typeof m.title=="string"?m.title:void 0,className:"flex min-w-0 flex-col gap-ml-3",children:[jsx("span",{className:"ml-eyebrow block",children:m.title}),m.links.map((i,O)=>{let y=M(i),Y=i.as??L??"a";return jsxs(Y,{href:i.href,target:i.target??(y?"_blank":void 0),rel:i.rel??(y?"noopener noreferrer":void 0),className:"ml-footer__link group/link inline-flex w-fit items-center leading-none text-body no-underline transition-[color,box-shadow] duration-(--duration-micro) ease-out hover:text-primary focus-visible:outline-none focus-visible:shadow-(--focus-ring)",children:[jsx("span",{children:i.label}),y?jsx("span",{className:"text-muted-foreground ml-ml-1 transition-[color,opacity] duration-(--duration-micro) ease-out group-hover/link:text-primary","aria-hidden":"true",children:"\u2197"}):null]},`${i.href}-${O}`)})]},`${String(m.title)}-${$}`)),x?jsxs("div",{className:"col-span-2 hidden min-w-0 flex-col gap-ml-3 md:col-span-1 md:flex",children:[jsx("span",{className:"ml-eyebrow block",children:"Subscribe"}),x]}):null]})]}),jsxs("div",{className:"ml-footer__meta text-muted-foreground border-border flex flex-col gap-ml-3 border-t font-mono leading-relaxed md:flex-row md:items-start md:justify-between",children:[F?jsx("p",{className:"max-w-(--ml-footer-meta-copy-max)",children:F}):null,h?jsx("p",{children:h}):null]})]})})}function S({children:o="Open to work",className:a$1,ref:n,...s}){return jsxs("span",{ref:n,className:a("inline-flex items-center gap-ml-2 rounded-full border border-accent bg-accent-soft px-ml-3 py-ml-1 font-mono text-(length:--ml-footer-status-text) font-semibold tracking-(--ml-footer-status-tracking) text-accent uppercase transition-[background-color,border-color] duration-(--duration-micro) ease-out sm:text-(length:--ml-footer-status-text-tablet)",a$1),...s,children:[jsx("span",{className:"size-ml-1-5 shrink-0 rounded-full bg-accent"}),o]})}var ne=Object.assign(k,{displayName:"Footer",Status:S,Subscribe:p,Link:w});export{ne as a};//# sourceMappingURL=chunk-COFALEVG.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-COFALEVG.js.map
|