@incursa/ui-kit 1.5.0 → 1.6.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.
Files changed (78) hide show
  1. package/LLMS.txt +4 -4
  2. package/README.md +46 -6
  3. package/dist/inc-design-language.css +192 -35
  4. package/dist/inc-design-language.css.map +1 -1
  5. package/dist/inc-design-language.min.css +1 -1
  6. package/dist/inc-design-language.min.css.map +1 -1
  7. package/dist/mcp/ai/agent-instructions.json +21 -0
  8. package/dist/mcp/ai/llms-txt.json +21 -0
  9. package/dist/mcp/components/buttons.json +29 -0
  10. package/dist/mcp/components/cards.json +29 -0
  11. package/dist/mcp/components/filter-bars.json +28 -0
  12. package/dist/mcp/components/form-choices.json +29 -0
  13. package/dist/mcp/components/forms.json +29 -0
  14. package/dist/mcp/components/interaction.json +28 -0
  15. package/dist/mcp/components/layout.json +28 -0
  16. package/dist/mcp/components/metrics.json +28 -0
  17. package/dist/mcp/components/states.json +28 -0
  18. package/dist/mcp/components/status.json +28 -0
  19. package/dist/mcp/components/tables.json +32 -0
  20. package/dist/mcp/components/utilities.json +28 -0
  21. package/dist/mcp/examples/data-grid-advanced.json +22 -0
  22. package/dist/mcp/examples/demo.json +24 -0
  23. package/dist/mcp/examples/forms-and-validation.json +21 -0
  24. package/dist/mcp/examples/native-patterns.json +21 -0
  25. package/dist/mcp/examples/overlay-workflows.json +22 -0
  26. package/dist/mcp/examples/record-detail.json +21 -0
  27. package/dist/mcp/examples/reference.json +23 -0
  28. package/dist/mcp/examples/states.json +21 -0
  29. package/dist/mcp/examples/web-components.json +24 -0
  30. package/dist/mcp/examples/work-queue.json +21 -0
  31. package/dist/mcp/guides/allowed-web-component-families.json +19 -0
  32. package/dist/mcp/guides/choose-css-vs-scss-vs-js-vs-web-components.json +20 -0
  33. package/dist/mcp/guides/customization-order.json +20 -0
  34. package/dist/mcp/guides/decision-tree.json +28 -0
  35. package/dist/mcp/guides/guardrails.json +20 -0
  36. package/dist/mcp/guides/install.json +31 -0
  37. package/dist/mcp/guides/latest.json +25 -0
  38. package/dist/mcp/guides/overview.json +26 -0
  39. package/dist/mcp/guides/package-metadata.json +25 -0
  40. package/dist/mcp/guides/update.json +26 -0
  41. package/dist/mcp/guides/when-to-use-css-first.json +20 -0
  42. package/dist/mcp/install.json +36 -0
  43. package/dist/mcp/patterns/data-grid-advanced.json +22 -0
  44. package/dist/mcp/patterns/demo.json +24 -0
  45. package/dist/mcp/patterns/forms-and-validation.json +21 -0
  46. package/dist/mcp/patterns/native-patterns.json +21 -0
  47. package/dist/mcp/patterns/overlay-workflows.json +22 -0
  48. package/dist/mcp/patterns/record-detail.json +21 -0
  49. package/dist/mcp/patterns/reference.json +24 -0
  50. package/dist/mcp/patterns/states.json +21 -0
  51. package/dist/mcp/patterns/web-components.json +24 -0
  52. package/dist/mcp/patterns/work-queue.json +21 -0
  53. package/dist/mcp/resources.json +2100 -0
  54. package/dist/mcp/search-index.json +827 -0
  55. package/dist/mcp/specs/control-conventions.json +21 -0
  56. package/dist/mcp/specs/public-surface.json +21 -0
  57. package/dist/mcp/specs/requirements-index.json +21 -0
  58. package/dist/mcp/specs/verification-index.json +21 -0
  59. package/dist/mcp/update.json +24 -0
  60. package/dist/mcp/worker.mjs +59959 -0
  61. package/dist/mcp/worker.mjs.map +7 -0
  62. package/dist/web-components/README.md +10 -4
  63. package/dist/web-components/RUNTIME-NOTES.md +7 -2
  64. package/dist/web-components/components/actions.js +557 -0
  65. package/dist/web-components/components/collections.js +272 -0
  66. package/dist/web-components/components/dom-helpers.js +46 -0
  67. package/dist/web-components/components/feedback.js +165 -0
  68. package/dist/web-components/index.js +4350 -813
  69. package/package.json +19 -8
  70. package/src/inc-design-language.scss +193 -35
  71. package/src/mcp/worker.ts +858 -0
  72. package/src/web-components/README.md +10 -4
  73. package/src/web-components/RUNTIME-NOTES.md +7 -2
  74. package/src/web-components/components/actions.js +557 -0
  75. package/src/web-components/components/collections.js +272 -0
  76. package/src/web-components/components/dom-helpers.js +46 -0
  77. package/src/web-components/components/feedback.js +165 -0
  78. package/src/web-components/index.js +53 -847
package/LLMS.txt CHANGED
@@ -32,7 +32,7 @@ Primary files:
32
32
  - [`specs/verification/ui-kit/_index.md`](specs/verification/ui-kit/_index.md): auditable source-review, smoke-validation, and Playwright browser-automation baseline for the UI kit surface.
33
33
  - [`states.html`](states.html), [`forms-and-validation.html`](forms-and-validation.html), [`data-grid-advanced.html`](data-grid-advanced.html), [`overlay-workflows.html`](overlay-workflows.html): workflow-heavy composition patterns.
34
34
  - [`demo.html`](demo.html), [`work-queue.html`](work-queue.html), [`record-detail.html`](record-detail.html), [`native-patterns.html`](native-patterns.html): fuller page examples.
