@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.
Files changed (3) hide show
  1. package/README.md +40 -0
  2. package/package.json +8 -8
  3. 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 &amp; 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> &nbsp;ยท&nbsp;
22
+ <a href="https://github.com/PrivateAIM/hub">Monorepo</a> &nbsp;ยท&nbsp;
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.11.4",
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.48",
49
- "@vuecs/design": "^1.0.4",
50
- "@vuecs/theme-tailwind": "^4.0.0"
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.x",
54
- "@vuecs/design": "^1.x",
55
- "@vuecs/theme-tailwind": "^4.x",
56
- "tailwindcss": "^4.x"
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
- Bootstrap-compat layer
247
- Provides the Bootstrap-shaped utility / component class names that
248
- hub's pre-Tailwind templates still reference. Each rule `@apply`s
249
- Tailwind utilities โ€” same visual contract, no `bootstrap` dep, and
250
- the rules disappear automatically when the last caller is rewritten
251
- to a `<VC*>` component.
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
- /* Buttons --------------------------------------------------------- */
255
- .btn {
256
- @apply inline-flex items-center justify-center gap-1 rounded-md
257
- border border-transparent px-3 py-1.5 text-sm font-medium
258
- transition-colors cursor-pointer
259
- focus-visible:outline-2 focus-visible:outline-offset-2
260
- focus-visible:outline-primary-500
261
- disabled:opacity-50 disabled:cursor-not-allowed;
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