@astrake/lumora-ui 0.2.2 → 0.7.2
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/CHANGELOG.md +71 -21
- package/README.md +23 -21
- package/dist/LuAccordion.vue_vue_type_script_setup_true_lang-CwG5Ml8t.js +5032 -0
- package/dist/__mocks__/empty.d.ts +4 -0
- package/dist/components/LuAccordion.vue.d.ts +23 -0
- package/dist/components/LuBarChart.vue.d.ts +22 -0
- package/dist/components/LuBottomSheet.vue.d.ts +27 -0
- package/dist/components/LuCalendar.vue.d.ts +34 -0
- package/dist/components/LuCheckbox.vue.d.ts +17 -3
- package/dist/components/LuChip.vue.d.ts +35 -0
- package/dist/components/LuChipGroup.vue.d.ts +23 -0
- package/dist/components/LuCollapsible.vue.d.ts +5 -2
- package/dist/components/LuCommandPalette.vue.d.ts +25 -0
- package/dist/components/LuDataGrid.types.d.ts +39 -0
- package/dist/components/LuDataGrid.vue.d.ts +84 -0
- package/dist/components/LuDateRangePicker.vue.d.ts +29 -0
- package/dist/components/LuDoughnutChart.vue.d.ts +17 -0
- package/dist/components/LuDrawer.vue.d.ts +33 -0
- package/dist/components/LuFileUpload.vue.d.ts +38 -0
- package/dist/components/LuFormField.vue.d.ts +21 -0
- package/dist/components/LuFormWizard.types.d.ts +7 -0
- package/dist/components/LuFormWizard.vue.d.ts +33 -0
- package/dist/components/LuGaugeChart.vue.d.ts +16 -0
- package/dist/components/LuKanban.types.d.ts +24 -0
- package/dist/components/LuKanban.vue.d.ts +30 -0
- package/dist/components/LuLineChart.vue.d.ts +19 -0
- package/dist/components/LuList.vue.d.ts +18 -0
- package/dist/components/LuListDivider.vue.d.ts +5 -0
- package/dist/components/LuListItem.vue.d.ts +32 -0
- package/dist/components/LuListSubheader.vue.d.ts +16 -0
- package/dist/components/LuMediaGallery.vue.d.ts +25 -0
- package/dist/components/LuMenu.vue.d.ts +2 -2
- package/dist/components/LuPlanner.types.d.ts +14 -0
- package/dist/components/LuPlanner.vue.d.ts +23 -0
- package/dist/components/LuPopover.vue.d.ts +24 -0
- package/dist/components/LuRadioGroup.types.d.ts +1 -0
- package/dist/components/LuRichTextEditor.vue.d.ts +27 -0
- package/dist/components/LuSelect.vue.d.ts +35 -2
- package/dist/components/{LuPageHeader.vue.d.ts → LuSparkline.vue.d.ts} +9 -5
- package/dist/components/LuSwitch.vue.d.ts +19 -5
- package/dist/components/LuTimeline.vue.d.ts +17 -0
- package/dist/components/LuTimelineItem.vue.d.ts +24 -0
- package/dist/components/LuToast.vue.d.ts +5 -0
- package/dist/components/LuTree.types.d.ts +9 -0
- package/dist/components/LuTree.vue.d.ts +25 -0
- package/dist/components/LuTreeNode.vue.d.ts +37 -0
- package/dist/components/__tests__/LuAccordion.test.d.ts +1 -0
- package/dist/components/__tests__/LuBarChart.test.d.ts +1 -0
- package/dist/components/__tests__/LuBottomSheet.test.d.ts +1 -0
- package/dist/components/__tests__/LuCalendar.test.d.ts +1 -0
- package/dist/components/__tests__/LuCheckbox.test.d.ts +1 -0
- package/dist/components/__tests__/LuChip.test.d.ts +1 -0
- package/dist/components/__tests__/LuCommandPalette.test.d.ts +1 -0
- package/dist/components/__tests__/LuDataGrid.test.d.ts +1 -0
- package/dist/components/__tests__/LuDateRangePicker.test.d.ts +1 -0
- package/dist/components/__tests__/LuDoughnutChart.test.d.ts +1 -0
- package/dist/components/__tests__/LuDrawer.test.d.ts +1 -0
- package/dist/components/__tests__/LuFileUpload.test.d.ts +1 -0
- package/dist/components/__tests__/LuFormWizard.test.d.ts +1 -0
- package/dist/components/__tests__/LuGaugeChart.test.d.ts +1 -0
- package/dist/components/__tests__/LuKanban.test.d.ts +1 -0
- package/dist/components/__tests__/LuLineChart.test.d.ts +1 -0
- package/dist/components/__tests__/LuList.test.d.ts +1 -0
- package/dist/components/__tests__/LuMediaGallery.test.d.ts +1 -0
- package/dist/components/__tests__/LuPlanner.test.d.ts +1 -0
- package/dist/components/__tests__/LuPopover.test.d.ts +1 -0
- package/dist/components/__tests__/LuRadio.test.d.ts +1 -0
- package/dist/components/__tests__/LuRichTextEditor.test.d.ts +1 -0
- package/dist/components/__tests__/LuSelect.test.d.ts +1 -0
- package/dist/components/__tests__/LuSparkline.test.d.ts +1 -0
- package/dist/components/__tests__/LuSwitch.test.d.ts +1 -0
- package/dist/components/__tests__/LuTimeline.test.d.ts +1 -0
- package/dist/components/__tests__/LuToast.test.d.ts +1 -0
- package/dist/components/__tests__/LuTree.test.d.ts +1 -0
- package/dist/components/index.d.ts +42 -3
- package/dist/components/index.js +73 -44
- package/dist/composables/index.d.ts +2 -0
- package/dist/composables/index.js +36 -17
- package/dist/composables/lazyVChart.d.ts +10 -0
- package/dist/composables/useChartTheme.d.ts +65 -0
- package/dist/composables/useDataGrid.d.ts +52 -0
- package/dist/composables/useFloating.d.ts +12 -0
- package/dist/composables/useLuToast.d.ts +14 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +210 -146
- package/dist/skins/index.js +824 -20
- package/dist/useLuToast-D5d7Wrcr.js +1029 -0
- package/package.json +2 -1
- package/src/lumora.css +216 -5
- package/dist/LuCodeBlock.vue_vue_type_script_setup_true_lang-BdXflBkJ.js +0 -1672
- package/dist/components/LuThemeSelect.vue.d.ts +0 -2
- package/dist/components/LuThemeSwitch.vue.d.ts +0 -2
- package/dist/useShiki-DPOJfneq.js +0 -30
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astrake/lumora-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "Headless Vue 3 component framework for three surface targets — Mobile, Desktop, and Embedded — with a unified --lu-* design token system.",
|
|
5
5
|
"author": "Anuvab Chakraborty (https://github.com/madlybong)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"vue": "^3.5.0"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
|
+
"@floating-ui/dom": "^1.7.6",
|
|
90
91
|
"clsx": "^2.1.1",
|
|
91
92
|
"shiki": "^4.0.2",
|
|
92
93
|
"tailwind-merge": "^3.5.0"
|
package/src/lumora.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/* LumoraUI structural baseline — Tailwind v4 Escape Hatch, v0.
|
|
1
|
+
/* LumoraUI structural baseline — Tailwind v4 Escape Hatch, v0.3.0+ */
|
|
2
2
|
/* Consumers MUST import this: import '@astrake/lumora-ui/style' */
|
|
3
3
|
|
|
4
|
-
/*
|
|
5
|
-
With the transition to Tailwind v4 as the native design engine,
|
|
4
|
+
/*
|
|
5
|
+
With the transition to Tailwind v4 as the native design engine,
|
|
6
6
|
all structural layout classes (e.g., .lu-button, .lu-stack) have been removed.
|
|
7
7
|
Layout structure is now provided by the defaultSkin (`default.ts`) out of the box.
|
|
8
8
|
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
1. Complex [data-state="..."] selector combinations.
|
|
11
11
|
2. Webkit scrollbar pseudoclasses.
|
|
12
12
|
3. Keyframe animations that Tailwind v4 cannot natively express.
|
|
13
|
+
4. CSS custom property token definitions for semantic pipeline colours.
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
|
-
/*
|
|
16
|
-
|
|
16
|
+
/* ─── Collapsible transition ───────────────────────────────────────────────── */
|
|
17
17
|
.lu-collapsible-enter-active,
|
|
18
18
|
.lu-collapsible-leave-active {
|
|
19
19
|
display: grid;
|
|
@@ -28,10 +28,12 @@
|
|
|
28
28
|
grid-template-rows: 1fr;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
/* ─── Easing tokens ────────────────────────────────────────────────────────── */
|
|
31
32
|
:root {
|
|
32
33
|
--lu-ease-spring: cubic-bezier(0.16, 1, 0.3, 1);
|
|
33
34
|
}
|
|
34
35
|
|
|
36
|
+
/* ─── Keyframe animations ──────────────────────────────────────────────────── */
|
|
35
37
|
@keyframes lu-fade-in {
|
|
36
38
|
from {
|
|
37
39
|
opacity: 0;
|
|
@@ -46,3 +48,212 @@
|
|
|
46
48
|
.lu-fade-in {
|
|
47
49
|
animation: lu-fade-in 130ms var(--lu-ease-spring) forwards;
|
|
48
50
|
}
|
|
51
|
+
|
|
52
|
+
@keyframes lu-slide-down {
|
|
53
|
+
from { opacity: 0; transform: translateY(-6px); }
|
|
54
|
+
to { opacity: 1; transform: translateY(0); }
|
|
55
|
+
}
|
|
56
|
+
.lu-slide-down {
|
|
57
|
+
animation: lu-slide-down 160ms var(--lu-ease-spring) forwards;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@keyframes lu-slide-up {
|
|
61
|
+
from { opacity: 0; transform: translateY(6px); }
|
|
62
|
+
to { opacity: 1; transform: translateY(0); }
|
|
63
|
+
}
|
|
64
|
+
.lu-slide-up {
|
|
65
|
+
animation: lu-slide-up 160ms var(--lu-ease-spring) forwards;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* ─── Semantic pipeline colour tokens (Skin v2) ────────────────────────────── */
|
|
69
|
+
:root {
|
|
70
|
+
--lu-pipeline-success: #10b981; /* emerald-500 */
|
|
71
|
+
--lu-pipeline-warning: #f59e0b; /* amber-500 */
|
|
72
|
+
--lu-pipeline-danger: #f43f5e; /* rose-500 */
|
|
73
|
+
--lu-pipeline-info: #3b82f6; /* blue-500 */
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.dark, [data-theme="dark"] {
|
|
77
|
+
--lu-pipeline-success: #34d399; /* emerald-400 */
|
|
78
|
+
--lu-pipeline-warning: #fbbf24; /* amber-400 */
|
|
79
|
+
--lu-pipeline-danger: #fb7185; /* rose-400 */
|
|
80
|
+
--lu-pipeline-info: #60a5fa; /* blue-400 */
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* ─── Timeline connector line ──────────────────────────────────────────────── */
|
|
84
|
+
.lu-timeline-item:not(:last-child) > .lu-timeline-connector {
|
|
85
|
+
position: absolute;
|
|
86
|
+
left: 50%;
|
|
87
|
+
top: 100%;
|
|
88
|
+
transform: translateX(-50%);
|
|
89
|
+
width: 2px;
|
|
90
|
+
height: 100%;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ─── DataGrid: column freeze (sticky) support ────────────────────────────── */
|
|
94
|
+
.lu-data-grid-cell--frozen,
|
|
95
|
+
.lu-data-grid-header-cell--frozen {
|
|
96
|
+
position: sticky;
|
|
97
|
+
z-index: 2;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* ─── DataGrid: horizontal scroll wrapper ──────────────────────────────────── */
|
|
101
|
+
.lu-data-grid-scroll {
|
|
102
|
+
overflow-x: auto;
|
|
103
|
+
-webkit-overflow-scrolling: touch;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* ─── DataGrid: mobile card collapse (container query) ─────────────────────── */
|
|
107
|
+
@container lu-data-grid (max-width: 600px) {
|
|
108
|
+
.lu-data-grid-table { display: none; }
|
|
109
|
+
.lu-data-grid-cards { display: flex; flex-direction: column; gap: 0.75rem; }
|
|
110
|
+
}
|
|
111
|
+
@container lu-data-grid (min-width: 601px) {
|
|
112
|
+
.lu-data-grid-table { display: table; }
|
|
113
|
+
.lu-data-grid-cards { display: none; }
|
|
114
|
+
}
|
|
115
|
+
.lu-data-grid-container {
|
|
116
|
+
container-type: inline-size;
|
|
117
|
+
container-name: lu-data-grid;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* ─── FormWizard step connector line ───────────────────────────────────────── */
|
|
121
|
+
.lu-form-wizard-step-connector {
|
|
122
|
+
position: absolute;
|
|
123
|
+
top: 50%;
|
|
124
|
+
left: calc(50% + 1rem);
|
|
125
|
+
right: calc(-50% + 1rem);
|
|
126
|
+
height: 2px;
|
|
127
|
+
transform: translateY(-50%);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* ─── Tree indent guide lines ──────────────────────────────────────────────── */
|
|
131
|
+
.lu-tree-node--guide::before {
|
|
132
|
+
content: "";
|
|
133
|
+
position: absolute;
|
|
134
|
+
left: 0;
|
|
135
|
+
top: 0;
|
|
136
|
+
bottom: 0;
|
|
137
|
+
width: 1px;
|
|
138
|
+
background: currentColor;
|
|
139
|
+
opacity: 0.15;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* ─── Command palette backdrop ─────────────────────────────────────────────── */
|
|
143
|
+
.lu-command-palette-overlay {
|
|
144
|
+
animation: lu-fade-in 120ms ease forwards;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* ─── Notification center panel transition ─────────────────────────────────── */
|
|
148
|
+
.lu-notification-panel-enter-active { animation: lu-slide-down 180ms var(--lu-ease-spring) forwards; }
|
|
149
|
+
.lu-notification-panel-leave-active { animation: lu-slide-down 140ms ease reverse forwards; }
|
|
150
|
+
|
|
151
|
+
/* ─── Kanban mobile scroll snap ────────────────────────────────────────────── */
|
|
152
|
+
.lu-kanban-mobile-scroll {
|
|
153
|
+
display: flex;
|
|
154
|
+
overflow-x: auto;
|
|
155
|
+
scroll-snap-type: x mandatory;
|
|
156
|
+
-webkit-overflow-scrolling: touch;
|
|
157
|
+
}
|
|
158
|
+
.lu-kanban-mobile-col {
|
|
159
|
+
scroll-snap-align: start;
|
|
160
|
+
flex: 0 0 100%;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* ─── POS layout: full-screen kiosk ───────────────────────────────────────── */
|
|
164
|
+
.lu-embedded-pos-layout {
|
|
165
|
+
display: grid;
|
|
166
|
+
height: 100dvh;
|
|
167
|
+
width: 100%;
|
|
168
|
+
overflow: hidden;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* ─── POS item list: touch scroll ─────────────────────────────────────────── */
|
|
172
|
+
.lu-embedded-pos-item-list {
|
|
173
|
+
overflow-y: auto;
|
|
174
|
+
-webkit-overflow-scrolling: touch;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* ─── Dashboard grid ───────────────────────────────────────────────────────── */
|
|
178
|
+
.lu-dashboard-grid {
|
|
179
|
+
display: grid;
|
|
180
|
+
gap: 1rem;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* ─── Scrollbar styling (optional, webkit only) ────────────────────────────── */
|
|
184
|
+
.lu-scrollbar-thin::-webkit-scrollbar { width: 4px; height: 4px; }
|
|
185
|
+
.lu-scrollbar-thin::-webkit-scrollbar-track { background: transparent; }
|
|
186
|
+
.lu-scrollbar-thin::-webkit-scrollbar-thumb { border-radius: 9999px; background: rgba(0,0,0,0.15); }
|
|
187
|
+
|
|
188
|
+
/* ─── Drawer Transitions ─────────────────────────────────────────────────── */
|
|
189
|
+
.lu-drawer-fade-enter-active,
|
|
190
|
+
.lu-drawer-fade-leave-active {
|
|
191
|
+
transition: opacity 300ms ease;
|
|
192
|
+
}
|
|
193
|
+
.lu-drawer-fade-enter-from,
|
|
194
|
+
.lu-drawer-fade-leave-to {
|
|
195
|
+
opacity: 0;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.lu-drawer-slide-left-enter-active,
|
|
199
|
+
.lu-drawer-slide-left-leave-active,
|
|
200
|
+
.lu-drawer-slide-right-enter-active,
|
|
201
|
+
.lu-drawer-slide-right-leave-active,
|
|
202
|
+
.lu-drawer-slide-top-enter-active,
|
|
203
|
+
.lu-drawer-slide-top-leave-active,
|
|
204
|
+
.lu-drawer-slide-bottom-enter-active,
|
|
205
|
+
.lu-drawer-slide-bottom-leave-active {
|
|
206
|
+
transition: transform 300ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.lu-drawer-slide-left-enter-from,
|
|
210
|
+
.lu-drawer-slide-left-leave-to {
|
|
211
|
+
transform: translateX(-100%);
|
|
212
|
+
}
|
|
213
|
+
.lu-drawer-slide-right-enter-from,
|
|
214
|
+
.lu-drawer-slide-right-leave-to {
|
|
215
|
+
transform: translateX(100%);
|
|
216
|
+
}
|
|
217
|
+
.lu-drawer-slide-top-enter-from,
|
|
218
|
+
.lu-drawer-slide-top-leave-to {
|
|
219
|
+
transform: translateY(-100%);
|
|
220
|
+
}
|
|
221
|
+
.lu-drawer-slide-bottom-enter-from,
|
|
222
|
+
.lu-drawer-slide-bottom-leave-to {
|
|
223
|
+
transform: translateY(100%);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* ─── Bottom Sheet Transitions ───────────────────────────────────────────── */
|
|
227
|
+
.lu-bottom-sheet-fade-enter-active,
|
|
228
|
+
.lu-bottom-sheet-fade-leave-active {
|
|
229
|
+
transition: opacity 300ms ease;
|
|
230
|
+
}
|
|
231
|
+
.lu-bottom-sheet-fade-enter-from,
|
|
232
|
+
.lu-bottom-sheet-fade-leave-to {
|
|
233
|
+
opacity: 0;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.lu-bottom-sheet-slide-enter-active,
|
|
237
|
+
.lu-bottom-sheet-slide-leave-active {
|
|
238
|
+
transition: transform 300ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
239
|
+
}
|
|
240
|
+
.lu-bottom-sheet-slide-enter-from,
|
|
241
|
+
.lu-bottom-sheet-slide-leave-to {
|
|
242
|
+
transform: translateY(100%);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* ─── Toast Transitions ─────────────────────────────────────────────────── */
|
|
246
|
+
.lu-toast-fade-enter-active,
|
|
247
|
+
.lu-toast-fade-leave-active {
|
|
248
|
+
transition: all 300ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
249
|
+
}
|
|
250
|
+
.lu-toast-fade-enter-from {
|
|
251
|
+
opacity: 0;
|
|
252
|
+
transform: translateY(12px) scale(0.95);
|
|
253
|
+
}
|
|
254
|
+
.lu-toast-fade-leave-to {
|
|
255
|
+
opacity: 0;
|
|
256
|
+
transform: scale(0.95);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
|