@dxtmisha/wiki 0.24.3 → 0.25.1

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 (230) hide show
  1. package/package.json +7 -7
  2. package/src/classes/WikiStorybookItem.ts +24 -0
  3. package/src/media/descriptions/wikiDescriptions.ts +28 -0
  4. package/src/media/descriptions/wikiDescriptionsAccordion.ts +158 -0
  5. package/src/media/descriptions/wikiDescriptionsActionSheet.ts +211 -0
  6. package/src/media/descriptions/wikiDescriptionsActions.ts +161 -0
  7. package/src/media/descriptions/wikiDescriptionsAnchor.ts +42 -0
  8. package/src/media/descriptions/wikiDescriptionsArrow.ts +181 -0
  9. package/src/media/descriptions/wikiDescriptionsBlock.ts +97 -0
  10. package/src/media/descriptions/wikiDescriptionsButton.ts +0 -1
  11. package/src/media/descriptions/wikiDescriptionsCell.ts +2 -1
  12. package/src/media/descriptions/wikiDescriptionsChipGroup.ts +168 -0
  13. package/src/media/descriptions/wikiDescriptionsDialog.ts +182 -0
  14. package/src/media/descriptions/wikiDescriptionsField.ts +2 -0
  15. package/src/media/descriptions/wikiDescriptionsImage.ts +41 -6
  16. package/src/media/descriptions/wikiDescriptionsInput.ts +257 -0
  17. package/src/media/descriptions/wikiDescriptionsMenu.ts +123 -0
  18. package/src/media/descriptions/wikiDescriptionsModal.ts +145 -0
  19. package/src/media/descriptions/wikiDescriptionsMotionTransform.ts +2 -6
  20. package/src/media/descriptions/wikiDescriptionsSelect.ts +209 -0
  21. package/src/media/descriptions/wikiDescriptionsSelectValue.ts +78 -0
  22. package/src/media/descriptions/wikiDescriptionsTextareaAutosize.ts +50 -0
  23. package/src/media/descriptions/wikiDescriptionsTooltip.ts +89 -0
  24. package/src/media/functional/en/conversions.mdx +67 -0
  25. package/src/media/functional/en/dataUtils.mdx +25 -0
  26. package/src/media/functional/en/datetimeRef.mdx +1 -1
  27. package/src/media/functional/en/eventRef.mdx +1 -1
  28. package/src/media/functional/en/executionUtils.mdx +58 -0
  29. package/src/media/functional/en/geoFlagRef.mdx +1 -1
  30. package/src/media/functional/en/geoIntlRef.mdx +1 -1
  31. package/src/media/functional/en/geoRef.mdx +2 -2
  32. package/src/media/functional/en/meta.mdx +1206 -0
  33. package/src/media/functional/en/metaManager.mdx +376 -0
  34. package/src/media/functional/en/metaOg.mdx +694 -0
  35. package/src/media/functional/en/metaTwitter.mdx +853 -0
  36. package/src/media/functional/en/reactive.mdx +40 -0
  37. package/src/media/functional/en/refTypes.mdx +1 -1
  38. package/src/media/functional/en/useApiRef.mdx +5 -5
  39. package/src/media/functional/en/useMeta.mdx +431 -0
  40. package/src/media/functional/en/validationUtils.mdx +11 -0
  41. package/src/media/functional/ru/conversions.mdx +67 -0
  42. package/src/media/functional/ru/dataUtils.mdx +25 -0
  43. package/src/media/functional/ru/datetimeRef.mdx +2 -2
  44. package/src/media/functional/ru/eventRef.mdx +1 -1
  45. package/src/media/functional/ru/executionUtils.mdx +58 -0
  46. package/src/media/functional/ru/geoFlagRef.mdx +1 -1
  47. package/src/media/functional/ru/geoIntl.mdx +2 -2
  48. package/src/media/functional/ru/geoIntlRef.mdx +1 -1
  49. package/src/media/functional/ru/geoRef.mdx +2 -2
  50. package/src/media/functional/ru/listTypes.mdx +1 -1
  51. package/src/media/functional/ru/meta.mdx +1330 -0
  52. package/src/media/functional/ru/metaManager.mdx +376 -0
  53. package/src/media/functional/ru/metaOg.mdx +694 -0
  54. package/src/media/functional/ru/metaTwitter.mdx +853 -0
  55. package/src/media/functional/ru/reactive.mdx +40 -0
  56. package/src/media/functional/ru/refTypes.mdx +2 -2
  57. package/src/media/functional/ru/useApiRef.mdx +5 -5
  58. package/src/media/functional/ru/useMeta.mdx +431 -0
  59. package/src/media/functional/ru/validationUtils.mdx +11 -0
  60. package/src/media/mdx/Accordion/accordion.en.mdx +59 -0
  61. package/src/media/mdx/Accordion/accordion.ru.mdx +59 -0
  62. package/src/media/mdx/Accordion/slots.en.mdx +6 -0
  63. package/src/media/mdx/Accordion/slots.ru.mdx +6 -0
  64. package/src/media/mdx/Accordion/wikiMdxAccordion.ts +25 -0
  65. package/src/media/mdx/ActionSheet/actionSheet.en.mdx +61 -0
  66. package/src/media/mdx/ActionSheet/actionSheet.ru.mdx +61 -0
  67. package/src/media/mdx/ActionSheet/touchClose.en.mdx +21 -0
  68. package/src/media/mdx/ActionSheet/touchClose.ru.mdx +21 -0
  69. package/src/media/mdx/ActionSheet/wikiMdxActionSheet.ts +25 -0
  70. package/src/media/mdx/Actions/actions.en.mdx +48 -0
  71. package/src/media/mdx/Actions/actions.ru.mdx +48 -0
  72. package/src/media/mdx/Actions/flexible.en.mdx +19 -0
  73. package/src/media/mdx/Actions/flexible.ru.mdx +19 -0
  74. package/src/media/mdx/Actions/list.en.mdx +50 -0
  75. package/src/media/mdx/Actions/list.ru.mdx +50 -0
  76. package/src/media/mdx/Actions/wikiMdxActions.ts +31 -0
  77. package/src/media/mdx/Anchor/anchor.en.mdx +34 -0
  78. package/src/media/mdx/Anchor/anchor.ru.mdx +34 -0
  79. package/src/media/mdx/Anchor/expose.go.en.mdx +6 -0
  80. package/src/media/mdx/Anchor/expose.go.ru.mdx +6 -0
  81. package/src/media/mdx/Anchor/hide.en.mdx +28 -0
  82. package/src/media/mdx/Anchor/hide.ru.mdx +28 -0
  83. package/src/media/mdx/Anchor/isCopy.en.mdx +23 -0
  84. package/src/media/mdx/Anchor/isCopy.ru.mdx +23 -0
  85. package/src/media/mdx/Anchor/scroll.en.mdx +34 -0
  86. package/src/media/mdx/Anchor/scroll.ru.mdx +35 -0
  87. package/src/media/mdx/Anchor/wikiMdxAnchor.ts +43 -0
  88. package/src/media/mdx/Arrow/arrow.en.mdx +33 -0
  89. package/src/media/mdx/Arrow/arrow.ru.mdx +33 -0
  90. package/src/media/mdx/Arrow/wikiMdxArrow.ts +19 -0
  91. package/src/media/mdx/Block/block.en.mdx +42 -0
  92. package/src/media/mdx/Block/block.ru.mdx +42 -0
  93. package/src/media/mdx/Block/wikiMdxBlock.ts +19 -0
  94. package/src/media/mdx/ChipGroup/chipGroup.en.mdx +51 -0
  95. package/src/media/mdx/ChipGroup/chipGroup.ru.mdx +51 -0
  96. package/src/media/mdx/ChipGroup/selected.en.mdx +50 -0
  97. package/src/media/mdx/ChipGroup/selected.ru.mdx +50 -0
  98. package/src/media/mdx/ChipGroup/wikiMdxChipGroup.ts +25 -0
  99. package/src/media/mdx/Dialog/buttons.en.mdx +45 -0
  100. package/src/media/mdx/Dialog/buttons.ru.mdx +45 -0
  101. package/src/media/mdx/Dialog/dialog.en.mdx +66 -0
  102. package/src/media/mdx/Dialog/dialog.ru.mdx +65 -0
  103. package/src/media/mdx/Dialog/events.en.mdx +63 -0
  104. package/src/media/mdx/Dialog/events.ru.mdx +63 -0
  105. package/src/media/mdx/Dialog/states.en.mdx +58 -0
  106. package/src/media/mdx/Dialog/states.ru.mdx +57 -0
  107. package/src/media/mdx/Dialog/wikiMdxDialog.ts +37 -0
  108. package/src/media/mdx/Field/arrows.en.mdx +22 -6
  109. package/src/media/mdx/Field/arrows.ru.mdx +22 -6
  110. package/src/media/mdx/Field/slots.en.mdx +0 -13
  111. package/src/media/mdx/Field/slots.ru.mdx +0 -13
  112. package/src/media/mdx/Image/img-tag.en.mdx +105 -0
  113. package/src/media/mdx/Image/img-tag.ru.mdx +105 -0
  114. package/src/media/mdx/Image/wikiMdxImage.ts +6 -0
  115. package/src/media/mdx/Input/currency.en.mdx +38 -0
  116. package/src/media/mdx/Input/currency.ru.mdx +38 -0
  117. package/src/media/mdx/Input/date.en.mdx +53 -0
  118. package/src/media/mdx/Input/date.ru.mdx +53 -0
  119. package/src/media/mdx/Input/input.en.mdx +143 -0
  120. package/src/media/mdx/Input/input.ru.mdx +71 -0
  121. package/src/media/mdx/Input/mask.en.mdx +30 -0
  122. package/src/media/mdx/Input/mask.ru.mdx +30 -0
  123. package/src/media/mdx/Input/number.en.mdx +41 -0
  124. package/src/media/mdx/Input/number.ru.mdx +41 -0
  125. package/src/media/mdx/Input/type.en.mdx +26 -0
  126. package/src/media/mdx/Input/type.ru.mdx +26 -0
  127. package/src/media/mdx/Input/wikiMdxInput.ts +49 -0
  128. package/src/media/mdx/Menu/event.updateValue.en.mdx +29 -0
  129. package/src/media/mdx/Menu/event.updateValue.ru.mdx +30 -0
  130. package/src/media/mdx/Menu/expose.navigation.en.mdx +12 -0
  131. package/src/media/mdx/Menu/expose.navigation.ru.mdx +12 -0
  132. package/src/media/mdx/Menu/navigation.en.mdx +56 -0
  133. package/src/media/mdx/Menu/navigation.ru.mdx +56 -0
  134. package/src/media/mdx/Menu/slots.control.en.mdx +65 -0
  135. package/src/media/mdx/Menu/slots.control.ru.mdx +65 -0
  136. package/src/media/mdx/Menu/slots.en.mdx +2 -24
  137. package/src/media/mdx/Menu/slots.ru.mdx +2 -24
  138. package/src/media/mdx/Menu/wikiMdxMenu.ts +27 -3
  139. package/src/media/mdx/Modal/differences.en.mdx +130 -0
  140. package/src/media/mdx/Modal/differences.ru.mdx +65 -0
  141. package/src/media/mdx/Modal/modal.en.mdx +63 -0
  142. package/src/media/mdx/Modal/modal.ru.mdx +63 -0
  143. package/src/media/mdx/Modal/wikiMdxModal.ts +25 -0
  144. package/src/media/mdx/MotionTransform/expose.motionTransformElement.en.mdx +13 -0
  145. package/src/media/mdx/MotionTransform/expose.motionTransformElement.ru.mdx +14 -0
  146. package/src/media/mdx/MotionTransform/wikiMdxMotionTransform.ts +6 -0
  147. package/src/media/mdx/Select/select.en.mdx +69 -0
  148. package/src/media/mdx/Select/select.ru.mdx +69 -0
  149. package/src/media/mdx/Select/wikiMdxSelect.ts +19 -0
  150. package/src/media/mdx/SelectValue/selectValue.en.mdx +64 -0
  151. package/src/media/mdx/SelectValue/selectValue.ru.mdx +64 -0
  152. package/src/media/mdx/SelectValue/wikiMdxSelectValue.ts +19 -0
  153. package/src/media/mdx/TextareaAutosize/textarea-autosize.en.mdx +65 -0
  154. package/src/media/mdx/TextareaAutosize/textarea-autosize.ru.mdx +65 -0
  155. package/src/media/mdx/TextareaAutosize/wikiMdxTextareaAutosize.ts +19 -0
  156. package/src/media/mdx/Tooltip/event.tooltip.en.mdx +7 -0
  157. package/src/media/mdx/Tooltip/event.tooltip.ru.mdx +8 -0
  158. package/src/media/mdx/Tooltip/slot.control.en.mdx +14 -0
  159. package/src/media/mdx/Tooltip/slot.control.ru.mdx +14 -0
  160. package/src/media/mdx/Tooltip/tooltip.en.mdx +34 -0
  161. package/src/media/mdx/Tooltip/tooltip.ru.mdx +34 -0
  162. package/src/media/mdx/Tooltip/wikiMdxTooltip.ts +31 -0
  163. package/src/media/mdx/Window/classes.ru.mdx +1 -1
  164. package/src/media/mdx/event/events.actions.en.mdx +44 -0
  165. package/src/media/mdx/event/events.actions.ru.mdx +44 -0
  166. package/src/media/mdx/event/events.inputStandard.en.mdx +6 -0
  167. package/src/media/mdx/event/events.inputStandard.ru.mdx +6 -0
  168. package/src/media/mdx/event/wikiMdxEvent.ts +20 -8
  169. package/src/media/mdx/expose/expose.descriptionId.en.mdx +6 -0
  170. package/src/media/mdx/expose/expose.descriptionId.ru.mdx +6 -0
  171. package/src/media/mdx/expose/expose.id.en.mdx +6 -0
  172. package/src/media/mdx/expose/expose.id.ru.mdx +6 -0
  173. package/src/media/mdx/expose/expose.labelId.en.mdx +6 -0
  174. package/src/media/mdx/expose/expose.labelId.ru.mdx +6 -0
  175. package/src/media/mdx/expose/wikiMdxExpose.ts +18 -0
  176. package/src/media/mdx/slot/body.en.mdx +6 -0
  177. package/src/media/mdx/slot/body.ru.mdx +6 -0
  178. package/src/media/mdx/slot/headline.en.mdx +7 -0
  179. package/src/media/mdx/slot/headline.ru.mdx +6 -0
  180. package/src/media/mdx/slot/leading.en.mdx +7 -0
  181. package/src/media/mdx/slot/leading.ru.mdx +7 -0
  182. package/src/media/mdx/slot/secondary.en.mdx +5 -0
  183. package/src/media/mdx/slot/secondary.ru.mdx +5 -0
  184. package/src/media/mdx/slot/trailing.en.mdx +7 -0
  185. package/src/media/mdx/slot/trailing.ru.mdx +7 -0
  186. package/src/media/mdx/slot/wikiMdxSlot.ts +30 -0
  187. package/src/media/mdx/style/isSkeleton.en.mdx +2 -2
  188. package/src/media/mdx/style/isSkeleton.ru.mdx +2 -2
  189. package/src/media/mdx/value/v-model-selected.en.mdx +28 -0
  190. package/src/media/mdx/value/v-model-selected.ru.mdx +28 -0
  191. package/src/media/mdx/value/v-model.en.mdx +26 -0
  192. package/src/media/mdx/value/v-model.ru.mdx +26 -0
  193. package/src/media/mdx/value/wikiMdxValue.ts +24 -3
  194. package/src/media/mdx/wikiMdx.ts +29 -1
  195. package/src/media/props/wiki.ts +42 -0
  196. package/src/media/props/wikiActions.ts +43 -0
  197. package/src/media/props/wikiActionsInclude.ts +62 -0
  198. package/src/media/props/wikiAnchor.ts +84 -0
  199. package/src/media/props/wikiAria.ts +102 -0
  200. package/src/media/props/wikiArrow.ts +24 -0
  201. package/src/media/props/wikiArrowInclude.ts +45 -0
  202. package/src/media/props/wikiBarsInclude.ts +80 -0
  203. package/src/media/props/wikiChipGroup.ts +39 -0
  204. package/src/media/props/wikiDialog.ts +34 -0
  205. package/src/media/props/wikiField.ts +0 -21
  206. package/src/media/props/wikiFieldCounterInclude.ts +78 -0
  207. package/src/media/props/wikiForm.ts +248 -0
  208. package/src/media/props/wikiHook.ts +20 -0
  209. package/src/media/props/wikiIcon.ts +3 -3
  210. package/src/media/props/wikiIconInclude.ts +319 -0
  211. package/src/media/props/wikiImage.ts +71 -19
  212. package/src/media/props/wikiInformation.ts +160 -0
  213. package/src/media/props/wikiInput.ts +34 -0
  214. package/src/media/props/wikiListItem.ts +20 -0
  215. package/src/media/props/wikiMask.ts +0 -10
  216. package/src/media/props/wikiMaskInclude.ts +54 -0
  217. package/src/media/props/wikiMenu.ts +0 -10
  218. package/src/media/props/wikiMotionTransform.ts +0 -10
  219. package/src/media/props/wikiOption.ts +113 -0
  220. package/src/media/props/wikiSelect.ts +68 -0
  221. package/src/media/props/wikiSelectValue.ts +30 -0
  222. package/src/media/props/wikiStatus.ts +29 -41
  223. package/src/media/props/wikiStyle.ts +154 -243
  224. package/src/media/props/wikiTechnical.ts +65 -0
  225. package/src/media/props/wikiText.ts +57 -0
  226. package/src/media/props/wikiTooltip.ts +53 -0
  227. package/src/media/props/wikiValue.ts +14 -203
  228. package/src/media/props/wikiWindow.ts +0 -31
  229. package/src/styles/storybookStyle.scss +3 -1
  230. package/src/types/storybookTypes.ts +26 -4
