@rolster/react-components 18.21.27 → 18.21.29

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 (146) hide show
  1. package/dist/cjs/assets/{index-BW6KjVET.css → index-iBIATb-B.css} +82 -91
  2. package/dist/cjs/index.js +47 -26
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/es/assets/{index-BW6KjVET.css → index-iBIATb-B.css} +82 -91
  5. package/dist/es/index.js +47 -26
  6. package/dist/es/index.js.map +1 -1
  7. package/dist/esm/components/atoms/Amount/Amount.css +1 -1
  8. package/dist/esm/components/atoms/Amount/Amount.css.map +1 -0
  9. package/dist/esm/components/atoms/Avatar/Avatar.css +1 -1
  10. package/dist/esm/components/atoms/Avatar/Avatar.css.map +1 -0
  11. package/dist/esm/components/atoms/Badge/Badge.css +1 -1
  12. package/dist/esm/components/atoms/Badge/Badge.css.map +1 -0
  13. package/dist/esm/components/atoms/Breadcrumb/Breadcrumb.css +3 -3
  14. package/dist/esm/components/atoms/Breadcrumb/Breadcrumb.css.map +1 -0
  15. package/dist/esm/components/atoms/Button/Button.css +2 -3
  16. package/dist/esm/components/atoms/Button/Button.css.map +1 -0
  17. package/dist/esm/components/atoms/ButtonAction/ButtonAction.css +2 -3
  18. package/dist/esm/components/atoms/ButtonAction/ButtonAction.css.map +1 -0
  19. package/dist/esm/components/atoms/CheckBox/CheckBox.css +1 -1
  20. package/dist/esm/components/atoms/CheckBox/CheckBox.css.map +1 -0
  21. package/dist/esm/components/atoms/Icon/Icon.css +1 -1
  22. package/dist/esm/components/atoms/Icon/Icon.css.map +1 -0
  23. package/dist/esm/components/atoms/Input/Input.css +3 -3
  24. package/dist/esm/components/atoms/Input/Input.css.map +1 -0
  25. package/dist/esm/components/atoms/Input/Input.d.ts +3 -9
  26. package/dist/esm/components/atoms/Input/Input.js +12 -5
  27. package/dist/esm/components/atoms/Input/Input.js.map +1 -1
  28. package/dist/esm/components/atoms/InputMoney/InputMoney.css +1 -1
  29. package/dist/esm/components/atoms/InputMoney/InputMoney.css.map +1 -0
  30. package/dist/esm/components/atoms/InputMoney/InputMoney.d.ts +1 -1
  31. package/dist/esm/components/atoms/InputMoney/InputMoney.js +3 -2
  32. package/dist/esm/components/atoms/InputMoney/InputMoney.js.map +1 -1
  33. package/dist/esm/components/atoms/InputNumber/InputNumber.css +1 -1
  34. package/dist/esm/components/atoms/InputNumber/InputNumber.css.map +1 -0
  35. package/dist/esm/components/atoms/InputNumber/InputNumber.d.ts +1 -1
  36. package/dist/esm/components/atoms/InputNumber/InputNumber.js +3 -2
  37. package/dist/esm/components/atoms/InputNumber/InputNumber.js.map +1 -1
  38. package/dist/esm/components/atoms/InputPassword/InputPassword.css +2 -2
  39. package/dist/esm/components/atoms/InputPassword/InputPassword.css.map +1 -0
  40. package/dist/esm/components/atoms/InputPassword/InputPassword.d.ts +3 -8
  41. package/dist/esm/components/atoms/InputPassword/InputPassword.js +12 -5
  42. package/dist/esm/components/atoms/InputPassword/InputPassword.js.map +1 -1
  43. package/dist/esm/components/atoms/InputSearch/InputSearch.css +2 -2
  44. package/dist/esm/components/atoms/InputSearch/InputSearch.css.map +1 -0
  45. package/dist/esm/components/atoms/InputSearch/InputSearch.d.ts +2 -1
  46. package/dist/esm/components/atoms/InputSearch/InputSearch.js +2 -2
  47. package/dist/esm/components/atoms/InputSearch/InputSearch.js.map +1 -1
  48. package/dist/esm/components/atoms/InputText/InputText.css +1 -1
  49. package/dist/esm/components/atoms/InputText/InputText.css.map +1 -0
  50. package/dist/esm/components/atoms/InputText/InputText.d.ts +1 -1
  51. package/dist/esm/components/atoms/InputText/InputText.js +3 -2
  52. package/dist/esm/components/atoms/InputText/InputText.js.map +1 -1
  53. package/dist/esm/components/atoms/Label/Label.css +1 -1
  54. package/dist/esm/components/atoms/Label/Label.css.map +1 -0
  55. package/dist/esm/components/atoms/MessageIcon/MessageIcon.css +2 -2
  56. package/dist/esm/components/atoms/MessageIcon/MessageIcon.css.map +1 -0
  57. package/dist/esm/components/atoms/Poster/Poster.css +1 -1
  58. package/dist/esm/components/atoms/Poster/Poster.css.map +1 -0
  59. package/dist/esm/components/atoms/ProgressBar/ProgressBar.css +1 -3
  60. package/dist/esm/components/atoms/ProgressBar/ProgressBar.css.map +1 -0
  61. package/dist/esm/components/atoms/ProgressCircular/ProgressCircular.css +1 -3
  62. package/dist/esm/components/atoms/ProgressCircular/ProgressCircular.css.map +1 -0
  63. package/dist/esm/components/atoms/RadioButton/RadioButton.css +1 -1
  64. package/dist/esm/components/atoms/RadioButton/RadioButton.css.map +1 -0
  65. package/dist/esm/components/atoms/Skeleton/Skeleton.css +1 -2
  66. package/dist/esm/components/atoms/Skeleton/Skeleton.css.map +1 -0
  67. package/dist/esm/components/atoms/SkeletonText/SkeletonText.css +1 -1
  68. package/dist/esm/components/atoms/SkeletonText/SkeletonText.css.map +1 -0
  69. package/dist/esm/components/atoms/Switch/Switch.css +1 -1
  70. package/dist/esm/components/atoms/Switch/Switch.css.map +1 -0
  71. package/dist/esm/components/atoms/TabularText/TabularText.css +1 -1
  72. package/dist/esm/components/atoms/TabularText/TabularText.css.map +1 -0
  73. package/dist/esm/components/molecules/Alert/Alert.css +1 -1
  74. package/dist/esm/components/molecules/Alert/Alert.css.map +1 -0
  75. package/dist/esm/components/molecules/Ballot/Ballot.css +1 -1
  76. package/dist/esm/components/molecules/Ballot/Ballot.css.map +1 -0
  77. package/dist/esm/components/molecules/ButtonProgress/ButtonProgress.css +1 -1
  78. package/dist/esm/components/molecules/ButtonProgress/ButtonProgress.css.map +1 -0
  79. package/dist/esm/components/molecules/ButtonToggle/ButtonToggle.css +1 -3
  80. package/dist/esm/components/molecules/ButtonToggle/ButtonToggle.css.map +1 -0
  81. package/dist/esm/components/molecules/FieldMoney/FieldMoney.css +1 -1
  82. package/dist/esm/components/molecules/FieldMoney/FieldMoney.css.map +1 -0
  83. package/dist/esm/components/molecules/FieldMoney/FieldMoney.d.ts +1 -1
  84. package/dist/esm/components/molecules/FieldMoney/FieldMoney.js +3 -2
  85. package/dist/esm/components/molecules/FieldMoney/FieldMoney.js.map +1 -1
  86. package/dist/esm/components/molecules/FieldNumber/FieldNumber.css +1 -1
  87. package/dist/esm/components/molecules/FieldNumber/FieldNumber.css.map +1 -0
  88. package/dist/esm/components/molecules/FieldNumber/FieldNumber.d.ts +1 -1
  89. package/dist/esm/components/molecules/FieldNumber/FieldNumber.js +3 -2
  90. package/dist/esm/components/molecules/FieldNumber/FieldNumber.js.map +1 -1
  91. package/dist/esm/components/molecules/FieldPassword/FieldPassword.css +1 -1
  92. package/dist/esm/components/molecules/FieldPassword/FieldPassword.css.map +1 -0
  93. package/dist/esm/components/molecules/FieldPassword/FieldPassword.d.ts +2 -11
  94. package/dist/esm/components/molecules/FieldPassword/FieldPassword.js +3 -2
  95. package/dist/esm/components/molecules/FieldPassword/FieldPassword.js.map +1 -1
  96. package/dist/esm/components/molecules/FieldReadonly/FieldReadonly.css +10 -2
  97. package/dist/esm/components/molecules/FieldReadonly/FieldReadonly.css.map +1 -0
  98. package/dist/esm/components/molecules/FieldText/FieldText.css +1 -1
  99. package/dist/esm/components/molecules/FieldText/FieldText.css.map +1 -0
  100. package/dist/esm/components/molecules/FieldText/FieldText.d.ts +1 -1
  101. package/dist/esm/components/molecules/FieldText/FieldText.js +3 -2
  102. package/dist/esm/components/molecules/FieldText/FieldText.js.map +1 -1
  103. package/dist/esm/components/molecules/LabelCheckBox/LabelCheckBox.css +1 -1
  104. package/dist/esm/components/molecules/LabelCheckBox/LabelCheckBox.css.map +1 -0
  105. package/dist/esm/components/molecules/LabelRadioButton/LabelRadioButton.css +1 -1
  106. package/dist/esm/components/molecules/LabelRadioButton/LabelRadioButton.css.map +1 -0
  107. package/dist/esm/components/molecules/LabelSwitch/LabelSwitch.css +1 -1
  108. package/dist/esm/components/molecules/LabelSwitch/LabelSwitch.css.map +1 -0
  109. package/dist/esm/components/molecules/Pagination/Pagination.css +1 -1
  110. package/dist/esm/components/molecules/Pagination/Pagination.css.map +1 -0
  111. package/dist/esm/components/molecules/PickerDay/PickerDay.css +1 -1
  112. package/dist/esm/components/molecules/PickerDay/PickerDay.css.map +1 -0
  113. package/dist/esm/components/molecules/PickerDayRange/PickerDayRange.css +1 -1
  114. package/dist/esm/components/molecules/PickerDayRange/PickerDayRange.css.map +1 -0
  115. package/dist/esm/components/molecules/PickerMonth/PickerMonth.css +1 -1
  116. package/dist/esm/components/molecules/PickerMonth/PickerMonth.css.map +1 -0
  117. package/dist/esm/components/molecules/PickerSelectorTitle/PickerSelectorTitle.css +1 -1
  118. package/dist/esm/components/molecules/PickerSelectorTitle/PickerSelectorTitle.css.map +1 -0
  119. package/dist/esm/components/molecules/PickerYear/PickerYear.css +2 -2
  120. package/dist/esm/components/molecules/PickerYear/PickerYear.css.map +1 -0
  121. package/dist/esm/components/molecules/Toolbar/Toolbar.css +1 -1
  122. package/dist/esm/components/molecules/Toolbar/Toolbar.css.map +1 -0
  123. package/dist/esm/components/organisms/Card/Card.css +1 -1
  124. package/dist/esm/components/organisms/Card/Card.css.map +1 -0
  125. package/dist/esm/components/organisms/Confirmation/Confirmation.css +1 -7
  126. package/dist/esm/components/organisms/Confirmation/Confirmation.css.map +1 -0
  127. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.css +4 -4
  128. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.css.map +1 -0
  129. package/dist/esm/components/organisms/FieldDate/FieldDate.css +3 -3
  130. package/dist/esm/components/organisms/FieldDate/FieldDate.css.map +1 -0
  131. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.css +6 -6
  132. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.css.map +1 -0
  133. package/dist/esm/components/organisms/FieldSelect/FieldSelect.css +1 -2
  134. package/dist/esm/components/organisms/FieldSelect/FieldSelect.css.map +1 -0
  135. package/dist/esm/components/organisms/FormNavigation/FormNavigation.css +1 -1
  136. package/dist/esm/components/organisms/FormNavigation/FormNavigation.css.map +1 -0
  137. package/dist/esm/components/organisms/Modal/Modal.css +1 -1
  138. package/dist/esm/components/organisms/Modal/Modal.css.map +1 -0
  139. package/dist/esm/components/organisms/PickerDate/PickerDate.css +1 -1
  140. package/dist/esm/components/organisms/PickerDate/PickerDate.css.map +1 -0
  141. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.css +1 -1
  142. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.css.map +1 -0
  143. package/dist/esm/components/organisms/Snackbar/Snackbar.css +1 -2
  144. package/dist/esm/components/organisms/Snackbar/Snackbar.css.map +1 -0
  145. package/dist/esm/components/types.d.ts +4 -0
  146. package/package.json +4 -5
