Browse Source

feat: init md

zhenyulei 5 years ago
parent
commit
dbd1eb180c

+ 12 - 0
.editorconfig

@@ -0,0 +1,12 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = false
+
+[*.md]
+trim_trailing_whitespace = false

+ 27 - 10
src/packages/button/demo.vue

@@ -11,31 +11,48 @@
       <nut-button type="warning">警告按钮</nut-button>
       <nut-button type="success">成功按钮</nut-button>
     </div>
-    <div class="title">边框按钮</div>
-
+    <div class="title">朴素按钮</div>
+    <div class="demo-button-row2">
+      <nut-button plain type="primary">朴素按钮</nut-button>
+      <nut-button plain type="info">朴素按钮</nut-button>
+    </div>
     <div class="title">禁用状态</div>
-
+    <div class="demo-button-row2">
+      <nut-button disabled type="primary">禁用状态</nut-button>
+      <nut-button plain disabled type="info">禁用状态</nut-button>
+      <nut-button plain disabled type="primary">禁用状态</nut-button>
+    </div>
     <div class="title">按钮形状</div>
-
+    <div class="demo-button-row2">
+      <nut-button shape="square" type="primary">方形按钮</nut-button>
+      <nut-button type="info">圆形按钮</nut-button>
+    </div>
     <div class="title">加载状态</div>
 
     <div class="title">图标按钮</div>
 
     <div class="title">按钮尺寸</div>
-    <nut-button block type="primary">通栏按钮</nut-button>
-    <nut-button>普通按钮</nut-button>
-    <nut-button>小型按钮</nut-button>
+    <div class="demo-button-row2">
+      <div class="demo-button-row2">
+        <nut-button block type="primary">通栏按钮</nut-button>
+      </div>
+      <div class="demo-button-row2">
+        <nut-button type="primary">普通按钮</nut-button>
+        <nut-button size="small" type="primary">小型按钮</nut-button>
+      </div>
+    </div>
   </div>
 </template>
 
 <script lang="ts">
 import Button from '@/packages/button/index.vue';