@@ -0,0 +1,89 @@
1
+ import type { StorybookComponentsDescriptionItem } from '../../types/storybookTypes'
2
+
3
+ /**
4
+ * Descriptions for Tooltip component properties
5
+ *
6
+ * Описания свойств компонента Tooltip
7
+ */
8
+ export const wikiDescriptionsTooltip: StorybookComponentsDescriptionItem = {
9
+ name: 'Tooltip',
10
+ description: {
11
+ en: 'Component for displaying a popup hint when hovering over an element',
12
+ ru: 'Компонент для отображения всплывающей подсказки при наведении на элемент'
13
+ },
14
+ possibilities: {
15
+ en: [
16
+ 'displaying text or other content in a popup window',
17
+ 'automatic positioning relative to the element',
18
+ 'support for delay before showing and hiding',
19
+ 'customizable indentation and padding',
20
+ 'ability to control the open state',
21
+ 'support for an arrow pointing to the element'
22
+ ],
23
+ ru: [
24
+ 'отображение текста или другого контента во всплывающем окне',
25
+ 'автоматическое позиционирование относительно элемента',
26
+ 'поддержка задержки перед показом и скрытием',
27
+ 'настраиваемые отступы и поля',
28
+ 'возможность управления состоянием открытия',
29
+ 'поддержка стрелки, указывающей на элемент'
30
+ ]
31
+ },
32
+ import: [],
33
+ render: `
34
+ <DesignComponent v-bind="args">
35
+ <template #control="{ binds }">
36
+ <span v-bind="binds">
37
+ Hover me
38
+ </span>
39
+ </template>
40
+ </DesignComponent>
41
+ `,
42
+ stories: [
43
+ {
44
+ id: 'TooltipAllSlots',
45
+ name: {
46
+ en: 'All slots demonstration',
47
+ ru: 'Демонстрация всех слотов'
48
+ },
49
+ template: `
50
+ <DesignComponent>
51
+ <template #control="{ binds }">
52
+ <button class="wiki-storybook-button" v-bind="binds">
53
+ Hover me (All Slots)
54
+ </button>
55
+ </template>
56
+
57
+ <template #default>
58
+ Default Slot
59
+ </template>
60
+
61
+ <template #description>
62
+ Description Slot
63
+ </template>
64
+
65
+ <template #body>
66
+ <div class="wiki-storybook-item--padding">
67
+ Body Slot Content
68
+ </div>
69
+ </template>
70
+ </DesignComponent>
71
+ `
72
+ }
73
+ ],
74
+ documentation: {
75
+ body: `
76
+ <StorybookDescriptions componentName={'Tooltip'} type={'tooltip'}/>
77
+ `,
78
+ events: `
79
+ <StorybookDescriptions componentName={'Tooltip'} type={'event.tooltip'}/>
80
+ `,
81
+ slots: `
82
+ <Canvas of={Component.TooltipAllSlots}/>
83
+ <StorybookDescriptions componentName={'Tooltip'} type={'slot.control'}/>
84
+ <StorybookDescriptions componentName={'Slot'} type={'default'}/>
85
+ <StorybookDescriptions componentName={'Slot'} type={'description'}/>
86
+ <StorybookDescriptions componentName={'Slot'} type={'body'}/>
87
+ `
88
+ }
89
+ }
@@ -45,6 +45,42 @@ applyTemplate('This is [bold]bold text[/bold]', { bold: '<b>[content]</b>' }) //
45
45
  applyTemplate('Text with [red]colored[/red] word', { red: '<span style="color:red">[content]</span>' })
