urkit-ui 0.1.5
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 +322 -0
- package/dist/module.cjs +75 -0
- package/dist/module.d.cts +46 -0
- package/dist/module.d.mts +46 -0
- package/dist/module.d.ts +46 -0
- package/dist/module.json +12 -0
- package/dist/module.mjs +72 -0
- package/dist/runtime/assets/css/buttons.css +1 -0
- package/dist/runtime/assets/css/colors.css +1 -0
- package/dist/runtime/assets/css/form-fields.css +1 -0
- package/dist/runtime/assets/css/global.css +1 -0
- package/dist/runtime/components/Button.d.vue.ts +87 -0
- package/dist/runtime/components/Button.vue +147 -0
- package/dist/runtime/components/Button.vue.d.ts +87 -0
- package/dist/runtime/components/Icon.d.vue.ts +9 -0
- package/dist/runtime/components/Icon.vue +71 -0
- package/dist/runtime/components/Icon.vue.d.ts +9 -0
- package/dist/runtime/components/Input.d.vue.ts +129 -0
- package/dist/runtime/components/Input.vue +342 -0
- package/dist/runtime/components/Input.vue.d.ts +129 -0
- package/dist/runtime/composables/useIcon.d.ts +5 -0
- package/dist/runtime/composables/useIcon.js +71 -0
- package/dist/runtime/plugin.d.ts +2 -0
- package/dist/runtime/plugin.js +4 -0
- package/dist/runtime/public/assets/icons/arrow-down.svg +10 -0
- package/dist/runtime/public/assets/icons/collapse.svg +6 -0
- package/dist/runtime/public/assets/icons/color.svg +1 -0
- package/dist/runtime/public/assets/icons/copied.svg +3 -0
- package/dist/runtime/public/assets/icons/copy.svg +10 -0
- package/dist/runtime/public/assets/icons/figma.svg +1 -0
- package/dist/runtime/public/assets/icons/heart.svg +3 -0
- package/dist/runtime/public/assets/icons/hide.svg +8 -0
- package/dist/runtime/public/assets/icons/icons-icon.svg +10 -0
- package/dist/runtime/public/assets/icons/installation.svg +1 -0
- package/dist/runtime/public/assets/icons/introduction.svg +1 -0
- package/dist/runtime/public/assets/icons/loader-icon.svg +6 -0
- package/dist/runtime/public/assets/icons/profile.svg +1 -0
- package/dist/runtime/public/assets/icons/radiuss.svg +4 -0
- package/dist/runtime/public/assets/icons/search.svg +1 -0
- package/dist/runtime/public/assets/icons/show.svg +4 -0
- package/dist/runtime/public/assets/icons/star.svg +3 -0
- package/dist/runtime/public/assets/icons/toast-close.svg +3 -0
- package/dist/runtime/public/assets/icons/toast-error.svg +4 -0
- package/dist/runtime/public/assets/icons/toast-info.svg +5 -0
- package/dist/runtime/public/assets/icons/toast-success.svg +4 -0
- package/dist/runtime/public/assets/icons/toast-warning.svg +5 -0
- package/dist/runtime/public/assets/icons/typo.svg +1 -0
- package/dist/runtime/public/assets/logos/urkit-logo-blue.svg +53 -0
- package/dist/runtime/public/assets/logos/urkit-logo-cyan.svg +53 -0
- package/dist/runtime/public/assets/logos/urkit-logo-green.svg +53 -0
- package/dist/runtime/public/assets/logos/urkit-logo-purple.svg +53 -0
- package/dist/runtime/public/assets/logos/urkit-logo.svg +19 -0
- package/dist/runtime/server/tsconfig.json +3 -0
- package/dist/types.d.mts +3 -0
- package/package.json +70 -0
- package/src/runtime/public/assets/icons/arrow-down.svg +10 -0
- package/src/runtime/public/assets/icons/collapse.svg +6 -0
- package/src/runtime/public/assets/icons/color.svg +1 -0
- package/src/runtime/public/assets/icons/copied.svg +3 -0
- package/src/runtime/public/assets/icons/copy.svg +10 -0
- package/src/runtime/public/assets/icons/figma.svg +1 -0
- package/src/runtime/public/assets/icons/heart.svg +3 -0
- package/src/runtime/public/assets/icons/hide.svg +8 -0
- package/src/runtime/public/assets/icons/icons-icon.svg +10 -0
- package/src/runtime/public/assets/icons/installation.svg +1 -0
- package/src/runtime/public/assets/icons/introduction.svg +1 -0
- package/src/runtime/public/assets/icons/loader-icon.svg +6 -0
- package/src/runtime/public/assets/icons/profile.svg +1 -0
- package/src/runtime/public/assets/icons/radiuss.svg +4 -0
- package/src/runtime/public/assets/icons/search.svg +1 -0
- package/src/runtime/public/assets/icons/show.svg +4 -0
- package/src/runtime/public/assets/icons/star.svg +3 -0
- package/src/runtime/public/assets/icons/toast-close.svg +3 -0
- package/src/runtime/public/assets/icons/toast-error.svg +4 -0
- package/src/runtime/public/assets/icons/toast-info.svg +5 -0
- package/src/runtime/public/assets/icons/toast-success.svg +4 -0
- package/src/runtime/public/assets/icons/toast-warning.svg +5 -0
- package/src/runtime/public/assets/icons/typo.svg +1 -0
- package/src/runtime/public/assets/logos/urkit-logo-blue.svg +53 -0
- package/src/runtime/public/assets/logos/urkit-logo-cyan.svg +53 -0
- package/src/runtime/public/assets/logos/urkit-logo-green.svg +53 -0
- package/src/runtime/public/assets/logos/urkit-logo-purple.svg +53 -0
- package/src/runtime/public/assets/logos/urkit-logo.svg +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# Urkit UI
|
|
2
|
+
|
|
3
|
+
A modern, accessible UI component library for Nuxt 4 with custom CSS architecture (no Tailwind).
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/urkit-ui)
|
|
6
|
+
[](https://www.npmjs.com/package/urkit-ui)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
## ✨ Features
|
|
10
|
+
|
|
11
|
+
- 🎨 **Custom CSS Architecture** - Beautiful components without Tailwind dependency
|
|
12
|
+
- 🚀 **Nuxt 4 Ready** - Built specifically for Nuxt 4
|
|
13
|
+
- ♿ **Accessible** - WCAG compliant components
|
|
14
|
+
- 🎭 **Customizable** - Flexible theming and icon system
|
|
15
|
+
- 📦 **Zero Config** - Works out of the box with sensible defaults
|
|
16
|
+
- 🔧 **TypeScript** - Full TypeScript support
|
|
17
|
+
- 🎯 **Auto-Import** - Components automatically available in your app
|
|
18
|
+
|
|
19
|
+
## 📦 Available Components
|
|
20
|
+
|
|
21
|
+
Currently available components in v0.1.5:
|
|
22
|
+
|
|
23
|
+
| Component | Description | Status |
|
|
24
|
+
|-----------|-------------|--------|
|
|
25
|
+
| **UrButton** | Full-featured button with variants, sizes, loading states, and icons | ✅ Stable |
|
|
26
|
+
| **UrInput** | Comprehensive input component with validation, password toggle, icons, and select | ✅ Stable |
|
|
27
|
+
| **UrIcon** | Flexible icon system with namespace support | ✅ Stable |
|
|
28
|
+
|
|
29
|
+
### Coming Soon
|
|
30
|
+
|
|
31
|
+
- ✨ **UrCard** - Card container component
|
|
32
|
+
- ✨ **UrModal** - Modal/dialog component
|
|
33
|
+
- ✨ **UrToast** - Toast notification system
|
|
34
|
+
- ✨ **UrCheckbox** - Checkbox input component
|
|
35
|
+
- ✨ **UrRadio** - Radio button component
|
|
36
|
+
- ✨ **UrSelect** - Dropdown select component
|
|
37
|
+
- ✨ **UrTextarea** - Multi-line text input
|
|
38
|
+
- And more...
|
|
39
|
+
|
|
40
|
+
## 🚀 Quick Start
|
|
41
|
+
|
|
42
|
+
### Installation
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Using pnpm (recommended)
|
|
46
|
+
pnpm add urkit-ui
|
|
47
|
+
|
|
48
|
+
# Using npm
|
|
49
|
+
npm install urkit-ui
|
|
50
|
+
|
|
51
|
+
# Using yarn
|
|
52
|
+
yarn add urkit-ui
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Setup
|
|
56
|
+
|
|
57
|
+
Add `urkit-ui` to your `nuxt.config.ts`:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
export default defineNuxtConfig({
|
|
61
|
+
modules: ['urkit-ui']
|
|
62
|
+
})
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
That's it! Components are now auto-imported with the `Ur` prefix.
|
|
66
|
+
|
|
67
|
+
### Usage
|
|
68
|
+
|
|
69
|
+
```vue
|
|
70
|
+
<template>
|
|
71
|
+
<div>
|
|
72
|
+
<UrButton variant="primary">Click Me</UrButton>
|
|
73
|
+
|
|
74
|
+
<UrInput
|
|
75
|
+
v-model="email"
|
|
76
|
+
type="email"
|
|
77
|
+
label="Email"
|
|
78
|
+
placeholder="Enter your email"
|
|
79
|
+
/>
|
|
80
|
+
</div>
|
|
81
|
+
</template>
|
|
82
|
+
|
|
83
|
+
<script setup lang="ts">
|
|
84
|
+
const email = ref('')
|
|
85
|
+
</script>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 📚 Components
|
|
89
|
+
|
|
90
|
+
### Button
|
|
91
|
+
|
|
92
|
+
Full-featured button component with multiple variants, sizes, and states.
|
|
93
|
+
|
|
94
|
+
```vue
|
|
95
|
+
<UrButton
|
|
96
|
+
variant="primary"
|
|
97
|
+
mode="filled"
|
|
98
|
+
size="md"
|
|
99
|
+
icon="icons:plus"
|
|
100
|
+
:loading="false"
|
|
101
|
+
>
|
|
102
|
+
Click Me
|
|
103
|
+
</UrButton>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Variants**: `primary`, `error`, `success`, `neutral`
|
|
107
|
+
**Modes**: `filled`, `stroke`, `lighter`, `ghost`
|
|
108
|
+
**Sizes**: `sm`, `md`, `lg`, `xlg`
|
|
109
|
+
|
|
110
|
+
### Input
|
|
111
|
+
|
|
112
|
+
Comprehensive input component with validation, icons, and advanced features.
|
|
113
|
+
|
|
114
|
+
```vue
|
|
115
|
+
<UrInput
|
|
116
|
+
v-model="value"
|
|
117
|
+
type="text"
|
|
118
|
+
label="Label"
|
|
119
|
+
placeholder="Placeholder"
|
|
120
|
+
icon="icons:search"
|
|
121
|
+
/>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Features**:
|
|
125
|
+
- Text, password, email, number inputs
|
|
126
|
+
- Password toggle with requirements validation
|
|
127
|
+
- Icons and affixes (prefix/suffix)
|
|
128
|
+
- Button integration
|
|
129
|
+
- Select dropdown
|
|
130
|
+
- Disabled and error states
|
|
131
|
+
|
|
132
|
+
## 🎨 Icon System
|
|
133
|
+
|
|
134
|
+
Urkit includes a flexible icon system with namespaces.
|
|
135
|
+
|
|
136
|
+
### Included Icons (for testing)
|
|
137
|
+
|
|
138
|
+
The module includes 10 essential icons to get you started:
|
|
139
|
+
|
|
140
|
+
| Icon | Name | Usage |
|
|
141
|
+
|------|------|-------|
|
|
142
|
+
| 👁️ | `icons:show` | Password toggle (show) |
|
|
143
|
+
| 🙈 | `icons:hide` | Password toggle (hide) |
|
|
144
|
+
| ⏳ | `icons:loader-icon` | Loading states |
|
|
145
|
+
| 🔍 | `icons:search` | Search functionality |
|
|
146
|
+
| ❌ | `icons:toast-close` | Close/dismiss actions |
|
|
147
|
+
| ❤️ | `icons:heart` | Like/favorite |
|
|
148
|
+
| ⭐ | `icons:star` | Rating/favorites |
|
|
149
|
+
| 👤 | `icons:profile` | User/account |
|
|
150
|
+
| 📋 | `icons:copy` | Copy action |
|
|
151
|
+
| ⬇️ | `icons:arrow-down` | Dropdowns/navigation |
|
|
152
|
+
|
|
153
|
+
```vue
|
|
154
|
+
<!-- Use included icons -->
|
|
155
|
+
<UrIcon name="icons:search" />
|
|
156
|
+
<UrIcon name="icons:heart" />
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**💡 For production**: Add your own icons! The included icons are minimal for testing purposes.
|
|
160
|
+
|
|
161
|
+
### Custom Icons
|
|
162
|
+
|
|
163
|
+
#### Method 1: Override Built-in Icons
|
|
164
|
+
|
|
165
|
+
Place SVG files in your project's `public/assets/icons/` directory:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
your-app/
|
|
169
|
+
└── public/
|
|
170
|
+
└── assets/
|
|
171
|
+
└── icons/
|
|
172
|
+
└── custom-icon.svg ← Overrides module's icon
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### Method 2: Add Custom Namespace
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
// nuxt.config.ts
|
|
179
|
+
export default defineNuxtConfig({
|
|
180
|
+
modules: ['urkit-ui'],
|
|
181
|
+
|
|
182
|
+
urkitUi: {
|
|
183
|
+
iconNamespaces: {
|
|
184
|
+
icons: '/assets/icons', // Default
|
|
185
|
+
logos: '/assets/logos', // Default
|
|
186
|
+
custom: '/custom/icons' // Your custom namespace
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
})
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Then use: `<UrIcon name="custom:my-icon" />`
|
|
193
|
+
|
|
194
|
+
## ⚙️ Configuration
|
|
195
|
+
|
|
196
|
+
Customize Urkit UI in your `nuxt.config.ts`:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
export default defineNuxtConfig({
|
|
200
|
+
modules: ['urkit-ui'],
|
|
201
|
+
|
|
202
|
+
urkitUi: {
|
|
203
|
+
// Customize component prefix (default: 'Ur')
|
|
204
|
+
prefix: 'Ur',
|
|
205
|
+
|
|
206
|
+
// Customize brand colors
|
|
207
|
+
colors: {
|
|
208
|
+
primary: {
|
|
209
|
+
500: '#0ea5e9', // Your brand color
|
|
210
|
+
600: '#0284c7',
|
|
211
|
+
700: '#0369a1'
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
|
|
215
|
+
// Customize icon namespaces
|
|
216
|
+
iconNamespaces: {
|
|
217
|
+
icons: '/assets/icons',
|
|
218
|
+
logos: '/assets/logos',
|
|
219
|
+
social: '/custom/social-icons'
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
})
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## 🎨 Color Customization
|
|
226
|
+
|
|
227
|
+
Urkit UI uses a purple theme by default. Easily customize to match your brand:
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
// nuxt.config.ts
|
|
231
|
+
export default defineNuxtConfig({
|
|
232
|
+
modules: ['urkit-ui'],
|
|
233
|
+
|
|
234
|
+
urkitUi: {
|
|
235
|
+
colors: {
|
|
236
|
+
primary: {
|
|
237
|
+
50: '#f0f9ff',
|
|
238
|
+
500: '#0ea5e9', // Main brand color
|
|
239
|
+
600: '#0284c7', // Hover
|
|
240
|
+
700: '#0369a1' // Active
|
|
241
|
+
},
|
|
242
|
+
neutral: {
|
|
243
|
+
1: '#fafafa',
|
|
244
|
+
7: '#737373',
|
|
245
|
+
12: '#171717'
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
})
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**See [COLORS.md](./COLORS.md) for complete customization guide, examples, and color scales.**
|
|
253
|
+
|
|
254
|
+
## 📖 Documentation
|
|
255
|
+
|
|
256
|
+
- **[Complete Usage Guide](./USAGE.md)** - Detailed component documentation and examples
|
|
257
|
+
- **[Color Customization](./COLORS.md)** - Brand color customization guide
|
|
258
|
+
- **[Architecture](./ARCHITECTURE.md)** - Technical architecture and asset management
|
|
259
|
+
|
|
260
|
+
## 🔧 Requirements
|
|
261
|
+
|
|
262
|
+
- Nuxt 4.0.0 or later
|
|
263
|
+
- Node.js 18 or later
|
|
264
|
+
|
|
265
|
+
## 📝 License
|
|
266
|
+
|
|
267
|
+
MIT
|
|
268
|
+
|
|
269
|
+
## 🤝 Contributing
|
|
270
|
+
|
|
271
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
272
|
+
|
|
273
|
+
## 📬 Support
|
|
274
|
+
|
|
275
|
+
- 📦 [NPM Package](https://www.npmjs.com/package/urkit-ui)
|
|
276
|
+
- 🐛 [Report Issues](https://github.com/jaeel29/urkit-ui/issues)
|
|
277
|
+
- 💬 [Discussions](https://github.com/jaeel29/urkit-ui/discussions)
|
|
278
|
+
- 📖 [Documentation](https://github.com/jaeel29/urkit-ui#readme)
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## 👨💻 Development
|
|
285
|
+
|
|
286
|
+
This section is for contributors developing the Urkit UI module itself.
|
|
287
|
+
|
|
288
|
+
### Setup
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# Install dependencies
|
|
292
|
+
pnpm install
|
|
293
|
+
|
|
294
|
+
# Prepare module
|
|
295
|
+
pnpm run dev:prepare
|
|
296
|
+
|
|
297
|
+
# Start playground
|
|
298
|
+
pnpm run dev
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Building
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# Build the module
|
|
305
|
+
pnpm run prepack
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Project Structure
|
|
309
|
+
|
|
310
|
+
```
|
|
311
|
+
urkit-ui/
|
|
312
|
+
├── src/
|
|
313
|
+
│ ├── module.ts # Module configuration
|
|
314
|
+
│ └── runtime/
|
|
315
|
+
│ ├── assets/css/ # CSS files
|
|
316
|
+
│ ├── components/ # Vue components
|
|
317
|
+
│ ├── composables/ # Composables
|
|
318
|
+
│ └── public/ # Public assets (icons, logos)
|
|
319
|
+
├── playground/ # Testing playground
|
|
320
|
+
├── USAGE.md # Usage documentation
|
|
321
|
+
└── ARCHITECTURE.md # Architecture documentation
|
|
322
|
+
```
|
package/dist/module.cjs
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const kit = require('@nuxt/kit');
|
|
4
|
+
|
|
5
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
6
|
+
function generateCustomColorCSS(colors) {
|
|
7
|
+
if (!colors) return "";
|
|
8
|
+
const cssVars = [];
|
|
9
|
+
if (colors.primary) {
|
|
10
|
+
Object.entries(colors.primary).forEach(([shade, value]) => {
|
|
11
|
+
cssVars.push(` --primary-${shade}: ${value};`);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (colors.neutral) {
|
|
15
|
+
Object.entries(colors.neutral).forEach(([shade, value]) => {
|
|
16
|
+
cssVars.push(` --neutral-${shade}: ${value};`);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
if (cssVars.length === 0) return "";
|
|
20
|
+
return `:root {
|
|
21
|
+
${cssVars.join("\n")}
|
|
22
|
+
}`;
|
|
23
|
+
}
|
|
24
|
+
const module$1 = kit.defineNuxtModule({
|
|
25
|
+
meta: {
|
|
26
|
+
name: "urkit",
|
|
27
|
+
configKey: "urkit",
|
|
28
|
+
compatibility: {
|
|
29
|
+
nuxt: ">=4.0.0"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
defaults: {
|
|
33
|
+
iconPath: "/assets/icons",
|
|
34
|
+
iconNamespaces: {
|
|
35
|
+
icons: "/assets/icons",
|
|
36
|
+
logos: "/assets/logos"
|
|
37
|
+
},
|
|
38
|
+
prefix: "Ur"
|
|
39
|
+
},
|
|
40
|
+
async setup(options, nuxt) {
|
|
41
|
+
const resolver = kit.createResolver((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('module.cjs', document.baseURI).href)));
|
|
42
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/colors.css"));
|
|
43
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/buttons.css"));
|
|
44
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/form-fields.css"));
|
|
45
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/global.css"));
|
|
46
|
+
if (options.colors) {
|
|
47
|
+
const customColors = generateCustomColorCSS(options.colors);
|
|
48
|
+
if (customColors) {
|
|
49
|
+
const customColorsFile = kit.addTemplate({
|
|
50
|
+
filename: "urkit-custom-colors.css",
|
|
51
|
+
getContents: () => customColors,
|
|
52
|
+
write: true
|
|
53
|
+
});
|
|
54
|
+
nuxt.options.css.push(customColorsFile.dst);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
nuxt.options.nitro = nuxt.options.nitro || {};
|
|
58
|
+
nuxt.options.nitro.publicAssets = nuxt.options.nitro.publicAssets || [];
|
|
59
|
+
nuxt.options.nitro.publicAssets.push({
|
|
60
|
+
dir: resolver.resolve("./runtime/public"),
|
|
61
|
+
maxAge: 60 * 60 * 24 * 365
|
|
62
|
+
// 1 year cache for icons
|
|
63
|
+
});
|
|
64
|
+
nuxt.options.runtimeConfig.public.urkit = {
|
|
65
|
+
iconNamespaces: options.iconNamespaces
|
|
66
|
+
};
|
|
67
|
+
await kit.addComponentsDir({
|
|
68
|
+
path: resolver.resolve("./runtime/components"),
|
|
69
|
+
prefix: options.prefix,
|
|
70
|
+
pathPrefix: false
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
module.exports = module$1;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as _nuxt_schema from '@nuxt/schema';
|
|
2
|
+
|
|
3
|
+
interface ModuleOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Custom icon base path
|
|
6
|
+
* @default '/assets/icons'
|
|
7
|
+
*/
|
|
8
|
+
iconPath?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Custom icon namespaces and their paths
|
|
11
|
+
* @example { icons: '/custom/icons', logos: '/custom/logos' }
|
|
12
|
+
*/
|
|
13
|
+
iconNamespaces?: Record<string, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Component prefix
|
|
16
|
+
* @default 'Ur'
|
|
17
|
+
*/
|
|
18
|
+
prefix?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Custom color overrides
|
|
21
|
+
* Override default purple theme with your brand colors
|
|
22
|
+
* @example
|
|
23
|
+
* {
|
|
24
|
+
* primary: {
|
|
25
|
+
* 50: '#f0f9ff',
|
|
26
|
+
* 100: '#e0f2fe',
|
|
27
|
+
* 500: '#0ea5e9',
|
|
28
|
+
* 600: '#0284c7',
|
|
29
|
+
* 700: '#0369a1'
|
|
30
|
+
* },
|
|
31
|
+
* neutral: {
|
|
32
|
+
* 1: '#fafafa',
|
|
33
|
+
* 5: '#737373',
|
|
34
|
+
* 12: '#171717'
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*/
|
|
38
|
+
colors?: {
|
|
39
|
+
primary?: Partial<Record<50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900, string>>;
|
|
40
|
+
neutral?: Partial<Record<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12, string>>;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
|
|
44
|
+
|
|
45
|
+
export = _default;
|
|
46
|
+
export type { ModuleOptions };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as _nuxt_schema from '@nuxt/schema';
|
|
2
|
+
|
|
3
|
+
interface ModuleOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Custom icon base path
|
|
6
|
+
* @default '/assets/icons'
|
|
7
|
+
*/
|
|
8
|
+
iconPath?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Custom icon namespaces and their paths
|
|
11
|
+
* @example { icons: '/custom/icons', logos: '/custom/logos' }
|
|
12
|
+
*/
|
|
13
|
+
iconNamespaces?: Record<string, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Component prefix
|
|
16
|
+
* @default 'Ur'
|
|
17
|
+
*/
|
|
18
|
+
prefix?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Custom color overrides
|
|
21
|
+
* Override default purple theme with your brand colors
|
|
22
|
+
* @example
|
|
23
|
+
* {
|
|
24
|
+
* primary: {
|
|
25
|
+
* 50: '#f0f9ff',
|
|
26
|
+
* 100: '#e0f2fe',
|
|
27
|
+
* 500: '#0ea5e9',
|
|
28
|
+
* 600: '#0284c7',
|
|
29
|
+
* 700: '#0369a1'
|
|
30
|
+
* },
|
|
31
|
+
* neutral: {
|
|
32
|
+
* 1: '#fafafa',
|
|
33
|
+
* 5: '#737373',
|
|
34
|
+
* 12: '#171717'
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*/
|
|
38
|
+
colors?: {
|
|
39
|
+
primary?: Partial<Record<50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900, string>>;
|
|
40
|
+
neutral?: Partial<Record<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12, string>>;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
|
|
44
|
+
|
|
45
|
+
export { _default as default };
|
|
46
|
+
export type { ModuleOptions };
|
package/dist/module.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as _nuxt_schema from '@nuxt/schema';
|
|
2
|
+
|
|
3
|
+
interface ModuleOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Custom icon base path
|
|
6
|
+
* @default '/assets/icons'
|
|
7
|
+
*/
|
|
8
|
+
iconPath?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Custom icon namespaces and their paths
|
|
11
|
+
* @example { icons: '/custom/icons', logos: '/custom/logos' }
|
|
12
|
+
*/
|
|
13
|
+
iconNamespaces?: Record<string, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Component prefix
|
|
16
|
+
* @default 'Ur'
|
|
17
|
+
*/
|
|
18
|
+
prefix?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Custom color overrides
|
|
21
|
+
* Override default purple theme with your brand colors
|
|
22
|
+
* @example
|
|
23
|
+
* {
|
|
24
|
+
* primary: {
|
|
25
|
+
* 50: '#f0f9ff',
|
|
26
|
+
* 100: '#e0f2fe',
|
|
27
|
+
* 500: '#0ea5e9',
|
|
28
|
+
* 600: '#0284c7',
|
|
29
|
+
* 700: '#0369a1'
|
|
30
|
+
* },
|
|
31
|
+
* neutral: {
|
|
32
|
+
* 1: '#fafafa',
|
|
33
|
+
* 5: '#737373',
|
|
34
|
+
* 12: '#171717'
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*/
|
|
38
|
+
colors?: {
|
|
39
|
+
primary?: Partial<Record<50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900, string>>;
|
|
40
|
+
neutral?: Partial<Record<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12, string>>;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
|
|
44
|
+
|
|
45
|
+
export = _default;
|
|
46
|
+
export type { ModuleOptions };
|
package/dist/module.json
ADDED
package/dist/module.mjs
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { defineNuxtModule, createResolver, addTemplate, addComponentsDir } from '@nuxt/kit';
|
|
2
|
+
|
|
3
|
+
function generateCustomColorCSS(colors) {
|
|
4
|
+
if (!colors) return "";
|
|
5
|
+
const cssVars = [];
|
|
6
|
+
if (colors.primary) {
|
|
7
|
+
Object.entries(colors.primary).forEach(([shade, value]) => {
|
|
8
|
+
cssVars.push(` --primary-${shade}: ${value};`);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
if (colors.neutral) {
|
|
12
|
+
Object.entries(colors.neutral).forEach(([shade, value]) => {
|
|
13
|
+
cssVars.push(` --neutral-${shade}: ${value};`);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (cssVars.length === 0) return "";
|
|
17
|
+
return `:root {
|
|
18
|
+
${cssVars.join("\n")}
|
|
19
|
+
}`;
|
|
20
|
+
}
|
|
21
|
+
const module$1 = defineNuxtModule({
|
|
22
|
+
meta: {
|
|
23
|
+
name: "urkit",
|
|
24
|
+
configKey: "urkit",
|
|
25
|
+
compatibility: {
|
|
26
|
+
nuxt: ">=4.0.0"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
defaults: {
|
|
30
|
+
iconPath: "/assets/icons",
|
|
31
|
+
iconNamespaces: {
|
|
32
|
+
icons: "/assets/icons",
|
|
33
|
+
logos: "/assets/logos"
|
|
34
|
+
},
|
|
35
|
+
prefix: "Ur"
|
|
36
|
+
},
|
|
37
|
+
async setup(options, nuxt) {
|
|
38
|
+
const resolver = createResolver(import.meta.url);
|
|
39
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/colors.css"));
|
|
40
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/buttons.css"));
|
|
41
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/form-fields.css"));
|
|
42
|
+
nuxt.options.css.push(resolver.resolve("./runtime/assets/css/global.css"));
|
|
43
|
+
if (options.colors) {
|
|
44
|
+
const customColors = generateCustomColorCSS(options.colors);
|
|
45
|
+
if (customColors) {
|
|
46
|
+
const customColorsFile = addTemplate({
|
|
47
|
+
filename: "urkit-custom-colors.css",
|
|
48
|
+
getContents: () => customColors,
|
|
49
|
+
write: true
|
|
50
|
+
});
|
|
51
|
+
nuxt.options.css.push(customColorsFile.dst);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
nuxt.options.nitro = nuxt.options.nitro || {};
|
|
55
|
+
nuxt.options.nitro.publicAssets = nuxt.options.nitro.publicAssets || [];
|
|
56
|
+
nuxt.options.nitro.publicAssets.push({
|
|
57
|
+
dir: resolver.resolve("./runtime/public"),
|
|
58
|
+
maxAge: 60 * 60 * 24 * 365
|
|
59
|
+
// 1 year cache for icons
|
|
60
|
+
});
|
|
61
|
+
nuxt.options.runtimeConfig.public.urkit = {
|
|
62
|
+
iconNamespaces: options.iconNamespaces
|
|
63
|
+
};
|
|
64
|
+
await addComponentsDir({
|
|
65
|
+
path: resolver.resolve("./runtime/components"),
|
|
66
|
+
prefix: options.prefix,
|
|
67
|
+
pathPrefix: false
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
export { module$1 as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.btn{align-items:center;border:transparent;border-radius:var(--border-radius-2);color:var(--white);cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;gap:10px;height:44px;justify-content:center;padding:0 16px;transition:all .3s ease-out}.btn .label{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn:active{box-shadow:none!important;transform:scale(.97);transition:all .3s ease-out}.btn:disabled{background-color:var(--neutral-9);color:var(--neutral-6);cursor:not-allowed;pointer-events:none}.btn--loading{box-shadow:none}.btn--primary{background-color:var(--primary-600);box-shadow:0 0 0 0 var(--primary-500)}.btn--loading.btn--primary,.btn--primary:hover{background-color:var(--primary-700);box-shadow:0 3px 0 0 var(--primary-900)}.btn--outline{background-color:transparent;border:1.5px solid var(--primary-800)}.btn--loading.btn--outline,.btn--outline:hover{background-color:var(--neutral-11);box-shadow:0 3px 0 0 var(--primary-900)}.btn--white{background-color:var(--white);box-shadow:0 0 0 0 var(--neutral-3);color:var(--neutral-12)}.btn--loading.btn--white,.btn--white:hover{box-shadow:0 3px 0 0 var(--neutral-5)}.btn--danger{background-color:var(--btn-danger-bg)}.btn--danger:hover,.btn--loading.btn--danger{background-color:var(--btn-danger-bg-hover);box-shadow:0 3px 0 0 var(--btn-danger-bg-hover-shadow)}.btn--success{background-color:var(--btn-success-bg)}.btn--loading.btn--success,.btn--success:hover{background-color:var(--btn-success-bg-hover);box-shadow:0 3px 0 0 var(--btn-success-bg-hover-shadow)}.btn--sm{height:32px;padding:0 16px}.btn--md{height:36px;padding:0 16px}.btn--lg{height:40px;padding:0 16px}.btn--xlg{height:44px;padding:0 16px}.btn--rounded{border-radius:9999px}.btn--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn--loading{cursor:not-allowed;pointer-events:none}.btn--disabled{opacity:.5;pointer-events:none}.btn__spinner{margin-right:8px}.btn__icon{display:flex}.btn__icon--right{margin-left:8px;margin-right:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--white:#fff;--black:#000;--primary-50:#f2f0ff;--primary-100:#d6d2ff;--primary-200:#c2bcff;--primary-300:#a79dff;--primary-400:#958aff;--primary-500:#7b6dff;--primary-600:#7063e8;--primary-700:#574db5;--primary-800:#443c8c;--primary-900:#342e6b;--neutral-1:#fdfdfd;--neutral-2:#f6f6f7;--neutral-3:#f1f1f2;--neutral-4:#dddcdf;--neutral-5:#c6c5ca;--neutral-6:#9897a0;--neutral-7:#6a6876;--neutral-8:#575665;--neutral-9:#3c3a4c;--neutral-10:#353345;--neutral-11:#2b2a3d;--neutral-12:#19172c;--success-light:#b8f2d8;--success:#2ebd85;--success-dark:#13703f;--success-contrast:#004f0d;--error-light:#ffc7c7;--error:#f6465d;--error-dark:#841927;--error-contrast:#5a101a;--info-light:#cce6ff;--info:#1994ff;--info-dark:#0f5999;--info-contrast:#072f52;--warning-light:#ffe7b3;--warning:#ffa913;--warning-dark:#99640b;--warning-contrast:#664207;--accent-light:#e0cfff;--accent:#7b6dff;--accent-dark:#574db5;--accent-contrast:#342e6b;--req-green:#21c16b;--alert-error-bg:#fb3748;--alert-error-light:#ffc1c5;--alert-error-lighter:#ffebec;--alert-error-border:#f87171;--alert-warning-bg:#fa731a;--alert-warning-light:#ffd9c0;--alert-warning-lighter:#fff3eb;--alert-warning-border:#fbbf24;--alert-success-bg:#21c16b;--alert-success-light:#c1f5da;--alert-success-lighter:#e0faec;--alert-success-border:#34d399;--alert-info-bg:#335cff;--alert-info-light:#c0d5ff;--alert-info-lighter:#ebf1ff;--alert-info-border:#60a5fa;--alert-feature-bg:#7b7b7b;--alert-feature-light:#ebebeb;--alert-feature-lighter:#f5f5f5;--alert-feature-border:#9ca3af}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.field-wrapper{display:flex;flex-direction:column;gap:8px}.field-label{color:var(--neutral-10);font-size:14px;font-weight:500;line-height:14px;margin:0;width:100%}.field-wrapper.is-disabled .field-label{color:var(--neutral-6)}.field-container{align-items:center;background:var(--white);border:none;box-shadow:0 0 0 1px var(--neutral-4),0 0 #0000,0 0 #0000,0 1px 2px 0 #0a0d1408;display:flex;outline:none;position:relative;transition:all .2s ease;width:100%}.field-container--textarea{align-items:stretch;flex-direction:column}.field-container--sm{height:32px}.field-container--md{height:35px}.field-container--lg{height:40px}.field-container--textarea.field-container--sm{height:auto;min-height:80px}.field-container--textarea.field-container--md{height:auto;min-height:90px}.field-container--textarea.field-container--lg{height:auto;min-height:100px}.field-container--focused{box-shadow:0 0 0 1.5px var(--primary-500),0 0 0 3.5px var(--white),0 0 0 5px var(--primary-50)}.field-container--focused .field-input::-moz-placeholder,.field-container--focused .field-textarea::-moz-placeholder{color:var(--neutral-12);-moz-transition:color .3s ease-out;transition:color .3s ease-out}.field-container--focused .field-input::placeholder,.field-container--focused .field-textarea::placeholder{color:var(--neutral-12);transition:color .3s ease-out}.field-container--error{border-color:var(--error);box-shadow:0 0 0 1.5px var(--error),0 0 0 3.5px var(--white),0 0 0 5px rgba(246,70,93,.1)}.field-container--disabled{background:var(--neutral-2);border-color:var(--neutral-3)}.field-container:hover:not(.field-container--disabled):not(.field-container--focused):not(.field-container--error){background:var(--neutral-2);box-shadow:0 0 0 1px var(--neutral-2)}.field-container:hover:not(.field-container--disabled):not(.field-container--error) .field-input::-moz-placeholder,.field-container:hover:not(.field-container--disabled):not(.field-container--error) .field-textarea::-moz-placeholder{color:var(--neutral-8);-moz-transition:color .3s ease-out;transition:color .3s ease-out}.field-container:hover:not(.field-container--disabled):not(.field-container--error) .field-input::placeholder,.field-container:hover:not(.field-container--disabled):not(.field-container--error) .field-textarea::placeholder{color:var(--neutral-8);transition:color .3s ease-out}.field-input,.field-textarea{background:transparent;border:none;box-sizing:border-box;color:var(--neutral-12);font-family:inherit;font-size:14px;font-weight:400;line-height:1.4;outline:none}.field-input{flex:1;height:100%;padding:0 12px}.field-textarea{flex:1;padding:12px;width:100%}.field-input::-moz-placeholder,.field-textarea::-moz-placeholder{color:var(--neutral-6);font-size:13px}.field-input::placeholder,.field-textarea::placeholder{color:var(--neutral-6);font-size:13px}.field-input:disabled,.field-textarea:disabled{color:var(--neutral-6);cursor:default}.field-input--with-inline-left-affix{padding-left:8px}.field-input--with-inline-right-affix{padding-right:8px}.field-container--with-left-icon .field-input{padding-left:40px}.field-container--with-right-icon .field-input{padding-right:36px}.field-textarea--resizable{display:block;flex:none;max-height:none;min-height:60px;overflow-y:auto;resize:vertical}.field-textarea--non-resizable{flex:1;resize:none}.field-icon--left{left:12px;position:absolute;top:50%;transform:translateY(-50%)}.field-icon{align-items:center;color:var(--neutral-6);display:flex;justify-content:center;transition:color .2s ease}.field-icon--right{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.field-container--error .field-icon{color:var(--error)}.field-container--disabled .field-icon{color:var(--neutral-5)}.password-toggle{cursor:pointer;transition:color .2s ease}.password-toggle:hover{color:var(--neutral-8)}.password-toggle path{stroke:var(--neutral-6)}.field-affix{align-items:center;background:var(--white);color:var(--neutral-6);display:flex;font-size:14px;font-weight:450;height:100%;padding:0 12px;white-space:nowrap}.field-affix--left{border-right:1px solid var(--neutral-3)}.field-affix--right{border-left:1px solid var(--neutral-3)}.field-inline-affix{align-items:center;color:var(--neutral-6);display:flex;font-size:14px;font-weight:450;height:100%;padding:0 12px;white-space:nowrap}.field-inline-affix--left{padding-right:0}.field-inline-affix--right{padding-left:0}.field-button{flex-shrink:0;margin-left:8px;margin-right:4px}.field-select-container{background:var(--white);border-left:1px solid var(--neutral-3);height:100%;position:relative}.field-select-trigger{background:transparent;border:none;color:var(--neutral-12);cursor:pointer;font-size:14px;height:100%;min-width:80px;padding:0 12px;transition:background-color .2s ease}.field-select-trigger,.field-select-value{align-items:center;display:flex;gap:8px}.field-select-chevron{color:var(--neutral-6);transition:transform .2s ease}.field-select-trigger--open .field-select-chevron{transform:rotate(180deg)}.field-select-dropdown{background:var(--white);border-radius:10px;box-shadow:0 2px 4px rgba(41,41,41,.04),0 1px 2px rgba(41,41,41,.04),0 0 0 1px rgba(41,41,41,.04),inset 0 -.5px .5px rgba(41,41,41,.08);left:0;margin-top:4px;min-width:120px;overflow:hidden;padding:4px;position:absolute;right:0;top:104%;z-index:1000}.field-select-option{align-items:center;border-radius:8px;color:var(--neutral-12);cursor:pointer;display:flex;font-size:14px;gap:8px;padding:8px 12px;transition:background-color .2s ease}.field-select-option:hover{background:var(--neutral-1)}.field-select-option--selected{background:var(--primary-50);color:var(--primary-600)}.field-select-option--selected .select-option-icon{color:var(--primary-500)}.select-option-flag{border-radius:2px;height:16px;-o-object-fit:cover;object-fit:cover;width:16px}.select-option-icon{color:var(--neutral-6)}.field-select-value .select-option-icon{color:var(--primary-500)}.select-option-check{color:var(--primary-600)}.field-character-counter{background:var(--white);border-radius:4px;bottom:8px;color:var(--neutral-6);font-size:12px;padding:2px 4px;pointer-events:none;position:absolute;right:12px}.field-container--with-counter .field-textarea{padding-bottom:32px}.counter-over-limit{color:var(--error)!important}.field-hint{color:var(--neutral-6);font-size:13px;line-height:1.4;margin:0}.field-errors{display:flex;flex-direction:column;gap:4px}.field-error{color:var(--error);font-size:13px;line-height:1.4;margin:0}.password-requirements{display:flex;flex-direction:column;gap:8px;margin-top:6px}.password-progress{display:flex;gap:8px;margin-bottom:4px}.progress-bar{border-radius:2px;flex:1;height:4px;transition:background-color .3s ease}.progress-bar,.progress-bar--inactive{background-color:var(--neutral-3)}.progress-bar--weak{background-color:#fb3748}.progress-bar--medium{background-color:#fa731a}.progress-bar--strong{background-color:var(--req-green)}.requirements-title{color:var(--neutral-8);font-size:13px;font-weight:500;line-height:1.4;margin:0}.requirements-list{display:flex;flex-direction:column;gap:6px}.requirement-item{align-items:center;color:var(--neutral-8);display:flex;font-size:13px;font-weight:500;gap:8px;line-height:1.4;transition:color .2s ease}.requirement-item.requirement-met{color:var(--req-green)}.requirement-icon--success{color:var(--req-green)!important}.requirement-icon--error{color:var(--neutral-6)!important}@media screen and (max-width:768px){.field-container--sm{height:40px}.field-container--md{height:44px}.field-container--lg{height:48px}.field-container--textarea.field-container--sm{min-height:90px}.field-container--textarea.field-container--md{min-height:100px}.field-container--textarea.field-container--lg{min-height:110px}.field-input,.field-textarea{font-size:16px}}.field-container--radius-none{border-radius:0}.field-container--radius-none .field-affix--left{border-bottom-left-radius:0;border-top-left-radius:0}.field-container--radius-none .field-affix--right,.field-container--radius-none .field-select-container{border-bottom-right-radius:0;border-top-right-radius:0}.field-container--radius-soft.field-container--md,.field-container--radius-soft.field-container--sm{border-radius:6px}.field-container--radius-soft.field-container--md .field-affix--left,.field-container--radius-soft.field-container--sm .field-affix--left{border-bottom-left-radius:6px;border-top-left-radius:6px}.field-container--radius-soft.field-container--md .field-affix--right,.field-container--radius-soft.field-container--md .field-select-container,.field-container--radius-soft.field-container--sm .field-affix--right,.field-container--radius-soft.field-container--sm .field-select-container{border-bottom-right-radius:6px;border-top-right-radius:6px}.field-container--radius-soft.field-container--lg{border-radius:8px}.field-container--radius-soft.field-container--lg .field-affix--left{border-bottom-left-radius:8px;border-top-left-radius:8px}.field-container--radius-soft.field-container--lg .field-affix--right,.field-container--radius-soft.field-container--lg .field-select-container{border-bottom-right-radius:8px;border-top-right-radius:8px}.field-container--radius-medium.field-container--md,.field-container--radius-medium.field-container--sm{border-radius:8px}.field-container--radius-medium.field-container--md .field-affix--left,.field-container--radius-medium.field-container--sm .field-affix--left{border-bottom-left-radius:8px;border-top-left-radius:8px}.field-container--radius-medium.field-container--md .field-affix--right,.field-container--radius-medium.field-container--md .field-select-container,.field-container--radius-medium.field-container--sm .field-affix--right,.field-container--radius-medium.field-container--sm .field-select-container{border-bottom-right-radius:8px;border-top-right-radius:8px}.field-container--radius-medium.field-container--lg{border-radius:10px}.field-container--radius-medium.field-container--lg .field-affix--left{border-bottom-left-radius:10px;border-top-left-radius:10px}.field-container--radius-medium.field-container--lg .field-affix--right,.field-container--radius-medium.field-container--lg .field-select-container{border-bottom-right-radius:10px;border-top-right-radius:10px}.field-container--radius-pill{border-radius:999px}.field-container--radius-pill .field-affix--left{border-bottom-left-radius:999px;border-top-left-radius:999px}.field-container--radius-pill .field-affix--right,.field-container--radius-pill .field-select-container{border-bottom-right-radius:999px;border-top-right-radius:999px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-display:swap;font-family:InterFull;font-weight:100 900;src:url(/fonts/Inter-VariableFont_opsz,wght.ttf) format("truetype")}@font-face{font-display:swap;font-family:Instrument;font-style:normal;font-weight:400;src:url(/fonts/Instrument_Serif/InstrumentSerif-Regular.ttf) format("truetype")}@font-face{font-display:swap;font-family:Instrument Italic;font-style:italic;font-weight:400;src:url(/fonts/Instrument_Serif/InstrumentSerif-Italic.ttf) format("truetype")}body{background-color:var(--white);color:var(--white);font-family:InterFull,sans-serif;font-feature-settings:"salt" on,"ss01" on,"ss03" on,"ss07" on,"ss08" on,"tnum" on,"cv01" 1,"cv02" 1,"cv03" 1,"cv04" 1,"cv05" 1,"cv06" 1,"cv08" 1,"cv09" 1,"cv10" 1,"cv12" 1,"cv11" 1,"cv13" 1,"calt" 1,"liga" 1;font-optical-sizing:auto;font-style:normal}body.no-scroll{overflow:hidden!important}*{border-style:solid;border-width:0;box-sizing:border-box}#__nuxt{min-height:inherit}.heading{display:inline-block;font-size:24px;font-weight:600;margin-bottom:32px}.trading-heading{color:var(--white);font-size:14px;font-weight:700}.b-r{border:1px solid red}.b-l{border:1px solid lime}.b-y{border:1px solid #ff0}.b-g{border:1px solid green}.b-b{border:1px solid blue}.section-divider{background:var(--neutral-3);border:none;height:1px;margin:56px 0}.page-enter-active,.page-leave-active{transition:all .4s cubic-bezier(.4,0,.2,1)}.page-enter-from,.page-leave-to{filter:blur(10px);opacity:0}.page-enter-to,.page-leave-from{filter:blur(0);opacity:1}::selection{background-color:var(--neutral-3);text-shadow:none}::-moz-selection{background-color:var(--neutral-3);text-shadow:none}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:transparent;border-radius:6px;-webkit-transition:background-color .3s ease;transition:background-color .3s ease}::-webkit-scrollbar-corner{background:transparent}body:hover::-webkit-scrollbar-thumb{background-color:var(--neutral-4)}body:hover::-webkit-scrollbar-thumb:hover{background-color:var(--neutral-6)}html{scrollbar-color:transparent transparent;scrollbar-width:thin}html:hover{scrollbar-color:var(--neutral-4) transparent}
|