Sfoglia il codice sorgente

Merge branch 'agile' of https://github.com/iapt-platform/mint into agile

visuddhinanda 3 anni fa
parent
commit
d30f5f29f4
86 ha cambiato i file con 1149 aggiunte e 2 eliminazioni
  1. 1 0
      dashboard/src/App.css
  2. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Black.ttf
  3. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-BlackItalic.ttf
  4. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Bold.ttf
  5. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-BoldItalic.ttf
  6. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-ExtraBold.ttf
  7. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-ExtraBoldItalic.ttf
  8. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-ExtraLight.ttf
  9. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-ExtraLightItalic.ttf
  10. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Italic.ttf
  11. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Light.ttf
  12. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-LightItalic.ttf
  13. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Medium.ttf
  14. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-MediumItalic.ttf
  15. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Regular.ttf
  16. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-SemiBold.ttf
  17. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-SemiBoldItalic.ttf
  18. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-Thin.ttf
  19. BIN
      dashboard/src/assets/font/NotoSans/NotoSans-ThinItalic.ttf
  20. BIN
      dashboard/src/assets/font/NotoSans/NotoSansTaiTham-Regular.ttf
  21. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Black.ttf
  22. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-BlackItalic.ttf
  23. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Bold.ttf
  24. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-BoldItalic.ttf
  25. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraBold.ttf
  26. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraBoldItalic.ttf
  27. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraLight.ttf
  28. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraLightItalic.ttf
  29. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Italic.ttf
  30. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Light.ttf
  31. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-LightItalic.ttf
  32. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Medium.ttf
  33. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-MediumItalic.ttf
  34. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Regular.ttf
  35. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-SemiBold.ttf
  36. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-SemiBoldItalic.ttf
  37. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-Thin.ttf
  38. BIN
      dashboard/src/assets/font/NotoSerif/NotoSerif-ThinItalic.ttf
  39. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Black.ttf
  40. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Bold.ttf
  41. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-ExtraBold.ttf
  42. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-ExtraLight.ttf
  43. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Light.ttf
  44. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Medium.ttf
  45. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Regular.ttf
  46. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-SemiBold.ttf
  47. BIN
      dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Thin.ttf
  48. 93 0
      dashboard/src/assets/font/Noto_Sans_Myanmar/OFL.txt
  49. BIN
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-Bold.ttf
  50. BIN
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-Medium.ttf
  51. BIN
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-Regular.ttf
  52. BIN
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-SemiBold.ttf
  53. BIN
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-VariableFont_wght.ttf
  54. 93 0
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/OFL.txt
  55. 66 0
      dashboard/src/assets/font/Noto_Sans_Tai_Tham/README.txt
  56. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Black.ttf
  57. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Bold.ttf
  58. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-ExtraBold.ttf
  59. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-ExtraLight.ttf
  60. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Light.ttf
  61. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Medium.ttf
  62. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Regular.ttf
  63. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-SemiBold.ttf
  64. BIN
      dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Thin.ttf
  65. 93 0
      dashboard/src/assets/font/Noto_Serif_Myanmar/OFL.txt
  66. 95 0
      dashboard/src/assets/font/Padauk/OFL.txt
  67. BIN
      dashboard/src/assets/font/Padauk/Padauk-Bold.ttf
  68. BIN
      dashboard/src/assets/font/Padauk/Padauk-Regular.ttf
  69. 472 0
      dashboard/src/assets/font/main.css
  70. BIN
      dashboard/src/assets/font/taitham/tai-tham-kh-new-v3.ttf
  71. 34 0
      dashboard/src/components/nut/FontBox.tsx
  72. 54 0
      dashboard/src/components/nut/Form.tsx
  73. 8 2
      dashboard/src/components/nut/Home.tsx
  74. 3 0
      openapi/.gitignore
  75. 10 0
      openapi/README.md
  76. 13 0
      openapi/index.html
  77. 24 0
      openapi/package.json
  78. 24 0
      openapi/public/assets/protocol/main.yaml
  79. 1 0
      openapi/public/vite.svg
  80. 4 0
      openapi/src/App.css
  81. 14 0
      openapi/src/App.tsx
  82. 8 0
      openapi/src/main.tsx
  83. 1 0
      openapi/src/vite-env.d.ts
  84. 21 0
      openapi/tsconfig.json
  85. 9 0
      openapi/tsconfig.node.json
  86. 8 0
      openapi/vite.config.ts