35
- - The v1 Web Component families are layouts and shells, navbar/tabs/user-menu, field/input-group/choice-group/readonly-field/validation-summary, state-panel/live-region/auto-refresh/theme-switcher, and disclosure/dialog/drawer.
35
+ - The v1 Web Component families are layouts and shells, navbar/tabs/user-menu, field/input-group/choice-group/readonly-field/validation-summary, state-panel/live-region/auto-refresh/theme-switcher, badge/spinner atoms, button/button-group/button-toolbar/close-button hosts, alert/empty-state/list-group/key-value hosts, and disclosure/dialog/drawer.
36
36
  - Prefer those browser-native components for supported v1 surfaces when the consumer wants declarative markup from plain HTML/JS; keep CSS-first HTML for surfaces that are intentionally outside the WC layer.
37
37
  - Tables, utilities, filter/bulk/file workflows, permission banners, toasts, and compatibility overlay shells stay CSS-only or deferred in v1.
38
38
 
@@ -61,11 +61,11 @@ Core primitives:
61
61
  - Cards and shells: use [`inc-card`](reference.html) for plain cards. Use [`inc-header-body`](reference.html) for titled sections with actions. Use [`inc-header-body--table-body`](reference.html) when the body contains a table and should keep body padding without extra bottom table margin.
62
62
  - App layout: use [`inc-app-shell`](reference.html), [`inc-page`](reference.html), [`inc-breadcrumb-body`](reference.html), [`inc-footer-bar`](reference.html), [`inc-footer-bar__menu`](reference.html), [`inc-footer-bar__meta`](reference.html), [`inc-navbar`](reference.html), [`inc-breadcrumb`](reference.html), [`inc-nav-triad`](reference.html), and [`inc-sidebar-menu`](reference.html).
63
63
  - Utilities: use [`inc-u-stack-*`](reference.html), [`inc-u-gap-*`](reference.html), [`inc-grid`](reference.html), [`inc-row`](reference.html), [`inc-col`](reference.html), [`inc-stack`](reference.html), and [`inc-flex-*`](reference.html) when composition needs a public helper class.
64
- - States and workflow: use [`inc-state-panel`](reference.html), [`inc-permission-banner`](reference.html), [`inc-toast-card`](reference.html), [`inc-timeline`](reference.html), [`inc-file-dropzone`](reference.html), [`inc-file-row`](reference.html), and [`inc-key-value`](reference.html).
64
+ - States and workflow: use [`inc-state-panel`](reference.html), [`inc-permission-banner`](reference.html), [`inc-toast-card`](reference.html), [`inc-empty-state`](reference.html), [`inc-list-group`](reference.html), [`inc-key-value`](reference.html), [`inc-timeline`](reference.html), [`inc-file-dropzone`](reference.html), and [`inc-file-row`](reference.html).
65
65
  - Interaction: use [`data-inc-toggle="menu"`](src/inc-design-language.js), [`data-inc-toggle="tab"`](src/inc-design-language.js), and [`data-inc-toggle="collapse"`](src/inc-design-language.js) with [`data-inc-target="#target-id"`](src/inc-design-language.js) when you want the helper to wire behavior. Use [`data-inc-dismiss="modal"`](src/inc-design-language.js) / [`data-inc-dismiss="offcanvas"`](src/inc-design-language.js), [`data-inc-accordion`](src/inc-design-language.js), [`data-inc-backdrop-for`](src/inc-design-language.js), [`data-inc-initial-focus`](src/inc-design-language.js), [`data-inc-auto-refresh`](src/inc-design-language.js), and the [`data-inc-refresh-seconds`](src/inc-design-language.js), [`data-inc-refresh-label`](src/inc-design-language.js), [`data-inc-refresh-loading-label`](src/inc-design-language.js), [`data-inc-refresh-paused-label`](src/inc-design-language.js), [`data-inc-refresh-pause-action-label`](src/inc-design-language.js), and [`data-inc-refresh-resume-action-label`](src/inc-design-language.js) hooks when you need the rest of the helper contract. Use [`data-inc-native-dialog-open="dialog-id"`](src/inc-design-language.js) when you want the helper to open a native `<dialog>`.
66
- - Web Components: prefer the same-package entrypoint for layouts, navbar/tabs/user-menu, field/input wrappers, state/live-region/auto-refresh/theme switcher, and disclosure/dialog/drawer shells. Keep tables, utilities, filter/bulk/file workflows, and presentation-only atoms CSS-first in v1.
66
+ - Web Components: prefer the same-package entrypoint for layouts, navbar/tabs/user-menu, field/input wrappers, badge/spinner atoms, button/action/detail/collection hosts, state/live-region/auto-refresh/theme switcher, and disclosure/dialog/drawer shells. Keep tables, utilities, filter/bulk/file workflows, and the remaining presentation-only atoms CSS-first in v1.
67
67
  - Native interaction: use [`details.inc-disclosure`](reference.html), [`details.inc-native-menu`](reference.html), and [`dialog.inc-native-dialog`](reference.html).
68
- - Status: use [`inc-badge--success|warning|danger|info`](reference.html).
68
+ - Status: use [`inc-badge`](reference.html) with tone values such as `success`, `warning`, `danger`, or `info`; use [`inc-spinner`](reference.html) with `variant="border|grow"`, optional tone, `size="sm"`, and a `label` for accessible loading state.
69
69
  - Metrics: use [`inc-summary-overview`](reference.html) and [`inc-summary-block`](reference.html).
70
70
 
71
71
  Customization order:
package/README.md CHANGED
@@ -36,10 +36,11 @@ The v1 Web Component scope covers:
36
36
  - layouts and shells: [`inc-app-shell`](reference.html), [`inc-page`](reference.html), [`inc-page-header`](reference.html), [`inc-section`](reference.html), [`inc-card`](reference.html), [`inc-summary-overview`](reference.html), [`inc-summary-block`](reference.html), [`inc-footer-bar`](reference.html)