46
46
  ```
47
47
 
48
+ ## `blobToBase64`
49
+
50
+ Converts a Blob to a Base64 string (data URL).
51
+
52
+ **Parameters:**
53
+ - `blob: Blob` — Blob object to convert
54
+
55
+ ```javascript
56
+ import { blobToBase64 } from '@dxtmisha/functional'
57
+
58
+ const blob = new Blob(['Hello World'], { type: 'text/plain' })
59
+ const base64 = await blobToBase64(blob)
60
+ // 'data:text/plain;base64,SGVsbG8gV29ybGQ='
61
+
62
+ // Using with images
63
+ const imageBlob = new Blob([imageData], { type: 'image/png' })
64
+ const imageBase64 = await blobToBase64(imageBlob)
65
+ // 'data:image/png;base64,iVBORw0KGgo...'
66
+ ```
67
+
68
+
69
+ ## `encodeAttribute`
70
+
71
+ Encodes special characters in a string for safe use in HTML attributes. Converts characters `&`, `<`, `>`, `"`, `'` into corresponding HTML entities to prevent XSS attacks and ensure correct display.
72
+
73
+ **Parameters:**
74
+ - `text: string` — text to encode
75
+
76
+ ```javascript
77
+ import { encodeAttribute } from '@dxtmisha/functional'
78
+
79
+ encodeAttribute('Hello & "World"') // 'Hello &amp; &quot;World&quot;'
80
+ encodeAttribute('<script>alert("XSS")</script>') // '&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;'
81
+ encodeAttribute("It's a test") // 'It&#39;s a test'
82
+ ```
83
+
48
84
  ## `replaceRecursive`
