neumorphic-peripheral
Version:
A lightweight, framework-agnostic JavaScript/TypeScript library for beautiful neumorphic styling
132 lines (131 loc) • 5.74 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.autoDetectTheme = exports.getCurrentTheme = exports.setTheme = exports.button = exports.ButtonComponent = exports.password = exports.PasswordComponent = exports.input = exports.InputComponent = exports.card = exports.CardComponent = exports.BaseComponent = void 0;
// Core exports
__exportStar(require("./types"), exports);
__exportStar(require("./themes"), exports);
__exportStar(require("./utils"), exports);
__exportStar(require("./validators"), exports);
// Component exports
var base_1 = require("./components/base");
Object.defineProperty(exports, "BaseComponent", { enumerable: true, get: function () { return base_1.BaseComponent; } });
var card_1 = require("./components/card");
Object.defineProperty(exports, "CardComponent", { enumerable: true, get: function () { return card_1.CardComponent; } });
Object.defineProperty(exports, "card", { enumerable: true, get: function () { return card_1.card; } });
var input_1 = require("./components/input");
Object.defineProperty(exports, "InputComponent", { enumerable: true, get: function () { return input_1.InputComponent; } });
Object.defineProperty(exports, "input", { enumerable: true, get: function () { return input_1.input; } });
var password_1 = require("./components/password");
Object.defineProperty(exports, "PasswordComponent", { enumerable: true, get: function () { return password_1.PasswordComponent; } });
Object.defineProperty(exports, "password", { enumerable: true, get: function () { return password_1.password; } });
var button_1 = require("./components/button");
Object.defineProperty(exports, "ButtonComponent", { enumerable: true, get: function () { return button_1.ButtonComponent; } });
Object.defineProperty(exports, "button", { enumerable: true, get: function () { return button_1.button; } });
// Main API
const card_2 = require("./components/card");
const input_2 = require("./components/input");
const password_2 = require("./components/password");
const button_2 = require("./components/button");
const themes_1 = require("./themes");
Object.defineProperty(exports, "setTheme", { enumerable: true, get: function () { return themes_1.setTheme; } });
Object.defineProperty(exports, "getCurrentTheme", { enumerable: true, get: function () { return themes_1.getCurrentTheme; } });
Object.defineProperty(exports, "autoDetectTheme", { enumerable: true, get: function () { return themes_1.autoDetectTheme; } });
// Global configuration
let globalConfig = {
theme: (0, themes_1.getCurrentTheme)(),
prefix: 'np',
autoInit: false
};
// Main neumorphic peripheral object
const np = {
// Component factories
card: card_2.card,
input: input_2.input,
password: password_2.password,
button: button_2.button,
// Theme management
setTheme: themes_1.setTheme,
getCurrentTheme: themes_1.getCurrentTheme,
autoDetectTheme: themes_1.autoDetectTheme,
// Global configuration
config(newConfig) {
globalConfig = { ...globalConfig, ...newConfig };
if (newConfig.theme) {
(0, themes_1.setTheme)(newConfig.theme);
}
},
getConfig() {
return { ...globalConfig };
},
// Utility methods
init() {
// Auto-initialize components if enabled
if (globalConfig.autoInit) {
this.autoInit();
}
},
autoInit() {
// Auto-initialize components based on data attributes
const elements = document.querySelectorAll('[data-np]');
elements.forEach(element => {
const component = element.getAttribute('data-np');
const configAttr = element.getAttribute('data-np-config');
let config = {};
if (configAttr) {
try {
config = JSON.parse(configAttr);
}
catch (e) {
console.warn('Invalid JSON in data-np-config:', configAttr);
}
}
switch (component) {
case 'card':
this.card(element, config);
break;
case 'input':
this.input(element, config);
break;
case 'password':
this.password(element, config);
break;
case 'button':
this.button(element, config);
break;
}
});
},
// Version info
version: '1.0.0',
// Destroy all components
destroyAll() {
// This would require keeping track of all instances
// For now, emit a global event that components can listen to
window.dispatchEvent(new CustomEvent('np:destroy-all'));
}
};
// Auto-initialize when DOM is ready
if (typeof window !== 'undefined') {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => np.init());
}
else {
np.init();
}
}
// Default export
exports.default = np;