37
37
  - navigation: [`inc-navbar`](reference.html), [`inc-tabs`](reference.html), [`inc-user-menu`](reference.html)
38
38
  - forms and inputs: [`inc-field`](reference.html), [`inc-input-group`](reference.html), [`inc-choice-group`](reference.html), [`inc-readonly-field`](reference.html), [`inc-validation-summary`](reference.html)
39
- - feedback and status: [`inc-state-panel`](reference.html), [`inc-live-region`](reference.html), [`inc-auto-refresh`](reference.html), [`inc-theme-switcher`](reference.html)
39
+ - feedback and status: [`inc-state-panel`](reference.html), [`inc-live-region`](reference.html), [`inc-auto-refresh`](reference.html), [`inc-theme-switcher`](reference.html), [`inc-badge`](reference.html), [`inc-spinner`](reference.html)
40
+ - actions and detail shells: [`inc-button`](reference.html), [`inc-button-group`](reference.html), [`inc-button-toolbar`](reference.html), [`inc-close-button`](reference.html), [`inc-alert`](reference.html), [`inc-empty-state`](reference.html), [`inc-list-group`](reference.html), [`inc-key-value-grid`](reference.html), [`inc-key-value`](reference.html)
40
41
  - overlays and disclosures: [`inc-disclosure`](reference.html), [`inc-dialog`](reference.html), [`inc-drawer`](reference.html)
41
42
 
42
- The intentionally deferred surfaces stay CSS-first in v1, including tables and data presentation, filter and bulk toolbars, file workflows, permission banners, toasts, utility helpers, and the remaining compatibility overlay shells.
43
+ The intentionally deferred surfaces stay CSS-first in v1, including tables and the remaining data presentation surfaces, filter and bulk toolbars, file workflows, permission banners, toasts, utility helpers, and the remaining compatibility overlay shells.
43
44
 
44
45
  For maintainers, treat the Web Component layer as an additive wrapper over the same design language: one package, one token system, one naming vocabulary, and the same helper behavior where it already exists.
45
46
 