@@ -22,11 +22,11 @@
22
22
  cursor: default;
23
23
  border: none;
24
24
  outline: none;
25
- color: var(--rlc-input-font-color);
26
- background: transparent;
25
+ background: rgba(0, 0, 0, 0);
26
+ color: var(--rls-app-color-900);
27
27
  font-weight: var(--rls-font-weight-medium);
28
- font-size: var(--rlc-input-font-size);
29
- letter-spacing: var(--rlc-input-letter-spacing);
28
+ font-size: var(--pvt-font-size);
29
+ letter-spacing: var(--pvt-letter-spacing);
30
30
  }
31
31
  .rls-field-date-range__control::placeholder {
32
32
  color: var(--rls-app-color-400);
@@ -35,7 +35,7 @@
35
35
  opacity: 0.5;
36
36
  }
37
37
  .rls-field-date-range__action {
38
- --rlc-icon-dimesion: calc(var(--pvt-action-dimension) - 2rem);
38
+ --rlc-icon-dimension: calc(var(--pvt-action-dimension) - 2rem);
39
39
  width: var(--pvt-action-dimension);
40
40
  height: var(--pvt-action-dimension);
41
41
  color: var(--rls-app-color-600);
@@ -49,4 +49,4 @@
49
49
  }
50
50
  .rls-field-date-range__action .rls-icon {
51
51
  margin: 1rem;
52
- }
52
+ } /*# sourceMappingURL=FieldDateRange.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/FieldDateRange/FieldDateRange.scss"],"names":[],"mappings":"AAOA,sBACE,kDAEA,4EAEA,6FAKA,sFAKA,kBACA,WACA,sBAEA,+BACE,kBACA,+CACA,6BACA,kCACA,aACA,eACA,YACA,aACA,yBACA,+BACA,0CACA,+BACA,yCAEA,4CACE,+BAGF,wCACE,WAIJ,8BACE,+DAEA,kCACA,mCACA,+BACA,aACA,aACA,sEACA,2EAEA,uCACE,WAGF,wCACE","file":"FieldDateRange.css"}
@@ -1,10 +1,9 @@
1
1
  .rls-field-select .rls-field-list__control {
2
2
  cursor: pointer;
3
3
  }
4
-
5
4
  .rls-field-select .rls-field-list__action {
6
5
  transition: transform 160ms 0ms var(--rls-sharp-curve);
7
6
  }
8
7
  .rls-field-select .rls-field-list__action--visible {
9
8
  transform: rotate(180deg);
10
- }
9
+ } /*# sourceMappingURL=FieldSelect.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/FieldSelect/FieldSelect.scss"],"names":[],"mappings":"AAQE,2CACE,eAGF,0CACE,sDAEA,mDACE","file":"FieldSelect.css"}
@@ -27,4 +27,4 @@
27
27
  height: var(--rls-sizing-x12);
28
28
  padding: 0rem;
29
29
  float: right;
30
- }
30
+ } /*# sourceMappingURL=FormNavigation.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/FormNavigation/FormNavigation.scss"],"names":[],"mappings":"AAOA,qBACE,eACA,yBACA,2BACA,yCACA,iBACA,YACA,+CACA,8BACA,6FAEA,sBACA,oCACA,mCACA,2CACA,yDACA,yDAEA,8BACE,yBAGF,6BACE,mCAEA,gDACE,4BACA,6BACA,aACA","file":"FormNavigation.css"}
@@ -58,4 +58,4 @@
58
58
  backdrop-filter: blur(2px);
59
59
  transition: opacity 120ms 0ms var(--rls-deceleration-curve),
60
60
  bottom 120ms 0ms var(--rls-deceleration-curve);
61
- }
61
+ } /*# sourceMappingURL=Modal.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/Modal/Modal.scss"],"names":[],"mappings":"AAOA,WACE,wDACA,6BACA,2BACA,iCACA,mCACA,0BACA,+BAEA,eACA,aACA,SACA,UACA,WACA,YACA,8BACA,kBACA,mBACA,uBAEA,qBACE,kCAGF,oBACE,oCACA,6BACA,2BACA,kDACA,4BACA,0BAEA,mBAGF,sBACE,kBACA,WACA,4CACA,mCACA,qCACA,2CACA,6BACA,uCACA,mCACA,oCACA,yCACA,gKAKF,qBACE,kBACA,cACA,SACA,UACA,WACA,kCACA,oCACA,UACA,yCACA,0BACA","file":"Modal.css"}
@@ -75,4 +75,4 @@
75
75
  }
76
76
  .rls-picker-date__actions button {
77
77
  width: 100%;
78
- }
78
+ } /*# sourceMappingURL=PickerDate.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/PickerDate/PickerDate.scss"],"names":[],"mappings":"AAOA,iBACE,kBACA,aACA,sBACA,aACA,gBACA,6BAEA,yBACE,aACA,sBACA,6BACA,6BACA,sBACA,sCACA,mCAEA,oDACE,kCACA,sBAIJ,wBACE,+BACA,kBACA,eACA,wCAEA,8BACE,iCAGF,qCACE,6BACA,kCACA,kBAGF,8BACE,6BACA,kCACA,gCACA,+BAIJ,4BACE,aACA,uBAEA,8BACE,aAIA,iDACE,cAKF,qDACE,aAKF,mDACE,cAKN,0BACE,aACA,eACA,yBACA,4FAEA,gBACA,sBAEA,kCACE,uCAGF,iCACE,uCAGF,8BACE,WAGF,iCACE","file":"PickerDate.css"}
@@ -75,4 +75,4 @@
75
75
  }
76
76
  .rls-picker-date-range__actions button {
77
77
  width: 100%;
78
- }
78
+ } /*# sourceMappingURL=PickerDateRange.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/PickerDateRange/PickerDateRange.scss"],"names":[],"mappings":"AAOA,uBACE,kBACA,aACA,sBACA,aACA,6BACA,gBAEA,+BACE,sCACA,6BACA,sBAGF,8BACE,+BACA,kBACA,eACA,wCAEA,oCACE,iCAGF,2CACE,6BACA,kCACA,kBAGF,oCACE,2DACA,6BACA,kCACA,gCACA,+BAGF,qCACE,aACA,8BAEA,0CACE,6BACA,kCACA,gCACA,+BACA,iBAKN,kCACE,aACA,uBACA,aACA,kCACA,sBAEA,oCACE,aAIA,6DACE,aAKF,2DACE,aAKF,yDACE,cAMJ,uCACE,aAIJ,gCACE,aACA,eACA,yBACA,4EACA,gBACA,sBAEA,uCACE","file":"PickerDateRange.css"}
@@ -53,9 +53,8 @@
53
53
  font-weight: var(--rls-font-weight-medium);
54
54
  letter-spacing: var(--rls-label-letter-spacing);
55
55
  }
56
-
57
56
  @media only screen and (max-width: 375px) {
58
57
  .rls-snackbar {
59
58
  width: calc(100% - var(--rls-sizing-x12));
60
59
  }
61
- }
60
+ } /*# sourceMappingURL=Snackbar.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../src/components/organisms/Snackbar/Snackbar.scss"],"names":[],"mappings":"AAOA,cACE,eACA,aACA,gCACA,YACA,mCACA,WACA,WACA,YACA,iBACA,6BACA,sBACA,mCACA,sCACA,gCACA,yDAEA,uBACE,2DAGF,sBACE,6CAEA,aACA,uBACA,mBACA,gBACA,sCACA,4BACA,6BACA,mCAEA,+CACE,yCAIJ,yBACE,aACA,sBACA,6BAGF,qBACE,gBACA,uBACA,mBACA,iCACA,oCACA,wCACA,8CAIA,yBACE,kCACA,+BACA,qCACA,0CACA,+CAKN,0CACE,cACE","file":"Snackbar.css"}
@@ -1,10 +1,14 @@
1
1
  import { ReactControl } from '@rolster/react-forms';
2
+ import { KeyboardEvent } from 'react';
2
3
  import { RlsComponent } from './definitions';
3
4
  export type RolsterControl<T = any> = ReactControl<HTMLInputElement, T> | ReactControl<HTMLInputElement, T | undefined>;
4
5
  export interface InputProps<T = any> {
5
6
  disabled?: boolean;
6
7
  formControl?: RolsterControl<T>;
7
8
  identifier?: string;
9
+ onEnter?: () => void;
10
+ onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
11
+ onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => void;
8
12
  onValue?: (value: T) => void;
9
13
  placeholder?: string;
10
14
  readOnly?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolster/react-components",
3
- "version": "18.21.27",
3
+ "version": "18.21.29",
4
4
  "type": "module",
5
5
  "description": "Package containing UI components for React Project.",
6
6
  "module": "dist/esm/index.js",
@@ -22,7 +22,7 @@
22
22
  "dev": "vite",
23
23
  "prettier": "prettier . --write",
24
24
  "clean": "rimraf ./dist",
25
- "build:css": "node-sass src/ -o dist/esm/",
25
+ "build:css": "sass src/:dist/esm/ --style=compressed",
26
26
  "prettier:css": "prettier --write dist/**/*.css --ignore-path .prettierignore",
