origam 2.18.21 → 2.20.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 (187) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/dist/src/assets/css/main.css +1 -1
  3. package/dist/src/assets/css/tokens/dark.css +0 -6
  4. package/dist/src/assets/css/tokens/light.css +0 -3
  5. package/dist/src/assets/scss/tokens/_dark.scss +0 -6
  6. package/dist/src/assets/scss/tokens/_light.scss +0 -3
  7. package/dist/src/components/Alert/OrigamAlert.vue +20 -0
  8. package/dist/src/components/App/OrigamAppBar.vue +20 -0
  9. package/dist/src/components/Audio/OrigamAudio.vue +20 -0
  10. package/dist/src/components/Avatar/OrigamAvatar.vue +20 -0
  11. package/dist/src/components/Avatar/OrigamAvatarGroup.vue +20 -0
  12. package/dist/src/components/Badge/OrigamBadge.vue +12 -0
  13. package/dist/src/components/Blockquote/OrigamBlockquote.vue +20 -0
  14. package/dist/src/components/BottomNav/OrigamBottomNav.vue +20 -0
  15. package/dist/src/components/Bracket/OrigamBracket.vue +12 -0
  16. package/dist/src/components/Bracket/OrigamBracketCompetitor.vue +20 -0
  17. package/dist/src/components/Bracket/OrigamBracketMatch.vue +33 -5
  18. package/dist/src/components/Breadcrumb/OrigamBreadcrumb.vue +20 -0
  19. package/dist/src/components/Breadcrumb/OrigamBreadcrumbDivider.vue +8 -0
  20. package/dist/src/components/Breadcrumb/OrigamBreadcrumbItem.vue +20 -0
  21. package/dist/src/components/Btn/OrigamBtn.vue +20 -0
  22. package/dist/src/components/Btn/OrigamBtnGroup.vue +20 -0
  23. package/dist/src/components/Btn/OrigamBtnToggle.vue +20 -0
  24. package/dist/src/components/Calendar/OrigamCalendar.vue +21 -1
  25. package/dist/src/components/Card/OrigamCard.vue +20 -0
  26. package/dist/src/components/Card/OrigamCardHeader.vue +20 -0
  27. package/dist/src/components/Card/OrigamCardText.vue +20 -0
  28. package/dist/src/components/Carousel/OrigamCarousel.vue +20 -0
  29. package/dist/src/components/Carousel/OrigamCarouselItem.vue +20 -0
  30. package/dist/src/components/Chart/OrigamChart.vue +25 -1
  31. package/dist/src/components/Chart/OrigamChartBoxPlot.vue +12 -0
  32. package/dist/src/components/Chart/OrigamChartBullet.vue +12 -0
  33. package/dist/src/components/Chart/OrigamChartCandlestick.vue +12 -0
  34. package/dist/src/components/Chart/OrigamChartCartesian.vue +12 -0
  35. package/dist/src/components/Chart/OrigamChartGauge.vue +12 -0
  36. package/dist/src/components/Chart/OrigamChartHeatmap.vue +12 -0
  37. package/dist/src/components/Chart/OrigamChartHoneycomb.vue +12 -0
  38. package/dist/src/components/Chart/OrigamChartMap.vue +12 -0
  39. package/dist/src/components/Chart/OrigamChartPareto.vue +12 -0
  40. package/dist/src/components/Chart/OrigamChartPictorial.vue +12 -0
  41. package/dist/src/components/Chart/OrigamChartPolar.vue +12 -0
  42. package/dist/src/components/Chart/OrigamChartPolarBar.vue +12 -0
  43. package/dist/src/components/Chart/OrigamChartPyramid.vue +12 -0
  44. package/dist/src/components/Chart/OrigamChartRadar.vue +12 -0
  45. package/dist/src/components/Chart/OrigamChartSankey.vue +12 -0
  46. package/dist/src/components/Chart/OrigamChartSparkline.vue +12 -0
  47. package/dist/src/components/Chart/OrigamChartStreamgraph.vue +12 -0
  48. package/dist/src/components/Chart/OrigamChartSunburst.vue +12 -0
  49. package/dist/src/components/Chart/OrigamChartTreemap.vue +12 -0
  50. package/dist/src/components/Chart/OrigamChartVariwide.vue +12 -0
  51. package/dist/src/components/Chart/OrigamChartWordCloud.vue +12 -0
  52. package/dist/src/components/Checkbox/OrigamCheckbox.vue +20 -0
  53. package/dist/src/components/Checkbox/OrigamCheckboxBtn.vue +12 -0
  54. package/dist/src/components/Checkbox/OrigamCheckboxGroup.vue +20 -0
  55. package/dist/src/components/Chip/OrigamChip.vue +20 -0
  56. package/dist/src/components/Chip/OrigamChipGroup.vue +20 -0
  57. package/dist/src/components/Clipboard/OrigamClipboard.vue +20 -0
  58. package/dist/src/components/Code/OrigamCode.vue +20 -0
  59. package/dist/src/components/ColorPicker/OrigamColorPicker.vue +20 -0
  60. package/dist/src/components/ColorPickerField/OrigamColorPickerField.vue +20 -0
  61. package/dist/src/components/ConfirmWrapper/OrigamConfirmWrapper.vue +4 -0
  62. package/dist/src/components/ContextualMenu/OrigamContextualMenu.vue +20 -0
  63. package/dist/src/components/Counter/OrigamCounter.vue +20 -0
  64. package/dist/src/components/DataList/OrigamDataList.vue +20 -0
  65. package/dist/src/components/DataList/OrigamDataText.vue +8 -0
  66. package/dist/src/components/DataList/OrigamDataTitle.vue +8 -0
  67. package/dist/src/components/DataTable/OrigamDataTable.vue +20 -0
  68. package/dist/src/components/DataTable/OrigamDataTableColumnCell.vue +5 -1
  69. package/dist/src/components/DataTable/OrigamDataTableFooter.vue +4 -0
  70. package/dist/src/components/DatePicker/OrigamDatePicker.vue +20 -0
  71. package/dist/src/components/DatePickerField/OrigamDatePickerField.vue +20 -0
  72. package/dist/src/components/Dialog/OrigamDialog.vue +20 -0
  73. package/dist/src/components/Dialog/OrigamDialogConfirmation.vue +20 -0
  74. package/dist/src/components/Divider/OrigamDivider.vue +4 -0
  75. package/dist/src/components/Drawer/OrigamDrawer.vue +20 -0
  76. package/dist/src/components/ExpansionPanel/OrigamExpansionPanel.vue +20 -0
  77. package/dist/src/components/ExpansionPanel/OrigamExpansionPanelContent.vue +20 -0
  78. package/dist/src/components/ExpansionPanel/OrigamExpansionPanelHeader.vue +20 -0
  79. package/dist/src/components/ExpansionPanel/OrigamExpansionPanels.vue +20 -0
  80. package/dist/src/components/Field/OrigamField.vue +20 -0
  81. package/dist/src/components/FileField/OrigamFileField.vue +20 -0
  82. package/dist/src/components/Grid/OrigamGrid.vue +21 -1
  83. package/dist/src/components/Grids/OrigamCol.vue +16 -0
  84. package/dist/src/components/Grids/OrigamContainer.vue +17 -1
  85. package/dist/src/components/Grids/OrigamRow.vue +16 -0
  86. package/dist/src/components/Icon/OrigamClassIcon.vue +21 -1
  87. package/dist/src/components/Icon/OrigamComponentIcon.vue +21 -1
  88. package/dist/src/components/Icon/OrigamIcon.vue +21 -1
  89. package/dist/src/components/Icon/OrigamLigatureIcon.vue +21 -1
  90. package/dist/src/components/Icon/OrigamSvgIcon.vue +21 -1
  91. package/dist/src/components/Img/OrigamImg.vue +20 -0
  92. package/dist/src/components/Input/OrigamInput.vue +20 -0
  93. package/dist/src/components/Kbd/OrigamKbd.vue +35 -41
  94. package/dist/src/components/Label/OrigamLabel.vue +20 -0
  95. package/dist/src/components/Layout/OrigamLayout.vue +21 -1
  96. package/dist/src/components/List/OrigamList.vue +21 -1
  97. package/dist/src/components/List/OrigamListGroup.vue +20 -0
  98. package/dist/src/components/List/OrigamListItem.vue +20 -0
  99. package/dist/src/components/List/OrigamListSubheader.vue +20 -0
  100. package/dist/src/components/Main/OrigamMain.vue +20 -0
  101. package/dist/src/components/Masonry/OrigamMasonry.vue +21 -1
  102. package/dist/src/components/Media/OrigamMediaScrubber.vue +5 -1
  103. package/dist/src/components/Media/OrigamMediaVolumeControl.vue +4 -0
  104. package/dist/src/components/Menu/OrigamMenu.vue +20 -0
  105. package/dist/src/components/Messages/OrigamMessages.vue +20 -0
  106. package/dist/src/components/NumberField/OrigamNumberField.vue +20 -0
  107. package/dist/src/components/OtpInputField/OrigamOtpInputField.vue +20 -0
  108. package/dist/src/components/Pagination/OrigamPagination.vue +16 -0
  109. package/dist/src/components/Parallax/OrigamParallax.vue +20 -0
  110. package/dist/src/components/Parallax/OrigamParallaxElement.vue +20 -0
  111. package/dist/src/components/PasswordField/OrigamPasswordField.vue +20 -0
  112. package/dist/src/components/Picker/OrigamPicker.vue +20 -0
  113. package/dist/src/components/Progress/OrigamProgress.vue +12 -0
  114. package/dist/src/components/Progress/OrigamProgressCircular.vue +8 -0
  115. package/dist/src/components/Progress/OrigamProgressLinear.vue +12 -0
  116. package/dist/src/components/QrCode/OrigamQrCode.vue +21 -1
  117. package/dist/src/components/Radio/OrigamRadio.vue +20 -0
  118. package/dist/src/components/Radio/OrigamRadioBtn.vue +12 -0
  119. package/dist/src/components/Radio/OrigamRadioGroup.vue +20 -0
  120. package/dist/src/components/RatingField/OrigamRatingField.vue +20 -0
  121. package/dist/src/components/RatingField/OrigamRatingFieldItem.vue +20 -0
  122. package/dist/src/components/Responsive/OrigamResponsive.vue +21 -1
  123. package/dist/src/components/Select/OrigamSelect.vue +20 -0
  124. package/dist/src/components/SelectionControl/OrigamSelectionControl.vue +12 -0
  125. package/dist/src/components/Sheet/OrigamSheet.vue +20 -0
  126. package/dist/src/components/Skeleton/OrigamSkeleton.vue +5 -1
  127. package/dist/src/components/Slide/OrigamSlideGroup.vue +20 -0
  128. package/dist/src/components/SliderField/OrigamSliderField.vue +20 -0
  129. package/dist/src/components/SliderField/OrigamSliderFieldTrack.vue +5 -1
  130. package/dist/src/components/Snackbar/OrigamSnackbar.vue +20 -0
  131. package/dist/src/components/Stepper/OrigamStepper.vue +21 -1
  132. package/dist/src/components/Switch/OrigamSwitch.vue +20 -0
  133. package/dist/src/components/Switch/OrigamSwitchTrack.vue +12 -0
  134. package/dist/src/components/SystemBar/OrigamSystemBar.vue +12 -0
  135. package/dist/src/components/Table/OrigamTable.vue +20 -0
  136. package/dist/src/components/Tabs/OrigamTabs.vue +4 -0
  137. package/dist/src/components/TextField/OrigamTextField.vue +20 -0
  138. package/dist/src/components/TextareaField/OrigamTextareaField.vue +20 -0
  139. package/dist/src/components/Title/OrigamTitle.vue +16 -0
  140. package/dist/src/components/Toolbar/OrigamToolbar.vue +20 -0
  141. package/dist/src/components/Video/OrigamVideo.vue +20 -0
  142. package/dist/src/components/Window/OrigamWindow.vue +20 -0
  143. package/dist/src/composables/Commons/border.composable.cjs +24 -16
  144. package/dist/src/composables/Commons/border.composable.d.ts +31 -10
  145. package/dist/src/composables/Commons/border.composable.js +21 -17
  146. package/dist/src/composables/Commons/margin.composable.cjs +7 -0
  147. package/dist/src/composables/Commons/margin.composable.d.ts +7 -1
  148. package/dist/src/composables/Commons/margin.composable.js +5 -1
  149. package/dist/src/composables/Commons/padding.composable.cjs +7 -0
  150. package/dist/src/composables/Commons/padding.composable.d.ts +15 -1
  151. package/dist/src/composables/Commons/padding.composable.js +5 -1
  152. package/dist/src/composables/Commons/rounded.composable.cjs +7 -0
  153. package/dist/src/composables/Commons/rounded.composable.d.ts +14 -1
  154. package/dist/src/composables/Commons/rounded.composable.js +5 -1
  155. package/dist/src/composables/Commons/stateEffect.composable.cjs +60 -0
  156. package/dist/src/composables/Commons/stateEffect.composable.js +60 -0
  157. package/dist/src/consts/Commons/border.const.cjs +19 -2
  158. package/dist/src/consts/Commons/border.const.d.ts +65 -4
  159. package/dist/src/consts/Commons/border.const.js +16 -2
  160. package/dist/src/consts/Commons/spacing.const.cjs +40 -1
  161. package/dist/src/consts/Commons/spacing.const.d.ts +68 -1
  162. package/dist/src/consts/Commons/spacing.const.js +19 -1
  163. package/dist/src/consts/Commons/variant-preset.const.cjs +4 -1
  164. package/dist/src/consts/Commons/variant-preset.const.d.ts +22 -13
  165. package/dist/src/consts/Commons/variant-preset.const.js +4 -1
  166. package/dist/src/consts/Kbd/kbd.const.cjs +22 -0
  167. package/dist/src/consts/Kbd/kbd.const.d.ts +102 -0
  168. package/dist/src/consts/Kbd/kbd.const.js +16 -0
  169. package/dist/src/consts/index.cjs +11 -0
  170. package/dist/src/consts/index.d.ts +1 -0
  171. package/dist/src/consts/index.js +1 -0
  172. package/dist/src/interfaces/Bracket/bracket-match-component.interface.d.ts +2 -2
  173. package/dist/src/interfaces/Bracket/bracket-surface.interface.d.ts +39 -0
  174. package/dist/src/interfaces/Bracket/bracket.interface.d.ts +25 -4
  175. package/dist/src/interfaces/Commons/border.interface.d.ts +123 -0
  176. package/dist/src/interfaces/Commons/margin.interface.d.ts +35 -1
  177. package/dist/src/interfaces/Commons/padding.interface.d.ts +41 -1
  178. package/dist/src/interfaces/Commons/rounded.interface.d.ts +47 -4
  179. package/dist/src/interfaces/Kbd/kbd.interface.d.ts +2 -1
  180. package/dist/src/types/Bracket/bracket.type.d.ts +82 -0
  181. package/dist/src/types/Commons/anchor.type.d.ts +48 -0
  182. package/dist/src/types/Commons/variant-preset.type.d.ts +22 -4
  183. package/dist/src/types/tokens.type.d.ts +1 -1
  184. package/dist/src/utils/Bracket/bracket-surface.util.cjs +19 -0
  185. package/dist/src/utils/Bracket/bracket-surface.util.js +10 -0
  186. package/dist/src/utils/Commons/border.util.d.ts +16 -8
  187. package/package.json +1 -1
