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.
- package/CHANGELOG.md +138 -0
- package/dist/src/assets/css/main.css +1 -1
- package/dist/src/assets/css/tokens/dark.css +0 -6
- package/dist/src/assets/css/tokens/light.css +0 -3
- package/dist/src/assets/scss/tokens/_dark.scss +0 -6
- package/dist/src/assets/scss/tokens/_light.scss +0 -3
- package/dist/src/components/Alert/OrigamAlert.vue +20 -0
- package/dist/src/components/App/OrigamAppBar.vue +20 -0
- package/dist/src/components/Audio/OrigamAudio.vue +20 -0
- package/dist/src/components/Avatar/OrigamAvatar.vue +20 -0
- package/dist/src/components/Avatar/OrigamAvatarGroup.vue +20 -0
- package/dist/src/components/Badge/OrigamBadge.vue +12 -0
- package/dist/src/components/Blockquote/OrigamBlockquote.vue +20 -0
- package/dist/src/components/BottomNav/OrigamBottomNav.vue +20 -0
- package/dist/src/components/Bracket/OrigamBracket.vue +12 -0
- package/dist/src/components/Bracket/OrigamBracketCompetitor.vue +20 -0
- package/dist/src/components/Bracket/OrigamBracketMatch.vue +33 -5
- package/dist/src/components/Breadcrumb/OrigamBreadcrumb.vue +20 -0
- package/dist/src/components/Breadcrumb/OrigamBreadcrumbDivider.vue +8 -0
- package/dist/src/components/Breadcrumb/OrigamBreadcrumbItem.vue +20 -0
- package/dist/src/components/Btn/OrigamBtn.vue +20 -0
- package/dist/src/components/Btn/OrigamBtnGroup.vue +20 -0
- package/dist/src/components/Btn/OrigamBtnToggle.vue +20 -0
- package/dist/src/components/Calendar/OrigamCalendar.vue +21 -1
- package/dist/src/components/Card/OrigamCard.vue +20 -0
- package/dist/src/components/Card/OrigamCardHeader.vue +20 -0
- package/dist/src/components/Card/OrigamCardText.vue +20 -0
- package/dist/src/components/Carousel/OrigamCarousel.vue +20 -0
- package/dist/src/components/Carousel/OrigamCarouselItem.vue +20 -0
- package/dist/src/components/Chart/OrigamChart.vue +25 -1
- package/dist/src/components/Chart/OrigamChartBoxPlot.vue +12 -0
- package/dist/src/components/Chart/OrigamChartBullet.vue +12 -0
- package/dist/src/components/Chart/OrigamChartCandlestick.vue +12 -0
- package/dist/src/components/Chart/OrigamChartCartesian.vue +12 -0
- package/dist/src/components/Chart/OrigamChartGauge.vue +12 -0
- package/dist/src/components/Chart/OrigamChartHeatmap.vue +12 -0
- package/dist/src/components/Chart/OrigamChartHoneycomb.vue +12 -0
- package/dist/src/components/Chart/OrigamChartMap.vue +12 -0
- package/dist/src/components/Chart/OrigamChartPareto.vue +12 -0
- package/dist/src/components/Chart/OrigamChartPictorial.vue +12 -0
- package/dist/src/components/Chart/OrigamChartPolar.vue +12 -0
- package/dist/src/components/Chart/OrigamChartPolarBar.vue +12 -0
- package/dist/src/components/Chart/OrigamChartPyramid.vue +12 -0
- package/dist/src/components/Chart/OrigamChartRadar.vue +12 -0
- package/dist/src/components/Chart/OrigamChartSankey.vue +12 -0
- package/dist/src/components/Chart/OrigamChartSparkline.vue +12 -0
- package/dist/src/components/Chart/OrigamChartStreamgraph.vue +12 -0
- package/dist/src/components/Chart/OrigamChartSunburst.vue +12 -0
- package/dist/src/components/Chart/OrigamChartTreemap.vue +12 -0
- package/dist/src/components/Chart/OrigamChartVariwide.vue +12 -0
- package/dist/src/components/Chart/OrigamChartWordCloud.vue +12 -0
- package/dist/src/components/Checkbox/OrigamCheckbox.vue +20 -0
- package/dist/src/components/Checkbox/OrigamCheckboxBtn.vue +12 -0
- package/dist/src/components/Checkbox/OrigamCheckboxGroup.vue +20 -0
- package/dist/src/components/Chip/OrigamChip.vue +20 -0
- package/dist/src/components/Chip/OrigamChipGroup.vue +20 -0
- package/dist/src/components/Clipboard/OrigamClipboard.vue +20 -0
- package/dist/src/components/Code/OrigamCode.vue +20 -0
- package/dist/src/components/ColorPicker/OrigamColorPicker.vue +20 -0
- package/dist/src/components/ColorPickerField/OrigamColorPickerField.vue +20 -0
- package/dist/src/components/ConfirmWrapper/OrigamConfirmWrapper.vue +4 -0
- package/dist/src/components/ContextualMenu/OrigamContextualMenu.vue +20 -0
- package/dist/src/components/Counter/OrigamCounter.vue +20 -0
- package/dist/src/components/DataList/OrigamDataList.vue +20 -0
- package/dist/src/components/DataList/OrigamDataText.vue +8 -0
- package/dist/src/components/DataList/OrigamDataTitle.vue +8 -0
- package/dist/src/components/DataTable/OrigamDataTable.vue +20 -0
- package/dist/src/components/DataTable/OrigamDataTableColumnCell.vue +5 -1
- package/dist/src/components/DataTable/OrigamDataTableFooter.vue +4 -0
- package/dist/src/components/DatePicker/OrigamDatePicker.vue +20 -0
- package/dist/src/components/DatePickerField/OrigamDatePickerField.vue +20 -0
- package/dist/src/components/Dialog/OrigamDialog.vue +20 -0
- package/dist/src/components/Dialog/OrigamDialogConfirmation.vue +20 -0
- package/dist/src/components/Divider/OrigamDivider.vue +4 -0
- package/dist/src/components/Drawer/OrigamDrawer.vue +20 -0
- package/dist/src/components/ExpansionPanel/OrigamExpansionPanel.vue +20 -0
- package/dist/src/components/ExpansionPanel/OrigamExpansionPanelContent.vue +20 -0
- package/dist/src/components/ExpansionPanel/OrigamExpansionPanelHeader.vue +20 -0
- package/dist/src/components/ExpansionPanel/OrigamExpansionPanels.vue +20 -0
- package/dist/src/components/Field/OrigamField.vue +20 -0
- package/dist/src/components/FileField/OrigamFileField.vue +20 -0
- package/dist/src/components/Grid/OrigamGrid.vue +21 -1
- package/dist/src/components/Grids/OrigamCol.vue +16 -0
- package/dist/src/components/Grids/OrigamContainer.vue +17 -1
- package/dist/src/components/Grids/OrigamRow.vue +16 -0
- package/dist/src/components/Icon/OrigamClassIcon.vue +21 -1
- package/dist/src/components/Icon/OrigamComponentIcon.vue +21 -1
- package/dist/src/components/Icon/OrigamIcon.vue +21 -1
- package/dist/src/components/Icon/OrigamLigatureIcon.vue +21 -1
- package/dist/src/components/Icon/OrigamSvgIcon.vue +21 -1
- package/dist/src/components/Img/OrigamImg.vue +20 -0
- package/dist/src/components/Input/OrigamInput.vue +20 -0
- package/dist/src/components/Kbd/OrigamKbd.vue +35 -41
- package/dist/src/components/Label/OrigamLabel.vue +20 -0
- package/dist/src/components/Layout/OrigamLayout.vue +21 -1
- package/dist/src/components/List/OrigamList.vue +21 -1
- package/dist/src/components/List/OrigamListGroup.vue +20 -0
- package/dist/src/components/List/OrigamListItem.vue +20 -0
- package/dist/src/components/List/OrigamListSubheader.vue +20 -0
- package/dist/src/components/Main/OrigamMain.vue +20 -0
- package/dist/src/components/Masonry/OrigamMasonry.vue +21 -1
- package/dist/src/components/Media/OrigamMediaScrubber.vue +5 -1
- package/dist/src/components/Media/OrigamMediaVolumeControl.vue +4 -0
- package/dist/src/components/Menu/OrigamMenu.vue +20 -0
- package/dist/src/components/Messages/OrigamMessages.vue +20 -0
- package/dist/src/components/NumberField/OrigamNumberField.vue +20 -0
- package/dist/src/components/OtpInputField/OrigamOtpInputField.vue +20 -0
- package/dist/src/components/Pagination/OrigamPagination.vue +16 -0
- package/dist/src/components/Parallax/OrigamParallax.vue +20 -0
- package/dist/src/components/Parallax/OrigamParallaxElement.vue +20 -0
- package/dist/src/components/PasswordField/OrigamPasswordField.vue +20 -0
- package/dist/src/components/Picker/OrigamPicker.vue +20 -0
- package/dist/src/components/Progress/OrigamProgress.vue +12 -0
- package/dist/src/components/Progress/OrigamProgressCircular.vue +8 -0
- package/dist/src/components/Progress/OrigamProgressLinear.vue +12 -0
- package/dist/src/components/QrCode/OrigamQrCode.vue +21 -1
- package/dist/src/components/Radio/OrigamRadio.vue +20 -0
- package/dist/src/components/Radio/OrigamRadioBtn.vue +12 -0
- package/dist/src/components/Radio/OrigamRadioGroup.vue +20 -0
- package/dist/src/components/RatingField/OrigamRatingField.vue +20 -0
- package/dist/src/components/RatingField/OrigamRatingFieldItem.vue +20 -0
- package/dist/src/components/Responsive/OrigamResponsive.vue +21 -1
- package/dist/src/components/Select/OrigamSelect.vue +20 -0
- package/dist/src/components/SelectionControl/OrigamSelectionControl.vue +12 -0
- package/dist/src/components/Sheet/OrigamSheet.vue +20 -0
- package/dist/src/components/Skeleton/OrigamSkeleton.vue +5 -1
- package/dist/src/components/Slide/OrigamSlideGroup.vue +20 -0
- package/dist/src/components/SliderField/OrigamSliderField.vue +20 -0
- package/dist/src/components/SliderField/OrigamSliderFieldTrack.vue +5 -1
- package/dist/src/components/Snackbar/OrigamSnackbar.vue +20 -0
- package/dist/src/components/Stepper/OrigamStepper.vue +21 -1
- package/dist/src/components/Switch/OrigamSwitch.vue +20 -0
- package/dist/src/components/Switch/OrigamSwitchTrack.vue +12 -0
- package/dist/src/components/SystemBar/OrigamSystemBar.vue +12 -0
- package/dist/src/components/Table/OrigamTable.vue +20 -0
- package/dist/src/components/Tabs/OrigamTabs.vue +4 -0
- package/dist/src/components/TextField/OrigamTextField.vue +20 -0
- package/dist/src/components/TextareaField/OrigamTextareaField.vue +20 -0
- package/dist/src/components/Title/OrigamTitle.vue +16 -0
- package/dist/src/components/Toolbar/OrigamToolbar.vue +20 -0
- package/dist/src/components/Video/OrigamVideo.vue +20 -0
- package/dist/src/components/Window/OrigamWindow.vue +20 -0
- package/dist/src/composables/Commons/border.composable.cjs +24 -16
- package/dist/src/composables/Commons/border.composable.d.ts +31 -10
- package/dist/src/composables/Commons/border.composable.js +21 -17
- package/dist/src/composables/Commons/margin.composable.cjs +7 -0
- package/dist/src/composables/Commons/margin.composable.d.ts +7 -1
- package/dist/src/composables/Commons/margin.composable.js +5 -1
- package/dist/src/composables/Commons/padding.composable.cjs +7 -0
- package/dist/src/composables/Commons/padding.composable.d.ts +15 -1
- package/dist/src/composables/Commons/padding.composable.js +5 -1
- package/dist/src/composables/Commons/rounded.composable.cjs +7 -0
- package/dist/src/composables/Commons/rounded.composable.d.ts +14 -1
- package/dist/src/composables/Commons/rounded.composable.js +5 -1
- package/dist/src/composables/Commons/stateEffect.composable.cjs +60 -0
- package/dist/src/composables/Commons/stateEffect.composable.js +60 -0
- package/dist/src/consts/Commons/border.const.cjs +19 -2
- package/dist/src/consts/Commons/border.const.d.ts +65 -4
- package/dist/src/consts/Commons/border.const.js +16 -2
- package/dist/src/consts/Commons/spacing.const.cjs +40 -1
- package/dist/src/consts/Commons/spacing.const.d.ts +68 -1
- package/dist/src/consts/Commons/spacing.const.js +19 -1
- package/dist/src/consts/Commons/variant-preset.const.cjs +4 -1
- package/dist/src/consts/Commons/variant-preset.const.d.ts +22 -13
- package/dist/src/consts/Commons/variant-preset.const.js +4 -1
- package/dist/src/consts/Kbd/kbd.const.cjs +22 -0
- package/dist/src/consts/Kbd/kbd.const.d.ts +102 -0
- package/dist/src/consts/Kbd/kbd.const.js +16 -0
- package/dist/src/consts/index.cjs +11 -0
- package/dist/src/consts/index.d.ts +1 -0
- package/dist/src/consts/index.js +1 -0
- package/dist/src/interfaces/Bracket/bracket-match-component.interface.d.ts +2 -2
- package/dist/src/interfaces/Bracket/bracket-surface.interface.d.ts +39 -0
- package/dist/src/interfaces/Bracket/bracket.interface.d.ts +25 -4
- package/dist/src/interfaces/Commons/border.interface.d.ts +123 -0
- package/dist/src/interfaces/Commons/margin.interface.d.ts +35 -1
- package/dist/src/interfaces/Commons/padding.interface.d.ts +41 -1
- package/dist/src/interfaces/Commons/rounded.interface.d.ts +47 -4
- package/dist/src/interfaces/Kbd/kbd.interface.d.ts +2 -1
- package/dist/src/types/Bracket/bracket.type.d.ts +82 -0
- package/dist/src/types/Commons/anchor.type.d.ts +48 -0
- package/dist/src/types/Commons/variant-preset.type.d.ts +22 -4
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/dist/src/utils/Bracket/bracket-surface.util.cjs +19 -0
- package/dist/src/utils/Bracket/bracket-surface.util.js +10 -0
- package/dist/src/utils/Commons/border.util.d.ts +16 -8
- 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';
|
package/dist/src/consts/index.js
CHANGED
|
@@ -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 {
|
|
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,
|
|
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
|
-
|
|
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. `
|
|
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. `
|
|
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
|
|
7
|
-
* is no logical-
|
|
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. `
|
|
11
|
-
* `
|
|
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']). */
|