@orange-halo/components 2.1.0 → 3.0.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 (130) hide show
  1. package/custom-elements.json +968 -362
  2. package/dist/base.d.ts.map +1 -1
  3. package/dist/base.js +1 -2
  4. package/dist/base.js.map +1 -1
  5. package/dist/index.d.ts +4 -8
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -4
  8. package/dist/index.js.map +1 -1
  9. package/dist/oh-accordion.d.ts +53 -8
  10. package/dist/oh-accordion.d.ts.map +1 -1
  11. package/dist/oh-accordion.js +99 -29
  12. package/dist/oh-accordion.js.map +1 -1
  13. package/dist/oh-alert.d.ts +26 -8
  14. package/dist/oh-alert.d.ts.map +1 -1
  15. package/dist/oh-alert.js +96 -36
  16. package/dist/oh-alert.js.map +1 -1
  17. package/dist/oh-badge.d.ts +32 -13
  18. package/dist/oh-badge.d.ts.map +1 -1
  19. package/dist/oh-badge.js +38 -19
  20. package/dist/oh-badge.js.map +1 -1
  21. package/dist/oh-breadcrumb.d.ts +39 -12
  22. package/dist/oh-breadcrumb.d.ts.map +1 -1
  23. package/dist/oh-breadcrumb.js +66 -25
  24. package/dist/oh-breadcrumb.js.map +1 -1
  25. package/dist/oh-button.d.ts +49 -23
  26. package/dist/oh-button.d.ts.map +1 -1
  27. package/dist/oh-button.figma.js +1 -3
  28. package/dist/oh-button.figma.js.map +1 -1
  29. package/dist/oh-button.js +133 -82
  30. package/dist/oh-button.js.map +1 -1
  31. package/dist/oh-card.d.ts +47 -19
  32. package/dist/oh-card.d.ts.map +1 -1
  33. package/dist/oh-card.js +143 -96
  34. package/dist/oh-card.js.map +1 -1
  35. package/dist/oh-checkbox-group.d.ts +56 -12
  36. package/dist/oh-checkbox-group.d.ts.map +1 -1
  37. package/dist/oh-checkbox-group.figma.js +4 -6
  38. package/dist/oh-checkbox-group.figma.js.map +1 -1
  39. package/dist/oh-checkbox-group.js +114 -49
  40. package/dist/oh-checkbox-group.js.map +1 -1
  41. package/dist/oh-checkbox.d.ts +54 -17
  42. package/dist/oh-checkbox.d.ts.map +1 -1
  43. package/dist/oh-checkbox.js +117 -60
  44. package/dist/oh-checkbox.js.map +1 -1
  45. package/dist/oh-cluster.d.ts +19 -14
  46. package/dist/oh-cluster.d.ts.map +1 -1
  47. package/dist/oh-cluster.js +19 -19
  48. package/dist/oh-cluster.js.map +1 -1
  49. package/dist/oh-container.d.ts +19 -16
  50. package/dist/oh-container.d.ts.map +1 -1
  51. package/dist/oh-container.js +21 -23
  52. package/dist/oh-container.js.map +1 -1
  53. package/dist/oh-drawer.d.ts +28 -11
  54. package/dist/oh-drawer.d.ts.map +1 -1
  55. package/dist/oh-drawer.js +52 -24
  56. package/dist/oh-drawer.js.map +1 -1
  57. package/dist/oh-footer.d.ts +37 -18
  58. package/dist/oh-footer.d.ts.map +1 -1
  59. package/dist/oh-footer.js +38 -19
  60. package/dist/oh-footer.js.map +1 -1
  61. package/dist/oh-grid.d.ts +27 -14
  62. package/dist/oh-grid.d.ts.map +1 -1
  63. package/dist/oh-grid.js +28 -21
  64. package/dist/oh-grid.js.map +1 -1
  65. package/dist/oh-icon.d.ts +21 -5
  66. package/dist/oh-icon.d.ts.map +1 -1
  67. package/dist/oh-icon.js +27 -9
  68. package/dist/oh-icon.js.map +1 -1
  69. package/dist/oh-input.d.ts +110 -21
  70. package/dist/oh-input.d.ts.map +1 -1
  71. package/dist/oh-input.figma.js +2 -2
  72. package/dist/oh-input.figma.js.map +1 -1
  73. package/dist/oh-input.js +227 -71
  74. package/dist/oh-input.js.map +1 -1
  75. package/dist/oh-link.d.ts +42 -19
  76. package/dist/oh-link.d.ts.map +1 -1
  77. package/dist/oh-link.js +83 -38
  78. package/dist/oh-link.js.map +1 -1
  79. package/dist/oh-modal.d.ts +35 -6
  80. package/dist/oh-modal.d.ts.map +1 -1
  81. package/dist/oh-modal.js +90 -39
  82. package/dist/oh-modal.js.map +1 -1
  83. package/dist/oh-navbar.d.ts +42 -19
  84. package/dist/oh-navbar.d.ts.map +1 -1
  85. package/dist/oh-navbar.js +44 -20
  86. package/dist/oh-navbar.js.map +1 -1
  87. package/dist/oh-progress.d.ts +26 -7
  88. package/dist/oh-progress.d.ts.map +1 -1
  89. package/dist/oh-progress.js +35 -14
  90. package/dist/oh-progress.js.map +1 -1
  91. package/dist/oh-radio-group.d.ts +55 -13
  92. package/dist/oh-radio-group.d.ts.map +1 -1
  93. package/dist/oh-radio-group.figma.js +2 -2
  94. package/dist/oh-radio-group.figma.js.map +1 -1
  95. package/dist/oh-radio-group.js +122 -51
  96. package/dist/oh-radio-group.js.map +1 -1
  97. package/dist/oh-radio.d.ts +55 -17
  98. package/dist/oh-radio.d.ts.map +1 -1
  99. package/dist/oh-radio.js +120 -61
  100. package/dist/oh-radio.js.map +1 -1
  101. package/dist/oh-select.d.ts +59 -16
  102. package/dist/oh-select.d.ts.map +1 -1
  103. package/dist/oh-select.js +141 -69
  104. package/dist/oh-select.js.map +1 -1
  105. package/dist/oh-skip-link.d.ts +33 -15
  106. package/dist/oh-skip-link.d.ts.map +1 -1
  107. package/dist/oh-skip-link.js +43 -32
  108. package/dist/oh-skip-link.js.map +1 -1
  109. package/dist/oh-stack.d.ts +17 -14
  110. package/dist/oh-stack.d.ts.map +1 -1
  111. package/dist/oh-stack.js +18 -20
  112. package/dist/oh-stack.js.map +1 -1
  113. package/dist/oh-tabs.d.ts +55 -30
  114. package/dist/oh-tabs.d.ts.map +1 -1
  115. package/dist/oh-tabs.js +100 -76
  116. package/dist/oh-tabs.js.map +1 -1
  117. package/dist/oh-textarea.d.ts +129 -0
  118. package/dist/oh-textarea.d.ts.map +1 -0
  119. package/dist/oh-textarea.js +401 -0
  120. package/dist/oh-textarea.js.map +1 -0
  121. package/dist/oh-toggle.d.ts +45 -12
  122. package/dist/oh-toggle.d.ts.map +1 -1
  123. package/dist/oh-toggle.js +84 -34
  124. package/dist/oh-toggle.js.map +1 -1
  125. package/dist/styles/typography.js +1 -1
  126. package/package.json +7 -7
  127. package/dist/oh-hero.d.ts +0 -33
  128. package/dist/oh-hero.d.ts.map +0 -1
  129. package/dist/oh-hero.js +0 -246
  130. package/dist/oh-hero.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"oh-skip-link.js","sourceRoot":"","sources":["../src/oh-skip-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAS;IAAlC;;QAuFL,SAAI,GAAG,OAAO,CAAC;QAGf,SAAI,GAAG,sBAAsB,CAAC;IAahC,CAAC;aAtGiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgFF;KACF,AAnFqB,CAmFpB;IAQF,MAAM;QACJ,OAAO,IAAI,CAAA;;;eAGA,IAAI,CAAC,IAAI;qBACH,IAAI,CAAC,IAAI;;UAEpB,IAAI,CAAC,IAAI;;KAEd,CAAC;IACJ,CAAC;;AAfD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACZ;AAGf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACG;AA1FnB,UAAU;IADtB,aAAa,CAAC,cAAc,CAAC;GACjB,UAAU,CAuGtB"}
