@orange-halo/components 3.0.0 → 3.1.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 (68) hide show
  1. package/custom-elements.json +17 -17
  2. package/dist/base.d.ts.map +1 -1
  3. package/dist/base.js +7 -0
  4. package/dist/base.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/oh-accordion.js +6 -6
  9. package/dist/oh-breadcrumb.js +4 -4
  10. package/dist/oh-button.d.ts +1 -1
  11. package/dist/oh-button.js +3 -3
  12. package/dist/oh-checkbox-group.js +1 -1
  13. package/dist/oh-checkbox.d.ts +1 -1
  14. package/dist/oh-checkbox.d.ts.map +1 -1
  15. package/dist/oh-checkbox.js +6 -4
  16. package/dist/oh-checkbox.js.map +1 -1
  17. package/dist/oh-container.d.ts.map +1 -1
  18. package/dist/oh-container.js +5 -10
  19. package/dist/oh-container.js.map +1 -1
  20. package/dist/oh-drawer.d.ts +10 -5
  21. package/dist/oh-drawer.d.ts.map +1 -1
  22. package/dist/oh-drawer.js +28 -14
  23. package/dist/oh-drawer.js.map +1 -1
  24. package/dist/oh-icon.d.ts +1 -1
  25. package/dist/oh-icon.d.ts.map +1 -1
  26. package/dist/oh-icon.js +8 -1
  27. package/dist/oh-icon.js.map +1 -1
  28. package/dist/oh-input.d.ts +1 -1
  29. package/dist/oh-input.js +2 -2
  30. package/dist/oh-link.d.ts.map +1 -1
  31. package/dist/oh-link.js +9 -5
  32. package/dist/oh-link.js.map +1 -1
  33. package/dist/oh-navbar.js +2 -2
  34. package/dist/oh-progress.js +1 -1
  35. package/dist/oh-radio-group.js +1 -1
  36. package/dist/oh-radio.d.ts +1 -1
  37. package/dist/oh-radio.d.ts.map +1 -1
  38. package/dist/oh-radio.js +6 -4
  39. package/dist/oh-radio.js.map +1 -1
  40. package/dist/oh-select.d.ts.map +1 -1
  41. package/dist/oh-select.js +2 -3
  42. package/dist/oh-select.js.map +1 -1
  43. package/dist/oh-skip-link.js +1 -1
  44. package/dist/oh-tabs.d.ts +3 -2
  45. package/dist/oh-tabs.d.ts.map +1 -1
  46. package/dist/oh-tabs.js +11 -7
  47. package/dist/oh-tabs.js.map +1 -1
  48. package/dist/oh-toggle.js +4 -4
  49. package/dist/styles/typography.d.ts.map +1 -1
  50. package/dist/styles/typography.js +1 -2
  51. package/dist/styles/typography.js.map +1 -1
  52. package/package.json +1 -1
  53. package/dist/oh-button.figma.d.ts +0 -2
  54. package/dist/oh-button.figma.d.ts.map +0 -1
  55. package/dist/oh-button.figma.js +0 -18
  56. package/dist/oh-button.figma.js.map +0 -1
  57. package/dist/oh-checkbox-group.figma.d.ts +0 -2
  58. package/dist/oh-checkbox-group.figma.d.ts.map +0 -1
  59. package/dist/oh-checkbox-group.figma.js +0 -22
  60. package/dist/oh-checkbox-group.figma.js.map +0 -1
  61. package/dist/oh-input.figma.d.ts +0 -2
  62. package/dist/oh-input.figma.d.ts.map +0 -1
  63. package/dist/oh-input.figma.js +0 -36
  64. package/dist/oh-input.figma.js.map +0 -1
  65. package/dist/oh-radio-group.figma.d.ts +0 -2
  66. package/dist/oh-radio-group.figma.d.ts.map +0 -1
  67. package/dist/oh-radio-group.figma.js +0 -22
  68. package/dist/oh-radio-group.figma.js.map +0 -1
@@ -461,7 +461,7 @@
461
461
  "text": "ButtonState"
462
462
  },
463
463
  "default": "\"default\"",
464
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'active' | 'focus'",
464
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'active' | 'focus'",
465
465
  "attribute": "force-state",
466
466
  "reflects": true
467
467
  },
@@ -556,7 +556,7 @@
556
556
  "text": "ButtonState"
557
557
  },
558
558
  "default": "\"default\"",
559
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'active' | 'focus'",
559
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'active' | 'focus'",
560
560
  "fieldName": "forceState"
561
561
  },
562
562
  {
@@ -963,7 +963,7 @@
963
963
  "text": "CheckboxState"
964
964
  },
965
965
  "default": "\"default\"",
966
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'focus'",
966
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'focus'",
967
967
  "attribute": "force-state",
968
968
  "reflects": true
969
969
  }
@@ -1022,7 +1022,7 @@
1022
1022
  "text": "CheckboxState"
1023
1023
  },
1024
1024
  "default": "\"default\"",
1025
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'focus'",
1025
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'focus'",
1026
1026
  "fieldName": "forceState"
1027
1027
  }
1028
1028
  ],
