poinqu-ui-kit 0.0.0-stage → 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/CHANGELOG.md ADDED
@@ -0,0 +1,60 @@
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.0] — 2026-10-25
8
+
9
+ ### Added
10
+
11
+ - Design system premium: token indigo, shadow baru, radius panel, gradient.
12
+ - Light & dark theme lengkap dengan `ThemeProvider`, `ThemeToggle`, dan
13
+ `ThemeScript` anti-flash.
14
+ - Komponen baru: `Progress`, `Slider`, `Kbd`, `CodeBlock`, `EmptyState`, `Stat`,
15
+ `StatGrid`, `PageHeader`.
16
+ - `Avatar` mendukung ukuran `xs`–`lg`, indikator kehadiran, dan foto native.
17
+ - `TableRow` mendukung `interactive`.
18
+ - Situs dokumentasi: landing page, `/docs`, installation, theming, indeks
19
+ komponen, halaman komponen dinamis dengan live preview & API reference,
20
+ changelog, 404, sitemap, robots, dan manifest.
21
+ - Pencarian dokumentasi dengan shortcut `⌘K` dan navigasi keyboard.
22
+ - Paket npm: build ESM, TypeScript declarations, stylesheet terpisah, sourcemap,
23
+ `exports` map, dan `"use client"` boundary.
24
+ - CI workflow untuk typecheck, lint, build library, dan build situs.
25
+ - Publikasi npm otomatis lewat GitHub release/tag.
26
+
27
+ ### Changed
28
+
29
+ - Warna accent diubah dari netral gelap menjadi indigo premium.
30
+ - `styles/poinqu.css` menjadi sumber tunggal design token untuk aplikasi dan
31
+ paket.
32
+ - `package.json` diubah menjadi paket publik `poinqu-ui-kit` (MIT).
33
+ - README ditulis ulang dengan panduan instalasi, theming, dan publikasi.
34
+
35
+ ### Fixed
36
+
37
+ - `Avatar` tidak lagi bergantung pada `next/image` sehingga paket tetap
38
+ framework-agnostic.
39
+ - CSS paket sekarang memuat token dan base layer, bukan hanya CSS Modules
40
+ komponen.
41
+ - Merapikan jarak bawah konten dokumentasi dan showcase.
42
+ - Menambah jarak antar grup menu di sidebar dokumentasi.
43
+ - Memberi jarak antar code block package manager di halaman instalasi.
44
+ - Code block sekarang mengikuti tema: permukaan terang di light mode dan gelap di
45
+ dark mode.
46
+ - Sidebar dan header dokumentasi diberi warna permukaan sendiri agar hierarki
47
+ visual lebih jelas.
48
+
49
+ ## [0.1.0] — 2026-08-18
50
+
51
+ ### Added
52
+
53
+ - Rilis internal pertama.
54
+ - Primitives: `Button`, `Card`, `Badge`, `Alert`, `Input`, `Select`, `Textarea`.
55
+ - Navigasi: `Tabs`, `Breadcrumb`, `Collapse`, `Stepper`, `Pagination`.
56
+ - Feedback: `Toast`, `Modal`, `AlertDialog`, `Tooltip`, `Spinner`,
57
+ `Placeholder`.
58
+ - Data: `Table`, `DataTable`, `Trace`, `Marker`, `ListGroup`, `Accordion`.
59
+ - Form: `Combobox`, `Checkbox`, `RadioGroup`, `Switch`, `RangeSelect`.
60
+ - 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,274 @@
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
+ ## Dokumentasi di repo ini
112
+
113
+ Repo ini sekaligus menjadi situs dokumentasi (Next.js App Router):
114
+
115
+ | Route | Isi |
116
+ |---|---|
117
+ | `/` | Landing page premium |
118
+ | `/docs` | Pengantar dan quick start |
119
+ | `/docs/installation` | Instalasi untuk Next.js, Vite, dan React |
120
+ | `/docs/theming` | Token, brand color, dark mode, scoped theme |
121
+ | `/docs/components` | Indeks semua komponen |
122
+ | `/docs/components/[slug]` | Live preview, usage, API reference |
123
+ | `/docs/changelog` | Release notes |
124
+ | `/components` | Showcase interaktif seluruh komponen |
125
+
126
+ Menjalankan situs:
127
+
128
+ ```bash
129
+ npm install
130
+ npm run dev
131
+ ```
132
+
133
+ Buka [http://localhost:3000](http://localhost:3000).
134
+
135
+ ---
136
+
137
+ ## Komponen
138
+
139
+ | Grup | Komponen |
140
+ |---|---|
141
+ | Theme | `ThemeProvider`, `ThemeToggle`, `ThemeScript` |
142
+ | Actions | `Button`, `ButtonGroup` |
143
+ | Display | `Typography`, `Card`, `Badge`, `Avatar`, `Stat`, `StatGrid`, `Kbd`, `CodeBlock`, `EmptyState`, `PageHeader` |
144
+ | Feedback | `Alert`, `Progress`, `Toast`, `Spinner`, `Placeholder` |
145
+ | Forms | `Input`, `Select`, `Textarea`, `Checkbox`, `RadioGroup`, `Switch`, `Combobox`, `Slider`, `FormField`, `PasswordInput`, `SearchField`, `RangeSelect` |
146
+ | Navigation | `Breadcrumb`, `Tabs`, `Collapse`, `Stepper`, `Pagination` |
147
+ | Overlays | `Modal`, `AlertDialog`, `Dropdown`, `Tooltip`, `AccountModal` |
148
+ | Data display | `Table`, `DataTable`, `ListGroup`, `Accordion`, `Marker`, `Trace`, `Attachment` |
149
+
150
+ Komponen interaktif (`Combobox`, `Modal`, `Dropdown`, `Toast`, `Tooltip`,
151
+ `ThemeToggle`, `CodeBlock`, `Slider`, dll.) adalah Client Components. Paket
152
+ utama ditandai `"use client"` sehingga aman diimpor dari Client Component;
153
+ komponen tetap bisa dirender dari Server Component sebagai child.
154
+
155
+ ---
156
+
157
+ ## Theming
158
+
159
+ Semua warna dan ukuran adalah CSS custom property. Override setelah stylesheet:
160
+
161
+ ```css
162
+ :root {
163
+ --color-accent: #047857;
164
+ --color-accent-top: #10b981;
165
+ --radius-card: 16px;
166
+ }
167
+
168
+ [data-theme="dark"] {
169
+ --color-accent: #34d399;
170
+ --color-accent-top: #6ee7b7;
171
+ }
172
+ ```
173
+
174
+ Baca panduan lengkap di [docs/theming](https://ui.poinqu.com/docs/theming).
175
+
176
+ ---
177
+
178
+ ## Struktur repo
179
+
180
+ ```txt
181
+ app/ # situs dokumentasi + landing (Next.js)
182
+ docs/ # halaman dokumentasi
183
+ components/ # showcase interaktif
184
+ components/
185
+ ui/ # library komponen (entry: index.ts)
186
+ theme/ # ThemeProvider, ThemeToggle, theme script
187
+ docs/ # shell, search, preview, DocPage
188
+ marketing/ # landing page, nav, install command
189
+ showcase/ # demo interaktif semua komponen
190
+ lib/
191
+ data.ts # tipe & data demo
192
+ docs.ts # registry dokumentasi komponen
193
+ styles/
194
+ poinqu.css # design token + base layer (dipakai paket)
195
+ types/
196
+ css.d.ts # deklarasi CSS Modules
197
+ iconify.d.ts # tipe <iconify-icon>
198
+ vite.lib.config.ts # build library (ESM + CSS + .d.ts)
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Scripts
204
+
205
+ | Perintah | Fungsi |
206
+ |---|---|
207
+ | `npm run dev` | Development server dokumentasi |
208
+ | `npm run build` | Build situs Next.js |
209
+ | `npm run start` | Menjalankan hasil build |
210
+ | `npm run lint` | ESLint |
211
+ | `npm run typecheck` | Type-check tanpa emit |
212
+ | `npm run build:lib` | Build paket npm ke `dist/` |
213
+ | `npm run build:all` | Build library lalu situs |
214
+ | `npm run icons:generate` | Regenerasi inline SVG dari `lucide-static` |
215
+ | `npm run pack:dry` | Preview isi tarball npm |
216
+
217
+ ### Build paket
218
+
219
+ ```bash
220
+ npm run build:lib
221
+ ```
222
+
223
+ Output:
224
+
225
+ ```txt
226
+ dist/
227
+ index.mjs # ESM bundle (dengan "use client")
228
+ index.d.ts # TypeScript declarations
229
+ poinqu-ui.css # tokens + seluruh style komponen
230
+ index.mjs.map
231
+ ```
232
+
233
+ ### Publikasi ke npm
234
+
235
+ ```bash
236
+ npm login
237
+ npm run pack:dry # cek isi paket
238
+ npm publish
239
+ ```
240
+
241
+ `prepublishOnly` otomatis menjalankan `build:lib`. Versi mengikuti semver.
242
+ Untuk rilis beta: `npm publish --tag beta`.
243
+
244
+ ---
245
+
246
+ ## Requirements
247
+
248
+ - Node.js `>=18.18`
249
+ - React `>=18.2` (React 19 didukung)
250
+ - CSS Modules (built-in di Next.js & Vite)
251
+
252
+ ### Icons
253
+
254
+ Semua ikon Lucide yang dipakai komponen bawaan sudah dibundel sebagai inline
255
+ SVG—tidak perlu script eksternal dan tetap tampil saat SSR. Jika Anda memakai
256
+ nama ikon lain lewat prop `icon` (mis. `mdi:home`), muat Iconify web component
257
+ sekali di aplikasi:
258
+
259
+ ```html
260
+ <script src="https://code.iconify.design/iconify-icon/3.0.0/iconify-icon.min.js"></script>
261
+ ```
262
+
263
+ ## Kontribusi
264
+
265
+ 1. Buat komponen di `components/ui/Nama.tsx` + `Nama.module.css`.
266
+ 2. Gunakan token dari `styles/poinqu.css`, jangan hardcode warna.
267
+ 3. Tambahkan demo di `components/showcase/ComponentShowcase.tsx`.
268
+ 4. Tambahkan entri dokumentasi di `lib/docs.ts` dan preview di
269
+ `components/docs/DocPreview.tsx`.
270
+ 5. Jalankan `npm run typecheck && npm run lint && npm run build:all`.
271
+
272
+ ## Lisensi
273
+
274
+ 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.