1
+ {"version":3,"file":"oh-skip-link.js","sourceRoot":"","sources":["../src/oh-skip-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAS;IAAlC;;QAoFL,SAAI,GAAG,OAAO,CAAC;QAGf,SAAI,GAAG,sBAAsB,CAAC;IAShC,CAAC;aA/FiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6EF;KACF,AAhFqB,CAgFpB;IAQF,MAAM;QACJ,OAAO,IAAI,CAAA;kCACmB,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI;UACzD,IAAI,CAAC,IAAI;;KAEd,CAAC;IACJ,CAAC;;AAXD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACZ;AAGf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACG;AAvFnB,UAAU;IADtB,aAAa,CAAC,cAAc,CAAC;GACjB,UAAU,CAgGtB"}
@@ -1,27 +1,30 @@
1
1
  /**
2
2
  * oh-stack
3
3
  *
4
- * Vertical spacing between children.
5
- * Creates consistent vertical rhythm without manual margins.
6
- *
7
4
  * DESIGN DECISIONS:
8
5
  * ─────────────────
9
- * 1. SPACING SCALE
10
- * - Uses design token spacing values
11
- * - xs: 4px, sm: 8px, md: 16px, lg: 24px, xl: 32px, 2xl: 48px
6
+ * 1. A flex column; `gap` maps named steps to `spacing.*` tokens, so
7
+ * children need no margins.
8
+ * 2. Cross-axis alignment: start, center, end, stretch (default).
9
+ */
10
+ import { OhElement } from "./base.js";
11
+ export type StackGap = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
12
+ export type StackAlign = "start" | "center" | "end" | "stretch";
13
+ /**
14
+ * A vertical layout that spaces its children evenly, top to bottom.
12
15
  *
13
- * 2. FLEX COLUMN LAYOUT
14
- * - Simple vertical stacking
15
- * - Gap property for consistent spacing
16
+ * **Use it for** consistent vertical rhythm without margins on children.
17
+ * **Don't use it for** items in a row (use `oh-cluster`) or a grid of cards
18
+ * (use `oh-grid`).
16
19
  *
17
- * 3. ALIGNMENT OPTIONS
18
- * - start, center, end, stretch
20
+ * **Gaps:** `gap` is `none`, `xs` (`spacing.1`), `sm` (`spacing.2`), `md`
21
+ * (default, `spacing.4`), `lg` (`spacing.6`), `xl` (`spacing.8`) or `2xl`
22
+ * (`spacing.12`). `align` sets horizontal alignment: `start`, `center`,
23
+ * `end` or `stretch` (default).
19
24
  *
20
25
  * @element oh-stack
26
+ * @slot - The items to stack.
21
27
  */
22
- import { OhElement } from "./base.js";
23
- export type StackGap = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
24
- export type StackAlign = "start" | "center" | "end" | "stretch";
25
28
  export declare class OhStack extends OhElement {
26
29
  static styles: import("lit").CSSResult[];
27
30
  gap: StackGap;
@@ -1 +1 @@
1
- {"version":3,"file":"oh-stack.d.ts","sourceRoot":"","sources":["../src/oh-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,qBACa,OAAQ,SAAQ,SAAS;IACpC,OAAgB,MAAM,4BA4DpB;IAGF,GAAG,EAAE,QAAQ,CAAQ;IAGrB,KAAK,EAAE,UAAU,CAAa;IAE9B,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"oh-stack.d.ts","sourceRoot":"","sources":["../src/oh-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AACH,qBACa,OAAQ,SAAQ,SAAS;IACpC,OAAgB,MAAM,4BAuDpB;IAGF,GAAG,EAAE,QAAQ,CAAQ;IAGrB,KAAK,EAAE,UAAU,CAAa;IAE9B,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
package/dist/oh-stack.js CHANGED
@@ -1,23 +1,11 @@
1
1
  /**
2
2
  * oh-stack
3
3
  *
4
- * Vertical spacing between children.
5
- * Creates consistent vertical rhythm without manual margins.
6
- *
7
4
  * DESIGN DECISIONS:
8
5
  * ─────────────────
9
- * 1. SPACING SCALE
10
- * - Uses design token spacing values
11
- * - xs: 4px, sm: 8px, md: 16px, lg: 24px, xl: 32px, 2xl: 48px
12
- *
13
- * 2. FLEX COLUMN LAYOUT
14
- * - Simple vertical stacking
15
- * - Gap property for consistent spacing
16
- *
17
- * 3. ALIGNMENT OPTIONS
18
- * - start, center, end, stretch
19
- *
20
- * @element oh-stack
6
+ * 1. A flex column; `gap` maps named steps to `spacing.*` tokens, so
7
+ * children need no margins.
8
+ * 2. Cross-axis alignment: start, center, end, stretch (default).
21
9
  */
22
10
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
23
11
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -28,6 +16,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
28
16
  import { html, css } from "lit";
29
17
  import { customElement, property } from "lit/decorators.js";
30
18
  import { OhElement, baseStyles } from "./base.js";
19
+ /**
20
+ * A vertical layout that spaces its children evenly, top to bottom.
21
+ *
22
+ * **Use it for** consistent vertical rhythm without margins on children.
23
+ * **Don't use it for** items in a row (use `oh-cluster`) or a grid of cards
24
+ * (use `oh-grid`).
25
+ *
26
+ * **Gaps:** `gap` is `none`, `xs` (`spacing.1`), `sm` (`spacing.2`), `md`
27
+ * (default, `spacing.4`), `lg` (`spacing.6`), `xl` (`spacing.8`) or `2xl`
28
+ * (`spacing.12`). `align` sets horizontal alignment: `start`, `center`,
29
+ * `end` or `stretch` (default).
30
+ *
31
+ * @element oh-stack
32
+ * @slot - The items to stack.
33
+ */
31
34
  let OhStack = class OhStack extends OhElement {
32
35
  constructor() {
33
36
  super(...arguments);
@@ -37,11 +40,6 @@ let OhStack = class OhStack extends OhElement {
37
40
  static { this.styles = [
38
41
  baseStyles,
39
42
  css `
40
- /* ═══════════════════════════════════════════════════════════════
41
- ORANGE HALO STACK
42
- Vertical spacing • Consistent rhythm • Flexible alignment
43
- ═══════════════════════════════════════════════════════════════ */
44
-
45
43
  :host {
46
44
  display: flex;
47
45
  flex-direction: column;
@@ -1 +1 @@
1
- {"version":3,"file":"oh-stack.js","sourceRoot":"","sources":["../src/oh-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM3C,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,SAAS;IAA/B;;QAgEL,QAAG,GAAa,IAAI,CAAC;QAGrB,UAAK,GAAe,SAAS,CAAC;IAKhC,CAAC;aAvEiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyDF;KACF,AA5DqB,CA4DpB;IAQF,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;;AAPD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCACrB;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCACZ;AAnEnB,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAwEnB"}
1
+ {"version":3,"file":"oh-stack.js","sourceRoot":"","sources":["../src/oh-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKlD;;;;;;;;;;;;;;GAcG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,SAAS;IAA/B;;QA2DL,QAAG,GAAa,IAAI,CAAC;QAGrB,UAAK,GAAe,SAAS,CAAC;IAKhC,CAAC;aAlEiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoDF;KACF,AAvDqB,CAuDpB;IAQF,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;;AAPD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCACrB;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCACZ;AA9DnB,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAmEnB"}
package/dist/oh-tabs.d.ts CHANGED
@@ -1,28 +1,17 @@
1
1
  /**
2
2
  * oh-tabs
3
3
  *
4
- * Accessible tabbed interface with full keyboard support.
5
- *
6
- * ACCESSIBILITY FEATURES:
7
- * ───────────────────────
8
- * - Full ARIA support (tablist, tab, tabpanel roles)
9
- * - Roving tabindex for keyboard navigation
10
- * - Manual activation (arrow keys move focus, Enter/Space activates)
11
- * - Home/End jump to first/last tab
12
- * - Focus moves to panel content after activation
13
- * - Focus indicators meet WCAG requirements
14
- * - Panels properly hidden from assistive tech when inactive
15
- *
16
- * KEYBOARD INTERACTIONS:
17
- * ──────────────────────
18
- * - Left Arrow: Move focus to previous tab (wraps to last)
19
- * - Right Arrow: Move focus to next tab (wraps to first)
20
- * - Home: Move focus to first tab
21
- * - End: Move focus to last tab
22
- * - Enter/Space: Activate focused tab and move focus to panel
23
- * - Tab: Move focus out of tablist
24
- *
25
- * @element oh-tabs
4
+ * DESIGN DECISIONS:
5
+ * ─────────────────
6
+ * 1. WAI-ARIA tabs pattern: tablist / tab / tabpanel roles, roving tabindex,
7
+ * inactive panels `hidden`.
8
+ * 2. Manual activation: arrow keys and Home/End move focus only;
9
+ * Enter/Space selects and moves focus into the panel. Tab leaves the
10
+ * tablist.
11
+ * 3. The selected tab joins the panel: it shares the panel's surface and
12
+ * border, and covers the panel's top border beneath it.
13
+ * 4. Focus is a solid underline on the tab label (and an outline on the
14
+ * panel), never colour alone.
26
15
  */
27
16
  import { OhElement } from "./base.js";
28
17
  export interface TabItem {
@@ -30,16 +19,52 @@ export interface TabItem {
30
19
  label: string;
31
20
  content?: string;
32
21
  }
22
+ /**
23
+ * A set of tabs that switches between panels of related content in the same place.
24
+ *
25
+ * **Use it for** a few peer sections of content where only one needs to be
26
+ * seen at a time. **Don't use it for** navigating between pages (use links
27
+ * or `oh-navbar`), or for content people need to compare side by side.
28
+ *
29
+ * **Parts:** pass `items`, an array of `{ id, label, content? }`. A panel
30
+ * shows `content` as text, or else the light-DOM element with
31
+ * `slot="<id>"`. `value` is the selected tab's `id` (defaults to the first).
32
+ *
33
+ * **States:** each tab is selected or not; unselected tabs show an underline
34
+ * on hover.
35
+ *
36
+ * **Behaviour:** click selects a tab. Arrow keys move focus between tabs and
37
+ * wrap (Left/Right, or Up/Down when `orientation="vertical"`; orientation
38
+ * changes the keys only, not the layout); Home/End jump to the first/last.
39
+ * Enter or Space selects the focused tab and moves focus to its panel.
40
+ * Selecting a different tab fires `oh-change`. Transitions are cut short
41
+ * under `prefers-reduced-motion`.
42
+ *
43
+ * **Accessibility:** tablist/tab/tabpanel roles with `aria-selected`,
44
+ * `aria-controls` and `aria-labelledby`; one tab is in the tab order at a
45
+ * time; inactive panels are `hidden`; the active panel is focusable. Keyboard
46
+ * focus shows a solid underline on the tab label and an outline on the panel.
47
+ * Keep labels short.
48
+ *
49
+ * **Look:** set by tokens — `color.brand.primary` the unselected tabs and
50
+ * their hover underline (`decoration.underlineThickness`,
51
+ * `decoration.underlineDash`, `decoration.underlinePeriod`);
52
+ * `color.text.primary`, `color.surface.base` and `color.border.emphasis` the
53
+ * selected tab and panel; `stroke.control` the borders; `shape.control` the
54
+ * tab corners and `shape.container` the panel corners;
55
+ * `typography.body.*` and `typography.label.base.fontWeight` the text;
56
+ * `spacing.*` the padding; `motion.snappy` and `motion.relaxed` the
57
+ * transitions.
58
+ *
59
+ * @element oh-tabs
60
+ * @fires oh-change - When a different tab is selected. `detail: { value }`, the tab's `id`.
61
+ */
33
62
  export declare class OhTabs extends OhElement {
34
63
  static styles: import("lit").CSSResult[];
35
- /**
36
- * Array of tab items with id, label, and optional content
37
- */
38
- tabs: TabItem[];
39
- /**
40
- * ID of the currently selected tab
41
- */
42
- selected: string;
64
+ /** The tabs: `{ id, label, content? }`. In HTML, a JSON array */
65
+ items: TabItem[];
66
+ /** The selected tab's `id`. Defaults to the first tab */
67
+ value: string;
43
68
  /**
44
69
  * Orientation of the tabs (affects arrow key behavior)
45
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"oh-tabs.d.ts","sourceRoot":"","sources":["../src/oh-tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBACa,MAAO,SAAQ,SAAS;IACnC,OAAgB,MAAM,4BAwKpB;IAEF;;OAEG;IAEH,IAAI,EAAE,OAAO,EAAE,CAAM;IAErB;;OAEG;IAEH,QAAQ,SAAM;IAEd;;OAEG;IAEH,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEtD;;OAEG;IAEH,OAAO,CAAC,aAAa,CAAK;IAE1B;;OAEG;IACH,OAAO,CAAC,SAAS,CAAwD;IAEhE,iBAAiB;IAUjB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD;;;OAGG;YACW,cAAc;IAmE5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAalB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB,MAAM;CAyDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"oh-tabs.d.ts","sourceRoot":"","sources":["../src/oh-tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBACa,MAAO,SAAQ,SAAS;IACnC,OAAgB,MAAM,4BAqKpB;IAEF,iEAAiE;IAEjE,KAAK,EAAE,OAAO,EAAE,CAAM;IAEtB,yDAAyD;IAEzD,KAAK,SAAM;IAEX;;OAEG;IAEH,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEtD;;OAEG;IAEH,OAAO,CAAC,aAAa,CAAK;IAE1B;;OAEG;IACH,OAAO,CAAC,SAAS,CAAwD;IAEhE,iBAAiB;IAajB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD;;;OAGG;YACW,cAAc;IAuE5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB,MAAM;CA2DP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
package/dist/oh-tabs.js CHANGED
@@ -1,28 +1,17 @@
1
1
  /**
2
2
  * oh-tabs
3
3
  *
4
- * Accessible tabbed interface with full keyboard support.
5
- *
6
- * ACCESSIBILITY FEATURES:
7
- * ───────────────────────
8
- * - Full ARIA support (tablist, tab, tabpanel roles)
9
- * - Roving tabindex for keyboard navigation
10
- * - Manual activation (arrow keys move focus, Enter/Space activates)
11
- * - Home/End jump to first/last tab
12
- * - Focus moves to panel content after activation
13
- * - Focus indicators meet WCAG requirements
14
- * - Panels properly hidden from assistive tech when inactive
15
- *
16
- * KEYBOARD INTERACTIONS:
17
- * ──────────────────────
18
- * - Left Arrow: Move focus to previous tab (wraps to last)
19
- * - Right Arrow: Move focus to next tab (wraps to first)
20
- * - Home: Move focus to first tab
21
- * - End: Move focus to last tab
22
- * - Enter/Space: Activate focused tab and move focus to panel
23
- * - Tab: Move focus out of tablist
24
- *
25
- * @element oh-tabs
4
+ * DESIGN DECISIONS:
5
+ * ─────────────────
6
+ * 1. WAI-ARIA tabs pattern: tablist / tab / tabpanel roles, roving tabindex,
7
+ * inactive panels `hidden`.
8
+ * 2. Manual activation: arrow keys and Home/End move focus only;
9
+ * Enter/Space selects and moves focus into the panel. Tab leaves the
10
+ * tablist.
11
+ * 3. The selected tab joins the panel: it shares the panel's surface and
12
+ * border, and covers the panel's top border beneath it.
13
+ * 4. Focus is a solid underline on the tab label (and an outline on the
14
+ * panel), never colour alone.
26
15
  */
27
16
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
28
17
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -33,17 +22,53 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
33
22
  import { html, css } from "lit";
34
23
  import { customElement, property, state } from "lit/decorators.js";
35
24
  import { OhElement, baseStyles } from "./base.js";
25
+ /**
26
+ * A set of tabs that switches between panels of related content in the same place.
27
+ *
28
+ * **Use it for** a few peer sections of content where only one needs to be
29
+ * seen at a time. **Don't use it for** navigating between pages (use links
30
+ * or `oh-navbar`), or for content people need to compare side by side.
31
+ *
32
+ * **Parts:** pass `items`, an array of `{ id, label, content? }`. A panel
33
+ * shows `content` as text, or else the light-DOM element with
34
+ * `slot="<id>"`. `value` is the selected tab's `id` (defaults to the first).
35
+ *
36
+ * **States:** each tab is selected or not; unselected tabs show an underline
37
+ * on hover.
38
+ *
39
+ * **Behaviour:** click selects a tab. Arrow keys move focus between tabs and
40
+ * wrap (Left/Right, or Up/Down when `orientation="vertical"`; orientation
41
+ * changes the keys only, not the layout); Home/End jump to the first/last.
42
+ * Enter or Space selects the focused tab and moves focus to its panel.
43
+ * Selecting a different tab fires `oh-change`. Transitions are cut short
44
+ * under `prefers-reduced-motion`.
45
+ *
46
+ * **Accessibility:** tablist/tab/tabpanel roles with `aria-selected`,
47
+ * `aria-controls` and `aria-labelledby`; one tab is in the tab order at a
48
+ * time; inactive panels are `hidden`; the active panel is focusable. Keyboard
49
+ * focus shows a solid underline on the tab label and an outline on the panel.
50
+ * Keep labels short.
51
+ *
52
+ * **Look:** set by tokens — `color.brand.primary` the unselected tabs and
53
+ * their hover underline (`decoration.underlineThickness`,
54
+ * `decoration.underlineDash`, `decoration.underlinePeriod`);
55
+ * `color.text.primary`, `color.surface.base` and `color.border.emphasis` the
56
+ * selected tab and panel; `stroke.control` the borders; `shape.control` the
57
+ * tab corners and `shape.container` the panel corners;
58
+ * `typography.body.*` and `typography.label.base.fontWeight` the text;
59
+ * `spacing.*` the padding; `motion.snappy` and `motion.relaxed` the
60
+ * transitions.
61
+ *
62
+ * @element oh-tabs
63
+ * @fires oh-change - When a different tab is selected. `detail: { value }`, the tab's `id`.
64
+ */
36
65
  let OhTabs = class OhTabs extends OhElement {
37
66
  constructor() {
38
67
  super(...arguments);
39
- /**
40
- * Array of tab items with id, label, and optional content
41
- */
42
- this.tabs = [];
43
- /**
44
- * ID of the currently selected tab
45
- */
46
- this.selected = "";
68
+ /** The tabs: `{ id, label, content? }`. In HTML, a JSON array */
69
+ this.items = [];
70
+ /** The selected tab's `id`. Defaults to the first tab */
71
+ this.value = "";
47
72
  /**
48
73
  * Orientation of the tabs (affects arrow key behavior)
49
74
  */
@@ -60,11 +85,6 @@ let OhTabs = class OhTabs extends OhElement {
60
85
  static { this.styles = [
61
86
  baseStyles,
62
87
  css `
63
- /* ═══════════════════════════════════════════════════════════════
64
- ORANGE HALO TABS
65
- Chunky • Playful • Accessible
66
- ═══════════════════════════════════════════════════════════════ */
67
-
68
88
  :host {
69
89
  display: block;
70
90
  font-family: var(--oh-typography-body-font-family);
@@ -83,7 +103,7 @@ let OhTabs = class OhTabs extends OhElement {
83
103
 
84
104
  /* ═══════════════════════════════════════════════════════════════
85
105
  INDIVIDUAL TAB BUTTONS
86
- Clean inactive state, chunky selected state
106
+ Transparent unselected state; selected state joins the panel
87
107
  ═══════════════════════════════════════════════════════════════ */
88
108
 
89
109
  .tab {
@@ -98,27 +118,27 @@ let OhTabs = class OhTabs extends OhElement {
98
118
  border-bottom: none;
99
119
  border-radius: var(--oh-shape-control) var(--oh-shape-control) 0 0;
100
120
  cursor: pointer;
101
-
121
+
102
122
  /* No shadow for inactive tabs */
103
123
  box-shadow: none;
104
-
124
+
105
125
  /* Position above the border line */
106
126
  margin-bottom: -2.5px;
107
-
108
- transition:
127
+
128
+ transition:
109
129
  color var(--oh-motion-snappy) ease,
110
130
  background-color var(--oh-motion-snappy) ease,
111
131
  border-color var(--oh-motion-snappy) ease,
112
132
  box-shadow var(--oh-motion-snappy) ease;
113
133
  }
114
134
 
115
- /* Dashed underline pseudo-element for animation */
135
+ /* Hover underline pseudo-element (animatable), shaped by decoration tokens */
116
136
  .tab__label {
117
137
  position: relative;
118
138
  }
119
139
 
120
140
  .tab:not([aria-selected="true"]) .tab__label::after {
121
- content: '';
141
+ content: "";
122
142
  position: absolute;
123
143
  left: 0;
124
144
  right: 0;
@@ -146,7 +166,7 @@ let OhTabs = class OhTabs extends OhElement {
146
166
 
147
167
  /* ═══════════════════════════════════════════════════════════════
148
168
  SELECTED TAB STATE
149
- Uses grey for a softer look (4.3:1 contrast against cream bg)
169
+ color.text.primary on color.surface.base, bordered like the panel
150
170
  ═══════════════════════════════════════════════════════════════ */
151
171
 
152
172
  .tab[aria-selected="true"] {
@@ -185,14 +205,16 @@ let OhTabs = class OhTabs extends OhElement {
185
205
 
186
206
  /* ═══════════════════════════════════════════════════════════════
187
207
  TAB PANEL
188
- Content area with warm styling, rounded top-right corner
208
+ Shares the selected tab's surface and border; square top-left
209
+ corner while the first tab is selected
189
210
  ═══════════════════════════════════════════════════════════════ */
190
211
 
191
212
  .tabpanel {
192
213
  padding: var(--oh-spacing-6);
193
214
  background: var(--oh-color-surface-base);
194
215
  border: var(--oh-stroke-control) solid var(--oh-color-border-emphasis);
195
- border-radius: 0 var(--oh-shape-container) var(--oh-shape-container) var(--oh-shape-container);
216
+ border-radius: 0 var(--oh-shape-container) var(--oh-shape-container)
217
+ var(--oh-shape-container);
196
218
  color: var(--oh-color-text-primary);
197
219
  }
198
220
 
@@ -229,15 +251,15 @@ let OhTabs = class OhTabs extends OhElement {
229
251
  connectedCallback() {
230
252
  super.connectedCallback();
231
253
  // Set initial selected tab if not specified
232
- if (!this.selected && this.tabs.length > 0) {
233
- this.selected = this.tabs[0].id;
254
+ if (!this.value && this.items.length > 0) {
255
+ this.value = this.items[0].id;
234
256
  }
235
257
  // Set initial focused index to match selected
236
- this._focusedIndex = Math.max(0, this.tabs.findIndex(t => t.id === this.selected));
258
+ this._focusedIndex = Math.max(0, this.items.findIndex((t) => t.id === this.value));
237
259
  }
238
260
  updated(changedProperties) {
239
- if (changedProperties.has("tabs") && this.tabs.length > 0 && !this.selected) {
240
- this.selected = this.tabs[0].id;
261
+ if (changedProperties.has("tabs") && this.items.length > 0 && !this.value) {
262
+ this.value = this.items[0].id;
241
263
  }
242
264
  }
243
265
  /**
@@ -246,7 +268,7 @@ let OhTabs = class OhTabs extends OhElement {
246
268
  */
247
269
  async _handleKeyDown(e) {
248
270
  const { key } = e;
249
- const tabCount = this.tabs.length;
271
+ const tabCount = this.items.length;
250
272
  if (tabCount === 0)
251
273
  return;
252
274
  let newIndex = this._focusedIndex;
@@ -255,25 +277,29 @@ let OhTabs = class OhTabs extends OhElement {
255
277
  switch (key) {
256
278
  case "ArrowLeft":
257
279
  if (this.orientation === "horizontal") {
258
- newIndex = this._focusedIndex === 0 ? tabCount - 1 : this._focusedIndex - 1;
280
+ newIndex =
281
+ this._focusedIndex === 0 ? tabCount - 1 : this._focusedIndex - 1;
259
282
  handled = true;
260
283
  }
261
284
  break;
262
285
  case "ArrowRight":
263
286
  if (this.orientation === "horizontal") {
264
- newIndex = this._focusedIndex === tabCount - 1 ? 0 : this._focusedIndex + 1;
287
+ newIndex =
288
+ this._focusedIndex === tabCount - 1 ? 0 : this._focusedIndex + 1;
265
289
  handled = true;
266
290
  }
267
291
  break;
268
292
  case "ArrowUp":
269
293
  if (this.orientation === "vertical") {
270
- newIndex = this._focusedIndex === 0 ? tabCount - 1 : this._focusedIndex - 1;
294
+ newIndex =
295
+ this._focusedIndex === 0 ? tabCount - 1 : this._focusedIndex - 1;
271
296
  handled = true;
272
297
  }
273
298
  break;
274
299
  case "ArrowDown":
275
300
  if (this.orientation === "vertical") {
276
- newIndex = this._focusedIndex === tabCount - 1 ? 0 : this._focusedIndex + 1;
301
+ newIndex =
302
+ this._focusedIndex === tabCount - 1 ? 0 : this._focusedIndex + 1;
277
303
  handled = true;
278
304
  }
279
305
  break;
@@ -295,10 +321,10 @@ let OhTabs = class OhTabs extends OhElement {
295
321
  e.preventDefault();
296
322
  if (shouldActivate) {
297
323
  // Activate the currently focused tab
298
- this._selectTab(this.tabs[this._focusedIndex].id);
324
+ this._selectTab(this.items[this._focusedIndex].id);
299
325
  // Wait for render to complete, then move focus to panel
300
326
  await this.updateComplete;
301
- this._focusPanel(this.tabs[this._focusedIndex].id);
327
+ this._focusPanel(this.items[this._focusedIndex].id);
302
328
  }
303
329
  else if (newIndex !== this._focusedIndex) {
304
330
  // Just move focus to the new tab (don't activate)
@@ -319,21 +345,17 @@ let OhTabs = class OhTabs extends OhElement {
319
345
  * Focus a specific tab button
320
346
  */
321
347
  _focusTab(index) {
322
- const tabButtons = this.shadowRoot?.querySelectorAll('.tab');
348
+ const tabButtons = this.shadowRoot?.querySelectorAll(".tab");
323
349
  tabButtons?.[index]?.focus();
324
350
  }
325
351
  /**
326
352
  * Select a tab and dispatch change event
327
353
  */
328
354
  _selectTab(tabId) {
329
- if (this.selected !== tabId) {
330
- this.selected = tabId;
331
- this._focusedIndex = this.tabs.findIndex(t => t.id === tabId);
332
- this.dispatchEvent(new CustomEvent("tab-change", {
333
- detail: { tabId },
334
- bubbles: true,
335
- composed: true,
336
- }));
355
+ if (this.value !== tabId) {
356
+ this.value = tabId;
357
+ this._focusedIndex = this.items.findIndex((t) => t.id === tabId);
358
+ this.emit("oh-change", { value: tabId });
337
359
  }
338
360
  }
339
361
  /**
@@ -347,14 +369,14 @@ let OhTabs = class OhTabs extends OhElement {
347
369
  return html `
348
370
  <div class="tabs-container">
349
371
  <!-- Tab List -->
350
- <div
372
+ <div
351
373
  class="tablist"
352
374
  role="tablist"
353
375
  aria-orientation=${this.orientation}
354
376
  @keydown=${this._handleKeyDown}
355
377
  >
356
- ${this.tabs.map((tab, index) => {
357
- const isSelected = tab.id === this.selected;
378
+ ${this.items.map((tab, index) => {
379
+ const isSelected = tab.id === this.value;
358
380
  const tabId = `${this._idPrefix}-tab-${tab.id}`;
359
381
  const panelId = `${this._idPrefix}-panel-${tab.id}`;
360
382
  return html `
@@ -374,14 +396,16 @@ let OhTabs = class OhTabs extends OhElement {
374
396
  </div>
375
397
 
376
398
  <!-- Tab Panels -->
377
- ${this.tabs.map((tab) => {
378
- const isSelected = tab.id === this.selected;
399
+ ${this.items.map((tab) => {
400
+ const isSelected = tab.id === this.value;
379
401
  const tabId = `${this._idPrefix}-tab-${tab.id}`;
380
402
  const panelId = `${this._idPrefix}-panel-${tab.id}`;
381
- const isFirstTabSelected = this.tabs.length > 0 && this.selected === this.tabs[0].id;
403
+ const isFirstTabSelected = this.items.length > 0 && this.value === this.items[0].id;
382
404
  return html `
383
405
  <div
384
- class="tabpanel ${!isFirstTabSelected ? 'tabpanel--rounded-top-left' : ''}"
406
+ class="tabpanel ${!isFirstTabSelected
407
+ ? "tabpanel--rounded-top-left"
408
+ : ""}"
385
409
  role="tabpanel"
386
410
  id=${panelId}
387
411
  aria-labelledby=${tabId}
@@ -400,10 +424,10 @@ let OhTabs = class OhTabs extends OhElement {
400
424
  };
401
425
  __decorate([
402
426
  property({ type: Array })
403
- ], OhTabs.prototype, "tabs", void 0);
427
+ ], OhTabs.prototype, "items", void 0);
404
428
  __decorate([
405
- property({ type: String, reflect: true, attribute: "selected" })
406
- ], OhTabs.prototype, "selected", void 0);
429
+ property({ type: String, reflect: true })
430
+ ], OhTabs.prototype, "value", void 0);
407
431
  __decorate([
408
432
  property({ type: String })
409
433
  ], OhTabs.prototype, "orientation", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"oh-tabs.js","sourceRoot":"","sources":["../src/oh-tabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oh-tabs.js","sourceRoot":"","sources":["../src/oh-tabs.ts"],"names":[],"mappings":"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"}