@incursa/ui-kit 1.0.0 → 1.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.
Files changed (45) hide show
  1. package/AI-AGENT-INSTRUCTIONS.md +42 -28
  2. package/LLMS.txt +56 -40
  3. package/README.md +190 -73
  4. package/dist/inc-design-language.css +430 -247
  5. package/dist/inc-design-language.css.map +1 -1
  6. package/dist/inc-design-language.js +520 -0
  7. package/dist/inc-design-language.min.css +1 -1
  8. package/dist/inc-design-language.min.css.map +1 -1
  9. package/dist/web-components/README.md +92 -0
  10. package/dist/web-components/RUNTIME-NOTES.md +40 -0
  11. package/dist/web-components/base-element.js +193 -0
  12. package/dist/web-components/components/feedback.js +1074 -0
  13. package/dist/web-components/components/forms.js +979 -0
  14. package/dist/web-components/components/layout.js +408 -0
  15. package/dist/web-components/components/navigation.js +854 -0
  16. package/dist/web-components/components/overlays.js +634 -0
  17. package/dist/web-components/controllers/focus.js +101 -0
  18. package/dist/web-components/controllers/overlay.js +128 -0
  19. package/dist/web-components/controllers/selection.js +145 -0
  20. package/dist/web-components/controllers/theme.js +173 -0
  21. package/dist/web-components/index.js +886 -0
  22. package/dist/web-components/package.json +3 -0
  23. package/dist/web-components/registry.js +74 -0
  24. package/dist/web-components/shared.js +186 -0
  25. package/dist/web-components/style.css +6 -0
  26. package/package.json +16 -4
  27. package/src/inc-design-language.js +520 -0
  28. package/src/inc-design-language.scss +456 -257
  29. package/src/web-components/README.md +92 -0
  30. package/src/web-components/RUNTIME-NOTES.md +40 -0
  31. package/src/web-components/base-element.js +193 -0
  32. package/src/web-components/components/feedback.js +1074 -0
  33. package/src/web-components/components/forms.js +979 -0
  34. package/src/web-components/components/layout.js +408 -0
  35. package/src/web-components/components/navigation.js +854 -0
  36. package/src/web-components/components/overlays.js +634 -0
  37. package/src/web-components/controllers/focus.js +101 -0
  38. package/src/web-components/controllers/overlay.js +128 -0
  39. package/src/web-components/controllers/selection.js +145 -0
  40. package/src/web-components/controllers/theme.js +173 -0
  41. package/src/web-components/index.js +886 -0
  42. package/src/web-components/package.json +3 -0
  43. package/src/web-components/registry.js +74 -0
  44. package/src/web-components/shared.js +186 -0
  45. package/src/web-components/style.css +6 -0
@@ -2,64 +2,77 @@
2
2
 
3
3
  Use this package as a reusable data-heavy UI baseline.
4
4
 
5
- Repository brand assets live under `assets/brand/`. Prefer those local files when adding logos, favicons, or README imagery.
5
+ Repository brand assets live under [`assets/brand/`](assets/brand). Prefer those local files when adding logos, favicons, or README imagery.
6
6
 
7
7
  ## Fast path
8
8
 