@@ -0,0 +1,102 @@
1
+ import type { IKbdProps } from '../../interfaces/Kbd/kbd.interface';
2
+ import type { TVariantPresets } from '../../types/Commons/variant-preset.type';
3
+ import type { TKbdVariant } from '../../types/Kbd/kbd.type';
4
+ /*********************************************************
5
+ * KBD_VARIANT_PRESETS
6
+ *
7
+ * @description
8
+ * ADR-005 D1 — le premier composant converti. Un variant de Kbd n'est plus
9
+ * un bloc SCSS : c'est ce sac de props, resolu au rang le plus faible de la
10
+ * chaine (prop du site d'appel > defaut de theme > PRESET > `withDefaults`).
11
+ *
12
+ * @description
13
+ * ⛔ CHAQUE VALEUR PORTE LA CHAINE `var()` QUE LA REGLE PORTAIT, jamais sa
14
+ * traduction en echelon semantique. Ecrire `elevation: 'xs'` au lieu de la
15
+ * chaine litterale reviendrait a emettre `var(--origam-shadow---xs)` et a
16
+ * JETER le canal `--origam-kbd--{variant}---*` par lequel une marque
17
+ * rehabille ses touches. Aucun des 8 themes ne touche un token
18
+ * `origam-kbd` aujourd'hui — c'est meme la raison pour laquelle Kbd est le
19
+ * pilote, le zero-changement y etant prouvable en isolation — mais le
20
+ * canal doit survivre a la conversion, sinon la regle ne tiendra pas sur
21
+ * `OrigamBtn`, dont les 8 marques redeclarent bel et bien
22
+ * `box-shadow-elevated`, `border-width-outlined` et `background-color-tonal`.
23
+ *
24
+ * @description
25
+ * ⛔ ET C'EST AUSSI CE QUI REGLE LA CASCADE. `key-surface` peint depuis une
26
+ * regle scopee a (0,2,0), qu'une classe utilitaire a (0,1,0) ne peut pas
27
+ * battre. Une valeur TOKENISEE (`bgColor: 'primary'`) partirait sur le
28
+ * canal classe et perdrait donc en silence. Une chaine `var(…)` est routee
29
+ * par `isCssColor` vers le canal « valeur custom », c'est-a-dire la
30
+ * declaration INLINE, qui passe devant la regle scopee. La contrainte de
31
+ * fidelite et la contrainte de cascade demandent la meme chose.
32
+ *
33
+ * @description
34
+ * Les replis de chaque chaine sont conserves tels quels. Ils sont
35
+ * aujourd'hui INATTEIGNABLES — `light.css` et `dark.css` declarent les six
36
+ * tokens de variant, et une propriete custom declaree sur `:root` herite
37
+ * partout, donc le second argument d'un `var()` n'est jamais atteint. Ils
38
+ * restent parce qu'ils sont la valeur de secours si une feuille cessait de
39
+ * declarer le token, et parce que le garde `ts-token-refs` exige un repli
40
+ * des qu'un nom ne peut pas etre borne statiquement.
41
+ *
42
+ * @description
43
+ * ⛔ CE QUE LA TABLE NE POSE PAS EST AUSSI IMPORTANT QUE CE QU'ELLE POSE.
44
+ * `outlined` ne pose aucune couleur de bordure, et `filled` non plus, alors
45
+ * que leurs regles en posaient une. Les deux valeurs etaient IDENTIQUES au
46
+ * defaut de `key-surface` — la regle de `filled` reposait
47
+ * `var(--origam-color__border---subtle)`, que le token
48
+ * `--origam-kbd---border-color` porte deja. Les inscrire ici ne serait pas
49
+ * neutre : un preset emet une declaration INLINE, qui passe devant le
50
+ * token, donc une marque redeclarant `--origam-kbd---border-color`
51
+ * cesserait d'atteindre ces deux variants. La table confisquerait le canal
52
+ * qu'elle est censee servir.
53
+ *
54
+ * @description
55
+ * ⛔ AUCUNE LARGEUR DE BORDURE N'EST POSEE ICI, ET LA RAISON PORTANTE EST
56
+ * QUE LES TROIS TOKENS DE VARIANT NE PORTAIENT AUCUNE VALEUR PROPRE :
57
+ * `--origam-kbd--outlined---border-width` et `__filled---border-width`
58
+ * valent tous deux `var(--origam-border__width---thin)`, c'est-a-dire
59
+ * exactement le defaut de `key-surface`, et `__tonal---border-width` vaut
60
+ * `var(--origam-border__width---0)`, c'est-a-dire exactement ce que le
61
+ * mot-cle `border: 'none'` emet via `BORDER_KEYWORD_WIDTH`. Une indirection
62
+ * sans valeur distincte : les trois sont donc supprimes des feuilles, ce que
63
+ * `token-var-channels` prescrit lui-meme pour un token que plus rien ne lit.
64
+ *
65
+ * @description
66
+ * ⚠️ CE PARAGRAPHE A ETE CORRIGE, et l'ecart vaut d'etre connu. Il affirmait
67
+ * qu'« aucune largeur ne passe par une chaine `var()` » parce que le groupe
68
+ * `width` de `BORDER_REGEX` n'acceptait que chiffres + unite tandis que son
69
+ * groupe `color` acceptait `var(--…)` — un `border="var(--…)"` matchait donc
70
+ * comme COULEUR. Cette moitie est CORRIGEE sur `develop` depuis `cb3c68955`
71
+ * (lot 5) : le groupe `width` accepte desormais un `var()`, a condition
72
+ * qu'un mot-cle de style le suive.
73
+ *
74
+ * @description
75
+ * Ce qui RESTE vrai, et qui suffit a la decision : `IBorderProps` n'expose
76
+ * toujours pas de `borderWidth` autonome, et une largeur `var()` CONTENANT
77
+ * UNE ESPACE — ce qu'est n'importe quelle chaine a repli, `var(--x, 0px)` —
78
+ * ne voyage QUE par une prop par cote ou d'axe. La prop globale `border`
79
+ * fait un `split(' ')` pour distribuer ses 1/2/4 valeurs et coupe donc la
80
+ * chaine en fragments invalides ; voir l'en-tete de `BORDER_REGEX` et les
81
+ * trois tests « path » de `border.util.spec.ts`. Un preset qui reintroduirait
82
+ * une largeur tokenisee devrait viser `borderLeft` / `borderBlock` / …,
83
+ * jamais `border`.
84
+ *
85
+ * @description
86
+ * Ajouter `borderWidth` a `IBorderProps` a par ailleurs ete tente et REJETE
87
+ * sur la mesure, independamment de la regex : 24 composants declarent
88
+ * `IBorderProps` sans consommer ses props autonomes, et le garde
89
+ * `unconsumed-props` — qui ne peut que retrecir — passait de 0 a 24
90
+ * nouvelles violations.
91
+ *
92
+ * @description
93
+ * ⚠️ `tonal` portait `box-shadow: none`, le MOT-CLE. `elevation: 'none'`
94
+ * emet `var(--origam-shadow---none)`, que `primitive.css` declare
95
+ * `0px 0px 0px 0px rgba(0,0,0,0)`. Le style calcule change donc de `none` a
96
+ * cette quadruple valeur — une ombre d'etendue nulle et d'alpha nul, qui ne
97
+ * peut peindre aucun pixel. C'est le SEUL ecart de valeur calculee du lot
98
+ * sur le chemin « variant nu », et il est mesure et rapporte comme tel
99
+ * plutot que dissimule : le canal `elevation` n'a aucun moyen d'emettre le
100
+ * mot-cle, `isOrigamRung` interceptant `'none'` avant tout le reste.
101
+ ********************************************************/
102
+ export declare const KBD_VARIANT_PRESETS: TVariantPresets<TKbdVariant, IKbdProps>;
@@ -0,0 +1,16 @@
1
+ export const KBD_VARIANT_PRESETS = {
2
+ outlined: {
3
+ bgColor: "var(--origam-kbd--outlined---background-color, var(--origam-color__surface---raised, #fff))",
4
+ elevation: "0 1px 0 0 color-mix(in srgb, currentColor 12%, transparent), inset 0 1px 0 0 color-mix(in srgb, white 50%, transparent)"
5
+ },
6
+ filled: {
7
+ bgColor: "var(--origam-kbd__filled---background-color, var(--origam-color__surface---overlay, #f5f5f5))",
8
+ elevation: "0 1px 2px 0 color-mix(in srgb, currentColor 18%, transparent), inset 0 1px 0 0 color-mix(in srgb, white 60%, transparent)"
9
+ },
10
+ tonal: {
11
+ bgColor: "var(--origam-kbd__tonal---background-color, color-mix(in srgb, currentColor 8%, transparent))",
12
+ border: "none",
13
+ borderColor: "transparent",
14
+ elevation: "none"
15
+ }
16
+ };
@@ -520,6 +520,17 @@ Object.keys(_itemGroup).forEach(function (key) {
520
520
  }
521
521
  });