@@ -1257,7 +1257,7 @@
1257
1257
  "declarations": [
1258
1258
  {
1259
1259
  "kind": "class",
1260
- "description": "A panel that slides in from the side of the viewport, over the page, for navigation or supplementary content.\n\n**Use it for** a site's navigation on small screens, filters, or settings that relate to the page behind. **Don't use it for** a decision the user must make before going on (use `oh-modal`); or for content that should always be visible (put it in the page).\n\n**Parts:** `heading` (an optional visible `h2`), a built-in Close button, and the default slot for the content, which scrolls when it's taller than the viewport.\n\n**Positions:** `left` (default) or `right`.\n\n**Behaviour:** set `open`, or call `show()` and `hide()`. On open, focus moves to the Close button, Tab and Shift+Tab wrap inside the panel, and the page behind stops scrolling. The Close button, Escape, a click on the backdrop and `hide()` close it and fire `oh-close`; focus then returns to the element that opened it. While closed the panel is `inert`. Motion is off under `prefers-reduced-motion`.\n\n**Accessibility:** the panel is `role=\"dialog\"` with `aria-modal=\"true\"`, labelled by `heading`, or \"Navigation menu\" when there's no heading, so set `heading` for any other use. The Close button's accessible name is \"Close menu\".\n\n**Look:** set by tokens. `color.surface.overlay` sets the backdrop and `color.surface.base` the panel. A left drawer's shadow is `elevation.strong`; a right drawer's is an `elevation.offset.lg` offset in `color.border.strong`. The heading uses `typography.heading.h5.fontSize` and `typography.emphasis.fontWeight`. Motion uses `motion.relaxed` and `motion.easeGentle`. `--oh-drawer-width` sets the width.",
1260
+ "description": "A panel that slides in from the side of the viewport, over the page, for navigation or supplementary content.\n\n**Use it for** a site's navigation on small screens, filters, or settings that relate to the page behind. **Don't use it for** a decision the user must make before going on (use `oh-modal`); or for content that should always be visible (put it in the page).\n\n**Parts:** `heading` (an optional visible `h2`), a built-in Close button, and the default slot for the content, which scrolls when it's taller than the viewport.\n\n**Positions:** `start` (the default) or `end` follow the text direction, so in right-to-left text a `start` drawer opens from the right. `left` and `right` are the same physical side in either direction.\n\n**Behaviour:** set `open`, or call `show()` and `hide()`. On open, focus moves to the Close button, Tab and Shift+Tab wrap inside the panel, and the page behind stops scrolling. The Close button, Escape, a click on the backdrop and `hide()` close it and fire `oh-close`; focus then returns to the element that opened it. While closed the panel is `inert`. Motion is off under `prefers-reduced-motion`.\n\n**Accessibility:** the panel is `role=\"dialog\"` with `aria-modal=\"true\"`, labelled by `heading`, or \"Navigation menu\" when there's no heading, so set `heading` for any other use. The Close button's accessible name is \"Close menu\".\n\n**Look:** set by tokens. `color.surface.overlay` sets the backdrop and `color.surface.base` the panel. A start or left drawer's shadow is `elevation.strong`; an end or right drawer's is an `elevation.offset.lg` offset in `color.border.strong`. The heading uses `typography.heading.h5.fontSize` and `typography.emphasis.fontWeight`. Motion uses `motion.relaxed` and `motion.easeGentle`. `--oh-drawer-width` sets the width.",
1261
1261
  "name": "OhDrawer",
1262
1262
  "cssProperties": [
1263
1263
  {
@@ -1287,10 +1287,10 @@
1287
1287
  "kind": "field",
1288
1288
  "name": "position",
1289
1289
  "type": {
1290
- "text": "\"left\" | \"right\""
1290
+ "text": "DrawerPosition"
1291
1291
  },
1292
- "default": "\"left\"",
1293
- "description": "Position of the drawer",
1292
+ "default": "\"start\"",
1293
+ "description": "The side the drawer opens from. `start` (the default) and `end` follow the\ntext direction: `start` is the left in left-to-right text and the right in\nright-to-left. `left` and `right` are the same physical side either way.",
1294
1294
  "attribute": "position"
1295
1295
  },
1296
1296
  {
@@ -1335,10 +1335,10 @@
1335
1335
  {
1336
1336
  "name": "position",
1337
1337
  "type": {
1338
- "text": "\"left\" | \"right\""
1338
+ "text": "DrawerPosition"
1339
1339
  },
1340
- "default": "\"left\"",
1341
- "description": "Position of the drawer",
1340
+ "default": "\"start\"",
1341
+ "description": "The side the drawer opens from. `start` (the default) and `end` follow the\ntext direction: `start` is the left in left-to-right text and the right in\nright-to-left. `left` and `right` are the same physical side either way.",
1342
1342
  "fieldName": "position"
1343
1343
  },
1344
1344
  {
@@ -1571,7 +1571,7 @@
1571
1571
  "declarations": [
1572
1572
  {
1573
1573
  "kind": "class",
1574
- "description": "An icon from the system's built-in set, shown on its own, with a label, or as an icon-only link.\n\n**Use it for** an icon next to text, an icon that carries meaning on its own (with `label`), or a compact link such as a social profile (`href` + `label`). **Don't use it for** an icon-only button (use `oh-button` with `icon-only`); or for an image or logo (use `<img>`).\n\n**Names:** `name` picks the icon: social (`twitter`, `github`, `linkedin`, `instagram`, `youtube`, `facebook`, `email`, `substack`), navigation (`arrow-*`, `chevron-*`, `external-link`), actions (`close`, `plus`, `minus`, `check`, `search`, `menu`, `settings`, `heart`, `sparkle`) and feedback (`info`, `warning`, `error`, `success`). An unknown name renders nothing and logs a warning.\n\n**Sizes:** with no `size` the icon is 1em and follows the text; `sm`, `md`, `lg`, `xl` set fixed sizes. **`inverse`:** for icons on an accent-coloured or dark background.\n\n**Behaviour:** the icon takes the current text colour. With `href` it renders as a link, with hover, active and focus-visible states; `target=\"_blank\"` adds `rel=\"noopener noreferrer\"`.\n\n**Accessibility:** without `label` the icon is decorative (`aria-hidden=\"true\"`). With `label` it's `role=\"img\"` with that name. As a link, `label` is required (it logs a warning without one) and becomes the link's `aria-label`. Focus-visible shows a solid ring in `focus.ringColor` (`color.text.onAccent` when `inverse`).\n\n**Look:** set by tokens. The icon is `currentColor`; `inverse` sets `color.text.onAccent`. As a link: `shape.compact` corners, hover moves by `lift.hoverMd` with an `elevation.offset.lg` shadow in `color.border.default` (`color.text.onAccent` when `inverse`); motion uses `motion.snappy` and `motion.easeGentle`, off under `prefers-reduced-motion`.",
1574
+ "description": "An icon from the system's built-in set, shown on its own, with a label, or as an icon-only link.\n\n**Use it for** an icon next to text, an icon that carries meaning on its own (with `label`), or a compact link such as a social profile (`href` + `label`). **Don't use it for** an icon-only button (use `oh-button` with `icon-only`); or for an image or logo (use `<img>`).\n\n**Names:** `name` picks the icon: social (`twitter`, `github`, `linkedin`, `instagram`, `youtube`, `facebook`, `email`, `substack`), navigation (`arrow-*`, `chevron-*`, `external-link`), actions (`close`, `plus`, `minus`, `check`, `search`, `menu`, `settings`, `heart`, `sparkle`) and feedback (`info`, `warning`, `error`, `success`). An unknown name renders nothing and logs a warning.\n\n**Sizes:** with no `size` the icon is 1em and follows the text; `sm`, `md`, `lg`, `xl` set fixed sizes. **`inverse`:** for icons on an accent-coloured or dark background.\n\n**Behaviour:** the icon takes the current text colour. `arrow-left`, `arrow-right`, `chevron-left` and `chevron-right` mirror in right-to-left text, so they keep pointing back and forward along the line. With `href` it renders as a link, with hover, active and focus-visible states; `target=\"_blank\"` adds `rel=\"noopener noreferrer\"`.\n\n**Accessibility:** without `label` the icon is decorative (`aria-hidden=\"true\"`). With `label` it's `role=\"img\"` with that name. As a link, `label` is required (it logs a warning without one) and becomes the link's `aria-label`. Focus-visible shows a solid ring in `focus.ringColor` (`color.text.onAccent` when `inverse`).\n\n**Look:** set by tokens. The icon is `currentColor`; `inverse` sets `color.text.onAccent`. As a link: `shape.compact` corners, hover moves by `lift.hoverMd` with an `elevation.offset.lg` shadow in `color.border.default` (`color.text.onAccent` when `inverse`); motion uses `motion.snappy` and `motion.easeGentle`, off under `prefers-reduced-motion`.",
1575
1575
  "name": "OhIcon",
1576
1576
  "members": [
1577
1577
  {
@@ -1855,7 +1855,7 @@
1855
1855
  "text": "InputState"
1856
1856
  },
1857
1857
  "default": "\"default\"",
1858
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'focus'",
1858
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'focus'",
1859
1859
  "attribute": "force-state",
1860
1860
  "reflects": true
1861
1861
  },
@@ -2026,7 +2026,7 @@
2026
2026
  "text": "InputState"
2027
2027
  },
2028
2028
  "default": "\"default\"",
2029
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'focus'",
2029
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'focus'",
2030
2030
  "fieldName": "forceState"
2031
2031
  }
2032
2032
  ],
@@ -2895,7 +2895,7 @@
2895
2895
  "text": "RadioState"
2896
2896
  },
2897
2897
  "default": "\"default\"",
2898
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'focus'",
2898
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'focus'",
2899
2899
  "attribute": "force-state",
2900
2900
  "reflects": true
2901
2901
  }
@@ -2954,7 +2954,7 @@
2954
2954
  "text": "RadioState"
2955
2955
  },
2956
2956
  "default": "\"default\"",
2957
- "description": "Force a visual state (for documentation/Figma sync only)\nValues: 'hover' | 'focus'",
2957
+ "description": "Force a visual state (for documentation only)\nValues: 'hover' | 'focus'",
2958
2958
  "fieldName": "forceState"
2959
2959
  }