@@ -159,10 +160,10 @@ For titled sections that wrap tables, use [`inc-header-body--table-body`](refere
159
160
 
160
161
  ## CSS-only vs JS-assisted
161
162
 
162
- - CSS-only/native behavior is enough for layout, cards, tables, buttons, alerts, form fields, badges, breadcrumbs, sticky footer, and most surface styling.
163
+ - CSS-only/native behavior is enough for layout, cards, tables, breadcrumbs, sticky footer, and most surface styling.
163
164
  - Stateful controls still need behavior:
164
165
  tabs, collapsible sections, menus/dropdowns, modal and offcanvas shells, and auto-refresh countdowns with pause/resume behavior.
165
- - Alert and toast surfaces stay CSS/HTML-first unless the consuming app adds its own dismissal or lifecycle logic.
166
+ - Alert and toast surfaces can stay CSS/HTML-first when the app only needs static messaging; use the Web Component host when you want standardized tone or optional dismissal behavior.
166
167
  - This package now includes an optional dependency-free helper at [`dist/inc-design-language.js`](dist/inc-design-language.js) for:
167
168
  user-menu dropdowns, tab switching, collapse/accordion toggles, legacy modal/offcanvas shells, native dialog launching, page auto-refresh countdown widgets, and theme switching controls.
168
169
  - The helper also exposes `window.IncTheme` and listens for [`data-inc-theme-mode`](src/inc-design-language.js), [`data-inc-theme-toggle`](src/inc-design-language.js), and [`data-inc-theme-select`](src/inc-design-language.js) controls.
@@ -176,7 +177,7 @@ For titled sections that wrap tables, use [`inc-header-body--table-body`](refere
176
177
  - Use the CSS class surface when you already have the HTML structure and only need the design language.
177
178
  - Use the Web Component entrypoint when you want declarative slots, attributes, and DOM events around the approved v1 component families.
178
179
  - Use native HTML primitives when they already solve the interaction cleanly and keep the semantics simpler.
179
- - Keep tables, utilities, and other low-level atoms class-based until there is a clear component contract worth adding.
180
+ - Keep tables, utilities, and the remaining low-value atoms class-based until there is a clear component contract worth adding.
180
181
  - Treat the Web Component layer as a layered entrypoint in the same package, not as a separate design system.
181
182
 
182
183
  ## Use it quickly
@@ -323,7 +324,7 @@ There are three supported ways to use it.
323
324
 
324
325
  - Import the same-package `./web-components` entrypoint when you want browser-native custom elements for the supported v1 families.
325
326
  - Keep the CSS bundle in place because the custom elements are designed to sit on top of the same class and token vocabulary.
326
- - Prefer this layer for declarative shell components, and keep static atoms and tables on the CSS surface.
327
+ - Prefer this layer for declarative shell components, standardized atomic controls, and repeated action/detail or collection hosts, and keep static tables plus the remaining low-value atoms on the CSS surface.
327
328
 
328
329
  Practical recommendation for a .NET Razor Pages or MVC app:
329
330
 
@@ -339,6 +340,7 @@ This repository is set up for:
339
340
 
340
341
  - CI on pushes and pull requests via [`.github/workflows/ci.yml`](.github/workflows/ci.yml)
341
342
  - GitHub Pages showcase deployment from `main` via [`.github/workflows/pages.yml`](.github/workflows/pages.yml)
343
+ - Cloudflare Worker MCP deployment from `main` via [`.github/workflows/mcp-worker.yml`](.github/workflows/mcp-worker.yml)
342
344
  - npm Trusted Publishing on `v*` tag pushes via [`.github/workflows/npm-publish.yml`](.github/workflows/npm-publish.yml)
343
345
  - Public release hygiene through `LICENSE`, [`CHANGELOG.md`](CHANGELOG.md), [`CONTRIBUTING.md`](CONTRIBUTING.md), and [`RELEASING.md`](RELEASING.md)
344
346
  - Brand assets in [`assets/brand/`](assets/brand) so README and future docs do not depend on external image hosting
@@ -378,3 +380,41 @@ $inc-font-family-sans: "Aptos", "Segoe UI", sans-serif;
378
380
 
379
381
  @import "./src/inc-design-language";
380
382
  ```
383
+
384
+ ## MCP Worker
385
+
386
+ The repository also ships a deterministic Cloudflare Worker that exposes the UI kit content through Model Context Protocol. The Worker is intentionally read-only and stateless:
387
+
388
+ - `POST /mcp` serves the MCP JSON-RPC endpoint.
389
+ - `GET /mcp` serves a small HTML index for browsing the generated manifest.
390
+ - `GET /mcp/resource/*` serves a human-readable resource page for inspection.
391
+ - The Worker also tolerates a leading path prefix from a load balancer and keeps the rendered links under the configured `MCP_PATH_PREFIX` value.
392
+ - Build-time manifests live under `dist/mcp/` and are regenerated from the repo docs, examples, specs, and package metadata.
393
+ - The Worker does not call an LLM, crawl the web, or depend on a database.
394
+
395
+ The local workflow is:
396
+
397
+ ```bash
398
+ npm run build
399
+ npm run test:mcp
400
+ ```
401
+
402
+ `npm run build` regenerates the MCP manifests and bundles the Worker. `npm run verify` runs the full repo gate, including the MCP transport tests and the manifest smoke check.
403
+
404
+ For local Worker development, use Wrangler against the generated bundle:
405
+
406
+ ```bash
407
+ npm run build:mcp
408
+ npx wrangler dev --config wrangler.toml
409
+ ```
410
+
411
+ To refresh the generated manifests after changing docs or examples, rerun `npm run build:mcp` or the full `npm run build` pipeline.
412
+ If you only need to refresh the JSON manifests before bundling, run `npm run build:mcp:manifests`.
413
+
414
+ To deploy the Worker:
415
+
416
+ ```bash
417
+ npm run deploy:mcp
418
+ ```
419
+
420
+ The Cloudflare deploy workflow uses `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID` secrets and deploys the bundled Worker from `dist/mcp/worker.mjs`.
@@ -12200,10 +12200,14 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12200
12200
  --inc-surface-primary-rgb: var(--bs-body-bg-rgb);
12201
12201
  --inc-surface-secondary-rgb: var(--bs-secondary-bg-rgb);
12202
12202
  --inc-surface-muted-rgb: var(--bs-tertiary-bg-rgb);
12203
+ --inc-surface-panel: rgba(var(--inc-surface-secondary-rgb), 0.56);
12204
+ --inc-surface-panel-cap: rgba(var(--inc-surface-secondary-rgb), 0.86);
12203
12205
  --inc-text-primary-rgb: var(--bs-body-color-rgb);
12204
12206
  --inc-text-secondary-rgb: var(--bs-secondary-color-rgb);
12205
12207
  --inc-text-muted-rgb: var(--bs-tertiary-color-rgb);
12206
12208
  --inc-shadow-rgb: var(--bs-black-rgb);
12209
+ --inc-surface-panel-shadow: 0 0.0625rem 0.125rem rgba(var(--inc-shadow-rgb), 0.05), 0 0.5rem 1.5rem rgba(var(--inc-shadow-rgb), 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.58);
12210
+ --inc-surface-panel-shadow-raised: 0 0.125rem 0.25rem rgba(var(--inc-shadow-rgb), 0.06), 0 0.875rem 2rem rgba(var(--inc-shadow-rgb), 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.62);
12207
12211
  }
12208
12212
 
12209
12213
  [data-bs-theme=dark] {
@@ -12219,6 +12223,10 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12219
12223
  --inc-surface-contrast-text: var(--bs-dark);
12220
12224
  --inc-surface-contrast-text-rgb: 18, 19, 22;
12221
12225
  --inc-surface-contrast-border: var(--bs-gray-400);
12226
+ --inc-surface-panel: rgba(var(--inc-surface-secondary-rgb), 0.72);
12227
+ --inc-surface-panel-cap: rgba(var(--inc-surface-secondary-rgb), 0.9);
12228
+ --inc-surface-panel-shadow: 0 0.0625rem 0.125rem rgba(var(--inc-shadow-rgb), 0.22), 0 0.75rem 1.75rem rgba(var(--inc-shadow-rgb), 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.06);
12229
+ --inc-surface-panel-shadow-raised: 0 0.125rem 0.25rem rgba(var(--inc-shadow-rgb), 0.28), 0 1rem 2.25rem rgba(var(--inc-shadow-rgb), 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.08);
12222
12230
  --bs-success-bg-subtle: rgba(0, 151, 67, 0.18);
12223
12231
  --bs-success-border-subtle: rgb(72, 171, 109);
12224
12232
  --bs-form-valid-color: rgb(122, 214, 154);
@@ -12577,6 +12585,11 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12577
12585
  --bs-btn-disabled-color: var(--inc-text-muted);
12578
12586
  --bs-btn-disabled-border-color: var(--inc-border-subtle);
12579
12587
  }
12588
+ .inc-btn--outline-primary, .inc-btn--outline-secondary, .inc-btn--outline-success, .inc-btn--outline-danger, .inc-btn--outline-warning, .inc-btn--outline-info {
12589
+ --bs-btn-bg: rgba(var(--inc-surface-secondary-rgb), 0.74);
12590
+ --bs-btn-disabled-bg: rgba(var(--inc-surface-secondary-rgb), 0.54);
12591
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(var(--inc-shadow-rgb), 0.06);
12592
+ }
12580
12593
  .inc-btn--micro {
12581
12594
  padding: 0.15rem 0.4rem;
12582
12595
  font-size: 0.7rem;
@@ -12602,6 +12615,17 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12602
12615
  margin-left: -1px;
12603
12616
  }
12604
12617
 
12618
+ .inc-badge {
12619
+ display: inline-flex;
12620
+ align-items: center;
12621
+ gap: 0.25rem;
12622
+ background: rgba(var(--inc-surface-secondary-rgb), 0.88);
12623
+ color: var(--inc-text-secondary);
12624
+ border: 1px solid var(--inc-border-subtle);
12625
+ border-radius: 0.5rem;
12626
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.48), 0 1px 2px rgba(var(--inc-shadow-rgb), 0.06);
12627
+ font-weight: 600;
12628
+ }
12605
12629
  .inc-badge--success {
12606
12630
  background-color: #e6fbef;
12607
12631
  color: #009743;
@@ -12622,6 +12646,11 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12622
12646
  color: #2544f1;
12623
12647
  border: 1px solid #2544f1;
12624
12648
  }
12649
+ .inc-alert {
12650
+ border-radius: 0.5rem;
12651
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42), 0 0.375rem 1rem rgba(var(--inc-shadow-rgb), 0.05);
12652
+ background-clip: padding-box;
12653
+ }
12625
12654
  .inc-alert:empty {
12626
12655
  display: none;
12627
12656
  }
@@ -12669,14 +12698,18 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12669
12698
  padding: 1rem 1rem 0.875rem;
12670
12699
  border: 1px solid var(--inc-border-subtle);
12671
12700
  border-radius: 0.5rem;
12672
- background: var(--inc-surface-secondary);
12701
+ background: var(--inc-surface-panel);
12702
+ box-shadow: var(--inc-surface-panel-shadow);
12673
12703
  }
12674
12704
  .inc-form__legend {
12675
12705
  float: none;
12676
12706
  width: auto;
12677
12707
  margin: 0;
12678
- padding: 0 0.375rem;
12679
- background-color: var(--inc-surface-secondary);
12708
+ padding: 0.125rem 0.625rem;
12709
+ border: 1px solid var(--inc-border-subtle);
12710
+ border-radius: 999px;
12711
+ background-color: var(--inc-surface-panel-cap);
12712
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.48);
12680
12713
  color: var(--inc-text-primary);
12681
12714
  font-size: 0.8125rem;
12682
12715
  font-weight: 600;
@@ -12697,6 +12730,10 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12697
12730
  align-items: center;
12698
12731
  gap: 0.5rem;
12699
12732
  min-width: 0;
12733
+ padding: 0.875rem 1rem;
12734
+ border: 1px solid var(--inc-border-subtle);
12735
+ border-radius: 0.5rem;
12736
+ background: var(--inc-surface-secondary);
12700
12737
  }
12701
12738
  .inc-form__field > .inc-form__label {
12702
12739
  margin-bottom: 0;
@@ -12760,6 +12797,10 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12760
12797
  }
12761
12798
  .inc-form--inline .inc-form__field {
12762
12799
  flex: 0 1 auto;
12800
+ padding: 0;
12801
+ border: 0;
12802
+ border-radius: 0;
12803
+ background: transparent;
12763
12804
  }
12764
12805
  .inc-form--inline .inc-form__field--grow,
12765
12806
  .inc-form--inline .inc-form__control--expand,
@@ -12825,13 +12866,35 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12825
12866
  }
12826
12867
 
12827
12868
  .inc-readonly-field {
12828
- background-color: #f6f6f6;
12829
- cursor: default;
12830
12869
  display: flex;
12831
- align-items: center;
12870
+ flex-direction: column;
12871
+ align-items: flex-start;
12872
+ gap: 0.125rem;
12873
+ padding: 0.875rem 1rem;
12874
+ border: 1px solid var(--inc-border-subtle);
12875
+ border-radius: 0.5rem;
12876
+ background: var(--inc-surface-secondary);
12877
+ color: var(--inc-text-primary);
12878
+ cursor: default;
12832
12879
  -webkit-user-select: none;
12833
12880
  user-select: none;
12834
12881
  }
12882
+ .inc-readonly-field > [part~=label] {
12883
+ font-size: 0.75rem;
12884
+ font-weight: 600;
12885
+ letter-spacing: 0.04em;
12886
+ text-transform: uppercase;
12887
+ color: var(--inc-text-muted);
12888
+ }
12889
+ .inc-readonly-field > [part~=value] {
12890
+ font-size: 0.875rem;
12891
+ font-weight: 500;
12892
+ color: var(--inc-text-primary);
12893
+ }
12894
+ .inc-readonly-field > [part~=meta] {
12895
+ font-size: 0.75rem;
12896
+ color: var(--inc-text-muted);
12897
+ }
12835
12898
 
12836
12899
  .inc-empty-state {
12837
12900
  display: flex;
@@ -12842,18 +12905,30 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12842
12905
  padding: 2rem 1.5rem;
12843
12906
  border: 0.0625rem solid var(--inc-border-subtle);
12844
12907
  border-radius: 0.25rem;
12845
- background-color: var(--inc-surface-secondary);
12908
+ background: linear-gradient(180deg, var(--inc-surface-panel-cap), rgba(var(--inc-surface-primary-rgb), 0.96));
12909
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42);
12846
12910
  color: var(--inc-text-primary);
12847
12911
  min-height: 21.875rem;
12848
12912
  }
12849
12913
  .inc-empty-state__content {
12850
12914
  max-width: 32.5rem;
12851
12915
  width: 100%;
12916
+ padding: 1rem;
12917
+ border-radius: 0.5rem;
12852
12918
  }
12853
12919
  .inc-empty-state__icon {
12920
+ width: 4.5rem;
12921
+ height: 4.5rem;
12922
+ margin: 0 auto 1.5rem;
12923
+ border: 1px solid var(--inc-border-subtle);
12924
+ border-radius: 1.25rem;
12925
+ background: rgba(var(--inc-surface-secondary-rgb), 0.82);
12926
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.36), 0 0.375rem 1rem rgba(var(--inc-shadow-rgb), 0.04);
12854
12927
  font-size: 3.0625rem;
12855
- margin-bottom: 1.5rem;
12856
12928
  color: var(--inc-text-muted);
12929
+ display: inline-flex;
12930
+ align-items: center;
12931
+ justify-content: center;
12857
12932
  }
12858
12933
  .inc-empty-state__form {
12859
12934
  margin-top: 1.5rem;
@@ -12894,13 +12969,16 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12894
12969
  }
12895
12970
  }
12896
12971
  .inc-card {
12897
- --bs-card-bg: var(--inc-surface-primary);
12972
+ --bs-card-bg: var(--inc-surface-panel);
12898
12973
  --bs-card-color: var(--inc-text-primary);
12899
12974
  --bs-card-title-color: var(--inc-text-primary);
12900
12975
  --bs-card-subtitle-color: var(--inc-text-muted);
12901
12976
  --bs-card-border-color: var(--inc-border-subtle);
12902
- --bs-card-cap-bg: var(--inc-surface-secondary);
12977
+ --bs-card-cap-bg: var(--inc-surface-panel-cap);
12903
12978
  --bs-card-cap-color: var(--inc-text-primary);
12979
+ background: var(--bs-card-bg);
12980
+ box-shadow: var(--inc-surface-panel-shadow);
12981
+ transition: box-shadow 0.18s ease, border-color 0.18s ease, background-color 0.18s ease;
12904
12982
  }
12905
12983
  .inc-card__header--compact {
12906
12984
  padding: 0.75rem 1rem;
@@ -12908,6 +12986,10 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
12908
12986
  .inc-card__body--flush {
12909
12987
  padding: 0;
12910
12988
  }
12989
+ .inc-card--elevated {
12990
+ box-shadow: var(--inc-surface-panel-shadow-raised);
12991
+ }
12992
+
12911
12993
  .inc-grid {
12912
12994
  display: grid;
12913
12995
  gap: 1rem;
@@ -13171,14 +13253,17 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
13171
13253
  border: 1px solid var(--bs-border-color);
13172
13254
  border-radius: var(--bs-border-radius);
13173
13255
  overflow: hidden;
13256
+ background-color: var(--inc-surface-panel);
13257
+ box-shadow: var(--inc-surface-panel-shadow);
13174
13258
  }
13175
13259
  .inc-header-body--card .inc-header-body__header {
13176
13260
  border-top-left-radius: var(--bs-border-radius);
13177
13261
  border-top-right-radius: var(--bs-border-radius);
13262
+ background-color: var(--inc-surface-panel-cap);
13178
13263
  }
13179
13264
  .inc-header-body--panel {
13180
- background-color: var(--inc-surface-primary);
13181
- box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
13265
+ background-color: var(--inc-surface-panel);
13266
+ box-shadow: var(--inc-surface-panel-shadow-raised);
13182
13267
  border-radius: var(--bs-border-radius);
13183
13268
  }
13184
13269
  .inc-header-body--panel .inc-header-body__header {
@@ -13266,14 +13351,15 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
13266
13351
  }
13267
13352
 
13268
13353
  .inc-summary-block {
13269
- background-color: var(--inc-surface-primary);
13354
+ background-color: var(--inc-surface-panel);
13270
13355
  border: 0.0625rem solid var(--inc-border-default);
13271
13356
  border-radius: 0.25rem;
13272
13357
  padding: 1.25rem;
13273
- transition: box-shadow 0.2s ease-in-out;
13358
+ box-shadow: var(--inc-surface-panel-shadow);
13359
+ transition: box-shadow 0.18s ease-in-out, background-color 0.18s ease-in-out;
13274
13360
  }
13275
13361
  .inc-summary-block:hover {
13276
- box-shadow: 0 0.125rem 0.25rem rgba(42, 49, 66, 0.075);
13362
+ box-shadow: var(--inc-surface-panel-shadow-raised);
13277
13363
  }
13278
13364
  .inc-summary-block__header {
13279
13365
  display: flex;
@@ -13780,6 +13866,8 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
13780
13866
  list-style: none;
13781
13867
  padding-left: 0;
13782
13868
  margin-bottom: 0;
13869
+ position: relative;
13870
+ z-index: 1;
13783
13871
  }
13784
13872
  .inc-tabs-folder .inc-tabs-nav > li + li {
13785
13873
  margin-left: 0.125rem;
@@ -13793,41 +13881,47 @@ textarea.form-control-lg, textarea.inc-form__control--lg {
13793
13881
  color: var(--inc-text-secondary);
13794
13882
  border-top-left-radius: 0.25rem;
13795
13883
  border-top-right-radius: 0.25rem;
13796
- background-color: var(--inc-surface-secondary);
13884
+ background: linear-gradient(180deg, rgba(var(--inc-surface-secondary-rgb), 0.96), rgba(var(--inc-surface-secondary-rgb), 0.82));
13797
13885
  height: 2.5rem;
13798
13886
  text-decoration: none;
13799
13887
  border: 1px solid var(--inc-border-subtle);
13800
13888
  cursor: pointer;
13801
13889
  appearance: none;
13890
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(var(--inc-shadow-rgb), 0.06);
13891
+ transition: color 0.18s ease, background-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
13802
13892
  }
13803
13893
  .inc-tabs-folder .inc-tabs-nav > li > .inc-tab .inc-tab-icon {
13804
13894
  color: var(--bs-primary);
13805
13895
  }
13806
13896
  .inc-tabs-folder .inc-tabs-nav > li > .inc-tab:not(.active):hover {
13807
13897
  color: var(--inc-text-primary);
13808
- background-color: var(--inc-surface-muted);
13898
+ background: linear-gradient(180deg, rgba(var(--inc-surface-secondary-rgb), 1), rgba(var(--inc-surface-muted-rgb), 0.9));
13809
13899
  border-color: var(--inc-border-default);
13900
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.46), 0 2px 4px rgba(var(--inc-shadow-rgb), 0.07);
13810
13901
  }
13811
13902
  .inc-tabs-folder .inc-tabs-nav > li > .inc-tab:not(.active):hover .inc-tab-icon {
13812
13903
  color: var(--bs-primary);
13813
13904
  }
13814
13905
  .inc-tabs-folder .inc-tabs-nav > li > .inc-tab.active {
13815
13906
  color: var(--bs-primary-text-emphasis);
13816
- background-color: var(--inc-surface-primary);
13907
+ background-color: var(--inc-surface-panel);
13817
13908
  font-weight: 600;
13818
13909
  border-color: var(--inc-border-subtle);
13819
- border-bottom-color: var(--inc-surface-primary);
13910
+ border-bottom-color: var(--inc-surface-panel);
13820
13911
  position: relative;
13821
13912
  z-index: 1;
13913
+ box-shadow: var(--inc-surface-panel-shadow-raised);
13914
+ transform: translateY(-1px);
13822
13915
  }
13823
13916
  .inc-tabs-folder .inc-tab-content {
13824
- background-color: var(--inc-surface-primary);
13917
+ background: linear-gradient(180deg, var(--inc-surface-panel-cap), rgba(var(--inc-surface-primary-rgb), 0.98));
13825
13918
  border: 1px solid var(--inc-border-subtle);
13826
13919
  padding: 1.5rem;
13827
13920
  border-radius: 0.25rem;
13828
13921
  border-top-left-radius: 0;
13829
13922
  border-top-right-radius: 0.25rem;
13830
13923
  margin-top: -1px;
13924
+ box-shadow: var(--inc-surface-panel-shadow-raised);
13831
13925
  }
13832
13926
 
13833
13927
  .inc-tabs-line {
@@ -14327,9 +14421,9 @@ dialog.inc-native-dialog.inc-native-dialog--drawer .inc-native-dialog__body {
14327
14421
  padding: 0.5rem 0.75rem;
14328
14422
  border: 1px solid var(--inc-border-subtle);
14329
14423
  border-radius: 999px;
14330
- background: rgba(var(--inc-surface-primary-rgb), 0.96);
14424
+ background: rgba(var(--inc-surface-primary-rgb), 0.92);
14331
14425
  color: var(--inc-text-primary);
14332
- box-shadow: 0 0.75rem 1.5rem rgba(var(--inc-surface-strong-rgb), 0.12);
14426
+ box-shadow: var(--inc-surface-panel-shadow-raised);
14333
14427
  font-size: 0.75rem;
14334
14428
  line-height: 1.2;
14335
14429
  white-space: nowrap;
@@ -14365,22 +14459,80 @@ dialog.inc-native-dialog.inc-native-dialog--drawer .inc-native-dialog__body {
14365
14459
  }
14366
14460
  .inc-auto-refresh__toggle {
14367
14461
  flex: 0 0 auto;
14462
+ width: 1.875rem;
14463
+ height: 1.875rem;
14464
+ padding: 0;
14465
+ border-radius: 999px;
14466
+ display: inline-flex;
14467
+ align-items: center;
14468
+ justify-content: center;
14469
+ color: var(--inc-text-primary);
14470
+ border-color: var(--inc-border-default);
14471
+ background: linear-gradient(180deg, rgba(var(--inc-surface-secondary-rgb), 0.96), rgba(var(--inc-surface-primary-rgb), 0.94));
14472
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42), 0 1px 2px rgba(var(--inc-shadow-rgb), 0.08);
14368
14473
  }
14369
14474
  .inc-auto-refresh__toggle.inc-btn {
14370
- min-height: 1.625rem;
14371
- padding: 0.2rem 0.55rem;
14475
+ min-height: 1.875rem;
14372
14476
  font-size: 0.6875rem;
14373
14477
  line-height: 1;
14374
14478
  }
14479
+ .inc-auto-refresh__toggle-icon {
14480
+ position: relative;
14481
+ display: inline-flex;
14482
+ width: 0.75rem;
14483
+ height: 0.75rem;
14484
+ color: currentColor;
14485
+ }
14486
+ .inc-auto-refresh__toggle-icon::before, .inc-auto-refresh__toggle-icon::after {
14487
+ content: "";
14488
+ position: absolute;
14489
+ inset-block: 0.0625rem;
14490
+ width: 0.1875rem;
14491
+ border-radius: 999px;
14492
+ background: currentColor;
14493
+ }
14494
+ .inc-auto-refresh__toggle-icon::before {
14495
+ left: 0.125rem;
14496
+ }
14497
+ .inc-auto-refresh__toggle-icon::after {
14498
+ right: 0.125rem;
14499
+ }
14375
14500
  .inc-auto-refresh__toggle-text {
14376
- display: inline-block;
14377
- min-width: 3.25rem;
14378
- text-align: center;
14501
+ width: 1px !important;
14502
+ height: 1px !important;
14503
+ padding: 0 !important;
14504
+ margin: -1px !important;
14505
+ overflow: hidden !important;
14506
+ clip: rect(0, 0, 0, 0) !important;
14507
+ white-space: nowrap !important;
14508
+ border: 0 !important;
14509
+ }
14510
+ .inc-auto-refresh__toggle-text:not(caption) {
14511
+ position: absolute !important;
14512
+ }
14513
+ .inc-auto-refresh__toggle-text * {
14514
+ overflow: hidden !important;
14379
14515
  }
14380
14516
  .inc-auto-refresh.is-paused {
14381
14517
  border-color: var(--bs-warning-border-subtle);
14382
14518
  box-shadow: 0 0.9rem 1.75rem rgba(var(--bs-warning-rgb), 0.1);
14383
14519
  }
14520
+ .inc-auto-refresh.is-paused .inc-auto-refresh__toggle {
14521
+ color: var(--bs-warning-text-emphasis);
14522
+ }
14523
+ .inc-auto-refresh.is-paused .inc-auto-refresh__toggle-icon {
14524
+ width: 0.7rem;
14525
+ height: 0.7rem;
14526
+ }
14527
+ .inc-auto-refresh.is-paused .inc-auto-refresh__toggle-icon::before {
14528
+ inset: 0;
14529
+ width: 100%;
14530
+ background: currentColor;
14531
+ clip-path: polygon(14% 8%, 14% 92%, 86% 50%);
14532
+ }
14533
+ .inc-auto-refresh.is-paused .inc-auto-refresh__toggle-icon::after {
14534
+ display: none;
14535
+ }
14384
14536
  .inc-auto-refresh.is-loading {
14385
14537
  border-color: var(--bs-primary-border-subtle);
14386
14538
  box-shadow: 0 0.9rem 1.75rem rgba(var(--bs-primary-rgb), 0.14);
@@ -14457,7 +14609,7 @@ dialog.inc-native-dialog.inc-native-dialog--drawer .inc-native-dialog__body {
14457
14609
  .inc-alert-container .alert,
14458
14610
  .inc-alert-container .inc-alert {
14459
14611
  margin-bottom: 0.5rem;
14460
- box-shadow: 0 0.125rem 0.25rem rgba(42, 49, 66, 0.075);
14612
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42), 0 0.375rem 1rem rgba(var(--inc-shadow-rgb), 0.05);
14461
14613
  border-radius: 0.25rem;
14462
14614
  border-width: 0.0625rem;
14463
14615
  padding: 0.75rem 1rem;
@@ -15162,7 +15314,9 @@ body.inc-offcanvas-open {
15162
15314
  border: 1px solid var(--bs-danger-border-subtle);
15163
15315
  border-left: 0.25rem solid var(--bs-danger-text-emphasis);
15164
15316
  border-radius: 0.5rem;
15165
- background: var(--bs-danger-bg-subtle);
15317
+ background: linear-gradient(180deg, rgba(var(--bs-danger-rgb), 0.14), rgba(var(--bs-danger-rgb), 0.1));
15318
+ box-shadow: var(--inc-surface-panel-shadow);
15319
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42), 0 0.375rem 1rem rgba(var(--inc-shadow-rgb), 0.05);
15166
15320
  }
15167
15321
  .inc-form__error-summary-title {
15168
15322
  margin: 0;
@@ -15184,7 +15338,8 @@ body.inc-offcanvas-open {
15184
15338
  padding: 1rem 1.125rem;
15185
15339
  border: 1px solid var(--inc-border-subtle);
15186
15340
  border-radius: 0.5rem;
15187
- background: var(--inc-surface-primary);
15341
+ background: var(--inc-surface-panel);
15342
+ box-shadow: var(--inc-surface-panel-shadow);
15188
15343
  }
15189
15344
  .inc-filter-bar__main {
15190
15345
  display: flex;
@@ -15222,6 +15377,7 @@ body.inc-offcanvas-open {
15222
15377
  border: 1px solid var(--inc-border-subtle);
15223
15378
  border-radius: 999px;
15224
15379
  background: var(--inc-surface-secondary);
15380
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.42), 0 1px 2px rgba(var(--inc-shadow-rgb), 0.05);
15225
15381
  color: var(--inc-text-primary);
15226
15382
  font-size: 0.75rem;
15227
15383
  font-weight: 600;
@@ -15250,7 +15406,8 @@ body.inc-offcanvas-open {
15250
15406
  padding: 1.5rem;
15251
15407
  border: 1px solid var(--inc-border-subtle);
15252
15408
  border-radius: 0.5rem;
15253
- background: var(--inc-surface-primary);
15409
+ background: var(--inc-surface-panel);
15410
+ box-shadow: var(--inc-surface-panel-shadow);
15254
15411
  }
15255
15412
  .inc-state-panel__head {
15256
15413
  display: flex;
@@ -15291,10 +15448,10 @@ body.inc-offcanvas-open {
15291
15448
  }
15292
15449
  .inc-state-panel--results {
15293
15450
  border-style: dashed;
15294
- background: var(--inc-surface-secondary);
15451
+ background: rgba(var(--inc-surface-secondary-rgb), 0.84);
15295
15452
  }
15296
15453
  .inc-state-panel--loading {
15297
- background: linear-gradient(180deg, rgba(var(--bs-primary-rgb), 0.04), var(--inc-surface-primary));
15454
+ background: linear-gradient(180deg, rgba(var(--bs-primary-rgb), 0.05), var(--inc-surface-panel));
15298
15455
  }
15299
15456
  .inc-state-panel--error {
15300
15457
  border-color: var(--bs-danger-border-subtle);
@@ -15547,10 +15704,10 @@ body.inc-offcanvas-open {
15547
15704
  --bs-btn-disabled-border-color: var(--inc-surface-contrast-border);
15548
15705
  }
15549
15706
  [data-bs-theme=dark] .inc-form__fieldset {
15550
- background: var(--inc-surface-secondary);
15707
+ background: var(--inc-surface-panel);
15551
15708
  }
15552
15709
  [data-bs-theme=dark] .inc-form__legend {
15553
- background-color: var(--inc-surface-secondary);
15710
+ background-color: var(--inc-surface-panel-cap);
15554
15711
  }
15555
15712
  [data-bs-theme=dark] .inc-form__control.is-invalid, [data-bs-theme=dark] .inc-form__control.inc-form--is-invalid,
15556
15713
  [data-bs-theme=dark] .inc-form__control[aria-invalid=true],