9
- - Prefer `dist/inc-design-language.css` if the target app already has working HTML and only needs the look.
10
- - Prefer `src/inc-design-language.scss` if you need to tune tokens, density, or Bootstrap defaults.
11
- - Prefer `dist/inc-design-language.js` only for stateful UI primitives such as menus, tabs, or collapsible sections.
12
- - Prefer `reference.html` when you need copy/paste starter markup for a supported control before composing a full page.
13
- - Prefer `states.html`, `forms-and-validation.html`, and `data-grid-advanced.html` when the target screen is workflow-heavy and you need realistic composition patterns, not isolated snippets.
9
+ - Prefer [`dist/inc-design-language.css`](dist/inc-design-language.css) if the target app already has working HTML and only needs the look.
10
+ - Prefer [`src/inc-design-language.scss`](src/inc-design-language.scss) if you need to tune tokens, density, or Bootstrap defaults.
11
+ - Prefer [`dist/inc-design-language.js`](dist/inc-design-language.js) only for stateful UI primitives such as menus, tabs, collapsible sections, modal/offcanvas shells, native dialog launch hooks, and auto-refresh widgets.
12
+ - Prefer the optional [`web-components.html`](web-components.html) landing page and the same-package `./web-components` entrypoint when you need browser-native custom elements for the approved v1 families and want declarative slots, attributes, and DOM events from plain HTML.
13
+ - Prefer [`reference.html`](reference.html) when you need copy/paste starter markup for a supported control or page-frame primitive before composing a full page.
14
+ - Prefer [`states.html`](states.html), [`forms-and-validation.html`](forms-and-validation.html), and [`data-grid-advanced.html`](data-grid-advanced.html) when the target screen is workflow-heavy and you need realistic composition patterns, not isolated snippets.
15
+
16
+ ## Markdown links
17
+
18
+ - Use relative links for repo-local references in markdown, and keep the visible label code-formatted, for example [`README.md`](README.md), [`SPEC-UIK-CNV`](specs/requirements/ui-kit/SPEC-UIK-CNV.md), or [`src/inc-design-language.scss`](src/inc-design-language.scss).
19
+ - Use absolute URLs only for external documentation, hosted examples, package registry pages, or other non-repo targets.
20
+ - When a reference has a clear local target, prefer linking it instead of leaving it as a plain code span.
21
+ - Run `node scripts/linkify-markdown-docs.mjs --check` after markdown edits to confirm the repo-local reference policy still holds.
14
22
 
15
23
  ## Naming rules
16
24
 
17
- - Use the `inc-` prefix for all public classes.
25
+ - Use the [`inc-`](reference.html) prefix for all public classes.
18
26
  - Keep the existing BEM pattern:
19
- `inc-block`, `inc-block__element`, `inc-block--modifier`.
27
+ [`inc-block`](reference.html), [`inc-block__element`](reference.html), [`inc-block--modifier`](reference.html).
20
28
 
21
29
  ## Core primitives
22
30
 
23
31
  - Tables:
24
- Start with `inc-table` and add cell modifiers such as `inc-table__cell--numeric`, `inc-table__cell--action`, `inc-table__cell--min`, and `inc-table__cell--expand`.
32
+ Start with [`inc-table`](reference.html) and add cell modifiers such as [`inc-table__cell--numeric`](reference.html), [`inc-table__cell--action`](reference.html), [`inc-table__cell--min`](reference.html), and [`inc-table__cell--expand`](reference.html).
25
33
  - Buttons:
26
- Use `inc-btn` plus a semantic modifier such as `inc-btn--primary`, `inc-btn--secondary`, or `inc-btn--danger`.
27
- Use `inc-btn--micro` for in-row or in-cell actions.
34
+ Use [`inc-btn`](reference.html) plus a semantic modifier such as [`inc-btn--primary`](reference.html), [`inc-btn--secondary`](reference.html), or [`inc-btn--danger`](reference.html).
35
+ Use [`inc-btn--micro`](reference.html) for in-row or in-cell actions.
28
36
  - Forms:
29
- Use `inc-form--inline` for toolbar/filter layouts, wrap each label/control pair in `inc-form__field` or `inc-form__group`, and use `inc-input-group` for composed inputs.
30
- Use `inc-form__hint`, `inc-form__feedback--error`, `inc-form__feedback--success`, and `inc-form__error-summary` for validation.
37
+ Use [`inc-form--inline`](reference.html) for toolbar/filter layouts, wrap each label/control pair in [`inc-form__field`](reference.html) or [`inc-form__group`](reference.html), and use [`inc-input-group`](reference.html) for composed inputs.
38
+ Use [`inc-form__hint`](reference.html), [`inc-form__feedback--error`](reference.html), [`inc-form__feedback--success`](reference.html), and [`inc-form__error-summary`](reference.html) for validation.
31
39
  - Filter bars:
32
- Use `inc-filter-bar`, `inc-filter-chip`, and `inc-bulk-bar` for search-heavy or multi-select operator screens.
40
+ Use [`inc-filter-bar`](reference.html), [`inc-filter-chip`](reference.html), and [`inc-bulk-bar`](reference.html) for search-heavy or multi-select operator screens.
33
41
  - Cards and shells:
34
- Use `inc-card` for plain cards and `inc-header-body inc-header-body--card` for titled sections with actions.
35
- Use `inc-header-body--table-body` when the body contains a table and should keep section padding without adding extra bottom table margin.
42
+ Use [`inc-card`](reference.html) for plain cards and [`inc-header-body inc-header-body--card`](reference.html) for titled sections with actions.
43
+ Use [`inc-header-body--table-body`](reference.html) when the body contains a table and should keep section padding without adding extra bottom table margin.
36
44
  - App layout:
37
- Use `inc-app-shell`, `inc-footer-bar`, `inc-navbar`, `inc-breadcrumb`, `inc-nav-triad`, and `inc-sidebar-menu` when you need an opinionated application frame instead of isolated components.
45
+ 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) when you need an opinionated application frame instead of isolated components.
38
46
  - States and workflow:
39
- Use `inc-state-panel`, `inc-permission-banner`, `inc-toast-card`, `inc-timeline`, `inc-file-dropzone`, `inc-file-row`, and `inc-key-value` for non-happy-path and detail-heavy B2B flows.
47
+ 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) for non-happy-path and detail-heavy B2B flows.
40
48
  - Interaction:
41
- Use `data-inc-toggle="menu"`, `data-inc-toggle="tab"`, and `data-inc-toggle="collapse"` with `data-inc-target="#target-id"` when you want the optional vanilla-JS helper to wire behavior.
49
+ 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 optional vanilla-JS helper to wire behavior. Use [`data-inc-toggle="modal"`](src/inc-design-language.js), [`data-inc-toggle="offcanvas"`](src/inc-design-language.js), [`data-inc-dismiss="modal"`](src/inc-design-language.js), [`data-inc-dismiss="offcanvas"`](src/inc-design-language.js), and [`data-inc-native-dialog-open`](src/inc-design-language.js) only when the helper-managed or launch-hook contract is the intended path.
42
50
  - Native interaction:
43
- Use `details.inc-disclosure` for section stacks, `details.inc-native-menu` for lightweight menus, and `dialog.inc-native-dialog` for native modal surfaces.
51
+ Use [`details.inc-disclosure`](reference.html) for section stacks, [`details.inc-native-menu`](reference.html) for lightweight menus, and [`dialog.inc-native-dialog`](reference.html) for native modal surfaces.
52
+ - Web Components:
53
+ Keep the CSS class surface canonical, use the optional layered entrypoint for the approved v1 component families, and prefer native HTML primitives when they already satisfy the semantic and interaction contract.
44
54
  - Status:
45
- Use `inc-badge--success|warning|danger|info` for compact status signals.
55
+ Use [`inc-badge--success|warning|danger|info`](reference.html) for compact status signals.
46
56
  - Metrics:
47
- Use `inc-summary-overview` and `inc-summary-block` for dashboard and header metrics.
57
+ Use [`inc-summary-overview`](reference.html) and [`inc-summary-block`](reference.html) for dashboard and header metrics.
48
58
 
49
59
  ## Customization order
50
60
 
51
- 1. Change fonts and colors in `src/_inc-theme.scss`.
52
- 2. Use `src/_inc-tokens.scss` only for deeper token or Bootstrap-level tuning.
61
+ 1. Change fonts and colors in [`src/_inc-theme.scss`](src/_inc-theme.scss).
62
+ 2. Use [`src/_inc-tokens.scss`](src/_inc-tokens.scss) only for deeper token or Bootstrap-level tuning.
53
63
  3. Rebuild the CSS.
54
- 4. Only add new component rules after checking whether an existing `inc-*` block already fits.
64
+ 4. Only add new component rules after checking whether an existing [`inc-*`](reference.html) block already fits.
55
65
 
56
66
  ## Packaging
57
67
 
68
+ - Use `npm run verify` before versioning when you want to rebuild, smoke-test, and dry-run the package.
58
69
  - Use `npm run build` to rebuild distributables.
59
70
  - Use `npm pack` or `npm run package` to produce a local installable tarball.
60
71
  - The repository is licensed under Apache 2.0.
61
- - The compiled `dist/inc-design-language.css` already includes the Bootstrap layer it was built from, so consumers do not need Bootstrap CSS at runtime when they use the compiled assets.
62
- - The source `src/inc-design-language.scss` does require Bootstrap Sass at build time because it imports `bootstrap/scss/bootstrap`.
72
+ - The compiled [`dist/inc-design-language.css`](dist/inc-design-language.css) already includes the Bootstrap layer it was built from, so consumers do not need Bootstrap CSS at runtime when they use the compiled assets.
73
+ - The source [`src/inc-design-language.scss`](src/inc-design-language.scss) does require Bootstrap Sass at build time because it imports `bootstrap/scss/bootstrap`.
74
+ - The optional Web Component layer lives in the same package as a layered entrypoint so the CSS-first surface and browser-native surface stay aligned.
75
+ - The Web Component source tree lives under [`src/web-components/`](src/web-components); keep consumer-facing guidance in [`web-components.html`](web-components.html) and maintainer notes alongside the runtime source tree.
63
76
 
