npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

kb-app-ui

v0.2.5

Published

凯邦APP UI组件

Readme

kb-app-ui 移动端UI组件 (postcssrc 移动端适配方案 https://segmentfault.com/a/1190000021196911?utm_source=tag-newest)

安装

npm i kb-app-ui

Project setup

npm install

npm run dev


### 打包组件

npm run lib

### 打包组件

npm publish --registry=https://registry.npmjs.org/


-----examples // 原 src 目录,改成 examples 用作示例展示
-----packages // 新增 packages 用于编写存放组件
-----public //  公共资源

-----gitignore // 设置git忽略文件

-----npmignore // 设置npm忽略文件
-----vue.config.js // 对内部webpack 配置修改



// main.js

// 本地导入组件库
import kBAppUI from '../packages/index';

// npm 导入组件库
import kBAppUI from 'kb-app-ui';

// 注册组件库
Vue.use(kBAppUI);;

全局调用 如TqHeader
<tq-header rightText='查询' @rightOnClick='rightOnClick'></tq-header>

// 顶部导航栏组件
1、TqHeader 
props: {
        title: {   // 标题
            type: String,
            default: '标题'
        },
        rightText: {  // 右边标题
            type: String,
            default: ''
        },
        leftText: {   // 左边标题
            type: String,
            default: ''
        },
        backNumber: {  // 返回第几层
            type: Number,
            default: -1
        }
    },

methods: {
   // 右边标题点击事件
    rightOnClick() {
        this.$emit('rightOnClick', '')
    },
    // 左边标题点击事件
    leftOnClick() {
        this.$emit('leftOnClick', '')
    }
}
// 列表组件
2、TqCellBox
    props: {
        label: {  // 栏目名称
            type: String,
            default: '栏目名称'
        },
        val: {  // 初始值
            type: String,
            default: ''
        },
        placeholder: { // 输入提示语
            type: String,
            default: '扫描或输入条码'
        },
        readonly: { // 是否禁止填写
            type: Boolean,
            default: false
        }
    }
    methods: {
        // 失去焦点返回数据
        onblur() {
            this.$emit('getValue', this.value)
        }
    }

// 弹窗组件
3、TqPopup
    props: {
        isShow: {  // 是否显示
            type: Boolean,
            default: false
        },
        title: { // 标题
            type: String,
            default: ''
        },
        confirmText: {  // 确定按钮文本
            type: String,
            default: '确定'
        },
        cancelText: { // 取消按钮文本
            type: String,
            default: '取消'
        },
        hasCancelText: {  // 是否有取消按钮
            type: Boolean,
            default: true
        }
    }
    methods: {
        // 点击取消按钮事件
        doCancel() {
            this.$emit('doCancel')
        },
        // 点击确认按钮事件
        doConfirm() {
            this.$emit('doConfirm')
        },
        // 关闭弹窗按钮事件
        doHide() {
            this.$emit('doHide')
        }
    }


// 浮框提示
4、TqTips
    props: {
        left: {  // 向左坐标
            type: Number,
            default: 0
        },
        top: {  // 向右坐标
            type: Number,
            default: 0
        },
        text: {  // 内容文本
            type: String,
            default: '清除'
        },
        isShow: {  // 是否显示
            type: Boolean,
            default: false
        }
    }
    methods: {
        doConfirm() {  // 点击事件
            this.$emit('doConfirm')
        }
    }

// 顶部搜索弹窗
5、TqSearch
    props: {
        isShow: { // 是否显示
            type: Boolean,
            default: false
        },
        title: { // 标题0
            type: String,
            default: ''
        },
        confirmText: { // 查询文本
            type: String,
            default: '查询'
        },
        cancelText: { // 重置文本
            type: String,
            default: '重置'
        },
        hasCancelText: {  // 是否有重置按钮
            type: Boolean,
            default: true
        }
    }
    methods: {
        // 重置按钮点击
        doCancel() {
            this.$emit('doCancel')
        },
        // 查询按钮点击
        doConfirm() {
            this.$emit('doConfirm')
        },
        // 查询弹窗隐藏
        doHide() {
            this.$emit('doHide')
        }
    }


6、TqInput
    props: {
        val: {   // 输入绑定的数据
            type: String,
            default: ''
        },
        title: {  // 标题
            type: String,
            default: ''
        },
        placeholder: {  // 输入前提示语
            type: String,
            default: '请输入'
        },
        hasPadding:{ // 是否有边距
            type: Boolean,
            default: true
        }
    }
    methods: {
        // 输入框失去焦点向父级传递数据
        onBlur() {
            this.$emit('onBlur', this.value)
        }
    }


7、TqSelect
    props: {
        val: { // 输入绑定的数据
            type: String,
            default: ''
        },
        title: { // 标题
            type: String,
            default: ''
        },
        placeholder: { // 输入前提示语
            type: String,
            default: '请选择'
        },
        hasPadding:{ // 是否有边距
            type: Boolean,
            default: true
        }
    }

    methods: {
        // 点击事件向父级传递数据
        onSelect() {
            this.$emit('onSelect')
        }
    }

8、TqBtn
    props: {
        btns: {   // 按钮名称
            type: Array,
            default: () => ['确定']
        },
    }
    methods: {
        // 点击事件向父级传递数据 
        btnClick(index) {  // index:为btn索引
            this.$emit('btnClick', index)
        }
    }



适配方案配置文件
.postcssrc.js

// https://github.com/michael-ciniawsky/postcss-load-config

const path = require('path');
module.exports = {
  "plugins": {
    "postcss-import": {},
    "postcss-url": {},
    "postcss-aspect-ratio-mini": {},
    "postcss-write-svg": {
      utf8: false
    },
    "postcss-cssnext": {},
    "postcss-px-to-viewport": {
      viewportWidth: 375,     // (Number) The width of the viewport.
      viewportHeight: 595,    // (Number) The height of the viewport.
      unitPrecision: 3,       // (Number) The decimal numbers to allow the REM units to grow to.
      viewportUnit: 'vw',     // (String) Expected units.
      selectorBlackList: ['.ignore', '.hairlines', /^\.weui/, /^\.vux/],  // (Array) The selectors to ignore and leave as px.
      minPixelValue: 1,       // (Number) Set the minimum pixel value to replace.
      mediaQuery: false       // (Boolean) Allow px to be converted in media queries.
    },
    "postcss-viewport-units":{},
    "cssnano": {
      preset: "advanced",
      autoprefixer: false,
      "postcss-zindex": false,
      "postcss-reduce-idents": false
    },
  },
  "exclude": [
    path.resolve(__dirname, "node_modules/vux")
  ],
}