@keenmate/web-grid 1.0.0-rc02
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/LICENSE +21 -0
- package/README.md +243 -0
- package/component-variables.manifest.json +192 -0
- package/dist/grid.d.ts +319 -0
- package/dist/index.d.ts +4 -0
- package/dist/modules/contextmenu/index.d.ts +10 -0
- package/dist/modules/datepicker/datepicker.d.ts +79 -0
- package/dist/modules/datepicker/formatting.d.ts +44 -0
- package/dist/modules/datepicker/index.d.ts +4 -0
- package/dist/modules/datepicker/interaction.d.ts +39 -0
- package/dist/modules/datepicker/navigation.d.ts +37 -0
- package/dist/modules/datepicker/rendering.d.ts +56 -0
- package/dist/modules/datepicker/types.d.ts +62 -0
- package/dist/modules/dropdown/index.d.ts +4 -0
- package/dist/modules/dropdown/input-handlers.d.ts +14 -0
- package/dist/modules/dropdown/interaction.d.ts +34 -0
- package/dist/modules/dropdown/options.d.ts +33 -0
- package/dist/modules/dropdown/rendering.d.ts +11 -0
- package/dist/modules/editing/index.d.ts +2 -0
- package/dist/modules/editing/lifecycle.d.ts +25 -0
- package/dist/modules/editing/renderers.d.ts +39 -0
- package/dist/modules/navigation/focus.d.ts +46 -0
- package/dist/modules/navigation/index.d.ts +1 -0
- package/dist/modules/rendering/display.d.ts +7 -0
- package/dist/modules/rendering/index.d.ts +3 -0
- package/dist/modules/rendering/table.d.ts +39 -0
- package/dist/modules/toolbar/index.d.ts +55 -0
- package/dist/modules/tooltip/index.d.ts +1 -0
- package/dist/modules/tooltip/tooltip.d.ts +13 -0
- package/dist/modules/types.d.ts +32 -0
- package/dist/types.d.ts +311 -0
- package/dist/web-component.d.ts +277 -0
- package/dist/web-grid.js +5370 -0
- package/dist/web-grid.umd.js +618 -0
- package/package.json +78 -0
- package/src/css/_cells.css +77 -0
- package/src/css/_dark-mode.css +51 -0
- package/src/css/_dialogs.css +121 -0
- package/src/css/_dropdown.css +193 -0
- package/src/css/_editors.css +184 -0
- package/src/css/_header.css +105 -0
- package/src/css/_modifiers.css +36 -0
- package/src/css/_navigation.css +25 -0
- package/src/css/_pagination.css +156 -0
- package/src/css/_table.css +90 -0
- package/src/css/_toolbar.css +139 -0
- package/src/css/_variables.css +265 -0
- package/src/css/_virtual-scroll.css +24 -0
- package/src/css/main.css +35 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 KeenMate
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# @keenmate/web-grid
|
|
2
|
+
|
|
3
|
+
A feature-rich, framework-agnostic data grid web component with sorting, filtering, pagination, inline editing, row toolbar, and context menu support.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @keenmate/web-grid
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### ES Module (recommended)
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script type="module">
|
|
17
|
+
import '@keenmate/web-grid'
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<web-grid id="grid"></web-grid>
|
|
21
|
+
|
|
22
|
+
<script type="module">
|
|
23
|
+
const grid = document.getElementById('grid')
|
|
24
|
+
grid.items = [
|
|
25
|
+
{ id: 1, name: 'Alice', age: 28 },
|
|
26
|
+
{ id: 2, name: 'Bob', age: 34 }
|
|
27
|
+
]
|
|
28
|
+
grid.columns = [
|
|
29
|
+
{ field: 'id', title: 'ID', width: '60px' },
|
|
30
|
+
{ field: 'name', title: 'Name', sortable: true },
|
|
31
|
+
{ field: 'age', title: 'Age', sortable: true }
|
|
32
|
+
]
|
|
33
|
+
</script>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### UMD (Script Tag)
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<script src="https://unpkg.com/@keenmate/web-grid"></script>
|
|
40
|
+
<web-grid id="grid"></web-grid>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Features
|
|
44
|
+
|
|
45
|
+
- **Sorting** - Click column headers to sort ascending/descending
|
|
46
|
+
- **Filtering** - Per-column text input filters
|
|
47
|
+
- **Pagination** - Configurable page size with navigation
|
|
48
|
+
- **Inline Editing** - 7 editor types with validation support
|
|
49
|
+
- **Navigate Mode** - Spreadsheet-like keyboard navigation
|
|
50
|
+
- **Row Toolbar** - Floating action buttons on hover
|
|
51
|
+
- **Context Menu** - Right-click menu with dynamic options
|
|
52
|
+
- **Dark Mode** - Built-in dark theme support via CSS variables
|
|
53
|
+
- **Shadow DOM** - Encapsulated styles with CSS variable customization
|
|
54
|
+
- **TypeScript** - Full type definitions included
|
|
55
|
+
|
|
56
|
+
## Properties
|
|
57
|
+
|
|
58
|
+
| Property | Type | Default | Description |
|
|
59
|
+
|----------|------|---------|-------------|
|
|
60
|
+
| `items` | `Array` | `[]` | Data array to display |
|
|
61
|
+
| `columns` | `Array<Column>` | `[]` | Column definitions |
|
|
62
|
+
| `sortable` | `boolean` | `false` | Enable column sorting |
|
|
63
|
+
| `filterable` | `boolean` | `false` | Enable column filtering |
|
|
64
|
+
| `pageable` | `boolean` | `false` | Enable pagination |
|
|
65
|
+
| `pageSize` | `number` | `10` | Rows per page |
|
|
66
|
+
| `editable` | `boolean` | `false` | Enable cell editing |
|
|
67
|
+
| `editTrigger` | `string` | `'dblclick'` | Edit trigger: `'click'`, `'dblclick'`, `'navigate'` |
|
|
68
|
+
| `striped` | `boolean` | `false` | Alternate row colors |
|
|
69
|
+
| `hoverable` | `boolean` | `false` | Highlight row on hover |
|
|
70
|
+
| `showRowToolbar` | `boolean` | `false` | Show row action toolbar |
|
|
71
|
+
| `rowToolbar` | `Array` | `[]` | Toolbar items configuration |
|
|
72
|
+
| `toolbarTrigger` | `string` | `'hover'` | Toolbar trigger: `'hover'`, `'button'` |
|
|
73
|
+
| `contextMenu` | `Array` | `[]` | Context menu items |
|
|
74
|
+
|
|
75
|
+
## Column Definition
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
{
|
|
79
|
+
field: 'fieldName', // Data field name (required)
|
|
80
|
+
title: 'Column Title', // Display title
|
|
81
|
+
width: '100px', // Column width
|
|
82
|
+
minWidth: '50px', // Minimum width
|
|
83
|
+
maxWidth: '300px', // Maximum width
|
|
84
|
+
align: 'left', // 'left', 'center', 'right'
|
|
85
|
+
textOverflow: 'wrap', // 'wrap' or 'ellipsis'
|
|
86
|
+
sortable: true, // Enable sorting
|
|
87
|
+
filterable: true, // Enable filtering
|
|
88
|
+
editable: true, // Enable editing
|
|
89
|
+
editor: 'text', // Editor type
|
|
90
|
+
editorOptions: {}, // Editor configuration
|
|
91
|
+
formatCallback: (value, row) => '', // Value formatter
|
|
92
|
+
templateCallback: (row, column) => '', // Custom cell HTML
|
|
93
|
+
cellClassCallback: (value, row) => '', // Dynamic CSS class
|
|
94
|
+
beforeCommitCallback: (ctx) => true // Validation
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Editor Types
|
|
99
|
+
|
|
100
|
+
| Type | Description | Options |
|
|
101
|
+
|------|-------------|---------|
|
|
102
|
+
| `text` | Text input | `placeholder`, `maxLength`, `inputMode` |
|
|
103
|
+
| `number` | Number input | `min`, `max`, `step` |
|
|
104
|
+
| `checkbox` | Boolean toggle | - |
|
|
105
|
+
| `select` | Dropdown list | `options`, `allowEmpty`, `emptyLabel` |
|
|
106
|
+
| `combobox` | Filterable dropdown | `options`, `placeholder` |
|
|
107
|
+
| `autocomplete` | Async search | `onSearchCallback(query)`, `placeholder`, `minSearchLength` |
|
|
108
|
+
| `date` | Date picker | `min`, `max` |
|
|
109
|
+
|
|
110
|
+
## Row Toolbar
|
|
111
|
+
|
|
112
|
+
```javascript
|
|
113
|
+
grid.showRowToolbar = true
|
|
114
|
+
grid.rowToolbar = ['add', 'delete', 'duplicate', 'moveUp', 'moveDown']
|
|
115
|
+
|
|
116
|
+
// Custom items
|
|
117
|
+
grid.rowToolbar = [
|
|
118
|
+
'add',
|
|
119
|
+
{
|
|
120
|
+
id: 'custom',
|
|
121
|
+
icon: '🔧',
|
|
122
|
+
title: 'Custom Action',
|
|
123
|
+
danger: false,
|
|
124
|
+
onclick: ({ row, rowIndex }) => { /* ... */ }
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Context Menu
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
grid.contextMenu = [
|
|
133
|
+
{
|
|
134
|
+
id: 'view',
|
|
135
|
+
label: 'View Details',
|
|
136
|
+
icon: '👁️',
|
|
137
|
+
visible: (ctx) => true,
|
|
138
|
+
disabled: (ctx) => false,
|
|
139
|
+
danger: false,
|
|
140
|
+
onclick: (ctx) => {}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Events
|
|
146
|
+
|
|
147
|
+
| Event | Detail | Description |
|
|
148
|
+
|-------|--------|-------------|
|
|
149
|
+
| `rowchange` | `{ rowIndex, field, oldValue, newValue, row }` | Cell value changed |
|
|
150
|
+
| `roweditstart` | `{ rowIndex, field, row }` | Edit started |
|
|
151
|
+
| `roweditend` | `{ rowIndex, field, row, committed }` | Edit ended |
|
|
152
|
+
| `rowaction` | `{ action, rowIndex, row }` | Toolbar action |
|
|
153
|
+
|
|
154
|
+
## Styling
|
|
155
|
+
|
|
156
|
+
WebGrid uses CSS custom properties with a fallback chain:
|
|
157
|
+
|
|
158
|
+
```css
|
|
159
|
+
web-grid {
|
|
160
|
+
/* Override component variables directly */
|
|
161
|
+
--wg-accent-color: #10b981;
|
|
162
|
+
--wg-header-bg: #f5f5f5;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Or set base variables for all KeenMate components */
|
|
166
|
+
:root {
|
|
167
|
+
--base-accent-color: #10b981;
|
|
168
|
+
--base-surface-1: #ffffff;
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Key Variables
|
|
173
|
+
|
|
174
|
+
| Variable | Description |
|
|
175
|
+
|----------|-------------|
|
|
176
|
+
| `--wg-accent-color` | Primary accent color |
|
|
177
|
+
| `--wg-text-color-1` | Primary text color |
|
|
178
|
+
| `--wg-surface-1` | Background color |
|
|
179
|
+
| `--wg-surface-2` | Alternate row/header background |
|
|
180
|
+
| `--wg-border-color` | Border color |
|
|
181
|
+
|
|
182
|
+
### Component Variables Manifest
|
|
183
|
+
|
|
184
|
+
A machine-readable manifest documenting all CSS variables is included in the package:
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
import manifest from '@keenmate/web-grid/manifest'
|
|
188
|
+
|
|
189
|
+
console.log(manifest.prefix) // "wg"
|
|
190
|
+
console.log(manifest.baseVariables) // 34 --base-* variables consumed
|
|
191
|
+
console.log(manifest.componentVariables) // 121 --wg-* variables exposed
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
The manifest follows the [component-variables schema](https://raw.githubusercontent.com/keenmate/schemas/main/component-variables.schema.json) and contains:
|
|
195
|
+
|
|
196
|
+
- **baseVariables** - Theme variables (`--base-*`) the component consumes from `@keenmate/theme-designer`
|
|
197
|
+
- **componentVariables** - Component-specific variables (`--wg-*`) with category and usage descriptions
|
|
198
|
+
|
|
199
|
+
Example entry:
|
|
200
|
+
```json
|
|
201
|
+
{
|
|
202
|
+
"name": "wg-header-bg",
|
|
203
|
+
"category": "header",
|
|
204
|
+
"usage": "Header row background color"
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Dark Mode
|
|
209
|
+
|
|
210
|
+
Dark mode is triggered automatically by:
|
|
211
|
+
- OS preference: `@media (prefers-color-scheme: dark)`
|
|
212
|
+
- Attribute: `data-theme="dark"` on ancestor
|
|
213
|
+
- Bootstrap: `data-bs-theme="dark"` on ancestor
|
|
214
|
+
- Class: `.dark` on ancestor (Tailwind CSS)
|
|
215
|
+
|
|
216
|
+
## Dynamic Cell Styling
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
// Per-cell styling via column callback
|
|
220
|
+
grid.columns = [{
|
|
221
|
+
field: 'salary',
|
|
222
|
+
cellClassCallback: (value, row) => value > 90000 ? 'high-value' : null
|
|
223
|
+
}]
|
|
224
|
+
|
|
225
|
+
// Per-row styling
|
|
226
|
+
grid.rowClassCallback = (row, index) => row.status === 'inactive' ? 'row-inactive' : null
|
|
227
|
+
|
|
228
|
+
// Inject custom CSS into shadow DOM
|
|
229
|
+
grid.customStylesCallback = () => `
|
|
230
|
+
.high-value { background: #d1fae5 !important; }
|
|
231
|
+
.row-inactive { opacity: 0.5; }
|
|
232
|
+
`
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Browser Support
|
|
236
|
+
|
|
237
|
+
- Chrome/Edge 88+
|
|
238
|
+
- Firefox 78+
|
|
239
|
+
- Safari 14+
|
|
240
|
+
|
|
241
|
+
## License
|
|
242
|
+
|
|
243
|
+
MIT
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/keenmate/schemas/main/component-variables.schema.json",
|
|
3
|
+
"component": "@keenmate/web-grid",
|
|
4
|
+
"prefix": "wg",
|
|
5
|
+
"baseVariables": [
|
|
6
|
+
{ "name": "base-accent-color", "required": true, "usage": "Focus rings, active states, editor outline" },
|
|
7
|
+
{ "name": "base-accent-color-hover", "required": false, "usage": "Hover states for accent elements" },
|
|
8
|
+
{ "name": "base-accent-color-active", "required": false, "usage": "Active/pressed states" },
|
|
9
|
+
{ "name": "base-accent-color-light", "required": false, "usage": "Light accent backgrounds" },
|
|
10
|
+
{ "name": "base-text-color-1", "required": true, "usage": "Primary cell and header text" },
|
|
11
|
+
{ "name": "base-text-color-2", "required": false, "usage": "Secondary text, subtitles" },
|
|
12
|
+
{ "name": "base-text-color-3", "required": false, "usage": "Placeholder, disabled, empty state text" },
|
|
13
|
+
{ "name": "base-text-on-accent", "required": false, "usage": "Text on accent backgrounds" },
|
|
14
|
+
{ "name": "base-surface-1", "required": true, "usage": "Table background, cell background, inputs" },
|
|
15
|
+
{ "name": "base-surface-2", "required": true, "usage": "Header background, striped rows, pagination buttons" },
|
|
16
|
+
{ "name": "base-surface-3", "required": false, "usage": "Hover states, sorted header, active buttons" },
|
|
17
|
+
{ "name": "base-dropdown-bg", "required": false, "usage": "Toolbar, context menu, floating surfaces" },
|
|
18
|
+
{ "name": "base-border-color", "required": true, "usage": "Table, cell, header, toolbar borders" },
|
|
19
|
+
{ "name": "base-input-bg", "required": false, "usage": "Filter input, editor backgrounds" },
|
|
20
|
+
{ "name": "base-input-color", "required": false, "usage": "Input text color" },
|
|
21
|
+
{ "name": "base-input-border", "required": false, "usage": "Filter input border" },
|
|
22
|
+
{ "name": "base-input-border-hover", "required": false, "usage": "Input border on hover" },
|
|
23
|
+
{ "name": "base-input-border-focus", "required": false, "usage": "Focused input border" },
|
|
24
|
+
{ "name": "base-input-placeholder-color", "required": false, "usage": "Placeholder text color" },
|
|
25
|
+
{ "name": "base-dropdown-box-shadow", "required": false, "usage": "Toolbar, dropdown shadows" },
|
|
26
|
+
{ "name": "base-danger-color", "required": false, "usage": "Validation error text, indicators" },
|
|
27
|
+
{ "name": "base-danger-bg-light", "required": false, "usage": "Error cell background, danger button hover" },
|
|
28
|
+
{ "name": "base-tooltip-bg", "required": false, "usage": "Tooltip background" },
|
|
29
|
+
{ "name": "base-font-family", "required": false, "usage": "All text in grid" },
|
|
30
|
+
{ "name": "base-font-size-base", "required": false, "usage": "Cell text, editor text (multiplier)" },
|
|
31
|
+
{ "name": "base-font-size-sm", "required": false, "usage": "Filter input, pagination, labels (multiplier)" },
|
|
32
|
+
{ "name": "base-font-size-xs", "required": false, "usage": "Error messages (multiplier)" },
|
|
33
|
+
{ "name": "base-font-size-lg", "required": false, "usage": "Large text elements (multiplier)" },
|
|
34
|
+
{ "name": "base-font-weight-normal", "required": false, "usage": "Normal text weight" },
|
|
35
|
+
{ "name": "base-font-weight-semibold", "required": false, "usage": "Header text weight" },
|
|
36
|
+
{ "name": "base-line-height-normal", "required": false, "usage": "Default line height (multiplier)" },
|
|
37
|
+
{ "name": "base-border-radius-sm", "required": false, "usage": "Buttons, inputs, toolbar (multiplier)" },
|
|
38
|
+
{ "name": "base-border-radius-md", "required": false, "usage": "Cards, larger elements (multiplier)" },
|
|
39
|
+
{ "name": "base-border-radius-lg", "required": false, "usage": "Large rounded elements (multiplier)" }
|
|
40
|
+
],
|
|
41
|
+
"componentVariables": [
|
|
42
|
+
{ "name": "wg-rem", "category": "sizing", "usage": "Base sizing unit for proportional scaling (default: 10px)" },
|
|
43
|
+
|
|
44
|
+
{ "name": "wg-accent-color", "category": "accent", "usage": "Primary accent color for interactive elements" },
|
|
45
|
+
{ "name": "wg-accent-color-hover", "category": "accent", "usage": "Accent color on hover" },
|
|
46
|
+
{ "name": "wg-accent-color-active", "category": "accent", "usage": "Accent color when pressed/active" },
|
|
47
|
+
{ "name": "wg-accent-color-light", "category": "accent", "usage": "Light accent for subtle backgrounds" },
|
|
48
|
+
|
|
49
|
+
{ "name": "wg-text-color-1", "category": "text", "usage": "Primary text color (headers, cell content)" },
|
|
50
|
+
{ "name": "wg-text-color-2", "category": "text", "usage": "Secondary text color" },
|
|
51
|
+
{ "name": "wg-text-color-3", "category": "text", "usage": "Tertiary text (placeholders, disabled)" },
|
|
52
|
+
{ "name": "wg-text-on-accent", "category": "text", "usage": "Text color on accent backgrounds" },
|
|
53
|
+
|
|
54
|
+
{ "name": "wg-surface-1", "category": "surface", "usage": "Primary background (table, cells)" },
|
|
55
|
+
{ "name": "wg-surface-2", "category": "surface", "usage": "Secondary background (headers, striped rows)" },
|
|
56
|
+
{ "name": "wg-surface-3", "category": "surface", "usage": "Tertiary background (hover states)" },
|
|
57
|
+
{ "name": "wg-surface-floating", "category": "surface", "usage": "Floating elements (toolbar, dropdowns)" },
|
|
58
|
+
|
|
59
|
+
{ "name": "wg-border-color", "category": "border", "usage": "Default border color" },
|
|
60
|
+
{ "name": "wg-border-color-hover", "category": "border", "usage": "Border color on hover" },
|
|
61
|
+
|
|
62
|
+
{ "name": "wg-input-bg", "category": "input", "usage": "Input field background" },
|
|
63
|
+
{ "name": "wg-input-color", "category": "input", "usage": "Input text color" },
|
|
64
|
+
{ "name": "wg-input-border", "category": "input", "usage": "Input border (full shorthand)" },
|
|
65
|
+
{ "name": "wg-input-border-hover", "category": "input", "usage": "Input border on hover" },
|
|
66
|
+
{ "name": "wg-input-border-focus", "category": "input", "usage": "Input border when focused" },
|
|
67
|
+
{ "name": "wg-input-placeholder-color", "category": "input", "usage": "Input placeholder text color" },
|
|
68
|
+
|
|
69
|
+
{ "name": "wg-danger-color", "category": "danger", "usage": "Error/danger text and icons" },
|
|
70
|
+
{ "name": "wg-danger-bg-light", "category": "danger", "usage": "Light danger background" },
|
|
71
|
+
|
|
72
|
+
{ "name": "wg-hover-bg", "category": "state", "usage": "Generic hover background" },
|
|
73
|
+
{ "name": "wg-active-bg", "category": "state", "usage": "Generic active/pressed background" },
|
|
74
|
+
|
|
75
|
+
{ "name": "wg-font-size-base", "category": "typography", "usage": "Base font size" },
|
|
76
|
+
{ "name": "wg-font-size-sm", "category": "typography", "usage": "Small font size" },
|
|
77
|
+
{ "name": "wg-font-size-xs", "category": "typography", "usage": "Extra small font size" },
|
|
78
|
+
{ "name": "wg-font-size-lg", "category": "typography", "usage": "Large font size" },
|
|
79
|
+
{ "name": "wg-line-height-base", "category": "typography", "usage": "Base line height" },
|
|
80
|
+
{ "name": "wg-font-weight-normal", "category": "typography", "usage": "Normal font weight" },
|
|
81
|
+
{ "name": "wg-font-weight-semibold", "category": "typography", "usage": "Semibold font weight" },
|
|
82
|
+
|
|
83
|
+
{ "name": "wg-border-radius-sm", "category": "radius", "usage": "Small border radius" },
|
|
84
|
+
{ "name": "wg-border-radius-md", "category": "radius", "usage": "Medium border radius" },
|
|
85
|
+
{ "name": "wg-border-radius-lg", "category": "radius", "usage": "Large border radius" },
|
|
86
|
+
|
|
87
|
+
{ "name": "wg-spacing-xs", "category": "spacing", "usage": "Extra small spacing (4px)" },
|
|
88
|
+
{ "name": "wg-spacing-sm", "category": "spacing", "usage": "Small spacing (8px)" },
|
|
89
|
+
{ "name": "wg-spacing-md", "category": "spacing", "usage": "Medium spacing (12px)" },
|
|
90
|
+
{ "name": "wg-spacing-lg", "category": "spacing", "usage": "Large spacing (16px)" },
|
|
91
|
+
{ "name": "wg-spacing-xl", "category": "spacing", "usage": "Extra large spacing (24px)" },
|
|
92
|
+
|
|
93
|
+
{ "name": "wg-table-bg", "category": "table", "usage": "Table background color" },
|
|
94
|
+
{ "name": "wg-table-border", "category": "table", "usage": "Table outer border" },
|
|
95
|
+
|
|
96
|
+
{ "name": "wg-header-bg", "category": "header", "usage": "Header row background" },
|
|
97
|
+
{ "name": "wg-header-bg-hover", "category": "header", "usage": "Header cell hover background" },
|
|
98
|
+
{ "name": "wg-header-bg-sorted", "category": "header", "usage": "Sorted column header background" },
|
|
99
|
+
{ "name": "wg-header-color", "category": "header", "usage": "Header text color" },
|
|
100
|
+
{ "name": "wg-header-border", "category": "header", "usage": "Header bottom border" },
|
|
101
|
+
{ "name": "wg-header-padding", "category": "header", "usage": "Header cell padding" },
|
|
102
|
+
{ "name": "wg-header-font-weight", "category": "header", "usage": "Header text weight" },
|
|
103
|
+
|
|
104
|
+
{ "name": "wg-cell-padding", "category": "cell", "usage": "Cell content padding" },
|
|
105
|
+
{ "name": "wg-cell-color", "category": "cell", "usage": "Cell text color" },
|
|
106
|
+
{ "name": "wg-cell-border", "category": "cell", "usage": "Cell border" },
|
|
107
|
+
{ "name": "wg-cell-bg-hover", "category": "cell", "usage": "Cell hover background" },
|
|
108
|
+
{ "name": "wg-cell-bg-editing", "category": "cell", "usage": "Cell background when editing" },
|
|
109
|
+
{ "name": "wg-cell-readonly-bg", "category": "cell", "usage": "Read-only cell background" },
|
|
110
|
+
|
|
111
|
+
{ "name": "wg-row-border", "category": "row", "usage": "Row border" },
|
|
112
|
+
{ "name": "wg-row-bg-even", "category": "row", "usage": "Even row background (striped)" },
|
|
113
|
+
{ "name": "wg-row-bg-hover", "category": "row", "usage": "Row hover background" },
|
|
114
|
+
|
|
115
|
+
{ "name": "wg-filter-bg", "category": "filter", "usage": "Filter row background" },
|
|
116
|
+
{ "name": "wg-filter-border", "category": "filter", "usage": "Filter row border" },
|
|
117
|
+
{ "name": "wg-filter-padding", "category": "filter", "usage": "Filter cell padding" },
|
|
118
|
+
{ "name": "wg-filter-input-padding", "category": "filter", "usage": "Filter input padding" },
|
|
119
|
+
{ "name": "wg-filter-input-bg", "category": "filter", "usage": "Filter input background" },
|
|
120
|
+
{ "name": "wg-filter-input-border", "category": "filter", "usage": "Filter input border" },
|
|
121
|
+
{ "name": "wg-filter-input-border-focus", "category": "filter", "usage": "Filter input focus border" },
|
|
122
|
+
{ "name": "wg-filter-input-border-radius", "category": "filter", "usage": "Filter input border radius" },
|
|
123
|
+
{ "name": "wg-filter-input-font-size", "category": "filter", "usage": "Filter input font size" },
|
|
124
|
+
|
|
125
|
+
{ "name": "wg-sort-indicator-size", "category": "sort", "usage": "Sort arrow icon size" },
|
|
126
|
+
{ "name": "wg-sort-indicator-opacity", "category": "sort", "usage": "Active sort indicator opacity" },
|
|
127
|
+
{ "name": "wg-sort-placeholder-opacity", "category": "sort", "usage": "Inactive sort indicator opacity" },
|
|
128
|
+
{ "name": "wg-sort-priority-size", "category": "sort", "usage": "Multi-sort priority number size" },
|
|
129
|
+
|
|
130
|
+
{ "name": "wg-pagination-padding", "category": "pagination", "usage": "Pagination bar padding" },
|
|
131
|
+
{ "name": "wg-pagination-gap", "category": "pagination", "usage": "Gap between pagination elements" },
|
|
132
|
+
{ "name": "wg-pagination-bg", "category": "pagination", "usage": "Pagination bar background" },
|
|
133
|
+
{ "name": "wg-pagination-border", "category": "pagination", "usage": "Pagination bar border" },
|
|
134
|
+
{ "name": "wg-pagination-btn-padding", "category": "pagination", "usage": "Pagination button padding" },
|
|
135
|
+
{ "name": "wg-pagination-btn-bg", "category": "pagination", "usage": "Pagination button background" },
|
|
136
|
+
{ "name": "wg-pagination-btn-bg-hover", "category": "pagination", "usage": "Pagination button hover background" },
|
|
137
|
+
{ "name": "wg-pagination-btn-bg-active", "category": "pagination", "usage": "Pagination button active background" },
|
|
138
|
+
{ "name": "wg-pagination-btn-border", "category": "pagination", "usage": "Pagination button border" },
|
|
139
|
+
{ "name": "wg-pagination-btn-border-hover", "category": "pagination", "usage": "Pagination button hover border" },
|
|
140
|
+
{ "name": "wg-pagination-btn-border-radius", "category": "pagination", "usage": "Pagination button border radius" },
|
|
141
|
+
{ "name": "wg-pagination-btn-disabled-opacity", "category": "pagination", "usage": "Disabled button opacity" },
|
|
142
|
+
|
|
143
|
+
{ "name": "wg-empty-padding", "category": "empty", "usage": "Empty state message padding" },
|
|
144
|
+
{ "name": "wg-empty-color", "category": "empty", "usage": "Empty state text color" },
|
|
145
|
+
|
|
146
|
+
{ "name": "wg-error-cell-bg", "category": "error", "usage": "Error cell background" },
|
|
147
|
+
{ "name": "wg-error-cell-border", "category": "error", "usage": "Error cell border" },
|
|
148
|
+
{ "name": "wg-error-message-color", "category": "error", "usage": "Error message text color" },
|
|
149
|
+
{ "name": "wg-error-message-font-size", "category": "error", "usage": "Error message font size" },
|
|
150
|
+
{ "name": "wg-error-indicator-color", "category": "error", "usage": "Error indicator icon color" },
|
|
151
|
+
|
|
152
|
+
{ "name": "wg-editor-bg", "category": "editor", "usage": "Editor cell background" },
|
|
153
|
+
{ "name": "wg-editor-outline", "category": "editor", "usage": "Editor focus outline" },
|
|
154
|
+
{ "name": "wg-editor-outline-offset", "category": "editor", "usage": "Editor outline offset" },
|
|
155
|
+
{ "name": "wg-editor-validating-opacity", "category": "editor", "usage": "Opacity during validation" },
|
|
156
|
+
|
|
157
|
+
{ "name": "wg-dropdown-toggle-right", "category": "dropdown", "usage": "Dropdown toggle right position" },
|
|
158
|
+
{ "name": "wg-dropdown-toggle-size", "category": "dropdown", "usage": "Dropdown toggle icon size" },
|
|
159
|
+
{ "name": "wg-dropdown-toggle-hitbox", "category": "dropdown", "usage": "Dropdown toggle click area" },
|
|
160
|
+
|
|
161
|
+
{ "name": "wg-toolbar-bg", "category": "toolbar", "usage": "Row toolbar background" },
|
|
162
|
+
{ "name": "wg-toolbar-border", "category": "toolbar", "usage": "Row toolbar border" },
|
|
163
|
+
{ "name": "wg-toolbar-border-radius", "category": "toolbar", "usage": "Row toolbar border radius" },
|
|
164
|
+
{ "name": "wg-toolbar-shadow", "category": "toolbar", "usage": "Row toolbar shadow" },
|
|
165
|
+
{ "name": "wg-toolbar-divider-color", "category": "toolbar", "usage": "Toolbar divider color" },
|
|
166
|
+
{ "name": "wg-toolbar-btn-min-width", "category": "toolbar", "usage": "Toolbar button minimum width" },
|
|
167
|
+
{ "name": "wg-toolbar-btn-padding", "category": "toolbar", "usage": "Toolbar button padding" },
|
|
168
|
+
{ "name": "wg-toolbar-btn-border-radius", "category": "toolbar", "usage": "Toolbar button border radius" },
|
|
169
|
+
{ "name": "wg-toolbar-btn-bg-hover", "category": "toolbar", "usage": "Toolbar button hover background" },
|
|
170
|
+
{ "name": "wg-toolbar-btn-bg-active", "category": "toolbar", "usage": "Toolbar button active background" },
|
|
171
|
+
{ "name": "wg-toolbar-btn-color", "category": "toolbar", "usage": "Toolbar button icon/text color" },
|
|
172
|
+
{ "name": "wg-toolbar-trigger-color", "category": "toolbar", "usage": "Toolbar trigger button color" },
|
|
173
|
+
{ "name": "wg-toolbar-trigger-color-hover", "category": "toolbar", "usage": "Toolbar trigger hover color" },
|
|
174
|
+
{ "name": "wg-toolbar-trigger-bg-hover", "category": "toolbar", "usage": "Toolbar trigger hover background" },
|
|
175
|
+
|
|
176
|
+
{ "name": "wg-tooltip-bg", "category": "tooltip", "usage": "Tooltip background color" },
|
|
177
|
+
|
|
178
|
+
{ "name": "wg-context-menu-z-index", "category": "context-menu", "usage": "Context menu z-index" },
|
|
179
|
+
{ "name": "wg-context-menu-min-width", "category": "context-menu", "usage": "Context menu minimum width" },
|
|
180
|
+
|
|
181
|
+
{ "name": "wg-focus-outline", "category": "focus", "usage": "Navigate mode focus outline" },
|
|
182
|
+
{ "name": "wg-focus-outline-offset", "category": "focus", "usage": "Focus outline offset" },
|
|
183
|
+
{ "name": "wg-focus-bg", "category": "focus", "usage": "Focused cell background" },
|
|
184
|
+
|
|
185
|
+
{ "name": "wg-transition-fast", "category": "transition", "usage": "Fast transition duration" },
|
|
186
|
+
{ "name": "wg-transition-normal", "category": "transition", "usage": "Normal transition duration" },
|
|
187
|
+
|
|
188
|
+
{ "name": "wg-z-dropdown", "category": "z-index", "usage": "Dropdown z-index layer" },
|
|
189
|
+
{ "name": "wg-z-toolbar", "category": "z-index", "usage": "Toolbar z-index layer" },
|
|
190
|
+
{ "name": "wg-z-context-menu", "category": "z-index", "usage": "Context menu z-index layer" }
|
|
191
|
+
]
|
|
192
|
+
}
|