2960
2960
  ],
@@ -3327,7 +3327,7 @@
3327
3327
  "declarations": [
3328
3328
  {
3329
3329
  "kind": "class",
3330
- "description": "A set of tabs that switches between panels of related content in the same place.\n\n**Use it for** a few peer sections of content where only one needs to be\nseen at a time. **Don't use it for** navigating between pages (use links\nor `oh-navbar`), or for content people need to compare side by side.\n\n**Parts:** pass `items`, an array of `{ id, label, content? }`. A panel\nshows `content` as text, or else the light-DOM element with\n`slot=\"<id>\"`. `value` is the selected tab's `id` (defaults to the first).\n\n**States:** each tab is selected or not; unselected tabs show an underline\non hover.\n\n**Behaviour:** click selects a tab. Arrow keys move focus between tabs and\nwrap (Left/Right, or Up/Down when `orientation=\"vertical\"`; orientation\nchanges the keys only, not the layout); Home/End jump to the first/last.\nEnter or Space selects the focused tab and moves focus to its panel.\nSelecting a different tab fires `oh-change`. Transitions are cut short\nunder `prefers-reduced-motion`.\n\n**Accessibility:** tablist/tab/tabpanel roles with `aria-selected`,\n`aria-controls` and `aria-labelledby`; one tab is in the tab order at a\ntime; inactive panels are `hidden`; the active panel is focusable. Keyboard\nfocus shows a solid underline on the tab label and an outline on the panel.\nKeep labels short.\n\n**Look:** set by tokens — `color.brand.primary` the unselected tabs and\ntheir hover underline (`decoration.underlineThickness`,\n`decoration.underlineDash`, `decoration.underlinePeriod`);\n`color.text.primary`, `color.surface.base` and `color.border.emphasis` the\nselected tab and panel; `stroke.control` the borders; `shape.control` the\ntab corners and `shape.container` the panel corners;\n`typography.body.*` and `typography.label.base.fontWeight` the text;\n`spacing.*` the padding; `motion.snappy` and `motion.relaxed` the\ntransitions.",
3330
+ "description": "A set of tabs that switches between panels of related content in the same place.\n\n**Use it for** a few peer sections of content where only one needs to be\nseen at a time. **Don't use it for** navigating between pages (use links\nor `oh-navbar`), or for content people need to compare side by side.\n\n**Parts:** pass `items`, an array of `{ id, label, content? }`. A panel\nshows `content` as text, or else the light-DOM element with\n`slot=\"<id>\"`. `value` is the selected tab's `id` (defaults to the first).\n\n**States:** each tab is selected or not; unselected tabs show an underline\non hover.\n\n**Behaviour:** click selects a tab. Arrow keys move focus between tabs and\nwrap (Left/Right, swapped in right-to-left text, or Up/Down when\n`orientation=\"vertical\"`; orientation changes the keys only, not the\nlayout); Home/End jump to the first/last.\nEnter or Space selects the focused tab and moves focus to its panel.\nSelecting a different tab fires `oh-change`. Transitions are cut short\nunder `prefers-reduced-motion`.\n\n**Accessibility:** tablist/tab/tabpanel roles with `aria-selected`,\n`aria-controls` and `aria-labelledby`; one tab is in the tab order at a\ntime; inactive panels are `hidden`; the active panel is focusable. Keyboard\nfocus shows a solid underline on the tab label and an outline on the panel.\nKeep labels short.\n\n**Look:** set by tokens — `color.brand.primary` the unselected tabs and\ntheir hover underline (`decoration.underlineThickness`,\n`decoration.underlineDash`, `decoration.underlinePeriod`);\n`color.text.primary`, `color.surface.base` and `color.border.emphasis` the\nselected tab and panel; `stroke.control` the borders; `shape.control` the\ntab corners and `shape.container` the panel corners;\n`typography.body.*` and `typography.label.base.fontWeight` the text;\n`spacing.*` the padding; `motion.snappy` and `motion.relaxed` the\ntransitions.",
3331
3331
  "name": "OhTabs",
3332
3332
  "members": [
3333
3333
  {
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAO,SAAS,EAAE,MAAM,KAAK,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAiCxB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC;;OAEG;IACH,MAAM,CAAC,MAAM,cAAgB;IAE7B;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC3C,OAAO;IAWV;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAM7D"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAO,SAAS,EAAE,MAAM,KAAK,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAwCxB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC;;OAEG;IACH,MAAM,CAAC,MAAM,cAAgB;IAE7B;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC3C,OAAO;IAWV;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAM7D"}
package/dist/base.js CHANGED
@@ -12,6 +12,13 @@ import { LitElement, css } from "lit";
12
12
  export const baseStyles = css `
13
13
  :host {
14
14
  box-sizing: border-box;
15
+ /* Text direction as a number, for motion and placement that CSS has no
16
+ logical form of (translateX, transform-origin): 1 in LTR, -1 in RTL */
17
+ --_oh-dir: 1;
18
+ }
19
+
20
+ :host(:dir(rtl)) {
21
+ --_oh-dir: -1;
15
22
  }
16
23
 
17
24
  :host *,
package/dist/base.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,GAAG,EAAa,MAAM,KAAK,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAc,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCvC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC;;OAEG;aACI,WAAM,GAAG,CAAC,UAAU,CAAC,CAAC;IAE7B;;OAEG;IACO,IAAI,CACZ,SAAiB,EACjB,MAAU,EACV,OAA4C;QAE5C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;YACvC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,EAAE,8BAA8B;YAC9C,UAAU,EAAE,IAAI;YAChB,GAAG,OAAO;YACV,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,OAAgC;QACjD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,GAAG,EAAa,MAAM,KAAK,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAc,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCvC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC;;OAEG;aACI,WAAM,GAAG,CAAC,UAAU,CAAC,CAAC;IAE7B;;OAEG;IACO,IAAI,CACZ,SAAiB,EACjB,MAAU,EACV,OAA4C;QAE5C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;YACvC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,EAAE,8BAA8B;YAC9C,UAAU,EAAE,IAAI;YAChB,GAAG,OAAO;YACV,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,OAAgC;QACjD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -54,6 +54,7 @@ export type { ClusterGap, ClusterJustify, ClusterAlign } from "./oh-cluster.js";
54
54
  export { OhContainer } from "./oh-container.js";
55
55
  export type { ContainerSize } from "./oh-container.js";
56
56
  export { OhDrawer } from "./oh-drawer.js";
57
+ export type { DrawerPosition } from "./oh-drawer.js";
57
58
  export { OhFooter } from "./oh-footer.js";
58
59
  export { OhGrid } from "./oh-grid.js";
59
60
  export type { GridColumns, GridGap } from "./oh-grid.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,kEAAkE;AAClE,gFAAgF;AAChF,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,eAAe,CAAC;AACvB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,wBAAwB,CAAC;AAChC,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,gBAAgB,CAAC;AACxB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,gBAAgB,CAAC;AACxB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,gBAAgB,CAAC;AAExB,gFAAgF;AAChF,uEAAuE;AACvE,gFAAgF;AAEhF,OAAO;AACP,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,SAAS;AACT,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,kEAAkE;AAClE,gFAAgF;AAChF,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,eAAe,CAAC;AACvB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,wBAAwB,CAAC;AAChC,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,gBAAgB,CAAC;AACxB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,gBAAgB,CAAC;AACxB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,gBAAgB,CAAC;AAExB,gFAAgF;AAChF,uEAAuE;AACvE,gFAAgF;AAEhF,OAAO;AACP,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,SAAS;AACT,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
@@ -130,7 +130,7 @@ let OhAccordion = class OhAccordion extends OhElement {
130
130
  background: transparent;
131
131
  border: none;
132
132
  cursor: pointer;
133
- text-align: left;
133
+ text-align: start;
134
134
 
135
135
  font-family: var(--oh-typography-body-font-family);
136
136
  font-size: var(--oh-typography-body-base-font-size);
@@ -151,7 +151,7 @@ let OhAccordion = class OhAccordion extends OhElement {
151
151
  .accordion--subtle .accordion-text::after {
152
152
  content: "";
153
153
  position: absolute;
154
- left: 0;
154
+ inset-inline-start: 0;
155
155
  bottom: 0;
156
156
  width: 100%;
157
157
  height: var(--oh-decoration-underline-thickness);
@@ -164,7 +164,7 @@ let OhAccordion = class OhAccordion extends OhElement {
164
164
  );
165
165
  background-size: 100% 100%;
166
166
  background-repeat: no-repeat;
167
- transform-origin: right;
167
+ transform-origin: calc(50% + 50% * var(--_oh-dir)); /* the end side */
168
168
  transition: transform var(--oh-motion-relaxed)
169
169
  var(--oh-motion-ease-gentle);
170
170
  }
@@ -230,7 +230,7 @@ let OhAccordion = class OhAccordion extends OhElement {
230
230
  background: transparent;
231
231
  border: none;
232
232
  cursor: pointer;
233
- text-align: left;
233
+ text-align: start;
234
234
 
235
235
  font-family: var(--oh-typography-body-font-family);
236
236
  font-size: var(--oh-typography-body-base-font-size);
@@ -256,7 +256,7 @@ let OhAccordion = class OhAccordion extends OhElement {
256
256
  .accordion--standout .accordion-text::after {
257
257
  content: "";
258
258
  position: absolute;
259
- left: 0;
259
+ inset-inline-start: 0;
260
260
  bottom: 0;
261
261
  width: 100%;
262
262
  height: var(--oh-decoration-underline-thickness);
@@ -269,7 +269,7 @@ let OhAccordion = class OhAccordion extends OhElement {
269
269
  );
270
270
  background-size: 100% 100%;
271
271
  background-repeat: no-repeat;
272
- transform-origin: left;
272
+ transform-origin: calc(50% - 50% * var(--_oh-dir)); /* the start side */
273
273
  transform: scaleX(0);
274
274
  transition: transform var(--oh-motion-relaxed)
275
275
  var(--oh-motion-ease-gentle);
@@ -115,7 +115,7 @@ let OhBreadcrumb = class OhBreadcrumb extends OhElement {
115
115
  .breadcrumb-link::after {
116
116
  content: "";
117
117
  position: absolute;
118
- left: 0;
118
+ inset-inline-start: 0;
119
119
  bottom: 0;
120
120
  width: 100%;
121
121
  height: var(--oh-decoration-underline-thickness);
@@ -128,7 +128,7 @@ let OhBreadcrumb = class OhBreadcrumb extends OhElement {
128
128
  );
129
129
  background-size: 100% 100%;
130
130
  background-repeat: no-repeat;
131
- transform-origin: right;
131
+ transform-origin: calc(50% + 50% * var(--_oh-dir)); /* the end side */
132
132
  transition: transform var(--oh-motion-relaxed)
133
133
  var(--oh-motion-ease-gentle);
134
134
  }
@@ -182,7 +182,7 @@ let OhBreadcrumb = class OhBreadcrumb extends OhElement {
182
182
  .back-link::after {
183
183
  content: "";
184
184
  position: absolute;
185
- left: 0;
185
+ inset-inline-start: 0;
186
186
  bottom: 0;
187
187
  width: 100%;
188
188
  height: var(--oh-decoration-underline-thickness);
@@ -195,7 +195,7 @@ let OhBreadcrumb = class OhBreadcrumb extends OhElement {
195
195
  );
196
196
  background-size: 100% 100%;
197
197
  background-repeat: no-repeat;
198
- transform-origin: right;
198
+ transform-origin: calc(50% + 50% * var(--_oh-dir)); /* the end side */
199
199
  transition: transform var(--oh-motion-relaxed)
200
200
  var(--oh-motion-ease-gentle);
201
201
  }
@@ -71,7 +71,7 @@ export declare class OhButton extends OhElement {
71
71
  */
72
72
  accessibleLabel?: string;
73
73
  /**
74
- * Force a visual state (for documentation/Figma sync only)
74
+ * Force a visual state (for documentation only)
75
75
  * Values: 'hover' | 'active' | 'focus'
76
76
  */
77
77
  forceState: ButtonState;
package/dist/oh-button.js CHANGED
@@ -71,7 +71,7 @@ let OhButton = class OhButton extends OhElement {
71
71
  this.loading = false;
72
72
  this.iconOnly = false;
73
73
  /**
74
- * Force a visual state (for documentation/Figma sync only)
74
+ * Force a visual state (for documentation only)
75
75
  * Values: 'hover' | 'active' | 'focus'
76
76
  */
77
77
  this.forceState = "default";
@@ -308,7 +308,7 @@ let OhButton = class OhButton extends OhElement {
308
308
  content: "";
309
309
  position: absolute;
310
310
  bottom: 4px;
311
- left: 50%;
311
+ left: 50%; /* physical: centred, with the translate below */
312
312
  transform: translateX(-50%);
313
313
  width: 60%;
314
314
  height: 2px;
@@ -382,7 +382,7 @@ let OhButton = class OhButton extends OhElement {
382
382
  }
383
383
 
384
384
  /* ═══════════════════════════════════════════════════════════════
385
- FORCED STATES (for Figma Sync / documentation)
385
+ FORCED STATES (for documentation)
386
386
  ═══════════════════════════════════════════════════════════════ */
387
387
 
388
388
  /* Primary - Forced Hover */
@@ -167,7 +167,7 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
167
167
  content: "";
168
168
  position: absolute;
169
169
  top: 3px;
170
- left: 7px;
170
+ left: 7px; /* physical: a checkmark isn't mirrored in RTL */
171
171
  width: 6px;
172
172
  height: 12px;
173
173
  border: solid var(--oh-color-text-on-brand);
@@ -72,7 +72,7 @@ export declare class OhCheckbox extends OhElement {
72
72
  */
73
73
  errorText: string;
74
74
  /**
75
- * Force a visual state (for documentation/Figma sync only)
75
+ * Force a visual state (for documentation only)
76
76
  * Values: 'hover' | 'focus'
77
77
  */
78
78
  forceState: CheckboxState;
@@ -1 +1 @@
1
- {"version":3,"file":"oh-checkbox.d.ts","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,UAAW,SAAQ,SAAS;IACvC,OAAgB,MAAM,4BA8MpB;IAGF,OAAO,UAAS;IAGhB,KAAK,SAAM;IAGX,IAAI,SAAM;IAGV,KAAK,SAAM;IAEX;;;OAGG;IAEH,SAAS,SAAM;IAEf;;;OAGG;IAEH,UAAU,EAAE,aAAa,CAAa;IAEtC,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IAEH,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,QAAQ,CAAkE;IAElF,OAAO,CAAC,OAAO,EAAE,cAAc;IAM/B,UAAU,CAAC,OAAO,EAAE,cAAc;IAMlC,MAAM;CAgDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"oh-checkbox.d.ts","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,UAAW,SAAQ,SAAS;IACvC,OAAgB,MAAM,4BAgNpB;IAGF,OAAO,UAAS;IAGhB,KAAK,SAAM;IAGX,IAAI,SAAM;IAGV,KAAK,SAAM;IAEX;;;OAGG;IAEH,SAAS,SAAM;IAEf;;;OAGG;IAEH,UAAU,EAAE,aAAa,CAAa;IAEtC,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IAEH,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,QAAQ,CAAkE;IAElF,OAAO,CAAC,OAAO,EAAE,cAAc;IAM/B,UAAU,CAAC,OAAO,EAAE,cAAc;IAMlC,MAAM;CAgDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -79,7 +79,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
79
79
  */
80
80
  this.errorText = "";
81
81
  /**
82
- * Force a visual state (for documentation/Figma sync only)
82
+ * Force a visual state (for documentation only)
83
83
  * Values: 'hover' | 'focus'
84
84
  */
85
85
  this.forceState = "default";
@@ -149,7 +149,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
149
149
  content: "";
150
150
  position: absolute;
151
151
  top: 3px;
152
- left: 7px;
152
+ left: 7px; /* physical: a checkmark isn't mirrored in RTL */
153
153
  width: 6px;
154
154
  height: 12px;
155
155
  border: solid var(--oh-color-text-on-brand);
@@ -250,7 +250,9 @@ let OhCheckbox = class OhCheckbox extends OhElement {
250
250
  font-size: var(--oh-typography-body-base-font-size);
251
251
  color: var(--oh-color-feedback-error);
252
252
  margin-top: var(--oh-spacing-1);
253
- margin-left: calc(24px + var(--oh-spacing-3)); /* Align with label */
253
+ margin-inline-start: calc(
254
+ 24px + var(--oh-spacing-3)
255
+ ); /* Align with label */
254
256
  }
255
257
 
256
258
  .error-icon {
@@ -271,7 +273,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
271
273
  }
272
274
 
273
275
  /* ═══════════════════════════════════════════════════════════════
274
- FORCED STATES (for Figma Sync / documentation)
276
+ FORCED STATES (for documentation)
275
277
  ═══════════════════════════════════════════════════════════════ */
276
278
 
277
279
  /* Forced Hover - Unchecked */
@@ -1 +1 @@
1
- {"version":3,"file":"oh-checkbox.js","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oh-checkbox.js","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oh-container.d.ts","sourceRoot":"","sources":["../src/oh-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,qBACa,WAAY,SAAQ,SAAS;IACxC,OAAgB,MAAM,4BAwDpB;IAGF,IAAI,EAAE,aAAa,CAAQ;IAG3B,MAAM,UAAS;IAEf,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
1
+ {"version":3,"file":"oh-container.d.ts","sourceRoot":"","sources":["../src/oh-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,qBACa,WAAY,SAAQ,SAAS;IACxC,OAAgB,MAAM,4BAmDpB;IAGF,IAAI,EAAE,aAAa,CAAQ;IAG3B,MAAM,UAAS;IAEf,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
@@ -46,10 +46,8 @@ let OhContainer = class OhContainer extends OhElement {
46
46
  :host {
47
47
  display: block;
48
48
  width: 100%;
49
- margin-left: auto;
50
- margin-right: auto;
51
- padding-left: var(--oh-spacing-4);
52
- padding-right: var(--oh-spacing-4);
49
+ margin-inline: auto;
50
+ padding-inline: var(--oh-spacing-4);
53
51
  box-sizing: border-box;
54
52
  }
55
53
 
@@ -72,22 +70,19 @@ let OhContainer = class OhContainer extends OhElement {
72
70
 
73
71
  :host([size="full"]) {
74
72
  max-width: 100%;
75
- padding-left: 0;
76
- padding-right: 0;
73
+ padding-inline: 0;
77
74
  }
78
75
 
79
76
  /* Responsive padding */
80
77
  @media (min-width: 640px) {
81
78
  :host {
82
- padding-left: var(--oh-spacing-6);
83
- padding-right: var(--oh-spacing-6);
79
+ padding-inline: var(--oh-spacing-6);
84
80
  }
85
81
  }
86
82
 
87
83
  @media (min-width: 1024px) {
88
84
  :host {
89
- padding-left: var(--oh-spacing-8);
90
- padding-right: var(--oh-spacing-8);
85
+ padding-inline: var(--oh-spacing-8);
91
86
  }
92
87
  }
93
88
 
@@ -1 +1 @@
1
- {"version":3,"file":"oh-container.js","sourceRoot":"","sources":["../src/oh-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;;;;;;;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;AAIlD;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,SAAS;IAAnC;;QA4DL,SAAI,GAAkB,IAAI,CAAC;QAG3B,WAAM,GAAG,KAAK,CAAC;IAKjB,CAAC;aAnEiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDF;KACF,AAxDqB,CAwDpB;IAQF,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;;AAPD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCACf;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAC5B;AA/DJ,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAoEvB"}
1
+ {"version":3,"file":"oh-container.js","sourceRoot":"","sources":["../src/oh-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;;;;;;;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;AAIlD;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,SAAS;IAAnC;;QAuDL,SAAI,GAAkB,IAAI,CAAC;QAG3B,WAAM,GAAG,KAAK,CAAC;IAKjB,CAAC;aA9DiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgDF;KACF,AAnDqB,CAmDpB;IAQF,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;;AAPD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCACf;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAC5B;AA1DJ,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CA+DvB"}
@@ -6,7 +6,7 @@
6
6
  * DESIGN DECISIONS:
7
7
  * ─────────────────
8
8
  * 1. POSITIONING
9
- * - Slides in from left or right
9
+ * - Slides in from the start or end side (left or right in RTL), or a fixed left or right
10
10
  * - Full height, width set by --oh-drawer-width
11
11
  * - Overlays content with a color.surface.overlay backdrop
12
12
  *
@@ -26,6 +26,7 @@
26
26
  import { OhElement } from "./base.js";
27
27
  import "./oh-button.js";
28
28
  import "./oh-icon.js";
29
+ export type DrawerPosition = "start" | "end" | "left" | "right";
29
30
  /**
30
31
  * A panel that slides in from the side of the viewport, over the page, for navigation or supplementary content.
31
32
  *
@@ -33,13 +34,13 @@ import "./oh-icon.js";
33
34
  *
34
35
  * **Parts:** `heading` (an optional visible `h2`), a built-in Close button, and the default slot for the content, which scrolls when it's taller than the viewport.
35
36
  *
36
- * **Positions:** `left` (default) or `right`.
37
+ * **Positions:** `start` (the default) or `end` follow the text direction, so in right-to-left text a `start` drawer opens from the right. `left` and `right` are the same physical side in either direction.
37
38
  *
38
39
  * **Behaviour:** set `open`, or call `show()` and `hide()`. On open, focus moves to the Close button, Tab and Shift+Tab wrap inside the panel, and the page behind stops scrolling. The Close button, Escape, a click on the backdrop and `hide()` close it and fire `oh-close`; focus then returns to the element that opened it. While closed the panel is `inert`. Motion is off under `prefers-reduced-motion`.
39
40
  *
40
41
  * **Accessibility:** the panel is `role="dialog"` with `aria-modal="true"`, labelled by `heading`, or "Navigation menu" when there's no heading, so set `heading` for any other use. The Close button's accessible name is "Close menu".
41
42
  *
42
- * **Look:** set by tokens. `color.surface.overlay` sets the backdrop and `color.surface.base` the panel. A left drawer's shadow is `elevation.strong`; a right drawer's is an `elevation.offset.lg` offset in `color.border.strong`. The heading uses `typography.heading.h5.fontSize` and `typography.emphasis.fontWeight`. Motion uses `motion.relaxed` and `motion.easeGentle`. `--oh-drawer-width` sets the width.
43
+ * **Look:** set by tokens. `color.surface.overlay` sets the backdrop and `color.surface.base` the panel. A start or left drawer's shadow is `elevation.strong`; an end or right drawer's is an `elevation.offset.lg` offset in `color.border.strong`. The heading uses `typography.heading.h5.fontSize` and `typography.emphasis.fontWeight`. Motion uses `motion.relaxed` and `motion.easeGentle`. `--oh-drawer-width` sets the width.
43
44
  *
44
45
  * @element oh-drawer
45
46
  *
@@ -53,8 +54,12 @@ export declare class OhDrawer extends OhElement {
53
54
  static styles: import("lit").CSSResult[];
54
55
  /** Whether the drawer is open */
55
56
  open: boolean;
56
- /** Position of the drawer */
57
- position: "left" | "right";
57
+ /**
58
+ * The side the drawer opens from. `start` (the default) and `end` follow the
59
+ * text direction: `start` is the left in left-to-right text and the right in
60
+ * right-to-left. `left` and `right` are the same physical side either way.
61
+ */
62
+ position: DrawerPosition;
58
63
  /** Title shown in the drawer header */
59
64
  heading?: string;
60
65
  /** Element that triggered the drawer (for focus return) */
@@ -1 +1 @@
1
- {"version":3,"file":"oh-drawer.d.ts","sourceRoot":"","sources":["../src/oh-drawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAGlD,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,4BAqHpB;IAEF,iCAAiC;IAEjC,IAAI,UAAS;IAEb,6BAA6B;IAE7B,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAU;IAEpC,uCAAuC;IAEvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAE3D,OAAO,CAAC,eAAe,CAA4B;IAGnD,OAAO,CAAC,OAAO,CAAe;IAE9B,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU/C,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,oBAAoB;IAI5B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB,uCAAuC;IACvC,IAAI;IAIJ,wCAAwC;IACxC,IAAI;IAIJ,MAAM;CA0DP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"oh-drawer.d.ts","sourceRoot":"","sources":["../src/oh-drawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAGlD,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,4BA+HpB;IAEF,iCAAiC;IAEjC,IAAI,UAAS;IAEb;;;;OAIG;IAEH,QAAQ,EAAE,cAAc,CAAW;IAEnC,uCAAuC;IAEvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAE3D,OAAO,CAAC,eAAe,CAA4B;IAGnD,OAAO,CAAC,OAAO,CAAe;IAE9B,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU/C,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,oBAAoB;IAI5B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB,uCAAuC;IACvC,IAAI;IAIJ,wCAAwC;IACxC,IAAI;IAIJ,MAAM;CA0DP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
package/dist/oh-drawer.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * DESIGN DECISIONS:
7
7
  * ─────────────────
8
8
  * 1. POSITIONING
9
- * - Slides in from left or right
9
+ * - Slides in from the start or end side (left or right in RTL), or a fixed left or right
10
10
  * - Full height, width set by --oh-drawer-width
11
11
  * - Overlays content with a color.surface.overlay backdrop
12
12
  *
@@ -42,13 +42,13 @@ import "./oh-icon.js";
42
42
  *
43
43
  * **Parts:** `heading` (an optional visible `h2`), a built-in Close button, and the default slot for the content, which scrolls when it's taller than the viewport.
44
44
  *
45
- * **Positions:** `left` (default) or `right`.
45
+ * **Positions:** `start` (the default) or `end` follow the text direction, so in right-to-left text a `start` drawer opens from the right. `left` and `right` are the same physical side in either direction.
46
46
  *
47
47
  * **Behaviour:** set `open`, or call `show()` and `hide()`. On open, focus moves to the Close button, Tab and Shift+Tab wrap inside the panel, and the page behind stops scrolling. The Close button, Escape, a click on the backdrop and `hide()` close it and fire `oh-close`; focus then returns to the element that opened it. While closed the panel is `inert`. Motion is off under `prefers-reduced-motion`.
48
48
  *
49
49
  * **Accessibility:** the panel is `role="dialog"` with `aria-modal="true"`, labelled by `heading`, or "Navigation menu" when there's no heading, so set `heading` for any other use. The Close button's accessible name is "Close menu".
50
50
  *
51
- * **Look:** set by tokens. `color.surface.overlay` sets the backdrop and `color.surface.base` the panel. A left drawer's shadow is `elevation.strong`; a right drawer's is an `elevation.offset.lg` offset in `color.border.strong`. The heading uses `typography.heading.h5.fontSize` and `typography.emphasis.fontWeight`. Motion uses `motion.relaxed` and `motion.easeGentle`. `--oh-drawer-width` sets the width.
51
+ * **Look:** set by tokens. `color.surface.overlay` sets the backdrop and `color.surface.base` the panel. A start or left drawer's shadow is `elevation.strong`; an end or right drawer's is an `elevation.offset.lg` offset in `color.border.strong`. The heading uses `typography.heading.h5.fontSize` and `typography.emphasis.fontWeight`. Motion uses `motion.relaxed` and `motion.easeGentle`. `--oh-drawer-width` sets the width.
52
52
  *
53
53
  * @element oh-drawer
54
54
  *
@@ -63,8 +63,12 @@ let OhDrawer = class OhDrawer extends OhElement {
63
63
  super(...arguments);
64
64
  /** Whether the drawer is open */
65
65
  this.open = false;
66
- /** Position of the drawer */
67
- this.position = "left";
66
+ /**
67
+ * The side the drawer opens from. `start` (the default) and `end` follow the
68
+ * text direction: `start` is the left in left-to-right text and the right in
69
+ * right-to-left. `left` and `right` are the same physical side either way.
70
+ */
71
+ this.position = "start";
68
72
  /** Element that triggered the drawer (for focus return) */
69
73
  this._triggerElement = null;
70
74
  }
@@ -121,26 +125,36 @@ let OhDrawer = class OhDrawer extends OhElement {
121
125
  visibility 0s;
122
126
  }
123
127
 
124
- /* Left position (default) */
125
- .drawer--left {
126
- left: 0;
128
+ /* Start side (default): left in LTR, right in RTL */
129
+ .drawer--start {
130
+ inset-inline-start: 0;
127
131
  box-shadow: var(--oh-elevation-strong);
128
- transform: translateX(-100%);
132
+ transform: translateX(calc(-100% * var(--_oh-dir)));
129
133
  }
130
134
 
131
- .drawer--left.is-open {
132
- transform: translateX(0);
135
+ /* End side: right in LTR, left in RTL */
136
+ .drawer--end {
137
+ inset-inline-end: 0;
138
+ box-shadow: calc(-1 * var(--oh-elevation-offset-lg))
139
+ var(--oh-elevation-offset-lg) 0 0 var(--oh-color-border-strong);
140
+ transform: translateX(calc(100% * var(--_oh-dir)));
141
+ }
142
+
143
+ /* The left and right positions stay on that side in either direction */
144
+ .drawer--left {
145
+ left: 0; /* physical: position="left" means the left */
146
+ box-shadow: var(--oh-elevation-strong);
147
+ transform: translateX(-100%);
133
148
  }
134
149
 
135
- /* Right position */
136
150
  .drawer--right {
137
- right: 0;
151
+ right: 0; /* physical: position="right" means the right */
138
152
  box-shadow: calc(-1 * var(--oh-elevation-offset-lg))
139
153
  var(--oh-elevation-offset-lg) 0 0 var(--oh-color-border-strong);
140
154
  transform: translateX(100%);
141
155
  }
142
156
 
143
- .drawer--right.is-open {
157
+ .drawer.is-open {
144
158
  transform: translateX(0);
145
159
  }
146
160