+ 1 - 0
dashboard/src/App.css

@@ -1,5 +1,6 @@
 @import "~antd/dist/antd.min.css";
 @import "~react-quill/dist/quill.snow.css";
+@import "./assets/font/main.css";
 
 body {
   margin: 0;

BIN
dashboard/src/assets/font/NotoSans/NotoSans-Black.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-BlackItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-Bold.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-BoldItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-ExtraBold.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-ExtraBoldItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-ExtraLight.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-ExtraLightItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-Italic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-Light.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-LightItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-Medium.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-MediumItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-Regular.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-SemiBold.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-SemiBoldItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-Thin.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSans-ThinItalic.ttf


BIN
dashboard/src/assets/font/NotoSans/NotoSansTaiTham-Regular.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Black.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-BlackItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Bold.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-BoldItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraBold.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraBoldItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraLight.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-ExtraLightItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Italic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Light.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-LightItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Medium.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-MediumItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Regular.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-SemiBold.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-SemiBoldItalic.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-Thin.ttf


BIN
dashboard/src/assets/font/NotoSerif/NotoSerif-ThinItalic.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Black.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Bold.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-ExtraBold.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-ExtraLight.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Light.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Medium.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Regular.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-SemiBold.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Myanmar/NotoSansMyanmar-Thin.ttf


+ 93 - 0
dashboard/src/assets/font/Noto_Sans_Myanmar/OFL.txt

@@ -0,0 +1,93 @@
+Copyright 2012 Google Inc. All Rights Reserved.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-Bold.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-Medium.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-Regular.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-SemiBold.ttf


BIN
dashboard/src/assets/font/Noto_Sans_Tai_Tham/NotoSansTaiTham-VariableFont_wght.ttf


+ 93 - 0
dashboard/src/assets/font/Noto_Sans_Tai_Tham/OFL.txt

@@ -0,0 +1,93 @@
+Copyright 2012 Google Inc. All Rights Reserved.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

+ 66 - 0
dashboard/src/assets/font/Noto_Sans_Tai_Tham/README.txt

@@ -0,0 +1,66 @@
+Noto Sans Tai Tham Variable Font
+================================
+
+This download contains Noto Sans Tai Tham as both a variable font and static fonts.
+
+Noto Sans Tai Tham is a variable font with this axis:
+  wght
+
+This means all the styles are contained in a single file:
+  NotoSansTaiTham-VariableFont_wght.ttf
+
+If your app fully supports variable fonts, you can now pick intermediate styles
+that aren’t available as static fonts. Not all apps support variable fonts, and
+in those cases you can use the static font files for Noto Sans Tai Tham:
+  static/NotoSansTaiTham-Regular.ttf
+  static/NotoSansTaiTham-Medium.ttf
+  static/NotoSansTaiTham-SemiBold.ttf
+  static/NotoSansTaiTham-Bold.ttf
+
+Get started
+-----------
+
+1. Install the font files you want to use
+
+2. Use your app's font picker to view the font family and all the
+available styles
+
+Learn more about variable fonts
+-------------------------------
+
+  https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
+  https://variablefonts.typenetwork.com
+  https://medium.com/variable-fonts
+
+In desktop apps
+
+  https://theblog.adobe.com/can-variable-fonts-illustrator-cc
+  https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
+
+Online
+
+  https://developers.google.com/fonts/docs/getting_started
+  https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
+  https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
+
+Installing fonts
+
+  MacOS: https://support.apple.com/en-us/HT201749
+  Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
+  Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
+
+Android Apps
+
+  https://developers.google.com/fonts/docs/android
+  https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
+
+License
+-------
+Please read the full license text (OFL.txt) to understand the permissions,
+restrictions and requirements for usage, redistribution, and modification.
+
+You can use them freely in your products & projects - print or digital,
+commercial or otherwise.
+
+This isn't legal advice, please consider consulting a lawyer and see the full
+license for all details.

BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Black.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Bold.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-ExtraBold.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-ExtraLight.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Light.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Medium.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Regular.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-SemiBold.ttf


BIN
dashboard/src/assets/font/Noto_Serif_Myanmar/NotoSerifMyanmar-Thin.ttf


+ 93 - 0
dashboard/src/assets/font/Noto_Serif_Myanmar/OFL.txt

@@ -0,0 +1,93 @@
+Copyright 2012 Google Inc. All Rights Reserved.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

+ 95 - 0
dashboard/src/assets/font/Padauk/OFL.txt

@@ -0,0 +1,95 @@
+Copyright SIL International, all rights reserved
+Reserved names: "Padauk"
+
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
dashboard/src/assets/font/Padauk/Padauk-Bold.ttf


BIN
dashboard/src/assets/font/Padauk/Padauk-Regular.ttf


+ 472 - 0
dashboard/src/assets/font/main.css

@@ -0,0 +1,472 @@
+/*@import url(//fonts.googleapis.com/earlyaccess/notosanstc.css);*/
+/*@import url(//fonts.googleapis.com/earlyaccess/notosanssc.css);*/
+
+/*Pāli Roma*/
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: normal;
+  font-weight: 100;
+  src: local("Noto Sans Thin"),
+    url(./NotoSans/NotoSans-Thin.ttf) format("truetype");
+  font-display: fallback;
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: normal;
+  font-weight: 300;
+  src: local("Noto Sans Light"),
+    url(./NotoSans/NotoSans-Light.ttf) format("truetype");
+  font-display: fallback;
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: normal;
+  font-weight: 400;
+  src: local("Noto Sans Regular"),
+    url(./NotoSans/NotoSans-Regular.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: normal;
+  font-weight: 500;
+  src: local("Noto Sans Medium"),
+    url(./NotoSans/NotoSans-Medium.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: normal;
+  font-weight: 700;
+  src: local("Noto Sans Bold"),
+    url(./NotoSans/NotoSans-Bold.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: normal;
+  font-weight: 900;
+  src: local("Noto Sans Black"),
+    url(./NotoSans/NotoSans-Black.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: italic;
+  font-weight: 100;
+  src: local("Noto Sans Thin Italic"),
+    url(./NotoSans/NotoSans-ThinItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: italic;
+  font-weight: 300;
+  src: local("Noto Sans Light Italic"),
+    url(./NotoSans/NotoSans-LightItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: italic;
+  font-weight: 400;
+  src: local("Noto Sans Italic"),
+    url(./NotoSans/NotoSans-Italic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: italic;
+  font-weight: 500;
+  src: local("Noto Sans Medium Italic"),
+    url(./NotoSans/NotoSans-MediumItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: italic;
+  font-weight: 700;
+  src: local("Noto Sans Bold Italic"),
+    url(./NotoSans/NotoSans-BoldItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans";
+  font-style: italic;
+  font-weight: 900;
+  src: local("Noto Sans Black Italic"),
+    url(./NotoSans/NotoSans-BlackItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 100;
+  src: local("Noto Serif Thin"),
+    url(./NotoSerif/NotoSerif-Thin.ttf) format("truetype");
+  font-display: fallback;
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 300;
+  src: local("Noto Serif Light"),
+    url(./NotoSerif/NotoSerif-Light.ttf) format("truetype");
+  font-display: fallback;
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 400;
+  src: local("Noto Serif Regular"),
+    url(./NotoSerif/NotoSerif-Regular.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 500;
+  src: local("Noto Serif Medium"),
+    url(./NotoSerif/NotoSerif-Medium.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 600;
+  src: local("Noto Serif SemiBold"),
+    url(./NotoSerif/NotoSerif-SemiBold.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 700;
+  src: local("Noto Serif Bold"),
+    url(./NotoSerif/NotoSerif-Bold.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: normal;
+  font-weight: 900;
+  src: local("Noto Serif Black"),
+    url(./NotoSerif/NotoSerif-Black.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 100;
+  src: local("Noto Serif Thin Italic"),
+    url(./NotoSerif/NotoSerif-ThinItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 300;
+  src: local("Noto Serif Light Italic"),
+    url(./NotoSerif/NotoSerif-LightItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 400;
+  src: local("Noto Serif Italic"),
+    url(./NotoSerif/NotoSerif-Italic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 500;
+  src: local("Noto Serif Medium Italic"),
+    url(./NotoSerif/NotoSerif-MediumItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 600;
+  src: local("Noto Serif SemiBold Italic"),
+    url(./NotoSerif/NotoSerif-SemiBoldItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 700;
+  src: local("Noto Serif Bold Italic"),
+    url(./NotoSerif/NotoSerif-BoldItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Serif";
+  font-style: italic;
+  font-weight: 900;
+  src: local("Noto Serif Black Italic"),
+    url(./NotoSerif/NotoSerif-BlackItalic.ttf) format("truetype");
+  font-display: fallback;
+}
+
+/*缅文*/
+@font-face {
+  font-family: "Padauk";
+  font-style: normal;
+  font-weight: 400;
+  src: local("Padauk"), url(./Padauk/Padauk-Regular.ttf) format("truetype");
+  font-display: fallback;
+}
+@font-face {
+  font-family: "Padauk";
+  font-style: normal;
+  font-weight: 700;
+  src: local("Padauk Bold"), url(./Padauk/Padauk-Bold.ttf) format("truetype");
+  font-display: fallback;
+}
+/*Noto Sans Myanmar*/
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 100;
+  src: local("Noto Sans Myanmar Thin"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-Thin.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 200;
+  src: local("Noto Sans Myanmar ExtraLight"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-ExtraLight.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 300;
+  src: local("Noto Sans Myanmar Light"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-Light.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 400;
+  src: local("Noto Sans Myanmar Regular"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-Regular.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 500;
+  src: local("Noto Sans Myanmar Medium"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-Medium.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 600;
+  src: local("Noto Sans Myanmar SemiBold"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-SemiBold.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 700;
+  src: local("Noto Sans Myanmar Bold"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-Bold.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 800;
+  src: local("Noto Sans Myanmar ExtraBold"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-ExtraBold.ttf) format("truetype");
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans Myanmar";
+  font-style: normal;
+  font-weight: 900;
+  src: local("Noto Sans Myanmar Black"),
+    url(./Noto_Sans_Myanmar/NotoSansMyanmar-Black.ttf) format("truetype");
+  font-display: fallback;
+}
+/*傣仂文*/
+@font-face {
+  font-family: "ATaiThamKHNewV3-Normal";
+  font-style: normal;
+  font-weight: 400;
+  src: local("A Tai Tham KH New V3"),
+    url(./taitham/tai-tham-kh-new-v3.ttf) format("truetype");
+  font-display: fallback;
+}
+
+/*中文繁體*/
+
+@font-face {
+  font-family: "Noto Sans TC";
+  font-style: normal;
+  font-weight: 300;
+  src: local("Noto Sans TC Light"), local("Noto Sans CJK TC Light"),
+    local("Source Han Sans TWHK Light");
+  /*url(../../font/NotoSansTC/NotoSansCJKtc-Light.otf) format('opentype'),*/
+  /*url(../../font/NotoSansTC/NotoSansTC-Light.woff) format('woff')*/
+}
+
+@font-face {
+  font-family: "Noto Sans TC";
+  font-style: normal;
+  font-weight: 400;
+  src: local("Noto Sans TC Regular"), local("Noto Sans CJK TC Regular"),
+    local("Source Han Sans TWHK Regular");
+  /*url(../../font/NotoSansTC/NotoSansCJKtc-Regular.otf) format('opentype'),*/
+  /*url(../../font/NotoSansTC/NotoSansTC-Regular.woff) format('woff');*/
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans TC";
+  font-style: normal;
+  font-weight: 500;
+  src: local("Noto Sans TC Medium"), local("Noto Sans CJK TC Medium"),
+    local("Source Han Sans TWHK Medium");
+  /*url(../../font/NotoSansTC/NotoSansCJKtc-Medium.otf) format('opentype'),*/
+  /*url(../../font/NotoSansTC/NotoSansTC-Medium.woff) format('woff');*/
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans TC";
+  font-style: normal;
+  font-weight: 700;
+  src: local("Noto Sans TC Bold"), local("Noto Sans CJK TC Bold"),
+    local("Source Han Sans TWHK Bold");
+  /*url(../../font/NotoSansTC/NotoSansCJKtc-Bold.otf) format('opentype'),*/
+  /*url(../../font/NotoSansTC/NotoSansTC-Bold.woff) format('woff');*/
+  font-display: fallback;
+}
+
+/*中文简体*/
+
+@font-face {
+  font-family: "Noto Sans SC";
+  font-style: normal;
+  font-weight: 300;
+  src: local("Noto Sans SC Light"), local("Noto Sans CJK SC Light"),
+    local("Source Han Sans CN Light");
+  /*url(../../font/NotoSansSC/NotoSansCJKsc-Light.otf) format('opentype'),
+    url(../../font/NotoSansSC/NotoSansSC-Light.woff) format('woff')*/
+}
+
+@font-face {
+  font-family: "Noto Sans SC";
+  font-style: normal;
+  font-weight: 400;
+  src: local("Noto Sans SC Regular"), local("Noto Sans CJK SC Regular"),
+    local("Source Han Sans CN Regular");
+  /*url(../../font/NotoSansSC/NotoSansCJKsc-Regular.otf) format('opentype'),
+    url(../../font/NotoSansSC/NotoSansSC-Regular.woff) format('woff');*/
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans SC";
+  font-style: normal;
+  font-weight: 500;
+  src: local("Noto Sans SC Medium"), local("Noto Sans CJK SC Medium"),
+    local("Source Han Sans CN Medium");
+  /*url(../../font/NotoSansSC/NotoSansCJKsc-Medium.otf) format('opentype'),
+    url(../../font/NotoSansSC/NotoSansSC-Medium.woff) format('woff');*/
+  font-display: fallback;
+}
+
+@font-face {
+  font-family: "Noto Sans SC";
+  font-style: normal;
+  font-weight: 700;
+  src: local("Noto Sans SC Bold"), local("Noto Sans CJK SC Bold"),
+    local("Source Han Sans CN Bold");
+  /*url(../../font/NotoSansSC/NotoSansCJKsc-Bold.otf) format('opentype'),
+    url(../../font/NotoSansSC/NotoSansSC-Bold.woff) format('woff');*/
+  font-display: fallback;
+}
+
+.font_ch {
+  font-family: "Noto Sans TC", "Noto Sans SC", Arial, Verdana;
+  font-style: normal;
+}
+
+.font_pali {
+  font-family: "Noto Sans", Arial, Verdana;
+  font-style: normal;
+}
+
+.font_m {
+  font-family: "Noto Sans", "Noto Sans TC", "Noto Sans SC", Arial, Verdana;
+  font-weight: 500;
+  font-style: normal;
+}
+
+.font_r {
+  font-family: "Noto Sans", "Noto Sans TC", "Noto Sans SC", Arial, Verdana;
+  font-weight: 400;
+  font-style: normal;
+}
+
+.font_l {
+  font-family: "Noto Sans", "Noto Sans TC", "Noto Sans SC", Arial, Verdana;
+  font-weight: 300;
+  font-style: normal;
+}
+
+.font_t {
+  font-family: "Noto Sans", "Noto Sans TC", "Noto Sans SC", Arial, Verdana;
+  font-weight: 100;
+  font-style: normal;
+}

BIN
dashboard/src/assets/font/taitham/tai-tham-kh-new-v3.ttf


+ 34 - 0
dashboard/src/components/nut/FontBox.tsx

@@ -0,0 +1,34 @@
+interface IItem {
+  id: string;
+  value: string;
+}
+
+const Widget = () => {
+  const items: IItem[] = [
+    { id: "bbho", value: "ᨻᩮ᩠ᨽᩣ" },
+    { id: "ccho", value: "ᨧᩮ᩠ᨨᩣ" },
+    { id: "ddho", value: "ᨴᩮ᩠ᨵᩣ" },
+    { id: "ḍḍho", value: "ᨯᩮ᩠ᨰᩣ" },
+    { id: "ggho", value: "ᨣᩮ᩠ᨥᩣ" },
+    { id: "jjho", value: "ᨩᩮ᩠ᨫᩣ" },
+    { id: "kkho", value: "ᨠᩮ᩠ᨡᩣ" },
+    { id: "mbho", value: "ᨾᩮ᩠ᨽᩣ" },
+    { id: "mpho", value: "ᨾᩮ᩠ᨹᩣ" },
+  ];
+  return (
+    <ul>
+      {items.map((x) => (
+        <li
+          style={{
+            fontFamily: "ATaiThamKHNewV3-Normal",
+          }}
+          key={x.id}
+        >
+          {x.id} {x.value}
+        </li>
+      ))}
+    </ul>
+  );
+};
+
+export default Widget;

+ 54 - 0
dashboard/src/components/nut/Form.tsx

@@ -0,0 +1,54 @@
+import { useRef } from "react";
+import { ProForm, ProFormSelect } from "@ant-design/pro-components";
+import type { ProFormInstance } from "@ant-design/pro-components";
+import { Button } from "antd";
+
+interface IFormData {
+  sv: number;
+}
+
+const Widget = () => {
+  const formRef = useRef<ProFormInstance>();
+  const svCur = 5;
+  const onWhat = () => {
+    const it = formRef.current?.getFieldValue("sv") || [];
+    console.log(it);
+
+    if (!it.includes(svCur)) {
+      it.push(svCur);
+    }
+
+    formRef.current?.setFieldsValue({ sv: it });
+  };
+  return (
+    <ProForm<IFormData>
+      name="demo"
+      formRef={formRef}
+      submitter={{
+        render: (props, doms) => {
+          return [
+            ...doms,
+            <Button.Group key="refs" style={{ display: "block" }}>
+              <Button htmlType="button" onClick={onWhat} key="what">
+                What?
+              </Button>
+            </Button.Group>,
+          ];
+        },
+      }}
+    >
+      <ProFormSelect
+        width="md"
+        name="sv"
+        mode="multiple"
+        allowClear
+        dependencies={["sv"]}
+        options={Array.from(Array(10).keys()).map((x) => {
+          return { value: x, label: `V${x}`, disabled: x === svCur };
+        })}
+      />
+    </ProForm>
+  );
+};
+
+export default Widget;

+ 8 - 2
dashboard/src/components/nut/Home.tsx

@@ -7,6 +7,8 @@ import WbwSent from "../template/WbwSent";
 
 import MarkdownForm from "./MarkdownForm";
 import MarkdownShow from "./MarkdownShow";
+import FontBox from "./FontBox";
+import DemoForm from "./Form";
 
 const Widget = () => {
   let wbwData: IWbw[] = [];
@@ -42,7 +44,13 @@ const Widget = () => {
       </div>
       <h2>MdView test</h2>
       <MdView html="<h1 name='h1'>hello<MdTpl name='term'/></h1>" />
+
+      <br />
+      <DemoForm />
+      <br />
+      <FontBox />
       <br />
+
       <MarkdownShow body="- Hello, **《mint》**!" />
       <br />
       <h3>Form</h3>
@@ -52,8 +60,6 @@ const Widget = () => {
       <div>
         <ReactMarkdown>*This* is text with `quote`</ReactMarkdown>
       </div>
-
-      <div style={{ height: 600 }}></div>
     </div>
   );
 };

+ 3 - 0
openapi/.gitignore

@@ -0,0 +1,3 @@
+/node_modules/
+/yarn.lock
+/dist/

+ 10 - 0
openapi/README.md

@@ -0,0 +1,10 @@
+# USAGE
+
+```bash
+yarn install
+yarn run dev
+```
+
+## Documents
+
+- [OpenAPI Guide](https://swagger.io/docs/specification/basic-structure/)

+ 13 - 0
openapi/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Vite + React + TS</title>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="module" src="/src/main.tsx"></script>
+  </body>
+</html>

+ 24 - 0
openapi/package.json

@@ -0,0 +1,24 @@
+{
+  "name": "openapi",
+  "private": true,
+  "version": "0.0.0",
+  "type": "module",
+  "scripts": {
+    "dev": "vite",
+    "build": "tsc && vite build",
+    "preview": "vite preview"
+  },
+  "dependencies": {
+    "@types/swagger-ui-react": "^4.11.0",
+    "react": "^18.2.0",
+    "react-dom": "^18.2.0",
+    "swagger-ui-react": "^4.15.5"
+  },
+  "devDependencies": {
+    "@types/react": "^18.0.24",
+    "@types/react-dom": "^18.0.8",
+    "@vitejs/plugin-react": "^2.2.0",
+    "typescript": "^4.6.4",
+    "vite": "^3.2.3"
+  }
+}

+ 24 - 0
openapi/public/assets/protocol/main.yaml

@@ -0,0 +1,24 @@
+openapi: 3.0.0
+info:
+  title: Sample API
+  description: Optional multiline or single-line description in [CommonMark](http://commonmark.org/help/) or HTML.
+  version: 0.1.9
+servers:
+  - url: http://api.example.com/v1
+    description: Optional server description, e.g. Main (production) server
+  - url: http://staging-api.example.com
+    description: Optional server description, e.g. Internal staging server for testing
+paths:
+  /users:
+    get:
+      summary: Returns a list of users.
+      description: Optional extended description in CommonMark or HTML.
+      responses:
+        "200": # status code
+          description: A JSON array of user names
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  type: string

+ 1 - 0
openapi/public/vite.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

+ 4 - 0
openapi/src/App.css

@@ -0,0 +1,4 @@
+body {
+  margin: 0;
+  padding: 0;
+}

+ 14 - 0
openapi/src/App.tsx

@@ -0,0 +1,14 @@
+import SwaggerUI from "swagger-ui-react";
+
+import "swagger-ui-react/swagger-ui.css";
+
+import "./App.css";
+
+const Widget = () => (
+  <SwaggerUI
+    url={`${import.meta.env.BASE_URL}/assets/protocol/main.yaml`}
+    withCredentials
+  />
+);
+
+export default Widget;

+ 8 - 0
openapi/src/main.tsx

@@ -0,0 +1,8 @@
+import React from "react";
+import ReactDOM from "react-dom/client";
+
+import App from "./App";
+
+ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
+  <App />
+);

+ 1 - 0
openapi/src/vite-env.d.ts

@@ -0,0 +1 @@
+/// <reference types="vite/client" />

+ 21 - 0
openapi/tsconfig.json

@@ -0,0 +1,21 @@
+{
+  "compilerOptions": {
+    "target": "ESNext",
+    "useDefineForClassFields": true,
+    "lib": ["DOM", "DOM.Iterable", "ESNext"],
+    "allowJs": false,
+    "skipLibCheck": true,
+    "esModuleInterop": false,
+    "allowSyntheticDefaultImports": true,
+    "strict": true,
+    "forceConsistentCasingInFileNames": true,
+    "module": "ESNext",
+    "moduleResolution": "Node",
+    "resolveJsonModule": true,
+    "isolatedModules": true,
+    "noEmit": true,
+    "jsx": "react-jsx"
+  },
+  "include": ["src"],
+  "references": [{ "path": "./tsconfig.node.json" }]
+}

+ 9 - 0
openapi/tsconfig.node.json

@@ -0,0 +1,9 @@
+{
+  "compilerOptions": {
+    "composite": true,
+    "module": "ESNext",
+    "moduleResolution": "Node",
+    "allowSyntheticDefaultImports": true
+  },
+  "include": ["vite.config.ts"]
+}

+ 8 - 0
openapi/vite.config.ts

@@ -0,0 +1,8 @@
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+
+// https://vitejs.dev/config/
+export default defineConfig({
+  plugins: [react()],
+  base: "/protocols/",
+});