poinqu-ui-kit 0.0.0-stage → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,75 @@
1
+ # Changelog
2
+
3
+ Semua perubahan penting pada Poinqu UI. Format mengikuti
4
+ [Keep a Changelog](https://keepachangelog.com/) dan
5
+ [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [0.2.1] — 2026-10-26
8
+
9
+ ### Fixed
10
+
11
+ - `Breadcrumb` tidak lagi mengimpor `next/link`; sekarang memakai anchor native
12
+ dan mendukung prop `linkComponent` untuk Next.js atau router lain.
13
+ - Build paket tidak lagi membawa kode internal Next.js dan tidak membutuhkan
14
+ shim `process`, sehingga aman dipakai sebagai ESM dari CDN.
15
+ - Ukuran `dist/index.mjs` turun dari ±216 kB menjadi ±119 kB.
16
+
17
+ ### Added
18
+
19
+ - Dukungan CDN lewat jsDelivr + import map, didokumentasikan di README dan
20
+ halaman installation.
21
+
22
+ ## [0.2.0] — 2026-10-25
23
+
24
+ ### Added
25
+
26
+ - Design system premium: token indigo, shadow baru, radius panel, gradient.
27
+ - Light & dark theme lengkap dengan `ThemeProvider`, `ThemeToggle`, dan
28
+ `ThemeScript` anti-flash.
29
+ - Komponen baru: `Progress`, `Slider`, `Kbd`, `CodeBlock`, `EmptyState`, `Stat`,
30
+ `StatGrid`, `PageHeader`.
31
+ - `Avatar` mendukung ukuran `xs`–`lg`, indikator kehadiran, dan foto native.
32
+ - `TableRow` mendukung `interactive`.
33
+ - Situs dokumentasi: landing page, `/docs`, installation, theming, indeks
34
+ komponen, halaman komponen dinamis dengan live preview & API reference,
35
+ changelog, 404, sitemap, robots, dan manifest.
36
+ - Pencarian dokumentasi dengan shortcut `⌘K` dan navigasi keyboard.
37
+ - Paket npm: build ESM, TypeScript declarations, stylesheet terpisah, sourcemap,
38
+ `exports` map, dan `"use client"` boundary.
39
+ - CI workflow untuk typecheck, lint, build library, dan build situs.
40
+ - Publikasi npm otomatis lewat GitHub release/tag.
41
+
42
+ ### Changed
43
+
44
+ - Warna accent diubah dari netral gelap menjadi indigo premium.
45
+ - `styles/poinqu.css` menjadi sumber tunggal design token untuk aplikasi dan
46
+ paket.
47
+ - `package.json` diubah menjadi paket publik `poinqu-ui-kit` (MIT).
48
+ - README ditulis ulang dengan panduan instalasi, theming, dan publikasi.
49
+
50
+ ### Fixed
51
+
52
+ - `Avatar` tidak lagi bergantung pada `next/image` sehingga paket tetap
53
+ framework-agnostic.
54
+ - CSS paket sekarang memuat token dan base layer, bukan hanya CSS Modules
55
+ komponen.
56
+ - Merapikan jarak bawah konten dokumentasi dan showcase.
57
+ - Menambah jarak antar grup menu di sidebar dokumentasi.
58
+ - Memberi jarak antar code block package manager di halaman instalasi.
59
+ - Code block sekarang mengikuti tema: permukaan terang di light mode dan gelap di
60
+ dark mode.
61
+ - Sidebar dan header dokumentasi diberi warna permukaan sendiri agar hierarki
62
+ visual lebih jelas.
63
+
64
+ ## [0.1.0] — 2026-08-18
65
+
66
+ ### Added
67
+
68
+ - Rilis internal pertama.
69
+ - Primitives: `Button`, `Card`, `Badge`, `Alert`, `Input`, `Select`, `Textarea`.
70
+ - Navigasi: `Tabs`, `Breadcrumb`, `Collapse`, `Stepper`, `Pagination`.
71
+ - Feedback: `Toast`, `Modal`, `AlertDialog`, `Tooltip`, `Spinner`,
72
+ `Placeholder`.
73
+ - Data: `Table`, `DataTable`, `Trace`, `Marker`, `ListGroup`, `Accordion`.
74
+ - Form: `Combobox`, `Checkbox`, `RadioGroup`, `Switch`, `RangeSelect`.
75
+ - Showcase interaktif di halaman utama.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Poinqu
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 CHANGED
@@ -1,3 +1,325 @@
1
- # Temporary Holding Version
1
+ # Poinqu UI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **Design system React yang premium, aksesibel, dan siap dipasang lewat npm.**
4
+
5
+ Poinqu UI berisi 40+ komponen untuk dashboard, admin panel, dan produk SaaS.
6
+ Semua komponen memakai token yang sama, mendukung light & dark mode, dan
7
+ ditulis dengan TypeScript strict.
8
+
9
+ - 📚 Dokumentasi: **https://ui.poinqu.com/docs**
10
+ - 🧩 Showcase interaktif: **https://ui.poinqu.com/components**
11
+ - 📦 npm: **https://www.npmjs.com/package/poinqu-ui-kit**
12
+
13
+ ---
14
+
15
+ ## Fitur
16
+
17
+ - **40+ komponen** — actions, display, feedback, forms, navigation, overlays,
18
+ dan data display.
19
+ - **Light & dark theme** — palet gelap yang dirancang, bukan inversi otomatis.
20
+ - **Design token** — warna, radius, shadow, spacing, dan tipografi bisa
21
+ di-override tanpa fork.
22
+ - **Aksesibel** — focus ring, keyboard navigation, ARIA, native dialog, dan
23
+ dukungan `prefers-reduced-motion`.
24
+ - **Typed end-to-end** — prop types diekspor, ESM, tree-shakeable.
25
+ - **Zero runtime dependencies** — React dan React DOM hanya peer dependency.
26
+ - **Dokumentasi lengkap** — live preview, API reference, pencarian `⌘K`, dan
27
+ changelog.
28
+
29
+ ---
30
+
31
+ ## Instalasi
32
+
33
+ ```bash
34
+ npm install poinqu-ui-kit
35
+ ```
36
+
37
+ Import stylesheet sekali di entry aplikasi:
38
+
39
+ ```tsx
40
+ import "poinqu-ui-kit/styles.css";
41
+ ```
42
+
43
+ ### Quick start
44
+
45
+ ```tsx
46
+ import "poinqu-ui-kit/styles.css";
47
+ import {
48
+ Badge,
49
+ Button,
50
+ Card,
51
+ CardBody,
52
+ CardHeader,
53
+ } from "poinqu-ui-kit";
54
+
55
+ export function WorkspaceCard() {
56
+ return (
57
+ <Card>
58
+ <CardHeader
59
+ title="Workspace"
60
+ description="Kelola workspace dan anggota tim."
61
+ actions={<Badge tone="success" dot>Active</Badge>}
62
+ />
63
+ <CardBody>
64
+ <Button
65
+ label="Simpan perubahan"
66
+ variant="solid"
67
+ tone="primary"
68
+ icon="lucide:save"
69
+ />
70
+ </CardBody>
71
+ </Card>
72
+ );
73
+ }
74
+ ```
75
+
76
+ ### Provider (opsional, direkomendasikan)
77
+
78
+ ```tsx
79
+ "use client";
80
+
81
+ import { ThemeProvider, ToastProvider } from "poinqu-ui-kit";
82
+
83
+ export function Providers({ children }: { children: React.ReactNode }) {
84
+ return (
85
+ <ThemeProvider defaultTheme="system">
86
+ <ToastProvider>{children}</ToastProvider>
87
+ </ThemeProvider>
88
+ );
89
+ }
90
+ ```
91
+
92
+ `ThemeProvider` mengaktifkan light/dark/system dan menyimpan preferensi.
93
+ `ToastProvider` diperlukan untuk `useToast`.
94
+
95
+ ### Next.js theme script
96
+
97
+ Agar tidak ada flash tema yang salah, render `ThemeScript` sebagai child pertama
98
+ `<body>`:
99
+
100
+ ```tsx
101
+ import { ThemeScript } from "poinqu-ui-kit";
102
+
103
+ <body>
104
+ <ThemeScript />
105
+ {children}
106
+ </body>
107
+ ```
108
+
109
+ ---
110
+
111
+ ### CDN / tanpa build step
112
+
113
+ CSS tersedia langsung dari jsDelivr:
114
+
115
+ ```html
116
+ <link
117
+ rel="stylesheet"
118
+ href="https://cdn.jsdelivr.net/npm/poinqu-ui-kit@0.2.1/dist/poinqu-ui.css"
119
+ />
120
+ ```
121
+
122
+ Untuk komponen React, paket npm berupa ESM dan React di-resolve lewat
123
+ `importmap`:
124
+
125
+ ```html
126
+ <script type="importmap">
127
+ {
128
+ "imports": {
129
+ "react": "https://esm.sh/react@19.3.0",
130
+ "react-dom": "https://esm.sh/react-dom@19.3.0?deps=react@19.3.0",
131
+ "react/jsx-runtime": "https://esm.sh/react@19.3.0/jsx-runtime",
132
+ "react-dom/client": "https://esm.sh/react-dom@19.3.0/client?deps=react@19.3.0"
133
+ }
134
+ }
135
+ </script>
136
+
137
+ <div id="root"></div>
138
+
139
+ <script type="module">
140
+ import React from "react";
141
+ import { createRoot } from "react-dom/client";
142
+ import { Button, ThemeProvider } from "https://cdn.jsdelivr.net/npm/poinqu-ui-kit@0.2.1/dist/index.mjs";
143
+
144
+ const h = React.createElement;
145
+
146
+ createRoot(document.getElementById("root")).render(
147
+ h(ThemeProvider, null,
148
+ h(Button, {
149
+ label: "CDN works",
150
+ variant: "solid",
151
+ tone: "primary",
152
+ icon: "lucide:check",
153
+ }),
154
+ ),
155
+ );
156
+ </script>
157
+ ```
158
+
159
+ Tanpa build step tidak ada JSX; gunakan `React.createElement` atau `htm`.
160
+ Untuk produksi, bundling tetap disarankan.
161
+
162
+ ## Dokumentasi di repo ini
163
+
164
+ Repo ini sekaligus menjadi situs dokumentasi (Next.js App Router):
165
+
166
+ | Route | Isi |
167
+ |---|---|
168
+ | `/` | Landing page premium |
169
+ | `/docs` | Pengantar dan quick start |
170
+ | `/docs/installation` | Instalasi untuk Next.js, Vite, dan React |
171
+ | `/docs/theming` | Token, brand color, dark mode, scoped theme |
172
+ | `/docs/components` | Indeks semua komponen |
173
+ | `/docs/components/[slug]` | Live preview, usage, API reference |
174
+ | `/docs/changelog` | Release notes |
175
+ | `/components` | Showcase interaktif seluruh komponen |
176
+
177
+ Menjalankan situs:
178
+
179
+ ```bash
180
+ npm install
181
+ npm run dev
182
+ ```
183
+
184
+ Buka [http://localhost:3000](http://localhost:3000).
185
+
186
+ ---
187
+
188
+ ## Komponen
189
+
190
+ | Grup | Komponen |
191
+ |---|---|
192
+ | Theme | `ThemeProvider`, `ThemeToggle`, `ThemeScript` |
193
+ | Actions | `Button`, `ButtonGroup` |
194
+ | Display | `Typography`, `Card`, `Badge`, `Avatar`, `Stat`, `StatGrid`, `Kbd`, `CodeBlock`, `EmptyState`, `PageHeader` |
195
+ | Feedback | `Alert`, `Progress`, `Toast`, `Spinner`, `Placeholder` |
196
+ | Forms | `Input`, `Select`, `Textarea`, `Checkbox`, `RadioGroup`, `Switch`, `Combobox`, `Slider`, `FormField`, `PasswordInput`, `SearchField`, `RangeSelect` |
197
+ | Navigation | `Breadcrumb`, `Tabs`, `Collapse`, `Stepper`, `Pagination` |
198
+ | Overlays | `Modal`, `AlertDialog`, `Dropdown`, `Tooltip`, `AccountModal` |
199
+ | Data display | `Table`, `DataTable`, `ListGroup`, `Accordion`, `Marker`, `Trace`, `Attachment` |
200
+
201
+ Komponen interaktif (`Combobox`, `Modal`, `Dropdown`, `Toast`, `Tooltip`,
202
+ `ThemeToggle`, `CodeBlock`, `Slider`, dll.) adalah Client Components. Paket
203
+ utama ditandai `"use client"` sehingga aman diimpor dari Client Component;
204
+ komponen tetap bisa dirender dari Server Component sebagai child.
205
+
206
+ ---
207
+
208
+ ## Theming
209
+
210
+ Semua warna dan ukuran adalah CSS custom property. Override setelah stylesheet:
211
+
212
+ ```css
213
+ :root {
214
+ --color-accent: #047857;
215
+ --color-accent-top: #10b981;
216
+ --radius-card: 16px;
217
+ }
218
+
219
+ [data-theme="dark"] {
220
+ --color-accent: #34d399;
221
+ --color-accent-top: #6ee7b7;
222
+ }
223
+ ```
224
+
225
+ Baca panduan lengkap di [docs/theming](https://ui.poinqu.com/docs/theming).
226
+
227
+ ---
228
+
229
+ ## Struktur repo
230
+
231
+ ```txt
232
+ app/ # situs dokumentasi + landing (Next.js)
233
+ docs/ # halaman dokumentasi
234
+ components/ # showcase interaktif
235
+ components/
236
+ ui/ # library komponen (entry: index.ts)
237
+ theme/ # ThemeProvider, ThemeToggle, theme script
238
+ docs/ # shell, search, preview, DocPage
239
+ marketing/ # landing page, nav, install command
240
+ showcase/ # demo interaktif semua komponen
241
+ lib/
242
+ data.ts # tipe & data demo
243
+ docs.ts # registry dokumentasi komponen
244
+ styles/
245
+ poinqu.css # design token + base layer (dipakai paket)
246
+ types/
247
+ css.d.ts # deklarasi CSS Modules
248
+ iconify.d.ts # tipe <iconify-icon>
249
+ vite.lib.config.ts # build library (ESM + CSS + .d.ts)
250
+ ```
251
+
252
+ ---
253
+
254
+ ## Scripts
255
+
256
+ | Perintah | Fungsi |
257
+ |---|---|
258
+ | `npm run dev` | Development server dokumentasi |
259
+ | `npm run build` | Build situs Next.js |
260
+ | `npm run start` | Menjalankan hasil build |
261
+ | `npm run lint` | ESLint |
262
+ | `npm run typecheck` | Type-check tanpa emit |
263
+ | `npm run build:lib` | Build paket npm ke `dist/` |
264
+ | `npm run build:all` | Build library lalu situs |
265
+ | `npm run icons:generate` | Regenerasi inline SVG dari `lucide-static` |
266
+ | `npm run pack:dry` | Preview isi tarball npm |
267
+
268
+ ### Build paket
269
+
270
+ ```bash
271
+ npm run build:lib
272
+ ```
273
+
274
+ Output:
275
+
276
+ ```txt
277
+ dist/
278
+ index.mjs # ESM bundle (dengan "use client")
279
+ index.d.ts # TypeScript declarations
280
+ poinqu-ui.css # tokens + seluruh style komponen
281
+ index.mjs.map
282
+ ```
283
+
284
+ ### Publikasi ke npm
285
+
286
+ ```bash
287
+ npm login
288
+ npm run pack:dry # cek isi paket
289
+ npm publish
290
+ ```
291
+
292
+ `prepublishOnly` otomatis menjalankan `build:lib`. Versi mengikuti semver.
293
+ Untuk rilis beta: `npm publish --tag beta`.
294
+
295
+ ---
296
+
297
+ ## Requirements
298
+
299
+ - Node.js `>=18.18`
300
+ - React `>=18.2` (React 19 didukung)
301
+ - CSS Modules (built-in di Next.js & Vite)
302
+
303
+ ### Icons
304
+
305
+ Semua ikon Lucide yang dipakai komponen bawaan sudah dibundel sebagai inline
306
+ SVG—tidak perlu script eksternal dan tetap tampil saat SSR. Jika Anda memakai
307
+ nama ikon lain lewat prop `icon` (mis. `mdi:home`), muat Iconify web component
308
+ sekali di aplikasi:
309
+
310
+ ```html
311
+ <script src="https://code.iconify.design/iconify-icon/3.0.0/iconify-icon.min.js"></script>
312
+ ```
313
+
314
+ ## Kontribusi
315
+
316
+ 1. Buat komponen di `components/ui/Nama.tsx` + `Nama.module.css`.
317
+ 2. Gunakan token dari `styles/poinqu.css`, jangan hardcode warna.
318
+ 3. Tambahkan demo di `components/showcase/ComponentShowcase.tsx`.
319
+ 4. Tambahkan entri dokumentasi di `lib/docs.ts` dan preview di
320
+ `components/docs/DocPreview.tsx`.
321
+ 5. Jalankan `npm run typecheck && npm run lint && npm run build:all`.
322
+
323
+ ## Lisensi
324
+
325
+ MIT © 2026 Poinqu.
@@ -0,0 +1,24 @@
1
+ # Third-party notices
2
+
3
+ ## Lucide icons
4
+
5
+ The inline SVG fallback data in `components/ui/icon-data.ts` is generated from
6
+ [lucide-static](https://lucide.dev).
7
+
8
+ ISC License
9
+
10
+ Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of
11
+ Feather (MIT). All other copyright (c) for Lucide are held by Lucide
12
+ Contributors 2022-2026.
13
+
14
+ Permission to use, copy, modify, and/or distribute this software for any purpose
15
+ with or without fee is hereby granted, provided that the above copyright notice
16
+ and this permission notice appear in all copies.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
19
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
20
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
21
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
22
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
23
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
24
+ THIS SOFTWARE.