-import { createDemoComponent } from '@/utils/create';
-export default createDemoComponent('button')({
+import { createComponent } from '@/utils/create';
+const { createDemo } = createComponent('button');
+export default createDemo({
   props: {
     text: String
   },
-  components: { 'nut-button': Button },
+  components: { [Button.name]: Button },
   emits: ['click']
 });
 </script>

+ 16 - 5
src/packages/button/index.scss

@@ -74,28 +74,38 @@
   }
 
   &--plain {
-    background-color: $button-plain-background-color;
+    background: $button-plain-background-color;
 
     &.nut-button--primary {
-      color: $button-primary-background-color;
+      color: $button-primary-border-color;
+      border-color: $button-primary-border-color;
+    }
+
+    &.nut-button--info {
+      color: $button-info-border-color;
+      border-color: $button-info-border-color;
     }
 
     &.nut-button--success {
-      color: $button-success-background-color;
+      color: $button-success-border-color;
+      border-color: $button-success-border-color;
     }
 
     &.nut-button--danger {
-      color: $button-danger-background-color;
+      color: $button-danger-border-color;
+      border-color: $button-danger-border-color;
     }
 
     &.nut-button--warning {
-      color: $button-warning-background-color;
+      color: $button-warning-border-color;
+      border-color: $button-warning-border-color;
     }
   }
 
   &--large {
     width: 100%;
     height: $button-large-height;
+    line-height: $button-large-line-height;
   }
 
   &--normal {
@@ -105,6 +115,7 @@
 
   &--small {
     height: $button-small-height;
+    line-height: $button-small-line-height;
     padding: 0 $padding-xs;
     font-size: $font-size-1;
   }

+ 9 - 4
src/packages/button/index.vue

@@ -9,10 +9,13 @@
 <script lang="ts">
 import { PropType, CSSProperties, toRefs, computed } from 'vue';
 import { createComponent } from '@/utils/create';
+const { componentName, create } = createComponent('button');
+
 export type ButtonType = 'default' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
 export type ButtonSize = 'large' | 'normal' | 'small';
 export type ButtonShape = 'square' | 'round';
-export default createComponent('button')({
+
+export default create({
   props: {
     color: String,
     shape: {
@@ -59,13 +62,15 @@ export default createComponent('button')({
     };
 
     const classes = computed(() => {
-      const prefixCls = 'nut-button';
+      const prefixCls = componentName;
       return {
-        'nut-button': true,
+        [componentName]: true,
         [`${prefixCls}--${type.value}`]: type.value,
         [`${prefixCls}--${size.value}`]: size.value,
         [`${prefixCls}--${shape.value}`]: shape.value,
-        [`${prefixCls}--block`]: block.value
+        [`${prefixCls}--plain`]: plain.value,
+        [`${prefixCls}--block`]: block.value,
+        [`${prefixCls}--disabled`]: disabled.value
       };
     });
 

+ 32 - 0
src/packages/cell/doc.md

@@ -0,0 +1,32 @@
+# Cell 列表组件
+
+## 介绍
+
+列表项,可组成列表。
+
+## 安装
+
+``` javascript
+import { createApp } from 'vue';
+import { Cell } from '@nutui/nutui';
+
+const app = createApp();
+app.use(Cell);
+
+```
+
+## 代码示例
+
+### 基本用法
+
+Cell `to` 有值的时候,跳转路由,`click-cell` 点击 `cell`触发事件
+
+``` javascript
+
+```
+
+### 单元格大小
+
+
+
+

+ 0 - 0
src/packages/cell/index.scss


+ 6 - 0
src/sites/doc/router.ts

@@ -45,6 +45,12 @@ routes.push({
   redirect: () => '/'
 });
 
+routes.push({
+  name: 'NotFound',
+  path: '/:path(.*)+',
+  redirect: () => '/'
+});
+
 const router = createRouter({
   history: createWebHashHistory(),
   routes,

+ 539 - 0
src/styles/font/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

+ 630 - 0
src/styles/font/demo_index.html

@@ -0,0 +1,630 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>IconFont Demo</title>
+  <link rel="shortcut icon" href="https://img.alicdn.com/tps/i4/TB1_oz6GVXXXXaFXpXXJDFnIXXX-64-64.ico" type="image/x-icon"/>
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
+  <link rel="stylesheet" href="demo.css">
+  <link rel="stylesheet" href="iconfont.css">
+  <script src="iconfont.js"></script>
+  <!-- jQuery -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
+  <!-- 代码高亮 -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">&#xe86b;</a></h1>
+    <div class="nav-tabs">
+      <ul id="tabs" class="dib-box">
+        <li class="dib active"><span>Unicode</span></li>
+        <li class="dib"><span>Font class</span></li>
+        <li class="dib"><span>Symbol</span></li>
+      </ul>
+      
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=2166874" target="_blank" class="nav-more">查看项目</a>
+      
+    </div>
+    <div class="tab-container">
+      <div class="content unicode" style="display: block;">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7de;</span>
+                <div class="name">mail</div>
+                <div class="code-name">&amp;#xe7de;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7df;</span>
+                <div class="name">id card</div>
+                <div class="code-name">&amp;#xe7df;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e0;</span>
+                <div class="name">heat map</div>
+                <div class="code-name">&amp;#xe7e0;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e1;</span>
+                <div class="name">wifi</div>
+                <div class="code-name">&amp;#xe7e1;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e2;</span>
+                <div class="name">edit</div>
+                <div class="code-name">&amp;#xe7e2;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e3;</span>
+                <div class="name">key</div>
+                <div class="code-name">&amp;#xe7e3;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e4;</span>
+                <div class="name">link</div>
+                <div class="code-name">&amp;#xe7e4;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e5;</span>
+                <div class="name">man</div>
+                <div class="code-name">&amp;#xe7e5;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e6;</span>
+                <div class="name">percentage</div>
+                <div class="code-name">&amp;#xe7e6;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e7;</span>
+                <div class="name">pushpin</div>
+                <div class="code-name">&amp;#xe7e7;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e8;</span>
+                <div class="name">fork</div>
+                <div class="code-name">&amp;#xe7e8;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e9;</span>
+                <div class="name">shrink</div>
+                <div class="code-name">&amp;#xe7e9;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7ea;</span>
+                <div class="name">arrawsalt</div>
+                <div class="code-name">&amp;#xe7ea;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7eb;</span>
+                <div class="name">vertical right</div>
+                <div class="code-name">&amp;#xe7eb;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7ec;</span>
+                <div class="name">right</div>
+                <div class="code-name">&amp;#xe7ec;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7ed;</span>
+                <div class="name">left</div>
+                <div class="code-name">&amp;#xe7ed;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7ee;</span>
+                <div class="name">up</div>
+                <div class="code-name">&amp;#xe7ee;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7ef;</span>
+                <div class="name">down</div>
+                <div class="code-name">&amp;#xe7ef;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7f0;</span>
+                <div class="name">fullscreen</div>
+                <div class="code-name">&amp;#xe7f0;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7f1;</span>
+                <div class="name">fullscreen-exit</div>
+                <div class="code-name">&amp;#xe7f1;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>兼容性最好,支持 IE6+,及所有现代浏览器。</li>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式</p>
+          </blockquote>
+          <p>Unicode 使用步骤如下:</p>
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
+<pre><code class="language-css"
+>@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.eot');
+  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
+      url('iconfont.woff2') format('woff2'),
+      url('iconfont.woff') format('woff'),
+      url('iconfont.ttf') format('truetype'),
+      url('iconfont.svg#iconfont') format('svg');
+}
+</code></pre>
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
+<pre><code class="language-css"
+>.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
+<pre>
+<code class="language-html"
+>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
+</code></pre>
+          <blockquote>
+            <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+          </blockquote>
+          </div>
+      </div>
+      <div class="content font-class">
+        <ul class="icon_lists dib-box">
+          
+          <li class="dib">
+            <span class="icon iconfont icon-mail"></span>
+            <div class="name">
+              mail
+            </div>
+            <div class="code-name">.icon-mail
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-idcard"></span>
+            <div class="name">
+              id card
+            </div>
+            <div class="code-name">.icon-idcard
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-heatmap"></span>
+            <div class="name">
+              heat map
+            </div>
+            <div class="code-name">.icon-heatmap
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-wifi"></span>
+            <div class="name">
+              wifi
+            </div>
+            <div class="code-name">.icon-wifi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-edit"></span>
+            <div class="name">
+              edit
+            </div>
+            <div class="code-name">.icon-edit
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-key"></span>
+            <div class="name">
+              key
+            </div>
+            <div class="code-name">.icon-key
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-link"></span>
+            <div class="name">
+              link
+            </div>
+            <div class="code-name">.icon-link
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-man"></span>
+            <div class="name">
+              man
+            </div>
+            <div class="code-name">.icon-man
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-percentage"></span>
+            <div class="name">
+              percentage
+            </div>
+            <div class="code-name">.icon-percentage
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-pushpin"></span>
+            <div class="name">
+              pushpin
+            </div>
+            <div class="code-name">.icon-pushpin
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-fork"></span>
+            <div class="name">
+              fork
+            </div>
+            <div class="code-name">.icon-fork
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-shrink"></span>
+            <div class="name">
+              shrink
+            </div>
+            <div class="code-name">.icon-shrink
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-arrawsalt"></span>
+            <div class="name">
+              arrawsalt
+            </div>
+            <div class="code-name">.icon-arrawsalt
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-verticalright"></span>
+            <div class="name">
+              vertical right
+            </div>
+            <div class="code-name">.icon-verticalright
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-right"></span>
+            <div class="name">
+              right
+            </div>
+            <div class="code-name">.icon-right
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-left"></span>
+            <div class="name">
+              left
+            </div>
+            <div class="code-name">.icon-left
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-up"></span>
+            <div class="name">
+              up
+            </div>
+            <div class="code-name">.icon-up
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-down"></span>
+            <div class="name">
+              down
+            </div>
+            <div class="code-name">.icon-down
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-fullscreen"></span>
+            <div class="name">
+              fullscreen
+            </div>
+            <div class="code-name">.icon-fullscreen
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-fullscreen-exit"></span>
+            <div class="name">
+              fullscreen-exit
+            </div>
+            <div class="code-name">.icon-fullscreen-exit
+            </div>
+          </li>
+          
+        </ul>
+        <div class="article markdown">
+        <h2 id="font-class-">font-class 引用</h2>
+        <hr>
+
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
+        <ul>
+          <li>兼容性良好,支持 IE8+,及所有现代浏览器。</li>
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
+          <li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
+        </ul>
+        <p>使用步骤如下:</p>
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
+</code></pre>
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
+</code></pre>
+        <blockquote>
+          <p>"
+            iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+        </blockquote>
+      </div>
+      </div>
+      <div class="content symbol">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-mail"></use>
+                </svg>
+                <div class="name">mail</div>
+                <div class="code-name">#icon-mail</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-idcard"></use>
+                </svg>
+                <div class="name">id card</div>
+                <div class="code-name">#icon-idcard</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-heatmap"></use>
+                </svg>
+                <div class="name">heat map</div>
+                <div class="code-name">#icon-heatmap</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-wifi"></use>
+                </svg>
+                <div class="name">wifi</div>
+                <div class="code-name">#icon-wifi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-edit"></use>
+                </svg>
+                <div class="name">edit</div>
+                <div class="code-name">#icon-edit</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-key"></use>
+                </svg>
+                <div class="name">key</div>
+                <div class="code-name">#icon-key</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-link"></use>
+                </svg>
+                <div class="name">link</div>
+                <div class="code-name">#icon-link</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-man"></use>
+                </svg>
+                <div class="name">man</div>
+                <div class="code-name">#icon-man</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-percentage"></use>
+                </svg>
+                <div class="name">percentage</div>
+                <div class="code-name">#icon-percentage</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-pushpin"></use>
+                </svg>
+                <div class="name">pushpin</div>
+                <div class="code-name">#icon-pushpin</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-fork"></use>
+                </svg>
+                <div class="name">fork</div>
+                <div class="code-name">#icon-fork</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-shrink"></use>
+                </svg>
+                <div class="name">shrink</div>
+                <div class="code-name">#icon-shrink</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-arrawsalt"></use>
+                </svg>
+                <div class="name">arrawsalt</div>
+                <div class="code-name">#icon-arrawsalt</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-verticalright"></use>
+                </svg>
+                <div class="name">vertical right</div>
+                <div class="code-name">#icon-verticalright</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-right"></use>
+                </svg>
+                <div class="name">right</div>
+                <div class="code-name">#icon-right</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-left"></use>
+                </svg>
+                <div class="name">left</div>
+                <div class="code-name">#icon-left</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-up"></use>
+                </svg>
+                <div class="name">up</div>
+                <div class="code-name">#icon-up</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-down"></use>
+                </svg>
+                <div class="name">down</div>
+                <div class="code-name">#icon-down</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-fullscreen"></use>
+                </svg>
+                <div class="name">fullscreen</div>
+                <div class="code-name">#icon-fullscreen</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-fullscreen-exit"></use>
+                </svg>
+                <div class="name">fullscreen-exit</div>
+                <div class="code-name">#icon-fullscreen-exit</div>
+            </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="symbol-">Symbol 引用</h2>
+          <hr>
+
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
+          <ul>
+            <li>支持多色图标了,不再受单色限制。</li>
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
+          </ul>
+          <p>使用步骤如下:</p>
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
+</code></pre>
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
+<pre><code class="language-html">&lt;style&gt;
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+&lt;/style&gt;
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
+&lt;/svg&gt;
+</code></pre>
+          </div>
+      </div>
+
+    </div>
+  </div>
+  <script>
+  $(document).ready(function () {
+      $('.tab-container .content:first').show()
+
+      $('#tabs li').click(function (e) {
+        var tabContent = $('.tab-container .content')
+        var index = $(this).index()
+
+        if ($(this).hasClass('active')) {
+          return
+        } else {
+          $('#tabs li').removeClass('active')
+          $(this).addClass('active')
+
+          tabContent.hide().eq(index).fadeIn()
+        }
+      })
+    })
+  </script>
+</body>
+</html>

File diff suppressed because it is too large
+ 97 - 0
src/styles/font/iconfont.css


BIN
src/styles/font/iconfont.eot


File diff suppressed because it is too large
+ 59 - 0
src/styles/font/iconfont.js


+ 149 - 0
src/styles/font/iconfont.json

@@ -0,0 +1,149 @@
+{
+  "id": "2166874",
+  "name": "nutui",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "4766918",
+      "name": "mail",
+      "font_class": "mail",
+      "unicode": "e7de",
+      "unicode_decimal": 59358
+    },
+    {
+      "icon_id": "4766920",
+      "name": "id card",
+      "font_class": "idcard",
+      "unicode": "e7df",
+      "unicode_decimal": 59359
+    },
+    {
+      "icon_id": "4766956",
+      "name": "heat map",
+      "font_class": "heatmap",
+      "unicode": "e7e0",
+      "unicode_decimal": 59360
+    },
+    {
+      "icon_id": "4766957",
+      "name": "wifi",
+      "font_class": "wifi",
+      "unicode": "e7e1",
+      "unicode_decimal": 59361
+    },
+    {
+      "icon_id": "4766959",
+      "name": "edit",
+      "font_class": "edit",
+      "unicode": "e7e2",
+      "unicode_decimal": 59362
+    },
+    {
+      "icon_id": "4766960",
+      "name": "key",
+      "font_class": "key",
+      "unicode": "e7e3",
+      "unicode_decimal": 59363
+    },
+    {
+      "icon_id": "4766965",
+      "name": "link",
+      "font_class": "link",
+      "unicode": "e7e4",
+      "unicode_decimal": 59364
+    },
+    {
+      "icon_id": "4766966",
+      "name": "man",
+      "font_class": "man",
+      "unicode": "e7e5",
+      "unicode_decimal": 59365
+    },
+    {
+      "icon_id": "4766967",
+      "name": "percentage",
+      "font_class": "percentage",
+      "unicode": "e7e6",
+      "unicode_decimal": 59366
+    },
+    {
+      "icon_id": "4766969",
+      "name": "pushpin",
+      "font_class": "pushpin",
+      "unicode": "e7e7",
+      "unicode_decimal": 59367
+    },
+    {
+      "icon_id": "4766995",
+      "name": "fork",
+      "font_class": "fork",
+      "unicode": "e7e8",
+      "unicode_decimal": 59368
+    },
+    {
+      "icon_id": "4767006",
+      "name": "shrink",
+      "font_class": "shrink",
+      "unicode": "e7e9",
+      "unicode_decimal": 59369
+    },
+    {
+      "icon_id": "4767007",
+      "name": "arrawsalt",
+      "font_class": "arrawsalt",
+      "unicode": "e7ea",
+      "unicode_decimal": 59370
+    },
+    {
+      "icon_id": "4767009",
+      "name": "vertical right",
+      "font_class": "verticalright",
+      "unicode": "e7eb",
+      "unicode_decimal": 59371
+    },
+    {
+      "icon_id": "4767011",
+      "name": "right",
+      "font_class": "right",
+      "unicode": "e7ec",
+      "unicode_decimal": 59372
+    },
+    {
+      "icon_id": "4767012",
+      "name": "left",
+      "font_class": "left",
+      "unicode": "e7ed",
+      "unicode_decimal": 59373
+    },
+    {
+      "icon_id": "4767013",
+      "name": "up",
+      "font_class": "up",
+      "unicode": "e7ee",
+      "unicode_decimal": 59374
+    },
+    {
+      "icon_id": "4767014",
+      "name": "down",
+      "font_class": "down",
+      "unicode": "e7ef",
+      "unicode_decimal": 59375
+    },
+    {
+      "icon_id": "4767015",
+      "name": "fullscreen",
+      "font_class": "fullscreen",
+      "unicode": "e7f0",
+      "unicode_decimal": 59376
+    },
+    {
+      "icon_id": "4767016",
+      "name": "fullscreen-exit",
+      "font_class": "fullscreen-exit",
+      "unicode": "e7f1",
+      "unicode_decimal": 59377
+    }
+  ]
+}

File diff suppressed because it is too large
+ 86 - 0
src/styles/font/iconfont.svg


BIN
src/styles/font/iconfont.ttf


BIN
src/styles/font/iconfont.woff


BIN
src/styles/font/iconfont.woff2


+ 14 - 6
src/styles/variables.scss

@@ -27,18 +27,21 @@ $font-weight-bold: 400;
 // button
 $button-border-radius: 25px;
 $button-border-width: 1px;
-$button-default-bg-color: #fff;
+$button-default-bg-color: $white;
 $button-default-border-color: rgba(204, 204, 204, 1);
 $button-default-color: rgba(102, 102, 102, 1);
 $button-small-height: 28px;
 $button-default-height: 38px;
 $button-large-height: 48px;
+$button-large-line-height: 46px;
+$button-small-line-height: 26px;
 $button-block-height: 48px;
 $button-default-line-height: 36px;
 $button-block-line-height: 46px;
 $button-default-font-size: $font-size-2;
 $button-disabled-opacity: 0.68;
-$button-primary-color: #fff;
+$button-primary-color: $white;
+$button-primary-border-color: rgba(250, 44, 25, 1);
 $button-primary-background-color: linear-gradient(
   135deg,
   rgba(250, 44, 25, 1) 0%,
@@ -46,9 +49,11 @@ $button-primary-background-color: linear-gradient(
   rgba(250, 89, 25, 1) 83%,
   rgba(250, 100, 25, 1) 100%
 );
-$button-info-color: #fff;
+$button-info-color: $white;
+$button-info-border-color: rgba(73, 106, 242, 1);
 $button-info-background-color: linear-gradient(315deg, rgba(73, 143, 242, 1) 0%, rgba(73, 101, 242, 1) 100%);
-$button-success-color: #fff;
+$button-success-color: $white;
+$button-success-border-color: rgba(38, 191, 38, 1);
 $button-success-background-color: linear-gradient(
   135deg,
   rgba(38, 191, 38, 1) 0%,
@@ -57,9 +62,11 @@ $button-success-background-color: linear-gradient(
   rgba(41, 212, 70, 1) 100%
 );
 
-$button-danger-color: #fff;
+$button-danger-color: $white;
+$button-danger-border-color: rgba(250, 44, 25, 1);
 $button-danger-background-color: rgba(250, 44, 25, 1);
-$button-warning-color: #fff;
+$button-warning-color: $white;
+$button-warning-border-color: rgba(255, 158, 13, 1);
 $button-warning-background-color: linear-gradient(
   135deg,
   rgba(255, 158, 13, 1) 0%,
@@ -68,6 +75,7 @@ $button-warning-background-color: linear-gradient(
   rgba(255, 190, 13, 1) 100%
 );
 $button-plain-background-color: #fff;
+$button-plain-background-color: $white;
 
 //markdown-add-style
 $nutui-doc-black: #323233;

+ 17 - 18
src/utils/create/component.ts

@@ -1,21 +1,20 @@
 import { App, defineComponent, ComponentOptions } from 'vue';
 export function createComponent(name: string) {
-  return function(_component: ComponentOptions) {
-    _component.baseName = name;
-    _component.name = 'nut-' + name;
-    _component.install = (vue: App) => {
-      vue.component(_component.name as string, _component);
-    };
-    return defineComponent(_component);
-  } as typeof defineComponent;
-}
-export function createDemoComponent(name: string) {
-  return function(_component: ComponentOptions) {
-    _component.baseName = name;
-    _component.name = 'demo-' + name;
-    _component.install = (vue: App) => {
-      vue.component(_component.name as string, _component);
-    };
-    return defineComponent(_component);
-  } as typeof defineComponent;
+  const componentName = 'nut-' + name;
+  return {
+    componentName,
+    create: function(_component: ComponentOptions) {
+      _component.baseName = name;
+      _component.name = componentName;
+      _component.install = (vue: App) => {
+        vue.component(_component.name as string, _component);
+      };
+      return defineComponent(_component);
+    } as typeof defineComponent,
+    createDemo: function(_component: ComponentOptions) {
+      _component.baseName = name;
+      _component.name = 'demo-' + name;
+      return defineComponent(_component);
+    } as typeof defineComponent
+  };
 }

+ 2 - 2
src/utils/create/index.ts

@@ -1,2 +1,2 @@
-import { createComponent, createDemoComponent } from './component';
-export { createComponent, createDemoComponent };
+import { createComponent } from './component';
+export { createComponent };