49
85
 
50
86
  Recursively replaces values in an object or array.
@@ -78,6 +114,37 @@ replaceTemplate('User [id]: [name]', {id: '123', name: 'John'}) // 'User 123: Jo
78
114
  replaceTemplate('Time: [time]', {time: () => new Date().toLocaleString()}) // with function
79
115
  ```
80
116
 
117
+ ## `resizeImageByMax`
118
+
119
+ Resizes an image to fit within a maximum size constraint.
120
+
121
+ **Parameters:**
122
+ - `image: HTMLImageElement | string` — image element or URL
123
+ - `maxSize: number` — maximum size for width or height
124
+ - `type: 'auto' | 'width' | 'height'` — resize type (default 'auto')
125
+ - `typeData?: string` — data type for the resulting image (e.g., 'image/png', 'image/jpeg')
126
+
127
+ ```javascript
128
+ import { resizeImageByMax } from '@dxtmisha/functional'
129
+
130
+ // Automatic scaling (by larger dimension)
131
+ const image = document.querySelector('img')
132
+ const resized = resizeImageByMax(image, 800) // data URL
133
+ // Image 1200x800 becomes 800x533
134
+
135
+ // Scale by width
136
+ resizeImageByMax(image, 600, 'width')
137
+ // Width will be 600px, height proportional
138
+
139
+ // Scale by height
140
+ resizeImageByMax(image, 400, 'height')
141
+ // Height will be 400px, width proportional
142
+
143
+ // With specified data type
144
+ resizeImageByMax(image, 1024, 'auto', 'image/jpeg')
145
+ // Returns JPEG data URL
146
+ ```
147
+
81
148
  ## `secondToTime`
82
149
 
83
150
  Converts seconds to time format (hours:minutes:seconds).
@@ -37,6 +37,31 @@ const copy = copyObject(original)
37
37
  copy.data.age = 25 // original.data.age remains 30
38
38
  ```
