@privateaim/client-vue-theme 0.11.4 โ 0.12.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/README.md +40 -0
- package/package.json +8 -8
- package/src/index.css +21 -195
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://github.com/PrivateAIM/hub" target="_blank" rel="noopener noreferrer">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/PrivateAIM/hub/master/.github/assets/logo.svg" alt="FLAME Hub" height="90">
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<h1 align="center">@privateaim/client-vue-theme ๐</h1>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<b>The vuecs theme for FLAME Hub clients.</b><br>
|
|
11
|
+
Design tokens, light/dark chrome & card system built on <a href="https://github.com/tada5hi/vuecs">@vuecs/theme-tailwind</a>.
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<a href="https://www.npmjs.com/package/@privateaim/client-vue-theme"><img src="https://img.shields.io/npm/v/@privateaim/client-vue-theme?logo=npm&logoColor=fff&label=npm&color=cb3837" alt="npm version"></a>
|
|
16
|
+
<a href="https://www.npmjs.com/package/@privateaim/client-vue-theme"><img src="https://img.shields.io/npm/dm/@privateaim/client-vue-theme?color=cb3837&label=downloads" alt="npm downloads"></a>
|
|
17
|
+
<a href="https://github.com/PrivateAIM/hub/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="license"></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="https://docs.privateaim.net"><b>Documentation</b></a> ยท
|
|
22
|
+
<a href="https://github.com/PrivateAIM/hub">Monorepo</a> ยท
|
|
23
|
+
<a href="https://github.com/PrivateAIM/hub/blob/master/CONTRIBUTING.md">Contributing</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
Part of the **[FLAME Hub](https://github.com/PrivateAIM/hub)** monorepo โ central services for the [PrivateAIM](https://privateaim.net) platform. Built on [vuecs](https://github.com/tada5hi/vuecs) and [Tailwind CSS](https://tailwindcss.com).
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install @privateaim/client-vue-theme
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## License
|
|
37
|
+
|
|
38
|
+
Made with ๐
|
|
39
|
+
|
|
40
|
+
Published under [Apache 2.0](https://github.com/PrivateAIM/hub/blob/master/LICENSE).
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privateaim/client-vue-theme",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.12.0",
|
|
5
5
|
"description": "PrivateAIM theme for vuecs components, built on top of @vuecs/theme-tailwind.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"exports": {
|
|
@@ -45,15 +45,15 @@
|
|
|
45
45
|
},
|
|
46
46
|
"homepage": "https://github.com/PrivateAim/hub#readme",
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@authup/client-web-kit-theme": "^1.0.0-beta.
|
|
49
|
-
"@vuecs/design": "^1.0.
|
|
50
|
-
"@vuecs/theme-tailwind": "^
|
|
48
|
+
"@authup/client-web-kit-theme": "^1.0.0-beta.50",
|
|
49
|
+
"@vuecs/design": "^1.0.7",
|
|
50
|
+
"@vuecs/theme-tailwind": "^6.2.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@vuecs/core": "^3.
|
|
54
|
-
"@vuecs/design": "^1.
|
|
55
|
-
"@vuecs/theme-tailwind": "^
|
|
56
|
-
"tailwindcss": "^4.
|
|
53
|
+
"@vuecs/core": "^3.3.0",
|
|
54
|
+
"@vuecs/design": "^1.0.7",
|
|
55
|
+
"@vuecs/theme-tailwind": "^6.2.0",
|
|
56
|
+
"tailwindcss": "^4.3.1"
|
|
57
57
|
},
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
package/src/index.css
CHANGED
|
@@ -243,160 +243,30 @@
|
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
/* ------------------------------------------------------------------
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
to
|
|
246
|
+
Structural component styles (no @vuecs equivalent)
|
|
247
|
+
|
|
248
|
+
The Bootstrap-compat shims (`.btn*`, `.alert*`, `.row`/`.col`,
|
|
249
|
+
`.navbar*`, `.badge`, `.is-valid`, `.form-group`/`.form-switch`,
|
|
250
|
+
`.text-*`/`.bg-*` aliases, `.dropdown*`) were retired โ their call
|
|
251
|
+
sites moved to `<VCButton>` / `<VCAlert>` / `<VCBadge>` / native
|
|
252
|
+
`@vuecs/forms` + Tailwind utilities (status colors via
|
|
253
|
+
`resolveTextColorClass()` in `@privateaim/client-vue`).
|
|
254
|
+
|
|
255
|
+
What remains here styles structure `@vuecs` does not provide: the
|
|
256
|
+
progress track/bar, the joined-tab pagination look, and the inner
|
|
257
|
+
chrome of `<VCModal>`.
|
|
252
258
|
------------------------------------------------------------------ */
|
|
253
259
|
@layer components {
|
|
254
|
-
/*
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
.btn-xs { @apply px-1.5! py-1.25! text-xs!; }
|
|
264
|
-
.btn-sm { @apply px-2! py-1! text-xs!; }
|
|
265
|
-
.btn-md { @apply px-2! py-1! text-base!; }
|
|
266
|
-
.btn-lg { @apply px-4! py-2! text-base!; }
|
|
267
|
-
.btn-block { @apply block w-full; }
|
|
268
|
-
|
|
269
|
-
.btn-primary { @apply bg-primary-600 text-on-primary hover:bg-primary-700; }
|
|
270
|
-
.btn-secondary { @apply bg-bg-elevated text-fg hover:bg-bg-muted; }
|
|
271
|
-
.btn-success { @apply bg-success-600 text-on-success hover:bg-success-700; }
|
|
272
|
-
.btn-danger { @apply bg-error-600 text-on-error hover:bg-error-700; }
|
|
273
|
-
.btn-warning { @apply bg-warning-500 text-on-warning hover:bg-warning-600; }
|
|
274
|
-
/* btn-info is reachable only via dynamic `btn-${classSuffix}`
|
|
275
|
-
(F*Command components) โ keep it despite zero static users. */
|
|
276
|
-
.btn-info { @apply bg-info-500 text-on-info hover:bg-info-600; }
|
|
277
|
-
.btn-dark { @apply bg-fg text-bg hover:opacity-80; }
|
|
278
|
-
|
|
279
|
-
/* Semantic color aliases โ status/approval components build
|
|
280
|
-
`text-${suffix}` / `bg-${suffix}` / `btn-${suffix}` dynamically
|
|
281
|
-
(FProcessStatus, F*ApprovalStatus, F*Command, โฆ), which the Tailwind
|
|
282
|
-
scanner cannot see; these map the Bootstrap-era bare names onto the
|
|
283
|
-
token scale. `bg-dark` / `bg-secondary` pair with white `text-light`
|
|
284
|
-
chips, so they pin the RAW neutral scale (mode-stable) rather than
|
|
285
|
-
the flipped semantic `fg` token. */
|
|
286
|
-
.text-primary { @apply text-primary-600; }
|
|
287
|
-
.text-success { @apply text-success-600; }
|
|
288
|
-
.text-warning { @apply text-warning-600; }
|
|
289
|
-
.text-danger { @apply text-error-600; }
|
|
290
|
-
.text-info { @apply text-info-600; }
|
|
291
|
-
.text-dark { @apply text-fg; }
|
|
292
|
-
.text-light { @apply text-white; }
|
|
293
|
-
|
|
294
|
-
/* Dark mode โ the 600 weights are tuned for light surfaces and turn
|
|
295
|
-
harsh/dim on the dark content bg; lift warning/danger/info to the
|
|
296
|
-
hand-tuned text tokens (same hues as the alert surfaces). */
|
|
297
|
-
.dark .text-warning { color: var(--privateaim-warning-text); }
|
|
298
|
-
.dark .text-danger { color: var(--privateaim-danger-text); }
|
|
299
|
-
.dark .text-info { color: var(--privateaim-info-text); }
|
|
300
|
-
|
|
301
|
-
.bg-primary { @apply bg-primary-600; }
|
|
302
|
-
.bg-success { @apply bg-success-600; }
|
|
303
|
-
.bg-warning { @apply bg-warning-500; }
|
|
304
|
-
/* 500 (not 600) โ Tailwind red-600 reads much harsher than the old
|
|
305
|
-
Bootstrap #dc3545 on the white-text node execution status banner
|
|
306
|
-
(the only `bg-danger` consumer); 500 matches bg-warning's weight. */
|
|
307
|
-
.bg-danger { @apply bg-error-500; }
|
|
308
|
-
.bg-secondary { background-color: var(--vc-color-neutral-500); }
|
|
309
|
-
.bg-dark { background-color: var(--vc-color-neutral-800); }
|
|
310
|
-
|
|
311
|
-
.btn-outline-primary { @apply border-primary-600 text-primary-600 hover:bg-primary-600 hover:text-on-primary; }
|
|
312
|
-
.btn-outline-secondary { @apply border-border text-fg hover:bg-bg-muted; }
|
|
313
|
-
.btn-outline-danger { @apply border-error-600 text-error-600 hover:bg-error-600 hover:text-on-error; }
|
|
314
|
-
.btn-outline-info { @apply border-info-500 text-info-600 hover:bg-info-500 hover:text-on-info; }
|
|
315
|
-
.btn-outline-dark { @apply border-fg text-fg hover:bg-fg hover:text-bg; }
|
|
316
|
-
|
|
317
|
-
/* Grid โ Bootstrap-style 12-col layout via flex (not CSS grid). */
|
|
318
|
-
.row { @apply flex flex-wrap; margin-left: -0.5rem; margin-right: -0.5rem; }
|
|
319
|
-
.col { @apply flex-1 basis-0 px-2; }
|
|
320
|
-
.col-1 { @apply w-1/12 px-2; }
|
|
321
|
-
.col-2 { @apply w-2/12 px-2; }
|
|
322
|
-
.col-3 { @apply w-3/12 px-2; }
|
|
323
|
-
.col-4 { @apply w-4/12 px-2; }
|
|
324
|
-
.col-5 { @apply w-5/12 px-2; }
|
|
325
|
-
.col-6 { @apply w-6/12 px-2; }
|
|
326
|
-
.col-7 { @apply w-7/12 px-2; }
|
|
327
|
-
.col-8 { @apply w-8/12 px-2; }
|
|
328
|
-
.col-9 { @apply w-9/12 px-2; }
|
|
329
|
-
.col-10 { @apply w-10/12 px-2; }
|
|
330
|
-
.col-11 { @apply w-11/12 px-2; }
|
|
331
|
-
.col-12 { @apply w-full px-2; }
|
|
332
|
-
|
|
333
|
-
/* Responsive columns โ md+ breakpoint (hub uses col-sm, col-md, col-lg variants). */
|
|
334
|
-
.col-sm { @apply px-2 sm:flex-1 sm:basis-0; }
|
|
335
|
-
.col-sm-4 { @apply w-full px-2 sm:w-4/12; }
|
|
336
|
-
.col-md { @apply px-2 md:flex-1 md:basis-0; }
|
|
337
|
-
.col-md-3 { @apply w-full px-2 md:w-3/12; }
|
|
338
|
-
.col-md-4 { @apply w-full px-2 md:w-4/12; }
|
|
339
|
-
.col-md-6 { @apply w-full px-2 md:w-6/12; }
|
|
340
|
-
.col-lg-6 { @apply w-full px-2 lg:w-6/12; }
|
|
341
|
-
|
|
342
|
-
.container { @apply mx-auto w-full max-w-screen-lg px-4; }
|
|
343
|
-
.container-fluid { @apply w-full px-4; }
|
|
344
|
-
|
|
345
|
-
/* Cards โ the full mechanism (base + variants, all variable-driven)
|
|
346
|
-
lives in styles/card.css, imported below into @layer components. */
|
|
347
|
-
|
|
348
|
-
/* Alerts ---------------------------------------------------------
|
|
349
|
-
The tinted variants use raw palette steps that do NOT flip with
|
|
350
|
-
the mode โ in dark mode the light `*-50` fills glare against the
|
|
351
|
-
dark surface, so each variant carries a deep-end dark recipe
|
|
352
|
-
(950 fill / 900 border / 300 text). `.alert-dark` builds on
|
|
353
|
-
semantic tokens and adapts on its own. */
|
|
354
|
-
.alert { @apply relative mb-3 rounded-md border px-4 py-3; }
|
|
355
|
-
.alert-sm { @apply px-3 py-2 text-sm; }
|
|
356
|
-
.alert-primary { @apply border-primary-200 bg-primary-50 text-primary-700 dark:border-primary-900 dark:bg-primary-950 dark:text-primary-300; }
|
|
357
|
-
.alert-success { @apply border-success-200 bg-success-50 text-success-700 dark:border-success-900 dark:bg-success-950 dark:text-success-300; }
|
|
358
|
-
/* Orange scale (not the amber `warning` tokens) โ amber's dark end
|
|
359
|
-
reads brown; orange keeps the warm tone in both modes. */
|
|
360
|
-
.alert-warning { @apply border-orange-200 bg-orange-50 text-orange-700; }
|
|
361
|
-
.alert-danger { @apply border-error-200 bg-error-50 text-error-700; }
|
|
362
|
-
.alert-info { @apply border-info-200 bg-info-50 text-info-700; }
|
|
363
|
-
.alert-dark { @apply border-border bg-bg-elevated text-fg; }
|
|
364
|
-
|
|
365
|
-
/* Warning / danger / info dark recipes use the hand-tuned surface
|
|
366
|
-
tokens (see the `.dark` token block above) โ the palette deep
|
|
367
|
-
ends the other variants use read brown/black/near-navy. */
|
|
368
|
-
.dark .alert-warning {
|
|
369
|
-
background-color: var(--privateaim-warning-surface);
|
|
370
|
-
border-color: var(--privateaim-warning-surface-border);
|
|
371
|
-
color: var(--privateaim-warning-surface-fg);
|
|
372
|
-
}
|
|
373
|
-
.dark .alert-danger {
|
|
374
|
-
background-color: var(--privateaim-danger-surface);
|
|
375
|
-
border-color: var(--privateaim-danger-surface-border);
|
|
376
|
-
color: var(--privateaim-danger-surface-fg);
|
|
377
|
-
}
|
|
378
|
-
.dark .alert-info {
|
|
379
|
-
background-color: var(--privateaim-info-surface);
|
|
380
|
-
border-color: var(--privateaim-info-surface-border);
|
|
381
|
-
color: var(--privateaim-info-surface-fg);
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/* Badges --------------------------------------------------------- */
|
|
385
|
-
.badge {
|
|
386
|
-
@apply inline-flex items-center rounded-full px-2 py-0.5
|
|
387
|
-
text-xs font-medium;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/* Progress โ Bootstrap-shaped track + bar (analysis build/exec/
|
|
391
|
-
distribution steps, master-image card). The bar's color comes from a
|
|
392
|
-
`bg-*` utility on the markup and its width from an inline style; this
|
|
393
|
-
only restores the structure Bootstrap used to provide. */
|
|
260
|
+
/* Progress โ track + bar (analysis build/exec/distribution steps,
|
|
261
|
+
master-image card). The bar's color comes from a `bg-*` utility on
|
|
262
|
+
the markup and its width from an inline style.
|
|
263
|
+
|
|
264
|
+
`bg-bg` (the base content surface) + a border, NOT `bg-bg-muted`:
|
|
265
|
+
the track is mostly consumed inside `.card-grey` whose `--card-bg`
|
|
266
|
+
IS `bg-bg-muted`, so a muted track vanished into the card. The
|
|
267
|
+
darker base fill reads as a recessed groove and the border keeps
|
|
268
|
+
the shape detectable on any surface. */
|
|
394
269
|
.progress {
|
|
395
|
-
/* `bg-bg` (the base content surface) + a border, NOT `bg-bg-muted`:
|
|
396
|
-
the track is mostly consumed inside `.card-grey` whose `--card-bg`
|
|
397
|
-
IS `bg-bg-muted`, so a muted track vanished into the card. The
|
|
398
|
-
darker base fill reads as a recessed groove and the border keeps
|
|
399
|
-
the shape detectable on any surface. */
|
|
400
270
|
@apply flex h-4 overflow-hidden rounded-md border border-border bg-bg text-xs;
|
|
401
271
|
}
|
|
402
272
|
.progress-bar {
|
|
@@ -405,25 +275,6 @@
|
|
|
405
275
|
transition: width 0.5s ease;
|
|
406
276
|
}
|
|
407
277
|
|
|
408
|
-
/* Nav / navbar --------------------------------------------------- */
|
|
409
|
-
.nav { @apply flex flex-wrap; }
|
|
410
|
-
.nav-item { @apply list-none; }
|
|
411
|
-
.nav-link { @apply block px-3 py-2 text-fg hover:text-primary-600 no-underline; }
|
|
412
|
-
.nav-link.active { @apply text-primary-600; }
|
|
413
|
-
.navbar { @apply flex flex-wrap items-center justify-between; }
|
|
414
|
-
.navbar-nav { @apply flex flex-col list-none; }
|
|
415
|
-
.navbar-toggler { @apply rounded border border-border px-2 py-1; }
|
|
416
|
-
.navbar-collapse { @apply grow basis-full items-center; }
|
|
417
|
-
|
|
418
|
-
.navbar-collapse:not(.show) { @apply hidden; }
|
|
419
|
-
.navbar-expand-md .navbar-collapse { @apply md:flex!; }
|
|
420
|
-
.navbar-expand-md .navbar-nav { @apply md:flex-row!; }
|
|
421
|
-
.navbar-expand-md { @apply md:flex-nowrap md:justify-start; }
|
|
422
|
-
|
|
423
|
-
/* Forms โ minimal shims (vuecs SFCs own the real form styles) ---- */
|
|
424
|
-
.form-group { @apply mb-3; }
|
|
425
|
-
.form-switch { @apply inline-flex items-center gap-2; }
|
|
426
|
-
|
|
427
278
|
/* Pagination โ joined-tab look over theme-tailwind's per-button
|
|
428
279
|
rounded-md. */
|
|
429
280
|
.vc-pagination .vc-pagination-link {
|
|
@@ -438,31 +289,6 @@
|
|
|
438
289
|
@apply !rounded-r-md;
|
|
439
290
|
}
|
|
440
291
|
|
|
441
|
-
/* Form validation visual state. */
|
|
442
|
-
.is-valid {
|
|
443
|
-
@apply border-success-600 ring-1 ring-success-500;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
/* Dropdowns โ Bootstrap-style toggle/menu (also used by the
|
|
447
|
-
navbar/sidebar chrome). The `hidden` on `.dropdown-menu` is
|
|
448
|
-
load-bearing; the toggle's click handler flips `.show`. */
|
|
449
|
-
.dropdown { @apply relative; }
|
|
450
|
-
.dropdown-toggle { @apply cursor-pointer; }
|
|
451
|
-
.dropdown-menu {
|
|
452
|
-
@apply absolute top-full left-0 z-50 hidden min-w-40 rounded-md
|
|
453
|
-
border border-border bg-bg py-1 shadow-md;
|
|
454
|
-
}
|
|
455
|
-
.dropdown-menu-end { @apply left-auto right-0; }
|
|
456
|
-
.dropdown-menu.show { @apply block; }
|
|
457
|
-
.dropdown-item {
|
|
458
|
-
@apply block w-full cursor-pointer border-0 bg-transparent
|
|
459
|
-
px-3 py-1 text-left text-sm text-fg hover:bg-bg-muted;
|
|
460
|
-
}
|
|
461
|
-
.dropdown-item.active {
|
|
462
|
-
@apply bg-primary-600 text-on-primary hover:bg-primary-700;
|
|
463
|
-
}
|
|
464
|
-
.dropdown-divider { @apply my-1 h-px bg-border; }
|
|
465
|
-
|
|
466
292
|
/* Modal โ INNER chrome only. The backdrop / positioning shell is
|
|
467
293
|
owned by Reka / <VCModalContent> (@vuecs/overlays); hub mounts
|
|
468
294
|
VCModal compound directly. These rules style the structural
|