nubomed-ui 1.0.2 → 1.0.3

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.

Potentially problematic release.


This version of nubomed-ui might be problematic. Click here for more details.

Files changed (147) hide show
  1. package/.env.bi +13 -0
  2. package/.env.terminal +13 -0
  3. package/.vscode/extensions.json +3 -0
  4. package/README.md +17 -0
  5. package/index.html +13 -0
  6. package/nubomed-ui/nubomed-ui.es.js +2005 -0
  7. package/nubomed-ui/nubomed-ui.umd.js +1 -0
  8. package/nubomed-ui/style.css +1 -0
  9. package/package.json +19 -7
  10. package/src/App.vue +31 -0
  11. package/src/bi-demos/Header.vue +29 -0
  12. package/src/bi-demos/Table.vue +69 -0
  13. package/src/bi-demos/index.vue +132 -0
  14. package/src/bi-packages/components/Box/images/corner-error.png +0 -0
  15. package/src/bi-packages/components/Box/images/corner-warning.png +0 -0
  16. package/src/bi-packages/components/Box/images/corner.png +0 -0
  17. package/src/bi-packages/components/Box/index.scss +86 -0
  18. package/src/bi-packages/components/Box/index.vue +53 -0
  19. package/src/bi-packages/components/Carousel/CarouselItem.vue +0 -0
  20. package/src/bi-packages/components/Carousel/index.vue +0 -0
  21. package/src/bi-packages/components/Header/images/left-bg.png +0 -0
  22. package/src/bi-packages/components/Header/images/logo.png +0 -0
  23. package/src/bi-packages/components/Header/images/right-bg.png +0 -0
  24. package/src/bi-packages/components/Header/index.scss +50 -0
  25. package/src/bi-packages/components/Header/index.vue +54 -0
  26. package/src/bi-packages/components/Table/TableColgroup.vue +43 -0
  27. package/src/bi-packages/components/Table/index copy.vue +107 -0
  28. package/src/bi-packages/components/Table/index.scss +118 -0
  29. package/src/bi-packages/components/Table/index.vue +108 -0
  30. package/src/bi-packages/components/TableColumn/index.scss +7 -0
  31. package/src/bi-packages/components/TableColumn/index.vue +60 -0
  32. package/src/bi-packages/fonts/OPPOSans-B.ttf +0 -0
  33. package/src/bi-packages/fonts/OPPOSans-M.ttf +0 -0
  34. package/src/bi-packages/fonts/font.scss +11 -0
  35. package/src/bi-packages/iconfont-svg/demo.css +539 -0
  36. package/src/bi-packages/iconfont-svg/demo_index.html +4811 -0
  37. package/src/bi-packages/iconfont-svg/iconfont.css +819 -0
  38. package/src/bi-packages/iconfont-svg/iconfont.js +1 -0
  39. package/src/bi-packages/iconfont-svg/iconfont.json +1416 -0
  40. package/src/bi-packages/iconfont-svg/iconfont.ttf +0 -0
  41. package/src/bi-packages/iconfont-svg/iconfont.woff +0 -0
  42. package/src/bi-packages/iconfont-svg/iconfont.woff2 +0 -0
  43. package/src/bi-packages/index.js +34 -0
  44. package/src/bi-packages/styles/mixin.scss +12 -0
  45. package/src/bi-packages/styles/var.scss +11 -0
  46. package/src/demos/ActionBar.vue +59 -0
  47. package/src/demos/Badge.vue +28 -0
  48. package/src/demos/Button copy.vue +302 -0
  49. package/src/demos/Button.vue +116 -0
  50. package/src/demos/ButtonGroup.vue +40 -0
  51. package/src/demos/Check.vue +29 -0
  52. package/src/demos/Dialog.vue +255 -0
  53. package/src/demos/Empty.vue +38 -0
  54. package/src/demos/FooterMenu.vue +49 -0
  55. package/src/demos/Header.vue +71 -0
  56. package/src/demos/Icons.vue +314 -0
  57. package/src/demos/Input.vue +87 -0
  58. package/src/demos/InputKeyboard.vue +30 -0
  59. package/src/demos/InputNumber.vue +34 -0
  60. package/src/demos/LeftMenu.vue +128 -0
  61. package/src/demos/Menus.vue +106 -0
  62. package/src/demos/OpenCabinetBall.vue +37 -0
  63. package/src/demos/Statusbar.vue +146 -0
  64. package/src/demos/Steps.vue +45 -0
  65. package/src/demos/Tost.vue +35 -0
  66. package/src/demos/button/button.md +19 -0
  67. package/src/demos/data/terList.json +145 -0
  68. package/src/demos/images/cabinets/H3000-D.png +0 -0
  69. package/src/demos/images/cabinets/H3000-R.png +0 -0
  70. package/src/demos/images/cabinets/H3000-Rh.png +0 -0
  71. package/src/demos/images/cabinets/H3000-Rh2.png +0 -0
  72. package/src/demos/images/cabinets/H3010-R.png +0 -0
  73. package/src/demos/index.vue +348 -0
  74. package/src/docs/icons/Icon.vue +72 -0
  75. package/src/docs/icons/icon.md +21 -0
  76. package/src/docs/index.html +15 -0
  77. package/src/docs/index.vue +301 -0
  78. package/src/main.js +23 -0
  79. package/src/packages/components/ActionBar/images/error.png +0 -0
  80. package/src/packages/components/ActionBar/images/loading.gif +0 -0
  81. package/src/packages/components/ActionBar/images/success.png +0 -0
  82. package/src/packages/components/ActionBar/images/warning.png +0 -0
  83. package/src/packages/components/ActionBar/images/warning_yellow.png +0 -0
  84. package/src/packages/components/ActionBar/index.scss +81 -0
  85. package/src/packages/components/ActionBar/index.vue +100 -0
  86. package/src/packages/components/Badge/index.scss +50 -0
  87. package/src/packages/components/Badge/index.vue +75 -0
  88. package/src/packages/components/Button/index.scss +241 -0
  89. package/src/packages/components/Button/index.vue +111 -0
  90. package/src/packages/components/ButtonGroup/index.scss +54 -0
  91. package/src/packages/components/ButtonGroup/index.vue +75 -0
  92. package/src/packages/components/Check/Cate.vue +138 -0
  93. package/src/packages/components/Check/index.scss +47 -0
  94. package/src/packages/components/Check/index.vue +105 -0
  95. package/src/packages/components/Dialog/images/error.png +0 -0
  96. package/src/packages/components/Dialog/images/success.png +0 -0
  97. package/src/packages/components/Dialog/images/warning-red.png +0 -0
  98. package/src/packages/components/Dialog/images/warning-yellow.png +0 -0
  99. package/src/packages/components/Dialog/index.scss +154 -0
  100. package/src/packages/components/Dialog/index.vue +305 -0
  101. package/src/packages/components/Empty/images/empty-abnormal.png +0 -0
  102. package/src/packages/components/Empty/images/empty-data.png +0 -0
  103. package/src/packages/components/Empty/images/empty-search.png +0 -0
  104. package/src/packages/components/Empty/index.vue +68 -0
  105. package/src/packages/components/Form/FormItem.vue +73 -0
  106. package/src/packages/components/Form/index.vue +76 -0
  107. package/src/packages/components/Icon/index.vue +30 -0
  108. package/src/packages/components/Input/index.scss +184 -0
  109. package/src/packages/components/Input/index.vue +189 -0
  110. package/src/packages/components/InputKeyboard/index.scss +63 -0
  111. package/src/packages/components/InputKeyboard/index.vue +117 -0
  112. package/src/packages/components/InputNumber/index.scss +103 -0
  113. package/src/packages/components/InputNumber/index.vue +160 -0
  114. package/src/packages/components/Menu/index.scss +559 -0
  115. package/src/packages/components/Menu/index.vue +211 -0
  116. package/src/packages/components/OpenCabinetBall/CabinetStatus.vue +94 -0
  117. package/src/packages/components/OpenCabinetBall/index.scss +204 -0
  118. package/src/packages/components/OpenCabinetBall/index.vue +113 -0
  119. package/src/packages/components/Statusbar/CabinetList.vue +125 -0
  120. package/src/packages/components/Statusbar/CabinetListStatus.vue +75 -0
  121. package/src/packages/components/Statusbar/CabinetListTempHum.vue +108 -0
  122. package/src/packages/components/Statusbar/index.scss +205 -0
  123. package/src/packages/components/Statusbar/index.vue +83 -0
  124. package/src/packages/components/Steps/index.scss +104 -0
  125. package/src/packages/components/Steps/index.vue +66 -0
  126. package/src/packages/components/SvgIcon/index.vue +41 -0
  127. package/src/packages/components/Toast/index.vue +72 -0
  128. package/src/packages/fonts/OPPOSans-B.ttf +0 -0
  129. package/src/packages/fonts/OPPOSans-M.ttf +0 -0
  130. package/src/packages/fonts/font.scss +11 -0
  131. package/src/packages/iconfont-svg/demo.css +539 -0
  132. package/src/packages/iconfont-svg/demo_index.html +4811 -0
  133. package/src/packages/iconfont-svg/iconfont.css +819 -0
  134. package/src/packages/iconfont-svg/iconfont.js +1 -0
  135. package/src/packages/iconfont-svg/iconfont.json +1416 -0
  136. package/src/packages/iconfont-svg/iconfont.ttf +0 -0
  137. package/src/packages/iconfont-svg/iconfont.woff +0 -0
  138. package/src/packages/iconfont-svg/iconfont.woff2 +0 -0
  139. package/src/packages/index.js +64 -0
  140. package/src/packages/styles/var.scss +24 -0
  141. package/src/utils/create.js +48 -0
  142. package/src/utils/index.js +13 -0
  143. package/src/utils/validate.js +3 -0
  144. package/vite.config.js +47 -0
  145. package/nubomed-ui.es.js +0 -152
  146. package/nubomed-ui.umd.js +0 -1
  147. package/style.css +0 -1