39
39
 
40
+ ## `copyObjectLite`
41
+
42
+ Creates a shallow copy of a simple object. If the `source` parameter is passed, creates a new object and merges `value` and `source`.
43
+
44
+ **Parameters:**
45
+ - `value: T` — object to copy
46
+ - `source?: any` — additional properties to copy (optional)
47
+
48
+ ```javascript
49
+ import { copyObjectLite } from '@dxtmisha/functional'
50
+
51
+ const original = { name: 'John', age: 30 }
52
+ const copy = copyObjectLite(original) // { name: 'John', age: 30 }
53
+
54
+ // With additional properties
55
+ const extended = copyObjectLite(original, { city: 'Moscow' })
56
+ // { name: 'John', age: 30, city: 'Moscow' }
57
+
58
+ // Overriding properties
59
+ const overridden = copyObjectLite(original, { age: 25 })
60
+ // { name: 'John', age: 25 }
61
+ ```
62
+
63
+ **Note:** This is a shallow copy — nested objects retain references to the originals. For deep cloning use `copyObject`, `structuredClone` or `_.cloneDeep`.
64
+
40
65
  ## `forEach`
41
66
 
42
67
  Universal iteration function for arrays, objects and Map.
@@ -228,7 +228,7 @@ const withoutTz = datetime.standard(false)
228
228
 