522
522
  });
523
+ var _kbd = require("./Kbd/kbd.const.cjs");
524
+ Object.keys(_kbd).forEach(function (key) {
525
+ if (key === "default" || key === "__esModule") return;
526
+ if (key in exports && exports[key] === _kbd[key]) return;
527
+ Object.defineProperty(exports, key, {
528
+ enumerable: true,
529
+ get: function () {
530
+ return _kbd[key];
531
+ }
532
+ });
533
+ });
523
534
  var _list = require("./List/list.const.cjs");
524
535
  Object.keys(_list).forEach(function (key) {
525
536
  if (key === "default" || key === "__esModule") return;
@@ -45,6 +45,7 @@ export * from './Menu/menu.const';
45
45
  export * from './Commons/mdi.const';
46
46
  export * from './Btn/btn-toggle.const';
47
47
  export * from './ItemGroup/item-group.const';
48
+ export * from './Kbd/kbd.const';
48
49
  export * from './List/list.const';
49
50
  export * from './Progress/progress.const';
50
51
  export * from './Parallax/parallax.const';
@@ -45,6 +45,7 @@ export * from "./Menu/menu.const.js";
45
45
  export * from "./Commons/mdi.const.js";
46
46
  export * from "./Btn/btn-toggle.const.js";
47
47
  export * from "./ItemGroup/item-group.const.js";
48
+ export * from "./Kbd/kbd.const.js";
48
49
  export * from "./List/list.const.js";
49
50
  export * from "./Progress/progress.const.js";
50
51
  export * from "./Parallax/parallax.const.js";
@@ -1,6 +1,6 @@
1
1
  import type { IActiveEmits, IActiveProps } from '../Commons/active.interface';
2
2
  import type { IBgColorProps, IColorProps } from '../Commons/color.interface';
3
- import type { IBorderProps } from '../Commons/border.interface';
3
+ import type { TBracketBorderProps } from '../../types/Bracket/bracket.type';
4
4
  import type { ICommonsComponentProps, ITagProps } from '../Commons/commons.interface';
5
5
  import type { IDensityProps } from '../Commons/density.interface';
6
6
  import type { IDimensionProps } from '../Commons/dimension.interface';
@@ -20,7 +20,7 @@ import type { IBracketMatch } from './bracket-match.interface';
20
20
  * border, density, dimension, padding, margin) so a standalone card
21
21
  * behaves like any other origam component.
22
22
  */
23
- export interface IBracketMatchProps extends ICommonsComponentProps, ITagProps, IColorProps, IBgColorProps, IHoverProps, IActiveProps, IRoundedProps, IElevationProps, IBorderProps, IDensityProps, IDimensionProps, IPaddingProps, IMarginProps {
23
+ export interface IBracketMatchProps extends ICommonsComponentProps, ITagProps, IColorProps, IBgColorProps, IHoverProps, IActiveProps, IRoundedProps, IElevationProps, TBracketBorderProps, IDensityProps, IDimensionProps, IPaddingProps, IMarginProps {
24
24
  /** The match payload to render. */
25
25
  match: IBracketMatch;
26
26
  /**
@@ -53,4 +53,43 @@ export interface IBracketSurfaceInput {
53
53
  borderRightColor?: TBracketColor;
54
54
  borderBottomColor?: TBracketColor;
55
55
  borderLeftColor?: TBracketColor;
56
+ /*********************************************************
57
+ * LES DEUX ARETES LOGIQUES DE BLOC — ET POURQUOI PAS LES INLINE
58
+ *
59
+ * @description
60
+ * `borderBlockStart` / `borderBlockEnd` (+ `*Color`), issue #1013. Ce
61
+ * sont les SEULES des quatre aretes logiques que cette couche peut
62
+ * honorer, et l'asymetrie est mesuree, pas arbitraire.
63
+ *
64
+ * @description
65
+ * Cette couche peint via des custom properties
66
+ * `--origam-bracket-match---*` que la SCSS d'`OrigamBracketMatch` lit
67
+ * dans des declarations PHYSIQUES. Mapper une arete logique sur une
68
+ * arete physique a l'ecriture de la feuille demande donc de connaitre
69
+ * le mode d'ecriture.
70
+ * @description
71
+ * • AXE DE BLOC — `block-start` vaut `top` et `block-end` vaut `bottom`
72
+ * en `horizontal-tb`, invariablement. Bracket ne declare jamais
73
+ * `writing-mode` (verifie : 0 occurrence) et sa feuille fait DEJA
74
+ * cette hypothese pour `borderBlock`, dont la var alimente
75
+ * `border-top-width` et `border-bottom-width`. Ces deux aretes
76
+ * n'ajoutent donc aucune hypothese nouvelle.
77
+ * @description
78
+ * • AXE INLINE — `inline-start` vaut `left` en LTR mais `right` en RTL.
79
+ * Aucune chaine de repli ne peut exprimer ca : la substitution
80
+ * `var()` est aveugle au mode d'ecriture alors que le mapping de la
81
+ * propriete ne l'est pas. Les 4 props inline sont donc RETIREES de la
82
+ * surface de Bracket par `Omit<>` (`bracket.interface.ts`) plutot que
83
+ * declarees et ignorees — une prop typee et inerte est pire qu'une
84
+ * prop absente.
85
+ *
86
+ * @description
87
+ * La completude de Bracket sur l'axe inline part dans son propre
88
+ * ticket ; elle demande de convertir la cascade en longhands logiques,
89
+ * ce qui change le comportement RTL des props physiques existantes.
90
+ ********************************************************/
91
+ borderBlockStart?: TBracketBorder;
92
+ borderBlockEnd?: TBracketBorder;
93
+ borderBlockStartColor?: TBracketColor;
94
+ borderBlockEndColor?: TBracketColor;
56
95
  }
@@ -1,14 +1,12 @@
1
1
  import type { IBgColorProps, IColorProps } from '../Commons/color.interface';
2
- import type { IBorderProps } from '../Commons/border.interface';
3
2
  import type { ICommonsComponentProps, ITagProps } from '../Commons/commons.interface';
4
3
  import type { IDensityProps } from '../Commons/density.interface';
5
4
  import type { IDimensionProps } from '../Commons/dimension.interface';
6
5
  import type { IElevationProps } from '../Commons/elevation.interface';
7
6
  import type { IMarginProps } from '../Commons/margin.interface';
8
7
  import type { IPaddingProps } from '../Commons/padding.interface';
9
- import type { IRoundedProps } from '../Commons/rounded.interface';
10
8
  import type { ITypographyProps } from '../Commons/typography.interface';
11
- import type { TBracketConnectorPath, TBracketVariant } from '../../types/Bracket/bracket.type';
9
+ import type { TBracketBorderProps, TBracketRoundedProps, TBracketConnectorPath, TBracketVariant } from '../../types/Bracket/bracket.type';
12
10
  import type { IBracketCompetitor } from './bracket-competitor.interface';
13
11
  import type { IBracketMatchCompetitorSlot } from './bracket-match-component.interface';
14
12
  import type { IBracketMatch } from './bracket-match.interface';
@@ -24,7 +22,30 @@ import type { IBracketRound } from './bracket-round.interface';
24
22
  * data and re-render. No internal state is held about scores or
25
23
  * winners — the data passed in is the source of truth.
26
24
  */
27
- export interface IBracketProps extends ICommonsComponentProps, ITagProps, IDensityProps, IRoundedProps, IColorProps, IBgColorProps, IBorderProps, IDimensionProps, IElevationProps, IMarginProps, IPaddingProps, Pick<ITypographyProps, 'fontSize' | 'fontWeight' | 'letterSpacing'> {
25
+ /*********************************************************
26
+ * Pourquoi les surfaces `border` ET `rounded` sont RESTREINTES ici — #1013
27
+ *
28
+ * @description
29
+ * `OrigamBracket` n'appelle ni `useBorder` ni `useRounded` : il passe
30
+ * `props` en bloc a `utils/Bracket/bracket-surface.util.ts`, qui emet des
31
+ * custom properties relues par un SCSS PHYSIQUE. Les props logiques par
32
+ * cote y sont donc structurellement incablables, et une prop typee,
33
+ * editable dans Histoire, mais inerte est pire qu'une prop absente.
34
+ *
35
+ * @description
36
+ * Les deux restrictions vivent dans `types/Bracket/bracket.type.ts`, un
37
+ * type nomme chacune, et portent la mesure qui les justifie :
38
+ * {@link TBracketBorderProps} retire les 4 aretes INLINE et garde les 2
39
+ * aretes de bloc (invariantes en `horizontal-tb`, donc cablees) ;
40
+ * {@link TBracketRoundedProps} retire les 4 coins logiques, car tout nom de
41
+ * coin est `{bloc}-{inline}` et porte donc une composante inline — le
42
+ * sursis de l'axe bloc n'existe pas pour un coin.
43
+ *
44
+ * @description
45
+ * Un seul idiome pour les deux moities du lot, volontairement : la
46
+ * directive du ticket est « si un format existe, il existe partout ».
47
+ ********************************************************/
48
+ export interface IBracketProps extends ICommonsComponentProps, ITagProps, IDensityProps, TBracketRoundedProps, IColorProps, IBgColorProps, TBracketBorderProps, IDimensionProps, IElevationProps, IMarginProps, IPaddingProps, Pick<ITypographyProps, 'fontSize' | 'fontWeight' | 'letterSpacing'> {
28
49
  /**
29
50
  * Required. Pre-ordered list of rounds. For single-elimination,
30
51
  * the rounds are laid out from earliest (e.g. round-of-16) to
@@ -24,6 +24,72 @@ export interface IBorderProps {
24
24
  * mapped onto `border-inline-{width,style,color}`.
25
25
  */
26
26
  borderInline?: boolean | number | string;
27
+ /*********************************************************
28
+ * borderInlineStart
29
+ *
30
+ * @description
31
+ * Largeur/style/couleur LOGIQUE PAR COTE pour l'arete inline-start —
32
+ * gauche en LTR, droite en RTL (#1013). Le jumeau relatif au mode
33
+ * d'ecriture de `borderLeft`, resolu vers les longhands natifs
34
+ * `border-inline-start-{width,style,color}`, que le navigateur mappe
35
+ * lui-meme sur la bonne arete physique.
36
+ *
37
+ * @description
38
+ * A preferer a `borderLeft` des que l'intention de design est « l'arete
39
+ * ou le texte commence » (filet d'accent d'une citation, indicateur de
40
+ * nav, guide d'arborescence) : `borderLeft` epingle la peinture a la
41
+ * gauche physique et inverse silencieusement le design en RTL.
42
+ *
43
+ * @description
44
+ * Meme grammaire de valeur que toute autre prop directionnelle de
45
+ * bordure — opt-in booleen (token `thin`), largeur numerique nue, ou
46
+ * chaine libre `"width style color"`.
47
+ *
48
+ * @description
49
+ * Precedence : bat `borderInline` et le `border` global pour cette
50
+ * seule arete, mais un `borderLeft` PHYSIQUE l'emporte encore en LTR
51
+ * (les deux orthographes visent la meme arete a specificite egale,
52
+ * donc le dernier push gagne — voir la table de precedence de
53
+ * `useBorder`).
54
+ *
55
+ * @description
56
+ * ⚠️ Herite des limites partagees de `BORDER_REGEX` : un `calc()` ou
57
+ * une largeur fractionnaire (`"0.5rem solid red"`) ne parse pas et
58
+ * n'emet RIEN — mesure dans `BORDER_LOGICAL_SIDE_MAP`.
59
+ ********************************************************/
60
+ borderInlineStart?: boolean | number | string;
61
+ /*********************************************************
62
+ * borderInlineEnd
63
+ *
64
+ * @description
65
+ * Jumeau logique par cote de `borderInlineStart` pour l'arete
66
+ * inline-end — droite en LTR, gauche en RTL. Mappe sur
67
+ * `border-inline-end-{width,style,color}`. Meme grammaire, memes
68
+ * regles de precedence (un `borderRight` physique l'emporte en LTR).
69
+ ********************************************************/
70
+ borderInlineEnd?: boolean | number | string;
71
+ /*********************************************************
72
+ * borderBlockStart
73
+ *
74
+ * @description
75
+ * Jumeau logique par cote de `borderInlineStart` pour l'arete
76
+ * block-start — le haut dans le mode d'ecriture `horizontal-tb` par
77
+ * defaut. Mappe sur `border-block-start-{width,style,color}`. Meme
78
+ * grammaire, memes regles de precedence (un `borderTop` physique
79
+ * l'emporte).
80
+ ********************************************************/
81
+ borderBlockStart?: boolean | number | string;
82
+ /*********************************************************
83
+ * borderBlockEnd
84
+ *
85
+ * @description
86
+ * Jumeau logique par cote de `borderInlineStart` pour l'arete
87
+ * block-end — le bas dans le mode d'ecriture `horizontal-tb` par
88
+ * defaut. Mappe sur `border-block-end-{width,style,color}`. Meme
89
+ * grammaire, memes regles de precedence (un `borderBottom` physique
90
+ * l'emporte).
91
+ ********************************************************/
92
+ borderBlockEnd?: boolean | number | string;
27
93
  borderColor?: string;
28
94
  borderStyle?: string;
29
95
  /**
@@ -45,4 +111,61 @@ export interface IBorderProps {
45
111
  borderRightColor?: TColor;
46
112
  borderBottomColor?: TColor;
47
113
  borderLeftColor?: TColor;
114
+ /*********************************************************
115
+ * borderInlineStartColor
116
+ *
117
+ * @description
118
+ * Surcharge de couleur PAR ARETE pour l'arete inline-start (#1013) —
119
+ * le jumeau logique de `borderLeftColor`, emis en
120
+ * `border-inline-start-color`.
121
+ *
122
+ * @description
123
+ * Memes semantiques que la famille `*Color` physique : additive, bat
124
+ * toute couleur impliquee par `borderInlineStart` lui-meme (ex.
125
+ * `borderInlineStart="2px dashed red"`), la couleur d'axe de
126
+ * `borderInline`, et le `borderColor` / `border` global — pour cette
127
+ * arete seulement. Un `borderLeftColor` PHYSIQUE l'emporte encore en
128
+ * LTR, meme sens que pour les props de largeur.
129
+ *
130
+ * @description
131
+ * Accepte un {@link TColor} (intent semantique, couleur CSS brute, ou
132
+ * valeur fausse pour se desengager). Une bordure est un TRAIT, donc un
133
+ * intent se resout via la famille de tokens de PREMIER PLAN (comme la
134
+ * prop `color`), jamais un token de fond.
135
+ *
136
+ * @description
137
+ * Les degrades ne sont PAS supportes — `border-color` en CSS n'a pas de
138
+ * forme degradee — et sont ignores silencieusement.
139
+ ********************************************************/
140
+ borderInlineStartColor?: TColor;
141
+ /*********************************************************
142
+ * borderInlineEndColor
143
+ *
144
+ * @description
145
+ * Surcharge de couleur par arete pour l'arete inline-end — jumeau
146
+ * logique de `borderRightColor`, emis en `border-inline-end-color`.
147
+ * Meme grammaire {@link TColor} et meme precedence que
148
+ * `borderInlineStartColor`.
149
+ ********************************************************/
150
+ borderInlineEndColor?: TColor;
151
+ /*********************************************************
152
+ * borderBlockStartColor
153
+ *
154
+ * @description
155
+ * Surcharge de couleur par arete pour l'arete block-start — jumeau
156
+ * logique de `borderTopColor`, emis en `border-block-start-color`.
157
+ * Meme grammaire {@link TColor} et meme precedence que
158
+ * `borderInlineStartColor`.
159
+ ********************************************************/
160
+ borderBlockStartColor?: TColor;
161
+ /*********************************************************
162
+ * borderBlockEndColor
163
+ *
164
+ * @description
165
+ * Surcharge de couleur par arete pour l'arete block-end — jumeau
166
+ * logique de `borderBottomColor`, emis en `border-block-end-color`.
167
+ * Meme grammaire {@link TColor} et meme precedence que
168
+ * `borderInlineStartColor`.
169
+ ********************************************************/
170
+ borderBlockEndColor?: TColor;
48
171
  }
@@ -6,7 +6,10 @@
6
6
  *
7
7
  * 1. `margin` — global shorthand
8
8
  * 2. `marginBlock` / `marginInline` — logical axis
9
- * 3. `marginTop` / `marginRight` / `marginBottom` / `marginLeft`
9
+ * 3. `marginInlineStart` / `marginInlineEnd` /
10
+ * `marginBlockStart` / `marginBlockEnd` — logical side
11
+ * 4. `marginTop` / `marginRight` / `marginBottom` / `marginLeft`
12
+ * — physical side
10
13
  *
11
14
  * Each rung only overrides the edge(s) it targets. See
12
15
  * `resolveSpacingValue` for the accepted value forms (the directionals
@@ -16,6 +19,9 @@
16
19
  * ⚠️ The 4-value `margin` shorthand distributes as
17
20
  * **Haut/Gauche/Bas/Droite**, NOT the CSS clockwise order (issue #216).
18
21
  * The per-side props exist so you never have to know that.
22
+ *
23
+ * ⚠️ Rungs 3 and 4 are EQUALLY specific — see the same note on
24
+ * `IPaddingProps`. The physical spelling wins for a given edge.
19
25
  */
20
26
  export interface IMarginProps {
21
27
  /**
@@ -36,4 +42,32 @@ export interface IMarginProps {
36
42
  marginBlock?: boolean | number | string;
37
43
  /** Left + right. Overrides `margin`; beaten by `marginLeft` / `marginRight`. */
38
44
  marginInline?: boolean | number | string;
45
+ /*********************************************************
46
+ * Logical per-side margin — rung 3 (issue #1013)
47
+ *
48
+ * @description
49
+ * One WRITING-MODE-RELATIVE edge each, emitted as the native logical
50
+ * longhands (`margin-inline-start`, …) so the browser flips them under
51
+ * RTL and in vertical writing modes.
52
+ *
53
+ * @description
54
+ * `marginInlineStart` — left in LTR, **right in RTL**.
55
+ * `marginInlineEnd` — right in LTR, **left in RTL**.
56
+ * `marginBlockStart` — top in horizontal-tb.
57
+ * `marginBlockEnd` — bottom in horizontal-tb.
58
+ *
59
+ * @description
60
+ * Same vocabulary as `margin`, the `auto` keyword included — and that
61
+ * is their best argument: `marginInlineStart="auto"` pushes an element
62
+ * to the far end of its line in BOTH reading directions, where
63
+ * `marginLeft="auto"` pushes it the wrong way under RTL.
64
+ *
65
+ * @description
66
+ * Each overrides `margin` and its axis prop for the one edge it
67
+ * targets, and is beaten by the matching PHYSICAL prop.
68
+ ********************************************************/
69
+ marginInlineStart?: boolean | number | string;
70
+ marginInlineEnd?: boolean | number | string;
71
+ marginBlockStart?: boolean | number | string;
72
+ marginBlockEnd?: boolean | number | string;
39
73
  }
@@ -6,7 +6,10 @@
6
6
  *
7
7
  * 1. `padding` — global shorthand
8
8
  * 2. `paddingBlock` / `paddingInline` — logical axis
9
- * 3. `paddingTop` / `paddingRight` / `paddingBottom` / `paddingLeft`
9
+ * 3. `paddingInlineStart` / `paddingInlineEnd` /
10
+ * `paddingBlockStart` / `paddingBlockEnd` — logical side
11
+ * 4. `paddingTop` / `paddingRight` / `paddingBottom` / `paddingLeft`
12
+ * — physical side
10
13
  *
11
14
  * Each rung only overrides the edge(s) it targets. See
12
15
  * `resolveSpacingValue` for the accepted value forms, and
@@ -15,6 +18,14 @@
15
18
  * ⚠️ The 4-value `padding` shorthand distributes as
16
19
  * **Haut/Gauche/Bas/Droite**, NOT the CSS clockwise order (issue #216).
17
20
  * The per-side props exist so you never have to know that.
21
+ *
22
+ * ⚠️ Rungs 3 and 4 are EQUALLY specific — `paddingInlineStart` and
23
+ * `paddingLeft` are two spellings of the same edge in LTR horizontal-tb, so
24
+ * neither is "more specific" than the other and the tiebreak is a choice,
25
+ * not a derivation. The physical one wins, which keeps the direction the
26
+ * repo's only other physical-vs-logical tiebreak already takes (see
27
+ * `ROUNDED_CORNER_MAP` in `consts/Commons/spacing.const.ts`). Setting both
28
+ * for one edge is a consumer mistake either way; pick one grid.
18
29
  */
19
30
  export interface IPaddingProps {
20
31
  /**
@@ -35,4 +46,33 @@ export interface IPaddingProps {
35
46
  paddingBlock?: boolean | number | string;
36
47
  /** Left + right. Overrides `padding`; beaten by `paddingLeft` / `paddingRight`. */
37
48
  paddingInline?: boolean | number | string;
49
+ /*********************************************************
50
+ * Logical per-side padding — rung 3 (issue #1013)
51
+ *
52
+ * @description
53
+ * One WRITING-MODE-RELATIVE edge each. They emit the native logical
54
+ * longhands (`padding-inline-start`, …), so the browser flips them
55
+ * under RTL and in vertical writing modes for you.
56
+ *
57
+ * @description
58
+ * `paddingInlineStart` — left in LTR, **right in RTL**.
59
+ * `paddingInlineEnd` — right in LTR, **left in RTL**.
60
+ * `paddingBlockStart` — top in horizontal-tb.
61
+ * `paddingBlockEnd` — bottom in horizontal-tb.
62
+ *
63
+ * @description
64
+ * Same vocabulary as `padding` (`16`, `"4"`, `"8px"`, `"var(…)"`,
65
+ * `"calc(…)"`). Each overrides `padding` and its axis prop for the one
66
+ * edge it targets, and is in turn beaten by the matching PHYSICAL prop
67
+ * (`paddingLeft` & co) — see the precedence note above.
68
+ *
69
+ * @description
70
+ * Prefer these over the physical four whenever the value is a
71
+ * reading-order offset — an indent, a gutter beside an accent rule —
72
+ * rather than a genuinely physical one.
73
+ ********************************************************/
74
+ paddingInlineStart?: boolean | number | string;
75
+ paddingInlineEnd?: boolean | number | string;
76
+ paddingBlockStart?: boolean | number | string;
77
+ paddingBlockEnd?: boolean | number | string;
38
78
  }
@@ -3,17 +3,26 @@ import type { TRounded } from '../../types/Commons/rounded.type';
3
3
  * Corner-radius surface.
4
4
  *
5
5
  * Precedence — SPECIFIC beats GLOBAL, same grammar as `IPaddingProps` /
6
- * `IMarginProps` / `IBorderProps`, with two rungs instead of three (there
7
- * is no logical-axis form for corners):
6
+ * `IMarginProps` / `IBorderProps`, with three rungs instead of four (there
7
+ * is no logical-AXIS form for corners — a corner belongs to both axes at
8
+ * once):
8
9
  *
9
10
  * 1. `rounded` — global shorthand
10
- * 2. `roundedTopLeft` / `roundedTopRight` /
11
- * `roundedBottomLeft` / `roundedBottomRight`
11
+ * 2. `roundedStartStart` / `roundedStartEnd` /
12
+ * `roundedEndStart` / `roundedEndEnd` — logical corner
13
+ * 3. `roundedTopLeft` / `roundedTopRight` /
14
+ * `roundedBottomLeft` / `roundedBottomRight` — physical corner
12
15
  *
13
16
  * A corner prop only overrides the corner it targets — `rounded="lg"` plus
14
17
  * `roundedTopLeft="0px"` flattens one corner and leaves the other three at
15
18
  * `lg`. See `resolveRoundedCornerValue` for the accepted value forms and
16
19
  * `packages/docs/guide/spacing-and-corners.md` for the full reference.
20
+ *
21
+ * ⚠️ Rungs 2 and 3 are EQUALLY specific — `roundedStartStart` and
22
+ * `roundedTopLeft` are the same corner in LTR horizontal-tb, so the
23
+ * tiebreak is a choice, not a derivation. The physical one wins, the same
24
+ * direction `ROUNDED_CORNER_MAP` already documents against the shorthand's
25
+ * logical output. Pick one grid per component.
17
26
  */
18
27
  export interface IRoundedProps {
19
28
  /**
@@ -40,4 +49,38 @@ export interface IRoundedProps {
40
49
  roundedBottomLeft?: boolean | number | string;
41
50
  /** Bottom-right corner only. Same vocabulary as `roundedTopRight`. */
42
51
  roundedBottomRight?: boolean | number | string;
52
+ /*********************************************************
53
+ * Logical per-corner radius — rung 2 (issue #1013)
54
+ *
55
+ * @description
56
+ * One WRITING-MODE-RELATIVE corner each, emitted as the native logical
57
+ * longhands (`border-start-start-radius`, …) — the same family the
58
+ * 4-value `rounded` shorthand already emits, so these four address one
59
+ * of its corners instead of all four.
60
+ *
61
+ * @description
62
+ * ⚠️ THE NAME READS `{block}-{inline}`, per CSS. The first half is the
63
+ * block end, the second the inline end — it is NOT a clockwise walk,
64
+ * and the two halves are not interchangeable:
65
+ *
66
+ * @description
67
+ * `roundedStartStart` — block-start inline-start = top-LEFT in LTR.
68
+ * `roundedStartEnd` — block-start inline-end = top-RIGHT in LTR.
69
+ * `roundedEndStart` — block-end inline-start = bottom-LEFT in LTR.
70
+ * `roundedEndEnd` — block-end inline-end = bottom-RIGHT in LTR.
71
+ *
72
+ * @description
73
+ * Swapping the halves silently rounds the opposite corner — nothing
74
+ * warns, and the result looks deliberate.
75
+ *
76
+ * @description
77
+ * Same vocabulary as `roundedTopRight` (`8`, `'8px'`, `'md'`,
78
+ * `'large'`, `'var(…)'`), minus `shaped` / `shaped-invert`. Each
79
+ * overrides `rounded` for its corner and is beaten by the matching
80
+ * PHYSICAL corner prop.
81
+ ********************************************************/
82
+ roundedStartStart?: boolean | number | string;
83
+ roundedStartEnd?: boolean | number | string;
84
+ roundedEndStart?: boolean | number | string;
85
+ roundedEndEnd?: boolean | number | string;
43
86
  }
@@ -1,11 +1,12 @@
1
1
  import type { IBorderProps } from '../Commons/border.interface';
2
2
  import type { IBgColorProps, IColorProps } from '../Commons/color.interface';
3
3
  import type { ICommonsComponentProps } from '../Commons/commons.interface';
4
+ import type { IElevationProps } from '../Commons/elevation.interface';
4
5
  import type { IRoundedProps } from '../Commons/rounded.interface';
5
6
  import type { ISizeProps } from '../Commons/size.interface';
6
7
  import type { ITypographyProps } from '../Commons/typography.interface';
7
8
  import type { TKbdVariant } from '../../types/Kbd/kbd.type';
8
- export interface IKbdProps extends ICommonsComponentProps, IColorProps, IBgColorProps, ISizeProps, IBorderProps, IRoundedProps, Pick<ITypographyProps, 'fontFamily' | 'fontSize' | 'fontWeight'> {
9
+ export interface IKbdProps extends ICommonsComponentProps, IColorProps, IBgColorProps, ISizeProps, IBorderProps, IElevationProps, IRoundedProps, Pick<ITypographyProps, 'fontFamily' | 'fontSize' | 'fontWeight'> {
9
10
  /** Single key label (e.g. "⌘", "Ctrl", "A"). Overridden by the default slot. */
10
11
  text?: string;
11
12
  /** Composed shortcut rendered as individual nested `<kbd>` elements (e.g. ['Ctrl', 'Shift', 'Z']). */