64
77
  ## Guardrails
65
78
 
@@ -68,9 +81,10 @@ Repository brand assets live under `assets/brand/`. Prefer those local files whe
68
81
  - Preserve explicit alignment classes for numeric table data.
69
82
  - Avoid adding product-specific shell/background styles to this package.
70
83
  - Keep new components generic enough to drop into another admin/data app.
71
- - If you add a new block, prefer names like `inc-filter-bar`, `inc-stat-card`, or `inc-data-toolbar` over feature-specific names.
84
+ - If you add a new block, prefer names like [`inc-filter-bar`](reference.html), [`inc-stat-card`](reference.html), or [`inc-data-toolbar`](reference.html) over feature-specific names.
72
85
  - Keep border radius consistent across panels, tabs, tables, and cards unless there is a deliberate reason to differentiate them.
73
86
  - Prefer native browser behavior first for disclosures and dialogs when it fits the product; use the helper only when the Bootstrap-like component contract needs custom state handling.
87
+ - Keep the CSS-first class API canonical and treat the Web Component layer as additive, not a replacement.
74
88
 
75
89
  ## Build
76
90
 
package/LLMS.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  Incursa UI Kit
2
2
 
3
3
  Short description:
4
- Reusable UI kit for data-heavy business applications. The public surface uses `inc-*` classes and ships compiled CSS, optional vanilla-JS helpers, and SCSS source entrypoints.
4
+ Reusable UI kit for data-heavy business applications. The public surface stays CSS-first through [`inc-*`](reference.html) classes, with optional vanilla-JS helpers, SCSS source entrypoints, and a layered `./web-components` entrypoint for browser-native components.
5
5
 
6
6
  Package identity:
7
7
  - npm package: `@incursa/ui-kit`
@@ -9,62 +9,77 @@ Package identity:
9
9
  - repository: https://github.com/incursa/ui-kit
10
10
 
11
11
  Fast path:
12
- - Use `dist/inc-design-language.css` if the target app already has working HTML and mainly needs the visual language.
13
- - Use `dist/inc-design-language.js` only for stateful primitives such as menus, tabs, collapsible sections, auto-refresh widgets, the native dialog launch hook, and legacy modal/offcanvas shells.
14
- - Use `src/inc-design-language.scss` if the consumer needs to tune tokens, theme variables, density, or Bootstrap defaults.
12
+ - Use [`dist/inc-design-language.css`](dist/inc-design-language.css) if the target app already has working HTML and mainly needs the visual language.
13
+ - Use [`dist/inc-design-language.js`](dist/inc-design-language.js) only for stateful primitives such as menus, tabs, collapsible sections, auto-refresh widgets, the native dialog launch hook, and legacy modal/offcanvas shells.
14
+ - Use [`web-components.html`](web-components.html) and the same-package `./web-components` entrypoint when you want declarative custom elements for the approved v1 component families.
15
+ - Use [`src/inc-design-language.scss`](src/inc-design-language.scss) if the consumer needs to tune tokens, theme variables, density, or Bootstrap defaults.
15
16
 
16
17
  Primary files:
17
- - `dist/inc-design-language.css`: compiled standalone CSS output.
18
- - `dist/inc-design-language.js`: optional dependency-free helper for menus, tabs, collapsible sections, auto-refresh widgets, the native dialog launch hook, and legacy modal/offcanvas shells.
19
- - `src/inc-design-language.scss`: main SCSS entrypoint.
20
- - `src/_inc-theme.scss`: brand-facing fonts, palette, semantic surfaces, and text colors.
21
- - `src/_inc-tokens.scss`: deeper token and Bootstrap-facing overrides.
22
- - `reference.html`: copy/paste catalog for standard controls and markup patterns.
23
- - `specs/requirements/ui-kit/_index.md`: first-pass Spec Trace suite for the UI kit.
24
- - `specs/requirements/ui-kit/REQUIREMENT-GAPS.md`: unresolved requirement gaps and follow-up questions.
25
- - `specs/requirements/ui-kit/SPEC-UIK-STD.md`: public surface standards for `inc-` naming and accessible interactive behavior.
26
- - `specs/requirements/ui-kit/SPEC-UIK-CNV.md`: shared control conventions for base-plus-modifier surfaces, density suffixes, and state hooks.
27
- - `specs/verification/ui-kit/_index.md`: auditable source-review verification baseline for the UI kit surface.
28
- - `states.html`, `forms-and-validation.html`, `data-grid-advanced.html`, `overlay-workflows.html`: workflow-heavy composition patterns.
29
- - `demo.html`, `work-queue.html`, `record-detail.html`, `native-patterns.html`: fuller page examples.
18
+ - [`dist/inc-design-language.css`](dist/inc-design-language.css): compiled standalone CSS output.
19
+ - [`dist/inc-design-language.js`](dist/inc-design-language.js): optional dependency-free helper for menus, tabs, collapsible sections, auto-refresh widgets, the native dialog launch hook, and legacy modal/offcanvas shells.
20
+ - [`dist/web-components/index.js`](dist/web-components/index.js): optional custom-element entrypoint for the same-package Web Component layer.
21
+ - [`src/inc-design-language.scss`](src/inc-design-language.scss): main SCSS entrypoint.
22
+ - [`src/_inc-theme.scss`](src/_inc-theme.scss): brand-facing fonts, palette, semantic surfaces, and text colors.
23
+ - [`src/_inc-tokens.scss`](src/_inc-tokens.scss): deeper token and Bootstrap-facing overrides.
24
+ - [`web-components.html`](web-components.html): public landing page for the optional Web Component entrypoint and the CSS-first versus Web Component usage split.
25
+ - [`reference.html`](reference.html): copy/paste catalog for standard controls, page-frame primitives, metric variants, and overlay shells.
26
+ - [`specs/architecture/_index.md`](specs/architecture/_index.md): design-rationale layer for token boundaries, helper scope, and package intent.
27
+ - [`specs/requirements/ui-kit/_index.md`](specs/requirements/ui-kit/_index.md): first-pass Spec Trace suite for the UI kit.
28
+ - [`specs/requirements/ui-kit/REQUIREMENT-GAPS.md`](specs/requirements/ui-kit/REQUIREMENT-GAPS.md): unresolved requirement gaps and follow-up questions.
29
+ - [`specs/requirements/ui-kit/SPEC-UIK-STD.md`](specs/requirements/ui-kit/SPEC-UIK-STD.md): public surface standards for [`inc-`](reference.html) naming and accessible interactive behavior.
30
+ - [`specs/requirements/ui-kit/SPEC-UIK-CNV.md`](specs/requirements/ui-kit/SPEC-UIK-CNV.md): shared control conventions for base-plus-modifier surfaces, density suffixes, and state hooks.
31
+ - [`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.
32
+ - [`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.
33
+ - [`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.
34
+ - 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
+ - Tables, utilities, filter/bulk/file workflows, permission banners, toasts, and compatibility overlay shells stay CSS-only or deferred in v1.
36
+
37
+ Markdown links:
38
+ - Use relative links for repo-local references in markdown, and keep the visible label code-formatted.
39
+ - Use absolute URLs only for external documentation, hosted examples, package registry pages, or other non-repo targets.
40
+ - When a reference has a clear local target, link it instead of leaving it as a bare code span.
30
41
 
31
42
  Public naming rules:
32
- - Use the `inc-` prefix for public classes.
33
- - Keep the existing BEM structure: `inc-block`, `inc-block__element`, `inc-block--modifier`.
43
+ - Use the [`inc-`](reference.html) prefix for public classes.
44
+ - Keep the existing BEM structure: [`inc-block`](reference.html), [`inc-block__element`](reference.html), [`inc-block--modifier`](reference.html).
34
45
  - Use the shared control modifier grammar for density, expansion, and state hooks instead of inventing one-off suffixes.
35
- - Avoid nested element names such as `inc-form__check__input`; keep public element names one level deep.
46
+ - Avoid nested element names such as [`inc-form__check__input`](reference.html); keep public element names one level deep.
36
47
  - Preserve native semantics and accessible focus/disabled/hidden states for interactive surfaces.
37
48
  - Treat light and dark as global theme concerns activated through `data-bs-theme` on the root scope, not public component-class modifiers.
38
49
 
39
50
  Core primitives:
40
- - Typography: use `inc-text`, `inc-heading`, `inc-data`, `inc-button-text`, `inc-form-text`, and `inc-table-text` for public text helpers.
41
- - Tables: start with `inc-table`; use modifiers such as `inc-table__cell--numeric`, `inc-table__cell--action`, `inc-table__cell--min`, and `inc-table__cell--expand`.
42
- - Buttons: use `inc-btn` with semantic modifiers such as `inc-btn--primary`, `inc-btn--secondary`, and `inc-btn--danger`. Keep the visual treatment identical on `<button>` and `<a>` markup, use `<button>` for in-place actions, use `<a>` for navigation, and use `inc-btn--micro` for in-row actions.
43
- - Forms: use `inc-form--inline`, `inc-form__field`, `inc-form__fieldset`, `inc-form__legend`, `inc-form__control`, `inc-form__select`, `inc-input-group`, `inc-readonly-field`, `inc-form-text`, `inc-form__feedback--error`, `inc-form__feedback--success`, and `inc-form__error-summary`.
44
- - Form choices: use `inc-form__check`, `inc-form__check-input`, `inc-form__check-label`, `inc-form__switch`, and `inc-form__choices` for checkbox and radio groups.
51
+ - Typography: use [`inc-text`](reference.html), [`inc-heading`](reference.html), [`inc-data`](reference.html), [`inc-button-text`](reference.html), [`inc-form-text`](reference.html), and [`inc-table-text`](reference.html) for public text helpers.
52
+ - Tables: start with [`inc-table`](reference.html); use modifiers such as [`inc-table__cell--numeric`](reference.html), [`inc-table__cell--action`](reference.html), [`inc-table__cell--min`](reference.html), and [`inc-table__cell--expand`](reference.html).
53
+ - Buttons: use [`inc-btn`](reference.html) with semantic modifiers such as [`inc-btn--primary`](reference.html), [`inc-btn--secondary`](reference.html), and [`inc-btn--danger`](reference.html). Keep the visual treatment identical on `<button>` and `<a>` markup, use `<button>` for in-place actions, use `<a>` for navigation, and use [`inc-btn--micro`](reference.html) for in-row actions.
54
+ - Forms: use [`inc-form--inline`](reference.html), [`inc-form__field`](reference.html), [`inc-form__fieldset`](reference.html), [`inc-form__legend`](reference.html), [`inc-form__control`](reference.html), [`inc-form__select`](reference.html), [`inc-input-group`](reference.html), [`inc-readonly-field`](reference.html), [`inc-form-text`](reference.html), [`inc-form__feedback--error`](reference.html), [`inc-form__feedback--success`](reference.html), and [`inc-form__error-summary`](reference.html).
55
+ - Form choices: use [`inc-form__check`](reference.html), [`inc-form__check-input`](reference.html), [`inc-form__check-label`](reference.html), [`inc-form__switch`](reference.html), and [`inc-form__choices`](reference.html) for checkbox and radio groups.
45
56
  - Control conventions: use the shared base-plus-modifier patterns from `SPEC-UIK-CNV.md` for density, expansion, and state hooks.
46
- - Control density: use the shared `inc-control-density-micro-*` tokens for compact buttons, inputs, selects, and input groups instead of hard-coded micro values.
47
- - Filter bars: use `inc-filter-bar`, `inc-filter-chip`, and `inc-bulk-bar`.
48
- - Cards and shells: use `inc-card` for plain cards. Use `inc-header-body` for titled sections with actions. Use `inc-header-body--table-body` when the body contains a table and should keep body padding without extra bottom table margin.
49
- - App layout: use `inc-app-shell`, `inc-footer-bar`, `inc-navbar`, `inc-breadcrumb`, `inc-nav-triad`, and `inc-sidebar-menu`.
50
- - Utilities: use `inc-u-stack-*`, `inc-u-gap-*`, `inc-grid`, `inc-row`, `inc-col`, `inc-stack`, and `inc-flex-*` when composition needs a public helper class.
51
- - States and workflow: use `inc-state-panel`, `inc-permission-banner`, `inc-toast-card`, `inc-timeline`, `inc-file-dropzone`, `inc-file-row`, and `inc-key-value`.
52
- - Interaction: use `data-inc-toggle="menu"`, `data-inc-toggle="tab"`, and `data-inc-toggle="collapse"` with `data-inc-target="#target-id"` when you want the helper to wire behavior. Use `data-inc-dismiss="modal"` / `data-inc-dismiss="offcanvas"`, `data-inc-accordion`, `data-inc-backdrop-for`, `data-inc-initial-focus`, `data-inc-auto-refresh`, and the `data-inc-refresh-seconds`, `data-inc-refresh-label`, `data-inc-refresh-loading-label`, `data-inc-refresh-paused-label`, `data-inc-refresh-pause-action-label`, and `data-inc-refresh-resume-action-label` hooks when you need the rest of the helper contract. Use `data-inc-native-dialog-open="dialog-id"` when you want the helper to open a native `<dialog>`.
53
- - Native interaction: use `details.inc-disclosure`, `details.inc-native-menu`, and `dialog.inc-native-dialog`.
54
- - Status: use `inc-badge--success|warning|danger|info`.
55
- - Metrics: use `inc-summary-overview` and `inc-summary-block`.
57
+ - Control density: use the shared [`inc-control-density-micro-*`](reference.html) tokens for compact buttons, inputs, selects, and input groups instead of hard-coded micro values.
58
+ - Filter bars: use [`inc-filter-bar`](reference.html), [`inc-filter-chip`](reference.html), and [`inc-bulk-bar`](reference.html).
59
+ - 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.
60
+ - 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).
61
+ - 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.
62
+ - 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).
63
+ - 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>`.
64
+ - 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.
65
+ - Native interaction: use [`details.inc-disclosure`](reference.html), [`details.inc-native-menu`](reference.html), and [`dialog.inc-native-dialog`](reference.html).
66
+ - Status: use [`inc-badge--success|warning|danger|info`](reference.html).
67
+ - Metrics: use [`inc-summary-overview`](reference.html) and [`inc-summary-block`](reference.html).
56
68
 
57
69
  Customization order:
58
- 1. Change fonts and colors in `src/_inc-theme.scss`.
59
- 2. Use `src/_inc-tokens.scss` only for deeper token or Bootstrap-level tuning.
70
+ 1. Change fonts and colors in [`src/_inc-theme.scss`](src/_inc-theme.scss).
71
+ 2. Use [`src/_inc-tokens.scss`](src/_inc-tokens.scss) only for deeper token or Bootstrap-level tuning.
60
72
  3. Rebuild the CSS.
61
- 4. Only add new component rules after checking whether an existing `inc-*` block already fits.
73
+ 4. Only add new component rules after checking whether an existing [`inc-*`](reference.html) block already fits.
62
74
 
63
75
  Packaging and build:
76
+ - `npm run verify` rebuilds distributables, runs the smoke gate, and dry-runs the package.
77
+ - `npm run test:browser` runs the Playwright browser suite for tabs, overlays, native dialogs, and auto-refresh; use `npm run test:browser:install` once if Chromium is not already installed.
64
78
  - `npm run build` rebuilds distributables.
65
79
  - `npm pack` or `npm run package` produces a local installable tarball.
66
80
  - The compiled CSS already includes the Bootstrap layer it was built from, so consumers do not need Bootstrap CSS at runtime when using compiled assets.
67
81
  - The SCSS source path does require Bootstrap Sass at build time because it imports `bootstrap/scss/bootstrap`.
82
+ - The Web Component layer ships as a layered entrypoint in the same package, not as a second package or separate design system.
68
83
 
69
84
  Guardrails:
70
85
  - Keep typography split: sans for UI text, mono for data.
@@ -72,7 +87,8 @@ Guardrails:
72
87
  - Avoid product-specific shell or background styles in this package.
73
88
  - Keep new components generic enough to reuse across admin/data apps.
74
89
  - Prefer native browser behavior first for disclosures and dialogs when it fits the product.
90
+ - Keep the CSS-first class API canonical and treat the Web Component layer as additive, not a replacement.
75
91
 
76
92
  See also:
77
- - `README.md` for package usage, release flow, and repository structure.
78
- - `AI-AGENT-INSTRUCTIONS.md` for the same guidance in markdown form.
93
+ - [`README.md`](README.md) for package usage, release flow, and repository structure.
94
+ - [`AI-AGENT-INSTRUCTIONS.md`](AI-AGENT-INSTRUCTIONS.md) for the same guidance in markdown form.