27
27
  "build": "npm run clean && tsc -p tsconfig.app.json && npm run build:css && npm run prettier:css && rollup -c rollup.config.js",
28
28
  "test": "jest --coverage",
@@ -49,7 +49,7 @@
49
49
  "@rollup/plugin-node-resolve": "^15.2.1",
50
50
  "@rollup/plugin-typescript": "^11.1.3",
51
51
  "@rolster/rollup": "^1.0.6",
52
- "@rolster/styles-foundations": "^2.5.22",
52
+ "@rolster/styles-foundations": "^2.5.23",
53
53
  "@rolster/types": "^1.1.0",
54
54
  "@types/node-sass": "^4.11.4",
55
55
  "@types/react": "^18.0.28",
@@ -62,13 +62,12 @@
62
62
  "eslint-plugin-react-hooks": "^4.6.0",
63
63
  "eslint-plugin-react-refresh": "^0.3.4",
64
64
  "match-sorter": "^6.3.1",
65
- "node-sass": "^9.0.0",
66
65
  "object-path": "^0.11.8",
67
66
  "prettier": "^2.8.8",
68
67
  "rollup-plugin-import-css": "^3.3.1",
69
68
  "rollup-plugin-peer-deps-external": "^2.2.4",
70
69
  "rollup-plugin-swc": "^0.2.1",
71
- "sass": "^1.62.1",
70
+ "sass": "^1.89.0",
72
71
  "sort-by": "^0.0.2",
73
72
  "typescript": "^5.7.2",
74
73
  "vite": "^6.2.7"