@@ -0,0 +1,348 @@
1
+ <!--
2
+ * @Author: chenghuan.dong
3
+ * @Date: 2023-06-27 19:08:22
4
+ * @LastEditors: chenghuan.dong
5
+ * @LastEditTime: 2023-09-12 20:30:34
6
+ * @Description:
7
+ -->
8
+ <template>
9
+ <div class="container">
10
+ <div class="container-header"></div>
11
+ <div class="container">
12
+ <div class="container-aside">
13
+ <div class="menu">
14
+ <div v-for="item in navList" :key="item.text" class="menu__group">
15
+ <p class="menu__group__text">{{ item.text }}</p>
16
+ <div
17
+ v-for="(child, index) in item.children"
18
+ :key="index"
19
+ class="menu__group__child"
20
+ >
21
+ {{ child.text }}
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ <div class="container-main">
27
+ <component :is="active.component"></component>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <!-- <div class="demo">
32
+ <div class="demo-nav">
33
+ <div v-for="item in navList" :key="item.text">
34
+ <strong>{{ item.text }}</strong>
35
+ <span v-for="item2 in item.children" :key="item2.id" @click="handleRef(item2.id)">{{ item2.text }}</span>
36
+ </div>
37
+ </div>
38
+
39
+ <InputKeyboard id="InputKeyboard" />
40
+
41
+ <ActionBar id="ActionBar" />
42
+ <Statusbar id="Statusbar" />
43
+ <Check id="CheckPage" />
44
+ <OpenCabinetBall id="OpenCabinetBall" />
45
+
46
+ <Tost id="Tost" />
47
+ <Dialog id="Dialog" />
48
+
49
+ <Header id="Header" />
50
+ <FooterMenu id="FooterMenu" />
51
+ <LeftMenu id="LeftMenu" />
52
+ <Menus id="Menus" />
53
+
54
+ <Badge id="Badge" />
55
+ <Empty id="Empty" />
56
+ <Steps id="Steps" />
57
+
58
+ <Input id="Input" />
59
+ <InputNumber id="InputNumber" />
60
+ <ButtonGroup id="ButtonGroup" />
61
+
62
+ <Button id="Button" />
63
+ <Icons id="Icons" />
64
+ </div> -->
65
+ </template>
66
+
67
+ <script setup>
68
+ import { ref, nextTick } from 'vue'
69
+ import Dialog from './Dialog.vue'
70
+ import Icons from './Icons.vue'
71
+ import Button from './Button.vue'
72
+ import Input from './Input.vue'
73
+ import InputNumber from './InputNumber.vue'
74
+ import Empty from './Empty.vue'
75
+ import Badge from './Badge.vue'
76
+ import LeftMenu from './LeftMenu.vue'
77
+ import FooterMenu from './FooterMenu.vue'
78
+ import Header from './Header.vue'
79
+ import Statusbar from './Statusbar.vue'
80
+ import Tost from './Tost.vue'
81
+ import ButtonGroup from './ButtonGroup.vue'
82
+ import Check from './Check.vue'
83
+ import Steps from './Steps.vue'
84
+ import InputKeyboard from './InputKeyboard.vue'
85
+ import ActionBar from './ActionBar.vue'
86
+ import Menus from './Menus.vue'
87
+ import OpenCabinetBall from './OpenCabinetBall.vue'
88
+
89
+ const navList = ref([])
90
+ navList.value.push({
91
+ text: '基础组件',
92
+ children: [
93
+ {
94
+ text: '图标',
95
+ id: 'Icons',
96
+ component: Icons,
97
+ title: 'Button 按钮',
98
+ intro: '常用的操作按钮。'
99
+ },
100
+ {
101
+ text: '按钮',
102
+ id: 'Button',
103
+ component: Button,
104
+ title: 'Button 按钮',
105
+ intro: '常用的操作按钮。'
106
+ }
107
+ ]
108
+ })
109
+ navList.value.push({
110
+ text: '表单组件',
111
+ children: [
112
+ { text: 'Input 输入框', id: 'Input' },
113
+ { text: 'Input Number 数字器', id: 'InputNumber' },
114
+ { text: '多选按钮', id: 'ButtonGroup' },
115
+ { text: '下拉框', id: '' },
116
+ { text: '开关', id: '' },
117
+ { text: '日期选择器', id: '' },
118
+ { text: '时间选择器', id: '' }
119
+ ]
120
+ })
121
+ navList.value.push({
122
+ text: '数据展示',
123
+ children: [
124
+ { text: 'Badge 徽章', id: 'Badge' },
125
+ { text: 'Empty 空状态', id: 'Empty' },
126
+ { text: 'Steps 步骤条', id: 'Steps' },
127
+ { text: '走马灯', id: '' },
128
+ { text: '分页', id: '' },
129
+ { text: '进度条', id: '' },
130
+ { text: '表格', id: '' },
131
+ { text: '时间线', id: '' }
132
+ ]
133
+ })
134
+ navList.value.push({
135
+ text: '导航',
136
+ children: [
137
+ { text: '标题栏', id: 'Header' },
138
+ { text: '底部导航', id: 'FooterMenu' },
139
+ { text: '侧边栏', id: 'LeftMenu' },
140
+ { text: '宫格菜单', id: 'Menus' },
141
+ { text: '下拉菜单', id: '' }
142
+ ]
143
+ })
144
+ navList.value.push({
145
+ text: '反馈组件',
146
+ children: [
147
+ { text: 'Dialog 对话框', id: 'Dialog' },
148
+ { text: 'Loading 加载', id: '' },
149
+ { text: 'Tost 提示', id: 'Tost' },
150
+ { text: 'Message 消息弹框', id: '' },
151
+ { text: 'Popover 气泡卡片', id: '' },
152
+ { text: 'Tooltip 文字提示', id: '' }
153
+ ]
154
+ })
155
+
156
+ navList.value.push({
157
+ text: '键盘',
158
+ children: [
159
+ { text: '输入框键盘', id: 'InputKeyboard' },
160
+ { text: '通用键盘', id: '' }
161
+ ]
162
+ })
163
+
164
+ navList.value.push({
165
+ text: '业务组件',
166
+ children: [
167
+ { text: '状态栏', id: 'Statusbar' },
168
+ { text: '动作栏', id: 'ActionBar' },
169
+ { text: '检测页', id: 'CheckPage' },
170
+ { text: '开柜浮球', id: 'OpenCabinetBall' }
171
+ ]
172
+ })
173
+
174
+ const active = ref(navList.value[0].children[1])
175
+
176
+ const handleRef = (id) => {
177
+ nextTick(() => {
178
+ const returnEle = document.querySelector('#' + id) // 将要跳转区域的id
179
+ if (returnEle) {
180
+ returnEle.scrollIntoView({
181
+ behavior: 'smooth',
182
+ block: 'start',
183
+ inline: 'nearest'
184
+ }) // true 是默认的
185
+ }
186
+ })
187
+ }
188
+ </script>
189
+
190
+ <style lang="scss">
191
+ .container {
192
+ width: 100%;
193
+ height: 100%;
194
+ overflow: hidden;
195
+ display: flex;
196
+ flex-direction: column;
197
+ .container-header {
198
+ height: 60px;
199
+ border-bottom: 1px solid #dcdfe6;
200
+ }
201
+ .container {
202
+ width: 100%;
203
+ flex: 1;
204
+ display: flex;
205
+ flex-direction: row;
206
+ overflow: hidden;
207
+ .container-aside {
208
+ width: 200px;
209
+ height: 100%;
210
+ overflow: auto;
211
+ border-right: 1px solid #dcdfe6;
212
+ }
213
+ .container-main {
214
+ flex: 1;
215
+ height: 100%;
216
+ overflow: hidden;
217
+ }
218
+ }
219
+ }
220
+
221
+ .menu {
222
+ margin: 0 20px;
223
+ &__group {
224
+ &__text {
225
+ font-size: 16px;
226
+ line-height: 28px;
227
+ }
228
+ &__child {
229
+ font-size: 14px;
230
+ line-height: 40px;
231
+ border-radius: 10px;
232
+ background-color: rgba(#79bbff, 0.1);
233
+ color: #79bbff;
234
+ padding: 0 15px;
235
+ }
236
+ }
237
+ }
238
+
239
+ .component {
240
+ width: 100%;
241
+ height: 100%;
242
+ box-sizing: border-box;
243
+ display: flex;
244
+ overflow: hidden;
245
+ &__left {
246
+ flex: 1;
247
+ height: 100%;
248
+ overflow: auto;
249
+ padding: 30px;
250
+ box-sizing: border-box;
251
+ }
252
+ &__right {
253
+ width: 180px;
254
+ height: 100%;
255
+ overflow: auto;
256
+ padding: 30px;
257
+ box-sizing: border-box;
258
+ }
259
+ &__title {
260
+ font-size: 36px;
261
+ font-weight: 700;
262
+ line-height: 56px;
263
+ }
264
+ &__intro {
265
+ font-size: 14px;
266
+ line-height: 28px;
267
+ }
268
+ &__detail {
269
+ &__title {
270
+ font-size: 18px;
271
+ font-weight: 700;
272
+ line-height: 36px;
273
+ }
274
+ &__intro {
275
+ font-size: 14px;
276
+ line-height: 28px;
277
+ }
278
+ &__box {
279
+ border: 1px solid #dcdfe6;
280
+ border-radius: 5px;
281
+ }
282
+ &__demo {
283
+ padding: 15px;
284
+ border-bottom: 1px solid #dcdfe6;
285
+ }
286
+ &__toggle {
287
+ padding: 15px;
288
+ border-bottom: 1px solid #dcdfe6;
289
+ text-align: right;
290
+ }
291
+ &__code {
292
+ background-color: #f0f2f5;padding: 15px;
293
+ }
294
+ }
295
+ }
296
+
297
+ .demo {
298
+ width: 100%;
299
+ height: 100%;
300
+ overflow: auto;
301
+ background-color: #f3f7fd;
302
+ padding-top: 150px;
303
+ }
304
+ .demo-nav {
305
+ padding: 10px 30px;
306
+ position: fixed;
307
+ top: 0;
308
+ left: 0;
309
+ right: 0;
310
+ min-height: 40px;
311
+ line-height: 40px;
312
+ background-color: #ffffff;
313
+ z-index: 1;
314
+ box-shadow: 0px -1px 6px 0px rgba(0, 0, 0, 0.15);
315
+ div {
316
+ display: inline-block;
317
+ margin-right: 20px;
318
+ }
319
+ strong {
320
+ font-size: 24px;
321
+ }
322
+ span {
323
+ margin-left: 10px;
324
+ font-size: 20px;
325
+ cursor: pointer;
326
+ }
327
+ }
328
+ .demo-box {
329
+ background-color: #ffffff;
330
+ }
331
+ .demo-box-title {
332
+ border-bottom: 1px solid #cad0e0;
333
+ padding-bottom: 20px;
334
+ margin-bottom: 20px;
335
+ .demo-box-title-name {
336
+ height: 76px;
337
+ font-size: 50px;
338
+ line-height: 76px;
339
+ }
340
+ .demo-box-title-desc {
341
+ height: 32px;
342
+ font-size: 24px;
343
+ color: #f98900;
344
+ line-height: 32px;
345
+ margin-left: 20px;
346
+ }
347
+ }
348
+ </style>
@@ -0,0 +1,72 @@
1
+ <!--
2
+ * @Author: chenghuan.dong
3
+ * @Date: 2023-07-05 15:26:05
4
+ * @LastEditTime: 2023-09-12 20:29:42
5
+ * @LastEditors: chenghuan.dong
6
+ * @Description:
7
+ * @FilePath: \基础建设\nubomed-ui\src\demos\Button.vue
8
+ -->
9
+ <template>
10
+ <div class="component">
11
+ <div class="component__left">
12
+ <div class="component__title" id="base">Button 按钮</div>
13
+ <div class="component__intro">常用的操作按钮</div>
14
+ <div class="component__detail">
15
+ <div class="component__detail__title">基础用法</div>
16
+ <div class="component__detail__intro">
17
+ 使用 type、plain、round 和 circle 来定义按钮的样式。
18
+ </div>
19
+ <div class="component__detail__box">
20
+ <div class="component__detail__demo">
21
+ <nb-button type="primary">primary</nb-button>
22
+ </div>
23
+ <div class="component__detail__toggle">
24
+ <span>查看代码</span>
25
+ </div>
26
+ <div class="component__detail__code">
27
+ {{demo}}
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <table>
33
+ <thead>
34
+ <tr>
35
+ <th>属性名</th>
36
+ <th>说明</th>
37
+ <th>类型</th>
38
+ <th>默认值</th>
39
+ </tr>
40
+ </thead>
41
+ <tbody>
42
+ <tr>
43
+ <td>size</td>
44
+ <td>尺寸</td>
45
+ <td>enum: 'large'| 'default'| 'small'</td>
46
+ <td></td>
47
+ </tr>
48
+ </tbody>
49
+ </table>
50
+ </div>
51
+ <div class="component__right">
52
+ <p>CONTENTS</p>
53
+ <p><a href="#base">基础用法</a></p>
54
+ <p><a href="#base">API</a></p>
55
+ </div>
56
+ </div>
57
+ </template>
58
+
59
+ <script setup>
60
+ import { ref } from 'vue'
61
+ const demo = ref(decodeURIComponent(`<nb-button type="primary">primary</nb-button>`))
62
+ console.log(decodeURIComponent(demo))
63
+
64
+ </script>
65
+
66
+ <style lang="scss" scoped>
67
+ .demo-box-content {
68
+ .nb-button {
69
+ margin: 20px 10px;
70
+ }
71
+ }
72
+ </style>
@@ -0,0 +1,21 @@
1
+ <!--
2
+ * @Author: chenghuan.dong
3
+ * @Date: 2023-09-12 20:31:23
4
+ * @LastEditTime: 2023-09-12 20:33:48
5
+ * @LastEditors: chenghuan.dong
6
+ * @Description:
7
+ * @FilePath: \基础建设\nubomed-ui\src\demos\button\button.md
8
+ -->
9
+ # Upload
10
+
11
+ :::demo 使用type、plain、round和circle属性来定义 Button 的样式。
12
+
13
+ <el-row>
14
+ <el-button>默认按钮</el-button>
15
+ <el-button type="primary">主要按钮</el-button>
16
+ <el-button type="success">成功按钮</el-button>
17
+ <el-button type="info">信息按钮</el-button>
18
+ <el-button type="warning">警告按钮</el-button>
19
+ <el-button type="danger">危险按钮</el-button>
20
+ </el-row>
21
+ :::
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>NuboMed-UI</title>
8
+ </head>
9
+ <body>
10
+ <div class="page">
11
+
12
+
13
+ </div>
14
+ </body>
15
+ </html>