229
229
  ### Vue Component with Reactive Date
230
230
 
231
- ```vue
231
+ ```html
232
232
  <template>
233
233
  <div>
234
234
  <span>{{ datetime.getYear() }}/{{ datetime.getMonth() + 1 }}/{{ datetime.getDay() }}</span>
@@ -259,7 +259,7 @@ const eventRef = new EventRef(buttonRef, containerRef, 'click')
259
259
 
260
260
  ### Vue Component with Reactive Events
261
261
 
262
- ```vue
262
+ ```html
263
263
  <template>
264
264
  <button ref="buttonEl" @click="handleClick">Click me</button>
265
265
  <input ref="inputEl" placeholder="Type...">
@@ -6,6 +6,62 @@ import {Meta} from '@storybook/addon-docs/blocks'
6
6
 
7
7
  A set of functions for universal execution of synchronous and asynchronous operations.
8
8
 
9
+ ## `computedByLanguage`
10
+
11
+ Creates a reactive computed property whose value depends on the current language and specified conditions.
12
+
13
+ **Parameters:**
14
+ - `getter: ComputedGetter<R>` — function that returns the main value depending on the language
15
+ - `getterNone: R | (() => R)` — alternative value if conditions are not met or getter returns undefined (default undefined)
16
+ - `conditions: () => boolean` — condition for calling the main getter (optional)
17
+ - `debugOptions: DebuggerOptions` — Vue debug options (optional)
18
+
19
+ ```javascript
20
+ import { computedByLanguage } from '@dxtmisha/functional'
21
+ import { ref } from 'vue'
22
+
23
+ // Simple example with translations
24
+ const title = computedByLanguage(
25
+ () => {
26
+ const lang = GeoRef.get().value
27
+ return lang === 'ru' ? 'Заголовок' : 'Title'
28
+ },
29
+ 'Default Title'
30
+ )
31
+
32
+ // With condition
33
+ const description = computedByLanguage(
34
+ () => {
35
+ const lang = GeoRef.get().value
36
+ const translations = {
37
+ ru: 'Описание на русском',
38
+ en: 'Description in English'
39
+ }
40
+ return translations[lang]
41
+ },
42
+ () => 'Default description',
43
+ () => showDescription.value // show condition
44
+ )
45
+
46
+ // Usage in component
47
+ export default {
48
+ setup() {
49
+ const showText = ref(true)
50
+
51
+ const greeting = computedByLanguage(
52
+ () => {
53
+ const lang = GeoRef.get().value
54
+ return lang === 'ru' ? 'Привет, мир!' : 'Hello, world!'
55
+ },
56
+ 'Greeting',
57
+ () => showText.value
58
+ )
59
+
60
+ return { greeting }
61
+ }
62
+ }
63
+ ```
64
+
9
65
  ## `executeFunction`
