@nexdom/uimed-vue 2.0.0-beta.8 → 2.0.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 (222) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.js +7 -0
  3. package/dist/components/app-bar/app-bar.js +5 -0
  4. package/dist/components/app-bar/app-bar.vue_vue_type_script_setup_true_lang.js +286 -0
  5. package/dist/components/app-bar/types.d.ts +96 -0
  6. package/dist/components/button/button.js +5 -0
  7. package/dist/components/button/button.vue.d.ts +31 -0
  8. package/dist/components/button/button.vue_vue_type_script_setup_true_lang.js +97 -0
  9. package/dist/components/button/types.d.ts +65 -0
  10. package/dist/components/data-sets/data-set/data-set.js +5 -0
  11. package/dist/components/data-sets/data-set/data-set.vue.d.ts +47 -0
  12. package/dist/components/data-sets/data-set/data-set.vue_vue_type_script_setup_true_lang.js +157 -0
  13. package/dist/components/data-sets/data-set/types.d.ts +93 -0
  14. package/dist/components/data-sets/data-set-bar.js +5 -0
  15. package/dist/components/data-sets/data-set-bar.vue_vue_type_script_setup_true_lang.js +99 -0
  16. package/dist/components/data-sets/data-set-item/data-set-item.js +5 -0
  17. package/dist/components/data-sets/data-set-item/data-set-item.vue.d.ts +35 -0
  18. package/dist/components/data-sets/data-set-item/data-set-item.vue_vue_type_script_setup_true_lang.js +57 -0
  19. package/dist/components/data-sets/data-set-item/types.d.ts +42 -0
  20. package/dist/components/details/details.js +5 -0
  21. package/dist/components/details/details.vue.d.ts +28 -0
  22. package/dist/components/details/details.vue_vue_type_script_setup_true_lang.js +56 -0
  23. package/dist/components/details/types.d.ts +29 -0
  24. package/dist/components/dialogs/dialog/dialog-host-key.js +10 -0
  25. package/dist/components/dialogs/dialog/dialog.js +5 -0
  26. package/dist/components/dialogs/dialog/dialog.vue.d.ts +36 -0
  27. package/dist/components/dialogs/dialog/dialog.vue_vue_type_script_setup_true_lang.js +112 -0
  28. package/dist/components/dialogs/dialog/types.d.ts +47 -0
  29. package/dist/components/dialogs/dialog-host.js +5 -0
  30. package/dist/components/dialogs/dialog-host.vue_vue_type_script_setup_true_lang.js +81 -0
  31. package/dist/components/dialogs/toast.js +5 -0
  32. package/dist/components/dialogs/toast.vue_vue_type_script_setup_true_lang.js +35 -0
  33. package/dist/components/footer/footer.js +5 -0
  34. package/dist/components/footer/footer.vue_vue_type_script_setup_true_lang.js +31 -0
  35. package/dist/components/footer/types.d.ts +16 -0
  36. package/dist/components/form/form.js +5 -0
  37. package/dist/components/form/form.vue.d.ts +32 -0
  38. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +37 -0
  39. package/dist/components/form/types.d.ts +15 -0
  40. package/dist/components/grid/column/column.js +5 -0
  41. package/dist/components/grid/column/column.vue.d.ts +33 -0
  42. package/dist/components/grid/column/column.vue_vue_type_script_setup_true_lang.js +45 -0
  43. package/dist/components/grid/column/types.d.ts +27 -0
  44. package/dist/components/grid/container/container.js +5 -0
  45. package/dist/components/grid/container/container.vue.d.ts +27 -0
  46. package/dist/components/grid/container/container.vue_vue_type_script_setup_true_lang.js +33 -0
  47. package/dist/components/grid/container/types.d.ts +17 -0
  48. package/dist/components/grid/row/row.js +5 -0
  49. package/dist/components/grid/row/row.vue.d.ts +29 -0
  50. package/dist/components/grid/row/row.vue_vue_type_script_setup_true_lang.js +61 -0
  51. package/dist/components/grid/row/types.d.ts +63 -0
  52. package/dist/components/icon-button/icon-button.js +5 -0
  53. package/dist/components/icon-button/icon-button.vue.d.ts +23 -0
  54. package/dist/components/icon-button/icon-button.vue_vue_type_script_setup_true_lang.js +51 -0
  55. package/dist/components/icon-button/types.d.ts +32 -0
  56. package/dist/components/img/img.js +5 -0
  57. package/dist/components/img/img.vue.d.ts +23 -0
  58. package/dist/components/img/img.vue_vue_type_script_setup_true_lang.js +61 -0
  59. package/dist/components/img/types.d.ts +43 -0
  60. package/dist/components/inputs/autocomplete-field/autocomplete-field.js +5 -0
  61. package/dist/components/inputs/autocomplete-field/autocomplete-field.vue.d.ts +33 -0
  62. package/dist/components/inputs/autocomplete-field/autocomplete-field.vue_vue_type_script_setup_true_lang.js +161 -0
  63. package/dist/components/inputs/autocomplete-field/types.d.ts +84 -0
  64. package/dist/components/inputs/checkbox/checkbox.js +5 -0
  65. package/dist/components/inputs/checkbox/checkbox.vue.d.ts +33 -0
  66. package/dist/components/inputs/checkbox/checkbox.vue_vue_type_script_setup_true_lang.js +71 -0
  67. package/dist/components/inputs/checkbox/types.d.ts +35 -0
  68. package/dist/components/inputs/date-time-field/date-time-field.js +5 -0
  69. package/dist/components/inputs/date-time-field/date-time-field.vue.d.ts +32 -0
  70. package/dist/components/inputs/date-time-field/date-time-field.vue_vue_type_script_setup_true_lang.js +205 -0
  71. package/dist/components/inputs/date-time-field/types.d.ts +84 -0
  72. package/dist/components/inputs/field-loader.js +5 -0
  73. package/dist/components/inputs/field-loader.vue_vue_type_script_setup_true_lang.js +30 -0
  74. package/dist/components/inputs/mask-field/mask-field.js +5 -0
  75. package/dist/components/inputs/mask-field/mask-field.vue.d.ts +32 -0
  76. package/dist/components/inputs/mask-field/mask-field.vue_vue_type_script_setup_true_lang.js +120 -0
  77. package/dist/components/inputs/mask-field/types.d.ts +118 -0
  78. package/dist/components/inputs/text-field/text-field.js +5 -0
  79. package/dist/components/inputs/text-field/text-field.vue.d.ts +30 -0
  80. package/dist/components/inputs/text-field/text-field.vue_vue_type_script_setup_true_lang.js +119 -0
  81. package/dist/components/inputs/text-field/types.d.ts +70 -0
  82. package/dist/components/link/link.js +5 -0
  83. package/dist/components/link/link.vue.d.ts +27 -0
  84. package/dist/components/link/link.vue_vue_type_script_setup_true_lang.js +32 -0
  85. package/dist/components/link/types.d.ts +18 -0
  86. package/dist/components/main/main.js +5 -0
  87. package/dist/components/main/main.vue.d.ts +33 -0
  88. package/dist/components/main/main.vue_vue_type_script_setup_true_lang.js +104 -0
  89. package/dist/components/main/types.d.ts +75 -0
  90. package/dist/components/navigation-menu/navigation-menu.js +5 -0
  91. package/dist/components/navigation-menu/navigation-menu.vue_vue_type_script_setup_true_lang.js +207 -0
  92. package/dist/components/navigation-menu/types.d.ts +62 -0
  93. package/dist/components/page-transition/page-transition.js +5 -0
  94. package/dist/components/page-transition/page-transition.vue.d.ts +40 -0
  95. package/dist/components/page-transition/page-transition.vue_vue_type_script_setup_true_lang.js +27 -0
  96. package/dist/components/page-transition/types.d.ts +18 -0
  97. package/dist/components/sections/section/section.js +5 -0
  98. package/dist/components/sections/section/section.vue.d.ts +28 -0
  99. package/dist/components/sections/section/section.vue_vue_type_script_setup_true_lang.js +108 -0
  100. package/dist/components/sections/section/types.d.ts +80 -0
  101. package/dist/components/sections/section-content/section-content.js +5 -0
  102. package/dist/components/sections/section-content/section-content.vue.d.ts +27 -0
  103. package/dist/components/sections/section-content/section-content.vue_vue_type_script_setup_true_lang.js +16 -0
  104. package/dist/components/skeleton-loader/skeleton-loader.js +5 -0
  105. package/dist/components/skeleton-loader/skeleton-loader.vue_vue_type_script_setup_true_lang.js +65 -0
  106. package/dist/components/table/table.js +5 -0
  107. package/dist/components/table/table.vue.d.ts +19 -0
  108. package/dist/components/table/table.vue_vue_type_script_setup_true_lang.js +84 -0
  109. package/dist/components/table/types.d.ts +51 -0
  110. package/dist/components.d.ts +23 -940
  111. package/dist/components.js +23 -1254
  112. package/dist/composables/alignment/alignment.js +41 -0
  113. package/dist/composables/alignment/types.d.ts +12 -0
  114. package/dist/composables/button/button.js +54 -0
  115. package/dist/composables/colors/constants.js +27 -0
  116. package/dist/composables/colors/types.d.ts +4 -0
  117. package/dist/composables/colors/use-vuetify-background-color.js +16 -0
  118. package/dist/composables/colors/use-vuetify-color.js +11 -0
  119. package/dist/composables/colors/use-vuetify-text-color.js +12 -0
  120. package/dist/composables/data-set/data-set.js +128 -0
  121. package/dist/composables/dialogs/types.d.ts +88 -0
  122. package/dist/composables/dialogs/use-confirm.d.ts +21 -0
  123. package/dist/composables/dialogs/use-confirm.js +55 -0
  124. package/dist/composables/dialogs/use-decorative-timer.js +25 -0
  125. package/dist/composables/dialogs/use-dialog-focus.js +64 -0
  126. package/dist/composables/dialogs/use-dialog-loading.js +13 -0
  127. package/dist/composables/dialogs/use-dialog.d.ts +36 -0
  128. package/dist/composables/dialogs/use-dialog.js +73 -0
  129. package/dist/composables/dialogs/use-run-or-toast.d.ts +27 -0
  130. package/dist/composables/dialogs/use-run-or-toast.js +65 -0
  131. package/dist/composables/dialogs/use-toast.d.ts +25 -0
  132. package/dist/composables/dialogs/use-toast.js +39 -0
  133. package/dist/composables/dimensions/dimensions.js +18 -0
  134. package/dist/composables/inputs/autocomplete-field.js +39 -0
  135. package/dist/composables/inputs/date-time-field.js +109 -0
  136. package/dist/composables/inputs/fields.js +28 -0
  137. package/dist/composables/inputs/mask-field.js +133 -0
  138. package/dist/composables/inputs/rules.js +16 -0
  139. package/dist/composables/inputs/text-field.js +81 -0
  140. package/dist/composables/navigation/types.d.ts +54 -0
  141. package/dist/composables/navigation/use-navigation-rail.js +163 -0
  142. package/dist/composables/navigation/use-navigation-search-shortcut.js +96 -0
  143. package/dist/composables/navigation/use-route-props.js +21 -0
  144. package/dist/composables/navigation/use-unsaved-changes.d.ts +35 -0
  145. package/dist/composables/navigation/use-unsaved-changes.js +88 -0
  146. package/dist/composables/section/section.js +34 -0
  147. package/dist/composables.d.ts +6 -67
  148. package/dist/composables.js +6 -65
  149. package/dist/consts/icons.d.ts +67 -0
  150. package/dist/consts/icons.js +69 -0
  151. package/dist/consts/locale.js +12 -0
  152. package/dist/consts/types.d.ts +12 -0
  153. package/dist/index.d.ts +1 -13
  154. package/dist/index.js +39 -14
  155. package/dist/plugins.d.ts +15 -4
  156. package/dist/plugins.js +54 -3
  157. package/dist/styles/fonts/UnimedSlab-Regular.woff2 +0 -0
  158. package/dist/styles/fonts/fonts.css +5 -0
  159. package/dist/styles/settings.scss +155 -0
  160. package/dist/unit-test.js +11 -7
  161. package/package.json +11 -11
  162. package/skills/uimed-vue/SKILL.md +113 -0
  163. package/skills/uimed-vue/references/api/components/autocomplete-field.md +45 -0
  164. package/skills/uimed-vue/references/api/components/button.md +48 -0
  165. package/skills/uimed-vue/references/api/components/checkbox.md +36 -0
  166. package/skills/uimed-vue/references/api/components/data-sets/data-set-item.md +61 -0
  167. package/skills/uimed-vue/references/api/components/data-sets/data-set.md +67 -0
  168. package/skills/uimed-vue/references/api/components/date-time-field.md +44 -0
  169. package/skills/uimed-vue/references/api/components/details.md +33 -0
  170. package/skills/uimed-vue/references/api/components/dialog.md +70 -0
  171. package/skills/uimed-vue/references/api/components/form.md +43 -0
  172. package/skills/uimed-vue/references/api/components/grid/column.md +41 -0
  173. package/skills/uimed-vue/references/api/components/grid/container.md +32 -0
  174. package/skills/uimed-vue/references/api/components/grid/row.md +37 -0
  175. package/skills/uimed-vue/references/api/components/icon-button.md +37 -0
  176. package/skills/uimed-vue/references/api/components/img.md +34 -0
  177. package/skills/uimed-vue/references/api/components/link.md +31 -0
  178. package/skills/uimed-vue/references/api/components/main.md +174 -0
  179. package/skills/uimed-vue/references/api/components/mask-field.md +60 -0
  180. package/skills/uimed-vue/references/api/components/page-transition.md +37 -0
  181. package/skills/uimed-vue/references/api/components/sections/section-content.md +23 -0
  182. package/skills/uimed-vue/references/api/components/sections/section.md +61 -0
  183. package/skills/uimed-vue/references/api/components/table.md +35 -0
  184. package/skills/uimed-vue/references/api/components/text-field.md +42 -0
  185. package/skills/uimed-vue/references/api/composables/use-confirm.md +96 -0
  186. package/skills/uimed-vue/references/api/composables/use-dialog.md +95 -0
  187. package/skills/uimed-vue/references/api/composables/use-run-or-toast.md +58 -0
  188. package/skills/uimed-vue/references/api/composables/use-toast.md +48 -0
  189. package/skills/uimed-vue/references/api/composables/use-unsaved-changes.md +106 -0
  190. package/skills/uimed-vue/references/api/index.md +1 -0
  191. package/skills/uimed-vue/references/guide/components/autocomplete-field.md +256 -0
  192. package/skills/uimed-vue/references/guide/components/button.md +155 -0
  193. package/skills/uimed-vue/references/guide/components/checkbox.md +113 -0
  194. package/skills/uimed-vue/references/guide/components/data-set.md +370 -0
  195. package/skills/uimed-vue/references/guide/components/date-time-field.md +202 -0
  196. package/skills/uimed-vue/references/guide/components/details.md +76 -0
  197. package/skills/uimed-vue/references/guide/components/dialog.md +269 -0
  198. package/skills/uimed-vue/references/guide/components/form.md +96 -0
  199. package/skills/uimed-vue/references/guide/components/icon-button.md +76 -0
  200. package/skills/uimed-vue/references/guide/components/img.md +128 -0
  201. package/skills/uimed-vue/references/guide/components/layout.md +323 -0
  202. package/skills/uimed-vue/references/guide/components/link.md +47 -0
  203. package/skills/uimed-vue/references/guide/components/main.md +435 -0
  204. package/skills/uimed-vue/references/guide/components/mask-field.md +256 -0
  205. package/skills/uimed-vue/references/guide/components/page-transition.md +111 -0
  206. package/skills/uimed-vue/references/guide/components/section.md +232 -0
  207. package/skills/uimed-vue/references/guide/components/table.md +102 -0
  208. package/skills/uimed-vue/references/guide/components/text-field.md +172 -0
  209. package/skills/uimed-vue/references/guide/composables/use-confirm.md +123 -0
  210. package/skills/uimed-vue/references/guide/composables/use-dialog.md +102 -0
  211. package/skills/uimed-vue/references/guide/composables/use-run-or-toast.md +55 -0
  212. package/skills/uimed-vue/references/guide/composables/use-toast.md +57 -0
  213. package/skills/uimed-vue/references/guide/composables/use-unsaved-changes.md +129 -0
  214. package/skills/uimed-vue/references/guide/getting-started.md +135 -0
  215. package/skills/uimed-vue/references/guide/icons.md +71 -0
  216. package/skills/uimed-vue/references/guide/index.md +51 -0
  217. package/skills/uimed-vue/references/guide/migration-v1-to-v2.md +191 -0
  218. package/skills/uimed-vue/references/guide/unit-testing.md +85 -0
  219. package/AGENTS.md +0 -160
  220. package/CLAUDE.md +0 -1
  221. package/dist/types-BPXXtbmW.d.ts +0 -5
  222. package/dist/use-toast-CACuYhK_.js +0 -53
