pure-react-ui 1.4.2 → 1.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,73 +1,64 @@
1
- # React + TypeScript + Vite
2
-
3
- This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
-
5
- Currently, two official plugins are available:
6
-
7
- - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
8
- - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
-
10
- ## React Compiler
11
-
12
- The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
-
14
- ## Expanding the ESLint configuration
15
-
16
- If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
17
-
18
- ```js
19
- export default defineConfig([
20
- globalIgnores(['dist']),
21
- {
22
- files: ['**/*.{ts,tsx}'],
23
- extends: [
24
- // Other configs...
25
-
26
- // Remove tseslint.configs.recommended and replace with this
27
- tseslint.configs.recommendedTypeChecked,
28
- // Alternatively, use this for stricter rules
29
- tseslint.configs.strictTypeChecked,
30
- // Optionally, add this for stylistic rules
31
- tseslint.configs.stylisticTypeChecked,
32
-
33
- // Other configs...
34
- ],
35
- languageOptions: {
36
- parserOptions: {
37
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
38
- tsconfigRootDir: import.meta.dirname,
39
- },
40
- // other options...
41
- },
42
- },
43
- ])
44
- ```
45
-
46
- You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
47
-
48
- ```js
49
- // eslint.config.js
50
- import reactX from 'eslint-plugin-react-x'
51
- import reactDom from 'eslint-plugin-react-dom'
52
-
53
- export default defineConfig([
54
- globalIgnores(['dist']),
55
- {
56
- files: ['**/*.{ts,tsx}'],
57
- extends: [
58
- // Other configs...
59
- // Enable lint rules for React
60
- reactX.configs['recommended-typescript'],
61
- // Enable lint rules for React DOM
62
- reactDom.configs.recommended,
63
- ],
64
- languageOptions: {
65
- parserOptions: {
66
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
67
- tsconfigRootDir: import.meta.dirname,
68
- },
69
- // other options...
70
- },
71
- },
72
- ])
73
- ```
1
+ # Pure React UI
2
+
3
+ A modern, accessible React UI component library with TypeScript support.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install pure-react-ui
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```jsx
14
+ import React from 'react';
15
+ import { PureButton } from 'pure-react-ui';
16
+ import 'pure-react-ui/src/styles/index.css'; // Import the CSS variables
17
+
18
+ function App() {
19
+ return (
20
+ <div>
21
+ <PureButton variant="primary" size="md">
22
+ Click me
23
+ </PureButton>
24
+
25
+ <PureButton variant="secondary" size="lg" fullWidth>
26
+ Full Width Button
27
+ </PureButton>
28
+
29
+ <PureButton variant="outline" size="sm" loading>
30
+ Loading...
31
+ </PureButton>
32
+ </div>
33
+ );
34
+ }
35
+
36
+ export default App;
37
+ ```
38
+
39
+ ## Components
40
+
41
+ ### PureButton
42
+
43
+ A versatile button component with multiple variants, sizes, and states.
44
+
45
+ #### Props
46
+
47
+ - `variant`: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'outline' | 'ghost'
48
+ - `size`: 'sm' | 'md' | 'lg'
49
+ - `fullWidth`: boolean
50
+ - `loading`: boolean
51
+ - `disabled`: boolean
52
+ - `leftIcon`: ReactNode
53
+ - `rightIcon`: ReactNode
54
+ - Plus all standard button props
55
+
56
+ ## Features
57
+
58
+ - TypeScript support with full type definitions
59
+ - Accessible design with proper ARIA attributes
60
+ - CSS variables for easy theming
61
+ - Multiple variants and sizes
62
+ - Loading and disabled states
63
+ - Icon support
64
+ - Responsive design
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ButtonProps } from './Button.types';
3
+ import "../../styles/variables.css";
4
+ export declare const PureButton: React.FC<ButtonProps>;
5
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,4BAA4B,CAAC;AAEpC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmD5C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ButtonHTMLAttributes, ReactNode } from 'react';
2
+ export type ButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'outline' | 'ghost';
3
+ export type ButtonSize = 'sm' | 'md' | 'lg';
4
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
5
+ variant?: ButtonVariant;
6
+ size?: ButtonSize;
7
+ fullWidth?: boolean;
8
+ loading?: boolean;
9
+ disabled?: boolean;
10
+ children: ReactNode;
11
+ leftIcon?: ReactNode;
12
+ rightIcon?: ReactNode;
13
+ }
14
+ //# sourceMappingURL=Button.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAC7G,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export { PureButton } from './Button';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ .Button-module_button__2ZuB7{align-items:center;border:none;border-radius:var(--pure-radius-md);cursor:pointer;display:inline-flex;font-family:var(--pure-font-family);font-size:var(--pure-font-size-md);font-weight:500;gap:var(--pure-spacing-sm);justify-content:center;overflow:hidden;position:relative;text-decoration:none;transition:all var(--pure-transition-base)}.Button-module_button--primary__0eqDM{background-color:var(--pure-color-primary);color:var(--pure-color-white)}.Button-module_button--primary__0eqDM:hover:not(:disabled){background-color:var(--pure-color-primary-hover)}.Button-module_button--secondary__iK3TS{background-color:var(--pure-color-secondary);color:var(--pure-color-white)}.Button-module_button--secondary__iK3TS:hover:not(:disabled){background-color:var(--pure-color-secondary-hover)}.Button-module_button--success__1WVzM{background-color:var(--pure-color-success);color:var(--pure-color-white)}.Button-module_button--success__1WVzM:hover:not(:disabled){background-color:var(--pure-color-success-hover)}.Button-module_button--danger__y2uGS{background-color:var(--pure-color-danger);color:var(--pure-color-white)}.Button-module_button--danger__y2uGS:hover:not(:disabled){background-color:var(--pure-color-danger-hover)}.Button-module_button--warning__cp3iP{background-color:var(--pure-color-warning);color:var(--pure-color-white)}.Button-module_button--warning__cp3iP:hover:not(:disabled){background-color:var(--pure-color-warning-hover)}.Button-module_button--outline__eVhnr{background-color:transparent;border:1px solid var(--pure-color-primary);color:var(--pure-color-primary)}.Button-module_button--outline__eVhnr:hover:not(:disabled){background-color:var(--pure-color-primary-light)}.Button-module_button--ghost__nktSD{background-color:transparent;color:var(--pure-color-primary)}.Button-module_button--ghost__nktSD:hover:not(:disabled){background-color:var(--pure-color-primary-light)}.Button-module_button--sm__-XOLs{font-size:var(--pure-font-size-sm);padding:var(--pure-spacing-xs) var(--pure-spacing-sm)}.Button-module_button--md__-GRga{font-size:var(--pure-font-size-md);padding:var(--pure-spacing-sm) var(--pure-spacing-md)}.Button-module_button--lg__p-URz{font-size:var(--pure-font-size-lg);padding:var(--pure-spacing-md) var(--pure-spacing-lg)}.Button-module_button--full-width__XyuwA{width:100%}.Button-module_button--loading__lNyfH{opacity:.8;pointer-events:none}.Button-module_button__2ZuB7:disabled{cursor:not-allowed;opacity:.6}.Button-module_button__icon__e6c-f,.Button-module_button__text__JjFiL{align-items:center;display:flex;justify-content:center}.Button-module_button__spinner__1soI4{height:20px;position:absolute;width:20px}.Button-module_spinner__ZExvW{animation:Button-module_rotate__TQjyl 2s linear infinite;height:100%;width:100%}.Button-module_spinner-path__Zk3SN{stroke:currentColor;stroke-linecap:round;animation:Button-module_dash__NItHE 1.5s ease-in-out infinite}@keyframes Button-module_rotate__TQjyl{to{transform:rotate(1turn)}}@keyframes Button-module_dash__NItHE{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}:root{--pure-color-primary:#2563eb;--pure-color-primary-hover:#1d4ed8;--pure-color-primary-light:#dbeafe;--pure-color-secondary:#64748b;--pure-color-secondary-hover:#475569;--pure-color-secondary-light:#f1f5f9;--pure-color-success:#10b981;--pure-color-success-hover:#059669;--pure-color-success-light:#d1fae5;--pure-color-danger:#ef4444;--pure-color-danger-hover:#dc2626;--pure-color-danger-light:#fee2e2;--pure-color-warning:#f59e0b;--pure-color-warning-hover:#d97706;--pure-color-warning-light:#fef3c7;--pure-color-info:#3b82f6;--pure-color-info-hover:#2563eb;--pure-color-info-light:#dbeafe;--pure-color-white:#fff;--pure-color-black:#000;--pure-color-gray-50:#f9fafb;--pure-color-gray-100:#f3f4f6;--pure-color-gray-200:#e5e7eb;--pure-color-gray-300:#d1d5db;--pure-color-gray-400:#9ca3af;--pure-color-gray-500:#6b7280;--pure-color-gray-600:#4b5563;--pure-color-gray-700:#374151;--pure-color-gray-800:#1f2937;--pure-color-gray-900:#111827;--pure-spacing-xs:0.25rem;--pure-spacing-sm:0.5rem;--pure-spacing-md:1rem;--pure-spacing-lg:1.5rem;--pure-spacing-xl:2rem;--pure-spacing-2xl:3rem;--pure-radius-sm:0.25rem;--pure-radius-md:0.375rem;--pure-radius-lg:0.5rem;--pure-radius-xl:0.75rem;--pure-radius-full:9999px;--pure-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--pure-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--pure-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--pure-shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);--pure-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--pure-font-size-xs:0.75rem;--pure-font-size-sm:0.875rem;--pure-font-size-md:1rem;--pure-font-size-lg:1.125rem;--pure-font-size-xl:1.25rem;--pure-font-size-2xl:1.5rem;--pure-transition-fast:150ms ease-in-out;--pure-transition-base:200ms ease-in-out;--pure-transition-slow:300ms ease-in-out;--pure-z-dropdown:1000;--pure-z-modal:1050;--pure-z-tooltip:1100}
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ .Button-module__button___2ZuB7{align-items:center;border:none;border-radius:var(--pure-radius-md);cursor:pointer;display:inline-flex;font-family:var(--pure-font-family);font-size:var(--pure-font-size-md);font-weight:500;gap:var(--pure-spacing-sm);justify-content:center;overflow:hidden;position:relative;text-decoration:none;transition:all var(--pure-transition-base)}.Button-module__button--primary___0eqDM{background-color:var(--pure-color-primary);color:var(--pure-color-white)}.Button-module__button--primary___0eqDM:hover:not(:disabled){background-color:var(--pure-color-primary-hover)}.Button-module__button--secondary___iK3TS{background-color:var(--pure-color-secondary);color:var(--pure-color-white)}.Button-module__button--secondary___iK3TS:hover:not(:disabled){background-color:var(--pure-color-secondary-hover)}.Button-module__button--success___1WVzM{background-color:var(--pure-color-success);color:var(--pure-color-white)}.Button-module__button--success___1WVzM:hover:not(:disabled){background-color:var(--pure-color-success-hover)}.Button-module__button--danger___y2uGS{background-color:var(--pure-color-danger);color:var(--pure-color-white)}.Button-module__button--danger___y2uGS:hover:not(:disabled){background-color:var(--pure-color-danger-hover)}.Button-module__button--warning___cp3iP{background-color:var(--pure-color-warning);color:var(--pure-color-white)}.Button-module__button--warning___cp3iP:hover:not(:disabled){background-color:var(--pure-color-warning-hover)}.Button-module__button--outline___eVhnr{background-color:transparent;border:1px solid var(--pure-color-primary);color:var(--pure-color-primary)}.Button-module__button--outline___eVhnr:hover:not(:disabled){background-color:var(--pure-color-primary-light)}.Button-module__button--ghost___nktSD{background-color:transparent;color:var(--pure-color-primary)}.Button-module__button--ghost___nktSD:hover:not(:disabled){background-color:var(--pure-color-primary-light)}.Button-module__button--sm___-XOLs{font-size:var(--pure-font-size-sm);padding:var(--pure-spacing-xs) var(--pure-spacing-sm)}.Button-module__button--md___-GRga{font-size:var(--pure-font-size-md);padding:var(--pure-spacing-sm) var(--pure-spacing-md)}.Button-module__button--lg___p-URz{font-size:var(--pure-font-size-lg);padding:var(--pure-spacing-md) var(--pure-spacing-lg)}.Button-module__button--full-width___XyuwA{width:100%}.Button-module__button--loading___lNyfH{opacity:.8;pointer-events:none}.Button-module__button___2ZuB7:disabled{cursor:not-allowed;opacity:.6}.Button-module__button__icon___e6c-f,.Button-module__button__text___JjFiL{align-items:center;display:flex;justify-content:center}.Button-module__button__spinner___1soI4{height:20px;position:absolute;width:20px}.Button-module__spinner___ZExvW{animation:Button-module__rotate___TQjyl 2s linear infinite;height:100%;width:100%}.Button-module__spinner-path___Zk3SN{stroke:currentColor;stroke-linecap:round;animation:Button-module__dash___NItHE 1.5s ease-in-out infinite}@keyframes Button-module__rotate___TQjyl{to{transform:rotate(1turn)}}@keyframes Button-module__dash___NItHE{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}:root{--pure-color-primary:#2563eb;--pure-color-primary-hover:#1d4ed8;--pure-color-primary-light:#dbeafe;--pure-color-secondary:#64748b;--pure-color-secondary-hover:#475569;--pure-color-secondary-light:#f1f5f9;--pure-color-success:#10b981;--pure-color-success-hover:#059669;--pure-color-success-light:#d1fae5;--pure-color-danger:#ef4444;--pure-color-danger-hover:#dc2626;--pure-color-danger-light:#fee2e2;--pure-color-warning:#f59e0b;--pure-color-warning-hover:#d97706;--pure-color-warning-light:#fef3c7;--pure-color-info:#3b82f6;--pure-color-info-hover:#2563eb;--pure-color-info-light:#dbeafe;--pure-color-white:#fff;--pure-color-black:#000;--pure-color-gray-50:#f9fafb;--pure-color-gray-100:#f3f4f6;--pure-color-gray-200:#e5e7eb;--pure-color-gray-300:#d1d5db;--pure-color-gray-400:#9ca3af;--pure-color-gray-500:#6b7280;--pure-color-gray-600:#4b5563;--pure-color-gray-700:#374151;--pure-color-gray-800:#1f2937;--pure-color-gray-900:#111827;--pure-spacing-xs:0.25rem;--pure-spacing-sm:0.5rem;--pure-spacing-md:1rem;--pure-spacing-lg:1.5rem;--pure-spacing-xl:2rem;--pure-spacing-2xl:3rem;--pure-radius-sm:0.25rem;--pure-radius-md:0.375rem;--pure-radius-lg:0.5rem;--pure-radius-xl:0.75rem;--pure-radius-full:9999px;--pure-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--pure-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--pure-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--pure-shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);--pure-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--pure-font-size-xs:0.75rem;--pure-font-size-sm:0.875rem;--pure-font-size-md:1rem;--pure-font-size-lg:1.125rem;--pure-font-size-xl:1.25rem;--pure-font-size-2xl:1.5rem;--pure-transition-fast:150ms ease-in-out;--pure-transition-base:200ms ease-in-out;--pure-transition-slow:300ms ease-in-out;--pure-z-dropdown:1000;--pure-z-modal:1050;--pure-z-tooltip:1100}
@@ -0,0 +1,2 @@
1
+ export { PureButton } from './components/Button';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ .Button-module__button___2ZuB7{align-items:center;border:none;border-radius:var(--pure-radius-md);cursor:pointer;display:inline-flex;font-family:var(--pure-font-family);font-size:var(--pure-font-size-md);font-weight:500;gap:var(--pure-spacing-sm);justify-content:center;overflow:hidden;position:relative;text-decoration:none;transition:all var(--pure-transition-base)}.Button-module__button--primary___0eqDM{background-color:var(--pure-color-primary);color:var(--pure-color-white)}.Button-module__button--primary___0eqDM:hover:not(:disabled){background-color:var(--pure-color-primary-hover)}.Button-module__button--secondary___iK3TS{background-color:var(--pure-color-secondary);color:var(--pure-color-white)}.Button-module__button--secondary___iK3TS:hover:not(:disabled){background-color:var(--pure-color-secondary-hover)}.Button-module__button--success___1WVzM{background-color:var(--pure-color-success);color:var(--pure-color-white)}.Button-module__button--success___1WVzM:hover:not(:disabled){background-color:var(--pure-color-success-hover)}.Button-module__button--danger___y2uGS{background-color:var(--pure-color-danger);color:var(--pure-color-white)}.Button-module__button--danger___y2uGS:hover:not(:disabled){background-color:var(--pure-color-danger-hover)}.Button-module__button--warning___cp3iP{background-color:var(--pure-color-warning);color:var(--pure-color-white)}.Button-module__button--warning___cp3iP:hover:not(:disabled){background-color:var(--pure-color-warning-hover)}.Button-module__button--outline___eVhnr{background-color:transparent;border:1px solid var(--pure-color-primary);color:var(--pure-color-primary)}.Button-module__button--outline___eVhnr:hover:not(:disabled){background-color:var(--pure-color-primary-light)}.Button-module__button--ghost___nktSD{background-color:transparent;color:var(--pure-color-primary)}.Button-module__button--ghost___nktSD:hover:not(:disabled){background-color:var(--pure-color-primary-light)}.Button-module__button--sm___-XOLs{font-size:var(--pure-font-size-sm);padding:var(--pure-spacing-xs) var(--pure-spacing-sm)}.Button-module__button--md___-GRga{font-size:var(--pure-font-size-md);padding:var(--pure-spacing-sm) var(--pure-spacing-md)}.Button-module__button--lg___p-URz{font-size:var(--pure-font-size-lg);padding:var(--pure-spacing-md) var(--pure-spacing-lg)}.Button-module__button--full-width___XyuwA{width:100%}.Button-module__button--loading___lNyfH{opacity:.8;pointer-events:none}.Button-module__button___2ZuB7:disabled{cursor:not-allowed;opacity:.6}.Button-module__button__icon___e6c-f,.Button-module__button__text___JjFiL{align-items:center;display:flex;justify-content:center}.Button-module__button__spinner___1soI4{height:20px;position:absolute;width:20px}.Button-module__spinner___ZExvW{animation:Button-module__rotate___TQjyl 2s linear infinite;height:100%;width:100%}.Button-module__spinner-path___Zk3SN{stroke:currentColor;stroke-linecap:round;animation:Button-module__dash___NItHE 1.5s ease-in-out infinite}@keyframes Button-module__rotate___TQjyl{to{transform:rotate(1turn)}}@keyframes Button-module__dash___NItHE{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}:root{--pure-color-primary:#2563eb;--pure-color-primary-hover:#1d4ed8;--pure-color-primary-light:#dbeafe;--pure-color-secondary:#64748b;--pure-color-secondary-hover:#475569;--pure-color-secondary-light:#f1f5f9;--pure-color-success:#10b981;--pure-color-success-hover:#059669;--pure-color-success-light:#d1fae5;--pure-color-danger:#ef4444;--pure-color-danger-hover:#dc2626;--pure-color-danger-light:#fee2e2;--pure-color-warning:#f59e0b;--pure-color-warning-hover:#d97706;--pure-color-warning-light:#fef3c7;--pure-color-info:#3b82f6;--pure-color-info-hover:#2563eb;--pure-color-info-light:#dbeafe;--pure-color-white:#fff;--pure-color-black:#000;--pure-color-gray-50:#f9fafb;--pure-color-gray-100:#f3f4f6;--pure-color-gray-200:#e5e7eb;--pure-color-gray-300:#d1d5db;--pure-color-gray-400:#9ca3af;--pure-color-gray-500:#6b7280;--pure-color-gray-600:#4b5563;--pure-color-gray-700:#374151;--pure-color-gray-800:#1f2937;--pure-color-gray-900:#111827;--pure-spacing-xs:0.25rem;--pure-spacing-sm:0.5rem;--pure-spacing-md:1rem;--pure-spacing-lg:1.5rem;--pure-spacing-xl:2rem;--pure-spacing-2xl:3rem;--pure-radius-sm:0.25rem;--pure-radius-md:0.375rem;--pure-radius-lg:0.5rem;--pure-radius-xl:0.75rem;--pure-radius-full:9999px;--pure-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--pure-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--pure-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--pure-shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);--pure-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--pure-font-size-xs:0.75rem;--pure-font-size-sm:0.875rem;--pure-font-size-md:1rem;--pure-font-size-lg:1.125rem;--pure-font-size-xl:1.25rem;--pure-font-size-2xl:1.5rem;--pure-transition-fast:150ms ease-in-out;--pure-transition-base:200ms ease-in-out;--pure-transition-slow:300ms ease-in-out;--pure-z-dropdown:1000;--pure-z-modal:1050;--pure-z-tooltip:1100}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+
3
+ var styles = {"button":"Button-module__button___2ZuB7","button--primary":"Button-module__button--primary___0eqDM","button--secondary":"Button-module__button--secondary___iK3TS","button--success":"Button-module__button--success___1WVzM","button--danger":"Button-module__button--danger___y2uGS","button--warning":"Button-module__button--warning___cp3iP","button--outline":"Button-module__button--outline___eVhnr","button--ghost":"Button-module__button--ghost___nktSD","button--sm":"Button-module__button--sm___-XOLs","button--md":"Button-module__button--md___-GRga","button--lg":"Button-module__button--lg___p-URz","button--full-width":"Button-module__button--full-width___XyuwA","button--loading":"Button-module__button--loading___lNyfH","button__icon":"Button-module__button__icon___e6c-f","button__text":"Button-module__button__text___JjFiL","button__spinner":"Button-module__button__spinner___1soI4","spinner":"Button-module__spinner___ZExvW","rotate":"Button-module__rotate___TQjyl","spinner-path":"Button-module__spinner-path___Zk3SN","dash":"Button-module__dash___NItHE"};
4
+
5
+ const PureButton = ({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled = false, children, leftIcon, rightIcon, className = '', ...props }) => {
6
+ const classes = [
7
+ styles.button,
8
+ styles[`button--${variant}`],
9
+ styles[`button--${size}`],
10
+ fullWidth && styles['button--full-width'],
11
+ loading && styles['button--loading'],
12
+ className
13
+ ].filter(Boolean).join(' ');
14
+ return (React.createElement("button", { className: classes, disabled: disabled || loading, ...props },
15
+ loading && (React.createElement("span", { className: styles['button__spinner'] },
16
+ React.createElement("svg", { className: styles['spinner'], viewBox: "0 0 50 50" },
17
+ React.createElement("circle", { className: styles['spinner-path'], cx: "25", cy: "25", r: "20", fill: "none", strokeWidth: "4" })))),
18
+ !loading && leftIcon && (React.createElement("span", { className: styles['button__icon'] }, leftIcon)),
19
+ React.createElement("span", { className: styles['button__text'] }, children),
20
+ !loading && rightIcon && (React.createElement("span", { className: styles['button__icon'] }, rightIcon))));
21
+ };
22
+ PureButton.displayName = 'PureButton';
23
+
24
+ export { PureButton };
25
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { ButtonProps } from './Button.types';\r\nimport styles from \"./Button.module.css\";\r\nimport \"../../styles/variables.css\";\r\n\r\nexport const PureButton: React.FC<ButtonProps> = ({\r\n variant = 'primary',\r\n size = 'md',\r\n fullWidth = false,\r\n loading = false,\r\n disabled = false,\r\n children,\r\n leftIcon,\r\n rightIcon,\r\n className = '',\r\n ...props\r\n}) => {\r\n const classes = [\r\n styles.button,\r\n styles[`button--${variant}`],\r\n styles[`button--${size}`],\r\n fullWidth && styles['button--full-width'],\r\n loading && styles['button--loading'],\r\n className\r\n ].filter(Boolean).join(' ');\r\n\r\n return (\r\n <button\r\n className={classes}\r\n disabled={disabled || loading}\r\n {...props}\r\n >\r\n {loading && (\r\n <span className={styles['button__spinner']}>\r\n {/* Loading spinner */}\r\n <svg className={styles['spinner']} viewBox=\"0 0 50 50\">\r\n <circle\r\n className={styles['spinner-path']}\r\n cx=\"25\"\r\n cy=\"25\"\r\n r=\"20\"\r\n fill=\"none\"\r\n strokeWidth=\"4\"\r\n />\r\n </svg>\r\n </span>\r\n )}\r\n {!loading && leftIcon && (\r\n <span className={styles['button__icon']}>{leftIcon}</span>\r\n )}\r\n <span className={styles['button__text']}>{children}</span>\r\n {!loading && rightIcon && (\r\n <span className={styles['button__icon']}>{rightIcon}</span>\r\n )}\r\n </button>\r\n );\r\n};\r\n\r\nPureButton.displayName = 'PureButton';"],"names":[],"mappings":";;;;AAKO,MAAM,UAAU,GAA0B,CAAC,EAC9C,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,GAAG,EAAE,EACd,GAAG,KAAK,EACX,KAAI;AACD,IAAA,MAAM,OAAO,GAAG;AACZ,QAAA,MAAM,CAAC,MAAM;AACb,QAAA,MAAM,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAC;AAC5B,QAAA,MAAM,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,CAAE,CAAC;AACzB,QAAA,SAAS,IAAI,MAAM,CAAC,oBAAoB,CAAC;AACzC,QAAA,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC;QACpC;KACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAA,GACzB,KAAK,EAAA;QAER,OAAO,KACJ,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAA;YAEtC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAC,WAAW,EAAA;AAClD,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EACjC,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,GAAG,EAAA,CACjB,CACA,CACH,CACV;AACA,QAAA,CAAC,OAAO,IAAI,QAAQ,KACjB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAA,EAAG,QAAQ,CAAQ,CAC7D;QACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAA,EAAG,QAAQ,CAAQ;AACzD,QAAA,CAAC,OAAO,IAAI,SAAS,KAClB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAA,EAAG,SAAS,CAAQ,CAC9D,CACI;AAEjB;AAEA,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ var styles = {"button":"Button-module__button___2ZuB7","button--primary":"Button-module__button--primary___0eqDM","button--secondary":"Button-module__button--secondary___iK3TS","button--success":"Button-module__button--success___1WVzM","button--danger":"Button-module__button--danger___y2uGS","button--warning":"Button-module__button--warning___cp3iP","button--outline":"Button-module__button--outline___eVhnr","button--ghost":"Button-module__button--ghost___nktSD","button--sm":"Button-module__button--sm___-XOLs","button--md":"Button-module__button--md___-GRga","button--lg":"Button-module__button--lg___p-URz","button--full-width":"Button-module__button--full-width___XyuwA","button--loading":"Button-module__button--loading___lNyfH","button__icon":"Button-module__button__icon___e6c-f","button__text":"Button-module__button__text___JjFiL","button__spinner":"Button-module__button__spinner___1soI4","spinner":"Button-module__spinner___ZExvW","rotate":"Button-module__rotate___TQjyl","spinner-path":"Button-module__spinner-path___Zk3SN","dash":"Button-module__dash___NItHE"};
6
+
7
+ const PureButton = ({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled = false, children, leftIcon, rightIcon, className = '', ...props }) => {
8
+ const classes = [
9
+ styles.button,
10
+ styles[`button--${variant}`],
11
+ styles[`button--${size}`],
12
+ fullWidth && styles['button--full-width'],
13
+ loading && styles['button--loading'],
14
+ className
15
+ ].filter(Boolean).join(' ');
16
+ return (React.createElement("button", { className: classes, disabled: disabled || loading, ...props },
17
+ loading && (React.createElement("span", { className: styles['button__spinner'] },
18
+ React.createElement("svg", { className: styles['spinner'], viewBox: "0 0 50 50" },
19
+ React.createElement("circle", { className: styles['spinner-path'], cx: "25", cy: "25", r: "20", fill: "none", strokeWidth: "4" })))),
20
+ !loading && leftIcon && (React.createElement("span", { className: styles['button__icon'] }, leftIcon)),
21
+ React.createElement("span", { className: styles['button__text'] }, children),
22
+ !loading && rightIcon && (React.createElement("span", { className: styles['button__icon'] }, rightIcon))));
23
+ };
24
+ PureButton.displayName = 'PureButton';
25
+
26
+ exports.PureButton = PureButton;
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { ButtonProps } from './Button.types';\r\nimport styles from \"./Button.module.css\";\r\nimport \"../../styles/variables.css\";\r\n\r\nexport const PureButton: React.FC<ButtonProps> = ({\r\n variant = 'primary',\r\n size = 'md',\r\n fullWidth = false,\r\n loading = false,\r\n disabled = false,\r\n children,\r\n leftIcon,\r\n rightIcon,\r\n className = '',\r\n ...props\r\n}) => {\r\n const classes = [\r\n styles.button,\r\n styles[`button--${variant}`],\r\n styles[`button--${size}`],\r\n fullWidth && styles['button--full-width'],\r\n loading && styles['button--loading'],\r\n className\r\n ].filter(Boolean).join(' ');\r\n\r\n return (\r\n <button\r\n className={classes}\r\n disabled={disabled || loading}\r\n {...props}\r\n >\r\n {loading && (\r\n <span className={styles['button__spinner']}>\r\n {/* Loading spinner */}\r\n <svg className={styles['spinner']} viewBox=\"0 0 50 50\">\r\n <circle\r\n className={styles['spinner-path']}\r\n cx=\"25\"\r\n cy=\"25\"\r\n r=\"20\"\r\n fill=\"none\"\r\n strokeWidth=\"4\"\r\n />\r\n </svg>\r\n </span>\r\n )}\r\n {!loading && leftIcon && (\r\n <span className={styles['button__icon']}>{leftIcon}</span>\r\n )}\r\n <span className={styles['button__text']}>{children}</span>\r\n {!loading && rightIcon && (\r\n <span className={styles['button__icon']}>{rightIcon}</span>\r\n )}\r\n </button>\r\n );\r\n};\r\n\r\nPureButton.displayName = 'PureButton';"],"names":[],"mappings":";;;;;;AAKO,MAAM,UAAU,GAA0B,CAAC,EAC9C,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,GAAG,EAAE,EACd,GAAG,KAAK,EACX,KAAI;AACD,IAAA,MAAM,OAAO,GAAG;AACZ,QAAA,MAAM,CAAC,MAAM;AACb,QAAA,MAAM,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAC;AAC5B,QAAA,MAAM,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,CAAE,CAAC;AACzB,QAAA,SAAS,IAAI,MAAM,CAAC,oBAAoB,CAAC;AACzC,QAAA,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC;QACpC;KACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAA,GACzB,KAAK,EAAA;QAER,OAAO,KACJ,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAA;YAEtC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAC,WAAW,EAAA;AAClD,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EACjC,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,GAAG,EAAA,CACjB,CACA,CACH,CACV;AACA,QAAA,CAAC,OAAO,IAAI,QAAQ,KACjB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAA,EAAG,QAAQ,CAAQ,CAC7D;QACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAA,EAAG,QAAQ,CAAQ;AACzD,QAAA,CAAC,OAAO,IAAI,SAAS,KAClB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAA,EAAG,SAAS,CAAQ,CAC9D,CACI;AAEjB;AAEA,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom';
2
+ //# sourceMappingURL=setupTests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupTests.d.ts","sourceRoot":"","sources":["../src/setupTests.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
package/package.json CHANGED
@@ -1,36 +1,58 @@
1
1
  {
2
2
  "name": "pure-react-ui",
3
- "version": "1.4.2",
4
- "type": "module",
5
- "main": "dist/index.cjs.js",
6
- "module": "dist/index.es.js",
3
+ "version": "1.4.6",
4
+ "description": "A modern, accessible React UI component library with TypeScript",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
7
  "types": "dist/index.d.ts",
8
+ "style": "src/styles/index.css",
9
+ "type": "module",
8
10
  "files": [
9
- "dist"
11
+ "dist",
12
+ "src/styles"
10
13
  ],
11
14
  "scripts": {
12
- "dev": "vite",
13
- "build": "tsc -b && vite build",
14
- "lint": "eslint .",
15
- "preview": "vite preview"
15
+ "build": "rollup -c",
16
+ "test": "jest",
17
+ "test:watch": "jest --watch",
18
+ "lint": "eslint src --ext .ts,.tsx",
19
+ "format": "prettier --write \"src/**/*.{ts,tsx,css}\"",
20
+ "prepublishOnly": "npm run build"
16
21
  },
17
- "dependencies": {
18
- "pure-react-ui": "^1.4.0",
19
- "react": "^19.2.0",
20
- "react-dom": "^19.2.0"
22
+ "keywords": [
23
+ "react",
24
+ "ui",
25
+ "components",
26
+ "typescript",
27
+ "component-library"
28
+ ],
29
+ "author": "Asad",
30
+ "license": "ISC",
31
+ "peerDependencies": {
32
+ "react": "^19.2.3",
33
+ "react-dom": "^19.2.3"
21
34
  },
22
35
  "devDependencies": {
23
- "@eslint/js": "^9.39.1",
24
- "@types/node": "^24.10.1",
25
- "@types/react": "^19.2.5",
36
+ "@rollup/plugin-commonjs": "^29.0.0",
37
+ "@rollup/plugin-node-resolve": "^16.0.3",
38
+ "@rollup/plugin-typescript": "^12.3.0",
39
+ "@testing-library/jest-dom": "^6.9.1",
40
+ "@testing-library/react": "^16.3.1",
41
+ "@types/jest": "^30.0.0",
42
+ "@types/react": "^19.2.7",
26
43
  "@types/react-dom": "^19.2.3",
27
- "@vitejs/plugin-react": "^5.1.1",
28
- "eslint": "^9.39.1",
29
- "eslint-plugin-react-hooks": "^7.0.1",
30
- "eslint-plugin-react-refresh": "^0.4.24",
31
- "globals": "^16.5.0",
32
- "typescript": "~5.9.3",
33
- "typescript-eslint": "^8.46.4",
34
- "vite": "^7.2.4"
44
+ "@typescript-eslint/eslint-plugin": "^8.51.0",
45
+ "@typescript-eslint/parser": "^8.51.0",
46
+ "eslint": "^9.39.2",
47
+ "jest": "^30.2.0",
48
+ "jest-environment-jsdom": "^30.2.0",
49
+ "postcss": "^8.5.6",
50
+ "prettier": "^3.7.4",
51
+ "rollup": "^4.54.0",
52
+ "rollup-plugin-peer-deps-external": "^2.2.4",
53
+ "rollup-plugin-postcss": "^4.0.2",
54
+ "ts-jest": "^29.4.6",
55
+ "tslib": "^2.8.1",
56
+ "typescript": "^5.9.3"
35
57
  }
36
58
  }
@@ -0,0 +1,81 @@
1
+ /* CSS Variables */
2
+ :root {
3
+ /* Colors */
4
+ --pure-color-primary: #2563eb;
5
+ --pure-color-primary-hover: #1d4ed8;
6
+ --pure-color-primary-light: #dbeafe;
7
+
8
+ --pure-color-secondary: #64748b;
9
+ --pure-color-secondary-hover: #475569;
10
+ --pure-color-secondary-light: #f1f5f9;
11
+
12
+ --pure-color-success: #10b981;
13
+ --pure-color-success-hover: #059669;
14
+ --pure-color-success-light: #d1fae5;
15
+
16
+ --pure-color-danger: #ef4444;
17
+ --pure-color-danger-hover: #dc2626;
18
+ --pure-color-danger-light: #fee2e2;
19
+
20
+ --pure-color-warning: #f59e0b;
21
+ --pure-color-warning-hover: #d97706;
22
+ --pure-color-warning-light: #fef3c7;
23
+
24
+ --pure-color-info: #3b82f6;
25
+ --pure-color-info-hover: #2563eb;
26
+ --pure-color-info-light: #dbeafe;
27
+
28
+ /* Neutrals */
29
+ --pure-color-white: #ffffff;
30
+ --pure-color-black: #000000;
31
+ --pure-color-gray-50: #f9fafb;
32
+ --pure-color-gray-100: #f3f4f6;
33
+ --pure-color-gray-200: #e5e7eb;
34
+ --pure-color-gray-300: #d1d5db;
35
+ --pure-color-gray-400: #9ca3af;
36
+ --pure-color-gray-500: #6b7280;
37
+ --pure-color-gray-600: #4b5563;
38
+ --pure-color-gray-700: #374151;
39
+ --pure-color-gray-800: #1f2937;
40
+ --pure-color-gray-900: #111827;
41
+
42
+ /* Spacing */
43
+ --pure-spacing-xs: 0.25rem;
44
+ --pure-spacing-sm: 0.5rem;
45
+ --pure-spacing-md: 1rem;
46
+ --pure-spacing-lg: 1.5rem;
47
+ --pure-spacing-xl: 2rem;
48
+ --pure-spacing-2xl: 3rem;
49
+
50
+ /* Border Radius */
51
+ --pure-radius-sm: 0.25rem;
52
+ --pure-radius-md: 0.375rem;
53
+ --pure-radius-lg: 0.5rem;
54
+ --pure-radius-xl: 0.75rem;
55
+ --pure-radius-full: 9999px;
56
+
57
+ /* Shadows */
58
+ --pure-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
59
+ --pure-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
60
+ --pure-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
61
+ --pure-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
62
+
63
+ /* Typography */
64
+ --pure-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
65
+ --pure-font-size-xs: 0.75rem;
66
+ --pure-font-size-sm: 0.875rem;
67
+ --pure-font-size-md: 1rem;
68
+ --pure-font-size-lg: 1.125rem;
69
+ --pure-font-size-xl: 1.25rem;
70
+ --pure-font-size-2xl: 1.5rem;
71
+
72
+ /* Transitions */
73
+ --pure-transition-fast: 150ms ease-in-out;
74
+ --pure-transition-base: 200ms ease-in-out;
75
+ --pure-transition-slow: 300ms ease-in-out;
76
+
77
+ /* Z-index */
78
+ --pure-z-dropdown: 1000;
79
+ --pure-z-modal: 1050;
80
+ --pure-z-tooltip: 1100;
81
+ }
@@ -0,0 +1,80 @@
1
+ :root {
2
+ /* Colors */
3
+ --pure-color-primary: #2563eb;
4
+ --pure-color-primary-hover: #1d4ed8;
5
+ --pure-color-primary-light: #dbeafe;
6
+
7
+ --pure-color-secondary: #64748b;
8
+ --pure-color-secondary-hover: #475569;
9
+ --pure-color-secondary-light: #f1f5f9;
10
+
11
+ --pure-color-success: #10b981;
12
+ --pure-color-success-hover: #059669;
13
+ --pure-color-success-light: #d1fae5;
14
+
15
+ --pure-color-danger: #ef4444;
16
+ --pure-color-danger-hover: #dc2626;
17
+ --pure-color-danger-light: #fee2e2;
18
+
19
+ --pure-color-warning: #f59e0b;
20
+ --pure-color-warning-hover: #d97706;
21
+ --pure-color-warning-light: #fef3c7;
22
+
23
+ --pure-color-info: #3b82f6;
24
+ --pure-color-info-hover: #2563eb;
25
+ --pure-color-info-light: #dbeafe;
26
+
27
+ /* Neutrals */
28
+ --pure-color-white: #ffffff;
29
+ --pure-color-black: #000000;
30
+ --pure-color-gray-50: #f9fafb;
31
+ --pure-color-gray-100: #f3f4f6;
32
+ --pure-color-gray-200: #e5e7eb;
33
+ --pure-color-gray-300: #d1d5db;
34
+ --pure-color-gray-400: #9ca3af;
35
+ --pure-color-gray-500: #6b7280;
36
+ --pure-color-gray-600: #4b5563;
37
+ --pure-color-gray-700: #374151;
38
+ --pure-color-gray-800: #1f2937;
39
+ --pure-color-gray-900: #111827;
40
+
41
+ /* Spacing */
42
+ --pure-spacing-xs: 0.25rem;
43
+ --pure-spacing-sm: 0.5rem;
44
+ --pure-spacing-md: 1rem;
45
+ --pure-spacing-lg: 1.5rem;
46
+ --pure-spacing-xl: 2rem;
47
+ --pure-spacing-2xl: 3rem;
48
+
49
+ /* Border Radius */
50
+ --pure-radius-sm: 0.25rem;
51
+ --pure-radius-md: 0.375rem;
52
+ --pure-radius-lg: 0.5rem;
53
+ --pure-radius-xl: 0.75rem;
54
+ --pure-radius-full: 9999px;
55
+
56
+ /* Shadows */
57
+ --pure-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
58
+ --pure-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
59
+ --pure-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
60
+ --pure-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
61
+
62
+ /* Typography */
63
+ --pure-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
64
+ --pure-font-size-xs: 0.75rem;
65
+ --pure-font-size-sm: 0.875rem;
66
+ --pure-font-size-md: 1rem;
67
+ --pure-font-size-lg: 1.125rem;
68
+ --pure-font-size-xl: 1.25rem;
69
+ --pure-font-size-2xl: 1.5rem;
70
+
71
+ /* Transitions */
72
+ --pure-transition-fast: 150ms ease-in-out;
73
+ --pure-transition-base: 200ms ease-in-out;
74
+ --pure-transition-slow: 300ms ease-in-out;
75
+
76
+ /* Z-index */
77
+ --pure-z-dropdown: 1000;
78
+ --pure-z-modal: 1050;
79
+ --pure-z-tooltip: 1100;
80
+ }
package/dist/index.cjs.js DELETED
@@ -1,6 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ee=require("react");var v={exports:{}},_={};var I;function re(){if(I)return _;I=1;var u=Symbol.for("react.transitional.element"),d=Symbol.for("react.fragment");function l(c,o,s){var i=null;if(s!==void 0&&(i=""+s),o.key!==void 0&&(i=""+o.key),"key"in o){s={};for(var f in o)f!=="key"&&(s[f]=o[f])}else s=o;return o=s.ref,{$$typeof:u,type:c,key:i,ref:o!==void 0?o:null,props:s}}return _.Fragment=d,_.jsx=l,_.jsxs=l,_}var E={};var F;function te(){return F||(F=1,process.env.NODE_ENV!=="production"&&(function(){function u(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Z?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case T:return"Fragment";case q:return"Profiler";case U:return"StrictMode";case G:return"Suspense";case X:return"SuspenseList";case H:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case W:return"Portal";case V:return e.displayName||"Context";case J:return(e._context.displayName||"Context")+".Consumer";case z:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case B:return r=e.displayName||null,r!==null?r:u(e.type)||"Memo";case k:r=e._payload,e=e._init;try{return u(e(r))}catch{}}return null}function d(e){return""+e}function l(e){try{d(e);var r=!1}catch{r=!0}if(r){r=console;var t=r.error,n=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",n),d(e)}}function c(e){if(e===T)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===k)return"<...>";try{var r=u(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function o(){var e=O.A;return e===null?null:e.getOwner()}function s(){return Error("react-stack-top-frame")}function i(e){if(h.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function f(e,r){function t(){g||(g=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}function M(){var e=u(this.type);return N[e]||(N[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function L(e,r,t,n,R,S){var a=t.ref;return e={$$typeof:w,type:e,key:r,props:t,_owner:n},(a!==void 0?a:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:M}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:R}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:S}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function j(e,r,t,n,R,S){var a=r.children;if(a!==void 0)if(n)if(Q(a)){for(n=0;n<a.length;n++)x(a[n]);Object.freeze&&Object.freeze(a)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else x(a);if(h.call(r,"key")){a=u(e);var m=Object.keys(r).filter(function(K){return K!=="key"});n=0<m.length?"{key: someKey, "+m.join(": ..., ")+": ...}":"{key: someKey}",$[a+n]||(m=0<m.length?"{"+m.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
- let props = %s;
3
- <%s {...props} />
4
- React keys must be passed directly to JSX without using spread:
5
- let props = %s;
6
- <%s key={someKey} {...props} />`,n,a,m,a),$[a+n]=!0)}if(a=null,t!==void 0&&(l(t),a=""+t),i(r)&&(l(r.key),a=""+r.key),"key"in r){t={};for(var A in r)A!=="key"&&(t[A]=r[A])}else t=r;return a&&f(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),L(e,a,t,o(),R,S)}function x(e){y(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===k&&(e._payload.status==="fulfilled"?y(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function y(e){return typeof e=="object"&&e!==null&&e.$$typeof===w}var b=ee,w=Symbol.for("react.transitional.element"),W=Symbol.for("react.portal"),T=Symbol.for("react.fragment"),U=Symbol.for("react.strict_mode"),q=Symbol.for("react.profiler"),J=Symbol.for("react.consumer"),V=Symbol.for("react.context"),z=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),X=Symbol.for("react.suspense_list"),B=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),Z=Symbol.for("react.client.reference"),O=b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,h=Object.prototype.hasOwnProperty,Q=Array.isArray,P=console.createTask?console.createTask:function(){return null};b={react_stack_bottom_frame:function(e){return e()}};var g,N={},C=b.react_stack_bottom_frame.bind(b,s)(),Y=P(c(s)),$={};E.Fragment=T,E.jsx=function(e,r,t){var n=1e4>O.recentlyCreatedOwnerStacks++;return j(e,r,t,!1,n?Error("react-stack-top-frame"):C,n?P(c(e)):Y)},E.jsxs=function(e,r,t){var n=1e4>O.recentlyCreatedOwnerStacks++;return j(e,r,t,!0,n?Error("react-stack-top-frame"):C,n?P(c(e)):Y)}})()),E}var D;function ne(){return D||(D=1,process.env.NODE_ENV==="production"?v.exports=re():v.exports=te()),v.exports}var p=ne();const ae=({variant:u="solid",size:d="md",loading:l=!1,icon:c,children:o,className:s="",disabled:i,...f})=>p.jsxs("button",{className:`pure-btn ${u}-btn ${d}-btn ${s}`,disabled:i||l,...f,children:[l&&p.jsx("span",{className:"loader"}),c&&p.jsx("span",{className:"btn-icon",children:c}),p.jsx("span",{className:c||l?"btn-text":"",children:o})]});exports.PureButton=ae;
package/dist/index.es.js DELETED
@@ -1,286 +0,0 @@
1
- import ee from "react";
2
- var p = { exports: {} }, _ = {};
3
- var I;
4
- function re() {
5
- if (I) return _;
6
- I = 1;
7
- var l = /* @__PURE__ */ Symbol.for("react.transitional.element"), d = /* @__PURE__ */ Symbol.for("react.fragment");
8
- function u(c, o, s) {
9
- var i = null;
10
- if (s !== void 0 && (i = "" + s), o.key !== void 0 && (i = "" + o.key), "key" in o) {
11
- s = {};
12
- for (var f in o)
13
- f !== "key" && (s[f] = o[f]);
14
- } else s = o;
15
- return o = s.ref, {
16
- $$typeof: l,
17
- type: c,
18
- key: i,
19
- ref: o !== void 0 ? o : null,
20
- props: s
21
- };
22
- }
23
- return _.Fragment = d, _.jsx = u, _.jsxs = u, _;
24
- }
25
- var E = {};
26
- var F;
27
- function te() {
28
- return F || (F = 1, process.env.NODE_ENV !== "production" && (function() {
29
- function l(e) {
30
- if (e == null) return null;
31
- if (typeof e == "function")
32
- return e.$$typeof === Z ? null : e.displayName || e.name || null;
33
- if (typeof e == "string") return e;
34
- switch (e) {
35
- case T:
36
- return "Fragment";
37
- case q:
38
- return "Profiler";
39
- case U:
40
- return "StrictMode";
41
- case G:
42
- return "Suspense";
43
- case X:
44
- return "SuspenseList";
45
- case H:
46
- return "Activity";
47
- }
48
- if (typeof e == "object")
49
- switch (typeof e.tag == "number" && console.error(
50
- "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
51
- ), e.$$typeof) {
52
- case W:
53
- return "Portal";
54
- case V:
55
- return e.displayName || "Context";
56
- case J:
57
- return (e._context.displayName || "Context") + ".Consumer";
58
- case z:
59
- var r = e.render;
60
- return e = e.displayName, e || (e = r.displayName || r.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
61
- case B:
62
- return r = e.displayName || null, r !== null ? r : l(e.type) || "Memo";
63
- case k:
64
- r = e._payload, e = e._init;
65
- try {
66
- return l(e(r));
67
- } catch {
68
- }
69
- }
70
- return null;
71
- }
72
- function d(e) {
73
- return "" + e;
74
- }
75
- function u(e) {
76
- try {
77
- d(e);
78
- var r = !1;
79
- } catch {
80
- r = !0;
81
- }
82
- if (r) {
83
- r = console;
84
- var t = r.error, n = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
85
- return t.call(
86
- r,
87
- "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
88
- n
89
- ), d(e);
90
- }
91
- }
92
- function c(e) {
93
- if (e === T) return "<>";
94
- if (typeof e == "object" && e !== null && e.$$typeof === k)
95
- return "<...>";
96
- try {
97
- var r = l(e);
98
- return r ? "<" + r + ">" : "<...>";
99
- } catch {
100
- return "<...>";
101
- }
102
- }
103
- function o() {
104
- var e = O.A;
105
- return e === null ? null : e.getOwner();
106
- }
107
- function s() {
108
- return Error("react-stack-top-frame");
109
- }
110
- function i(e) {
111
- if (h.call(e, "key")) {
112
- var r = Object.getOwnPropertyDescriptor(e, "key").get;
113
- if (r && r.isReactWarning) return !1;
114
- }
115
- return e.key !== void 0;
116
- }
117
- function f(e, r) {
118
- function t() {
119
- N || (N = !0, console.error(
120
- "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
121
- r
122
- ));
123
- }
124
- t.isReactWarning = !0, Object.defineProperty(e, "key", {
125
- get: t,
126
- configurable: !0
127
- });
128
- }
129
- function L() {
130
- var e = l(this.type);
131
- return g[e] || (g[e] = !0, console.error(
132
- "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
133
- )), e = this.props.ref, e !== void 0 ? e : null;
134
- }
135
- function M(e, r, t, n, R, A) {
136
- var a = t.ref;
137
- return e = {
138
- $$typeof: y,
139
- type: e,
140
- key: r,
141
- props: t,
142
- _owner: n
143
- }, (a !== void 0 ? a : null) !== null ? Object.defineProperty(e, "ref", {
144
- enumerable: !1,
145
- get: L
146
- }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
147
- configurable: !1,
148
- enumerable: !1,
149
- writable: !0,
150
- value: 0
151
- }), Object.defineProperty(e, "_debugInfo", {
152
- configurable: !1,
153
- enumerable: !1,
154
- writable: !0,
155
- value: null
156
- }), Object.defineProperty(e, "_debugStack", {
157
- configurable: !1,
158
- enumerable: !1,
159
- writable: !0,
160
- value: R
161
- }), Object.defineProperty(e, "_debugTask", {
162
- configurable: !1,
163
- enumerable: !1,
164
- writable: !0,
165
- value: A
166
- }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
167
- }
168
- function S(e, r, t, n, R, A) {
169
- var a = r.children;
170
- if (a !== void 0)
171
- if (n)
172
- if (Q(a)) {
173
- for (n = 0; n < a.length; n++)
174
- j(a[n]);
175
- Object.freeze && Object.freeze(a);
176
- } else
177
- console.error(
178
- "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
179
- );
180
- else j(a);
181
- if (h.call(r, "key")) {
182
- a = l(e);
183
- var m = Object.keys(r).filter(function(K) {
184
- return K !== "key";
185
- });
186
- n = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", $[a + n] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error(
187
- `A props object containing a "key" prop is being spread into JSX:
188
- let props = %s;
189
- <%s {...props} />
190
- React keys must be passed directly to JSX without using spread:
191
- let props = %s;
192
- <%s key={someKey} {...props} />`,
193
- n,
194
- a,
195
- m,
196
- a
197
- ), $[a + n] = !0);
198
- }
199
- if (a = null, t !== void 0 && (u(t), a = "" + t), i(r) && (u(r.key), a = "" + r.key), "key" in r) {
200
- t = {};
201
- for (var P in r)
202
- P !== "key" && (t[P] = r[P]);
203
- } else t = r;
204
- return a && f(
205
- t,
206
- typeof e == "function" ? e.displayName || e.name || "Unknown" : e
207
- ), M(
208
- e,
209
- a,
210
- t,
211
- o(),
212
- R,
213
- A
214
- );
215
- }
216
- function j(e) {
217
- w(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === k && (e._payload.status === "fulfilled" ? w(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
218
- }
219
- function w(e) {
220
- return typeof e == "object" && e !== null && e.$$typeof === y;
221
- }
222
- var b = ee, y = /* @__PURE__ */ Symbol.for("react.transitional.element"), W = /* @__PURE__ */ Symbol.for("react.portal"), T = /* @__PURE__ */ Symbol.for("react.fragment"), U = /* @__PURE__ */ Symbol.for("react.strict_mode"), q = /* @__PURE__ */ Symbol.for("react.profiler"), J = /* @__PURE__ */ Symbol.for("react.consumer"), V = /* @__PURE__ */ Symbol.for("react.context"), z = /* @__PURE__ */ Symbol.for("react.forward_ref"), G = /* @__PURE__ */ Symbol.for("react.suspense"), X = /* @__PURE__ */ Symbol.for("react.suspense_list"), B = /* @__PURE__ */ Symbol.for("react.memo"), k = /* @__PURE__ */ Symbol.for("react.lazy"), H = /* @__PURE__ */ Symbol.for("react.activity"), Z = /* @__PURE__ */ Symbol.for("react.client.reference"), O = b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, h = Object.prototype.hasOwnProperty, Q = Array.isArray, x = console.createTask ? console.createTask : function() {
223
- return null;
224
- };
225
- b = {
226
- react_stack_bottom_frame: function(e) {
227
- return e();
228
- }
229
- };
230
- var N, g = {}, C = b.react_stack_bottom_frame.bind(
231
- b,
232
- s
233
- )(), Y = x(c(s)), $ = {};
234
- E.Fragment = T, E.jsx = function(e, r, t) {
235
- var n = 1e4 > O.recentlyCreatedOwnerStacks++;
236
- return S(
237
- e,
238
- r,
239
- t,
240
- !1,
241
- n ? Error("react-stack-top-frame") : C,
242
- n ? x(c(e)) : Y
243
- );
244
- }, E.jsxs = function(e, r, t) {
245
- var n = 1e4 > O.recentlyCreatedOwnerStacks++;
246
- return S(
247
- e,
248
- r,
249
- t,
250
- !0,
251
- n ? Error("react-stack-top-frame") : C,
252
- n ? x(c(e)) : Y
253
- );
254
- };
255
- })()), E;
256
- }
257
- var D;
258
- function ne() {
259
- return D || (D = 1, process.env.NODE_ENV === "production" ? p.exports = re() : p.exports = te()), p.exports;
260
- }
261
- var v = ne();
262
- const oe = ({
263
- variant: l = "solid",
264
- size: d = "md",
265
- loading: u = !1,
266
- icon: c,
267
- children: o,
268
- className: s = "",
269
- disabled: i,
270
- ...f
271
- }) => /* @__PURE__ */ v.jsxs(
272
- "button",
273
- {
274
- className: `pure-btn ${l}-btn ${d}-btn ${s}`,
275
- disabled: i || u,
276
- ...f,
277
- children: [
278
- u && /* @__PURE__ */ v.jsx("span", { className: "loader" }),
279
- c && /* @__PURE__ */ v.jsx("span", { className: "btn-icon", children: c }),
280
- /* @__PURE__ */ v.jsx("span", { className: c || u ? "btn-text" : "", children: o })
281
- ]
282
- }
283
- );
284
- export {
285
- oe as PureButton
286
- };
@@ -1 +0,0 @@
1
- .custom-btn{font-size:18px;cursor:pointer;position:relative;overflow:hidden;transition:all .3s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}.sm-btn{padding:10px 20px;font-size:14px}.md-btn{padding:15px 30px;font-size:18px}.lg-btn{padding:20px 40px;font-size:22px}.loader{width:20px;height:20px;border:3px solid #fff;border-top:3px solid transparent;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.solid-btn{background:#007bff;color:#fff;border:none;border-radius:8px}.solid-btn:hover{background:#0056b3}.gradient-btn{background:linear-gradient(135deg,#6e8efb,#a777e3);color:#fff;border:none;border-radius:8px}.gradient-btn:hover{transform:scale(1.05);box-shadow:0 10px 20px #6e8efb66}.neumorphic-btn{background:#e0e0e0;color:#666;border:none;border-radius:12px;box-shadow:8px 8px 16px #bebebe,-8px -8px 16px #fff}.neumorphic-btn:hover{box-shadow:inset 5px 5px 10px #bebebe,inset -5px -5px 10px #fff}.glow-border-btn{background:#222;color:#fff;border:2px solid transparent;border-radius:8px}.glow-border-btn:before{content:"";position:absolute;inset:-2px;background:conic-gradient(red,orange,#ff0,green,#00f,indigo,violet);border-radius:10px;z-index:-1;opacity:0;transition:opacity .5s}.glow-border-btn:hover:before{opacity:1;animation:rotate 4s linear infinite}@keyframes rotate{to{transform:rotate(360deg)}}.fill-left-btn{background:transparent;border:2px solid #007bff;color:#007bff;border-radius:8px}.fill-left-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:#007bff;transition:left .4s;z-index:-1}.fill-left-btn:hover:before{left:0}.fill-left-btn:hover{color:#fff}.flip-3d-btn{background:#ff6b6b;color:#fff;border:none;border-radius:8px;transform-style:preserve-3d;transition:transform .6s}.flip-3d-btn:hover{transform:rotateY(180deg)}.flip-3d-btn:after{content:"Hovered!";position:absolute;inset:0;background:#4ecdc4;border-radius:8px;display:flex;align-items:center;justify-content:center;transform:rotateY(180deg)}.glass-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:12px;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.glass-btn:hover{background:#ffffff4d}.pulse-btn{background:#28a745;color:#fff;border:none;border-radius:50px;box-shadow:0 0 10px #28a745;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #28a745b3}70%{box-shadow:0 0 0 15px #28a74500}to{box-shadow:0 0 #28a74500}}.icon-reveal-btn{background:#ffc107;color:#333;border:none;border-radius:8px}.outline-btn{background:transparent;border:2px solid #007bff;color:#007bff;border-radius:8px}.outline-btn:hover{background:#007bff;color:#fff}
package/dist/vite.svg DELETED
@@ -1 +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>