10
66
 
11
67
  Executes a function and returns its result, or returns input data if it's not a function.
@@ -127,3 +183,5 @@ export default {
127
183
  }
128
184
  }
129
185
  ```
186
+
187
+
@@ -162,7 +162,7 @@ countryCode.value = 'ru-RU'
162
162
 
163
163
  ### Vue Component with Country Flags
164
164
 
165
- ```vue
165
+ ```html
166
166
  <template>
167
167
  <div class="country-selector">
168
168
  <div class="current-country">
@@ -291,7 +291,7 @@ const daysList = intl.weekdays('long')
291
291
 
292
292
  ### Vue Component with Localization
293
293
 
294
- ```vue
294
+ ```html
295
295
  <template>
296
296
  <div class="localized-content">
297
297
  <h2>{{ intl.countryName('US') }}</h2>
@@ -141,7 +141,7 @@ const flag = new GeoFlagRef() // will use de-DE
141
141
 
142
142
  ### Vue Component with Global Geolocation
143
143
 
144
- ```vue
144
+ ```html
145
145
  <template>
146
146
  <div class="geo-info">
147
147
  <h2>Current Location</h2>
@@ -202,7 +202,7 @@ GeoRef.set(userLocale)
202
202
 
203
203
  ### Global Locale Provider
204
204
 
205
- ```vue
205
+ ```html
206
206
  <!-- App.vue -->
207
207
  <template>
208
208
  <div class="app">