@@ -0,0 +1,323 @@
1
+ # Componentes para layout
2
+
3
+ O layout do UIMed-Vue é baseado no [Grid system do Bootstrap](https://getbootstrap.com/docs/4.0/layout/grid/), dividindo cada linha em 12 colunas.
4
+
5
+ Os componentes que implementam esse _grid system_ são:
6
+
7
+ | Componente | Descrição |
8
+ | ----------- | ------------------------------------------------------------------------------------- |
9
+ | `Container` | componente central que agrupa diversas linhas. |
10
+ | `Row` | componente secundário, para linhas, que agrupa diversas colunas. |
11
+ | `Column` | componente secundário, para colunas, que gerencia o conteúdo final a ser apresentado. |
12
+
13
+ ## Container, Linhas e colunas
14
+
15
+ O `Container` encapsula diversas linhas, chamadas de `Row`, e esta agrupa diversas colunas, chamadas de `Column`.
16
+
17
+ Cada coluna é capaz de ajustar o seu próprio tamanho para ocupar um determinado número de colunas, dentre as 12 disponíveis na linha inteira.
18
+
19
+ ### Uso
20
+
21
+ ```vue
22
+ <template>
23
+ <u-main>
24
+ <u-container>
25
+ <u-row>
26
+ <u-column cols="auto">
27
+ <div style="background: lightgreen;">
28
+ <p>Linha 1 / Coluna 1</p>
29
+ <p>
30
+ <small>Tamanho <code>"auto"</code></small>
31
+ </p>
32
+ </div>
33
+ </u-column>
34
+ <u-column>
35
+ <div style="background: lightgreen;">
36
+ <p>Linha 2 / Coluna 1</p>
37
+ <p>
38
+ <small>Tamanho <code>"default"</code> (<code>"12"</code>)</small>
39
+ </p>
40
+ </div>
41
+ </u-column>
42
+ </u-row>
43
+ <u-row>
44
+ <u-column cols="6">
45
+ <div style="background: lightgreen;">
46
+ <p>Linha 3 / Coluna 1</p>
47
+ <p>
48
+ <small>Tamanho <code>"6"</code></small>
49
+ </p>
50
+ </div>
51
+ </u-column>
52
+ <u-column cols="6">
53
+ <div style="background: lightgreen;">
54
+ <p>Linha 3 / Coluna 2</p>
55
+ <p>
56
+ <small>Tamanho <code>"6"</code></small>
57
+ </p>
58
+ </div>
59
+ </u-column>
60
+ </u-row>
61
+ <u-row>
62
+ <u-column cols="4">
63
+ <div style="background: lightgreen;">
64
+ <p>Linha 4 / Coluna 1</p>
65
+ <p>
66
+ <small>Tamanho <code>"4"</code></small>
67
+ </p>
68
+ </div>
69
+ </u-column>
70
+ <u-column cols="4">
71
+ <div style="background: lightgreen;">
72
+ <p>Linha 4 / Coluna 2</p>
73
+ <p>
74
+ <small>Tamanho <code>"4"</code></small>
75
+ </p>
76
+ </div>
77
+ </u-column>
78
+ <u-column cols="4">
79
+ <div style="background: lightgreen;">
80
+ <p>Linha 4 / Coluna 3</p>
81
+ <p>
82
+ <small>Tamanho <code>"4"</code></small>
83
+ </p>
84
+ </div>
85
+ </u-column>
86
+ </u-row>
87
+ </u-container>
88
+ </u-main>
89
+ </template>
90
+
91
+ <script lang="ts" setup>
92
+ import { UContainer, UMain, URow, UColumn } from "@nexdom/uimed-vue/components";
93
+ </script>
94
+ ```
95
+
96
+ ## Linhas e colunas como lista
97
+
98
+ Quando as colunas de uma linha apresentam itens de uma mesma lista, como os cartões de uma listagem de pacientes, utilize a prop `list` na `Row` e a prop `listItem` em cada uma das suas `Column`s.
99
+
100
+ Assim, a linha passa a ser uma lista e as colunas, os seus itens, e as tecnologias assistivas, como leitores de tela, anunciam a quantidade de itens e a posição de cada um deles. A aparência da grade não muda: a lista não recebe recuo nem marcadores.
101
+
102
+ ```vue
103
+ <template>
104
+ <u-main>
105
+ <u-container>
106
+ <u-row list>
107
+ <u-column v-for="especialidade in especialidades" :key="especialidade" cols="4" list-item>
108
+ <div style="background: lightgreen;">
109
+ <p>{{ especialidade }}</p>
110
+ </div>
111
+ </u-column>
112
+ </u-row>
113
+ </u-container>
114
+ </u-main>
115
+ </template>
116
+
117
+ <script lang="ts" setup>
118
+ import { UContainer, UMain, URow, UColumn } from "@nexdom/uimed-vue/components";
119
+
120
+ const especialidades = ["Cardiologia", "Dermatologia", "Pediatria"];
121
+ </script>
122
+ ```
123
+
124
+ ## Alinhamento vertical das colunas
125
+
126
+ A prop `alignY` (`align-y` no template) da `Row` define como as suas colunas se alinham verticalmente em relação à coluna mais alta da mesma linha:
127
+
128
+ | Valor | Alinhamento |
129
+ | ----------- | --------------------------------------------------------- |
130
+ | `"start"` | no topo (padrão). |
131
+ | `"center"` | ao centro. |
132
+ | `"end"` | na base. |
133
+ | `"stretch"` | estica todas as colunas até a altura da coluna mais alta. |
134
+
135
+ Com `stretch`, é a coluna que cresce até a altura da mais alta: o seu conteúdo só a preenche visualmente quando também ocupa a altura toda, como as caixas do exemplo abaixo ou um [`USection`](./section.md) com `fullHeight`. Por isso, utilize `stretch` para manter colunas lado a lado com a mesma altura, como cartões.
136
+
137
+ As colunas só ficam lado a lado em telas a partir de 600px de largura. Em telas menores, cada coluna ocupa uma linha inteira e o alinhamento não tem efeito visível, exceto em [linhas com altura total](#altura-total), em que as colunas são alinhadas, em conjunto, dentro da altura da linha.
138
+
139
+ ```vue
140
+ <template>
141
+ <u-main>
142
+ <u-container>
143
+ <u-row align-y="start">
144
+ <u-column cols="4">
145
+ <div style="background: lightgreen; height: 100%;">
146
+ <code>align-y="start"</code>
147
+ </div>
148
+ </u-column>
149
+ <u-column cols="4">
150
+ <div style="background: lightgreen; height: 100%;">
151
+ Coluna mais alta<br />com<br />quatro<br />linhas
152
+ </div>
153
+ </u-column>
154
+ <u-column cols="4">
155
+ <div style="background: lightgreen; height: 100%;">Coluna com<br />duas linhas</div>
156
+ </u-column>
157
+ </u-row>
158
+ <u-row align-y="center">
159
+ <u-column cols="4">
160
+ <div style="background: lightgreen; height: 100%;">
161
+ <code>align-y="center"</code>
162
+ </div>
163
+ </u-column>
164
+ <u-column cols="4">
165
+ <div style="background: lightgreen; height: 100%;">
166
+ Coluna mais alta<br />com<br />quatro<br />linhas
167
+ </div>
168
+ </u-column>
169
+ <u-column cols="4">
170
+ <div style="background: lightgreen; height: 100%;">Coluna com<br />duas linhas</div>
171
+ </u-column>
172
+ </u-row>
173
+ <u-row align-y="end">
174
+ <u-column cols="4">
175
+ <div style="background: lightgreen; height: 100%;">
176
+ <code>align-y="end"</code>
177
+ </div>
178
+ </u-column>
179
+ <u-column cols="4">
180
+ <div style="background: lightgreen; height: 100%;">
181
+ Coluna mais alta<br />com<br />quatro<br />linhas
182
+ </div>
183
+ </u-column>
184
+ <u-column cols="4">
185
+ <div style="background: lightgreen; height: 100%;">Coluna com<br />duas linhas</div>
186
+ </u-column>
187
+ </u-row>
188
+ <u-row align-y="stretch">
189
+ <u-column cols="4">
190
+ <div style="background: lightgreen; height: 100%;">
191
+ <code>align-y="stretch"</code>
192
+ </div>
193
+ </u-column>
194
+ <u-column cols="4">
195
+ <div style="background: lightgreen; height: 100%;">
196
+ Coluna mais alta<br />com<br />quatro<br />linhas
197
+ </div>
198
+ </u-column>
199
+ <u-column cols="4">
200
+ <div style="background: lightgreen; height: 100%;">Coluna com<br />duas linhas</div>
201
+ </u-column>
202
+ </u-row>
203
+ </u-container>
204
+ </u-main>
205
+ </template>
206
+
207
+ <script lang="ts" setup>
208
+ import { UContainer, UMain, URow, UColumn } from "@nexdom/uimed-vue/components";
209
+ </script>
210
+ ```
211
+
212
+ ## Alinhamento horizontal das colunas
213
+
214
+ A prop `alignX` (`align-x` no template) da `Row` define como as suas colunas se alinham horizontalmente em cada linha:
215
+
216
+ | Valor | Alinhamento |
217
+ | ---------- | ---------------------------- |
218
+ | `"start"` | no início da linha (padrão). |
219
+ | `"center"` | ao centro. |
220
+ | `"end"` | no fim da linha. |
221
+
222
+ O alinhamento só tem efeito visível quando as colunas não preenchem a linha toda, como com `cols="auto"`, em que a coluna ocupa apenas a largura do seu conteúdo, ou com tamanhos que somam menos de 12. Quando as colunas não cabem em uma linha e passam para a seguinte, cada linha é alinhada separadamente.
223
+
224
+ As colunas só ficam lado a lado em telas a partir de 600px de largura. Em telas menores, cada coluna ocupa uma linha inteira, mesmo com `cols="auto"`, e o alinhamento não tem efeito visível.
225
+
226
+ `start` e `end` acompanham a direção do texto: em idiomas escritos da direita para a esquerda, `start` fica à direita e `end`, à esquerda.
227
+
228
+ ```vue
229
+ <template>
230
+ <u-main>
231
+ <u-container>
232
+ <u-row align-x="start">
233
+ <u-column cols="auto">
234
+ <div style="background: lightgreen;">
235
+ <code>align-x="start"</code>
236
+ </div>
237
+ </u-column>
238
+ </u-row>
239
+ <u-row align-x="center">
240
+ <u-column cols="auto">
241
+ <div style="background: lightgreen;">
242
+ <code>align-x="center"</code>
243
+ </div>
244
+ </u-column>
245
+ </u-row>
246
+ <u-row align-x="end">
247
+ <u-column cols="auto">
248
+ <div style="background: lightgreen;">
249
+ <code>align-x="end"</code>
250
+ </div>
251
+ </u-column>
252
+ </u-row>
253
+ </u-container>
254
+ </u-main>
255
+ </template>
256
+
257
+ <script lang="ts" setup>
258
+ import { UContainer, UMain, URow, UColumn } from "@nexdom/uimed-vue/components";
259
+ </script>
260
+ ```
261
+
262
+ Com uma coluna `cols="auto"` e `align-x="center"`, por exemplo, o formulário de uma tela de login fica centralizado na linha, sem estilos próprios (para centralizá-lo também na altura da tela, veja [Altura total](#altura-total)):
263
+
264
+ ```vue
265
+ <template>
266
+ <u-row align-x="center">
267
+ <u-column cols="auto">
268
+ <u-section title="Entrar">
269
+ <!-- formulário -->
270
+ </u-section>
271
+ </u-column>
272
+ </u-row>
273
+ </template>
274
+
275
+ <script lang="ts" setup>
276
+ import { URow, UColumn, USection } from "@nexdom/uimed-vue/components";
277
+ </script>
278
+ ```
279
+
280
+ ## Altura total
281
+
282
+ Por padrão, uma `Row` cresce apenas até a altura do seu conteúdo. Com a prop `fullHeight` (`full-height` no template), ela ocupa toda a altura visível da área de conteúdo do [`UMain`](./main.md), descontado o menu superior, quando houver.
283
+
284
+ Combinada às props `alignY` e `alignX`, a linha posiciona as suas colunas nessa altura. Com `align-y="center"` e `align-x="center"`, por exemplo, o formulário de uma tela de login fica centralizado na tela, nos dois eixos:
285
+
286
+ ```vue
287
+ <template>
288
+ <u-main :app-bar="{ title: 'Acesso' }">
289
+ <u-row full-height align-y="center" align-x="center">
290
+ <u-column cols="auto">
291
+ <u-section title="Entrar" subtitle="Informe os seus dados de acesso" :actions>
292
+ <u-section-content>
293
+ <!-- formulário -->
294
+ </u-section-content>
295
+ </u-section>
296
+ </u-column>
297
+ </u-row>
298
+ </u-main>
299
+ </template>
300
+
301
+ <script lang="ts" setup>
302
+ import type { ComponentProps } from "vue-component-type-helpers";
303
+ import { UMain, URow, UColumn, USection, USectionContent } from "@nexdom/uimed-vue/components";
304
+
305
+ type SectionAction = NonNullable<ComponentProps<typeof USection>["actions"]>[number];
306
+
307
+ const actions: SectionAction[] = [{ label: "Entrar", onClick: () => window.alert("Entrando...") }];
308
+ </script>
309
+ ```
310
+
311
+ Em telas com menos de 600px de largura, em que cada coluna ocupa uma linha inteira, as colunas continuam alinhadas, em conjunto, conforme a prop `alignY`.
312
+
313
+ A linha com `fullHeight` ocupa sozinha toda a altura disponível: outras linhas ao seu lado ficam abaixo da área visível. Por isso, utilize-a como a única linha da página.
314
+
315
+ Para que um [`UContainer`](../../api/components/grid/container.md) dentro do `UMain` também ocupe toda a altura disponível, e as suas linhas com `fullHeight` possam ocupá-la, utilize a prop `fullHeight` também no `UContainer`.
316
+
317
+ ## Playground
318
+
319
+ Experimente os valores das props `alignY` e `alignX`.
320
+
321
+ ## Ver também
322
+
323
+ Consulte a referência de [API do UContainer](../../api/components/grid/container.md), [da URow](../../api/components/grid/row.md) e [da UColumn](../../api/components/grid/column.md) para a lista completa de props, slots e eventos.
@@ -0,0 +1,47 @@
1
+ # Links
2
+
3
+ O componente padrão para exibir links de texto se chama `Link`.
4
+
5
+ > [!Warning]
6
+ > Deve ser utilizado no lugar do `<a>` nativo e do `<router-link>`.
7
+
8
+ O texto do link é informado pelo slot padrão e também é o nome lido pelos leitores de tela. Por isso, ele deve descrever o destino do link (por exemplo, "Esqueceu sua senha?" em vez de "Clique aqui").
9
+
10
+ Use o link para links avulsos, como um "Esqueceu sua senha?" abaixo de um formulário de login. Ele não é sublinhado, então não o use no meio de um parágrafo de texto, onde só a cor o distinguiria do texto ao redor. Para executar ações, use o [Button](./button.md).
11
+
12
+ ## Propriedades
13
+
14
+ ### Rota da aplicação
15
+
16
+ A prop `route` define o destino do link. Uma rota da aplicação, como `"/login"` ou `{ name: "forgot-password" }`, navega sem recarregar a página. Enquanto essa rota é a página atual, o link é anunciado como a página atual pelos leitores de tela.
17
+
18
+ > [!Warning]
19
+ > Rotas da aplicação só funcionam em aplicações que usam o [Vue Router](https://router.vuejs.org/).
20
+
21
+ ```vue
22
+ <template>
23
+ <u-link :route="{ name: 'forgot-password' }">Esqueceu sua senha?</u-link>
24
+ </template>
25
+
26
+ <script lang="ts" setup>
27
+ import { ULink } from "@nexdom/uimed-vue/components";
28
+ </script>
29
+ ```
30
+
31
+ ### Endereço externo
32
+
33
+ Um endereço que começa com `http` navega pelo navegador, na mesma aba, sem passar pelas rotas da aplicação.
34
+
35
+ ```vue
36
+ <template>
37
+ <u-link route="https://nexdom-healthtech.github.io/shared/">Documentação do Shared</u-link>
38
+ </template>
39
+
40
+ <script lang="ts" setup>
41
+ import { ULink } from "@nexdom/uimed-vue/components";
42
+ </script>
43
+ ```
44
+
45
+ ## Ver também
46
+
47
+ Consulte a referência de [API do ULink](../../api/components/link.md) para a lista completa de props.