@astrake/lumora-ui 0.2.1 → 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.
Files changed (118) hide show
  1. package/CHANGELOG.md +230 -141
  2. package/README.md +23 -21
  3. package/dist/LuAccordion.vue_vue_type_script_setup_true_lang-CwG5Ml8t.js +5032 -0
  4. package/dist/{LuEmbeddedStatusBar.vue_vue_type_script_setup_true_lang-CIksvebU.js → LuEmbeddedStatusBar.vue_vue_type_script_setup_true_lang-D4rqklgo.js} +1 -1
  5. package/dist/LuOverlay.vue_vue_type_script_setup_true_lang-C5jhqCgy.js +221 -0
  6. package/dist/__mocks__/empty.d.ts +4 -0
  7. package/dist/components/LuAccordion.vue.d.ts +23 -0
  8. package/dist/components/LuBarChart.vue.d.ts +22 -0
  9. package/dist/components/LuBottomSheet.vue.d.ts +27 -0
  10. package/dist/components/LuCalendar.vue.d.ts +34 -0
  11. package/dist/components/LuCard.vue.d.ts +0 -3
  12. package/dist/components/LuCheckbox.vue.d.ts +19 -5
  13. package/dist/components/LuChip.vue.d.ts +35 -0
  14. package/dist/components/LuChipGroup.vue.d.ts +23 -0
  15. package/dist/components/LuCodeBlock.vue.d.ts +11 -14
  16. package/dist/components/LuCollapsible.vue.d.ts +7 -4
  17. package/dist/components/LuCommandPalette.vue.d.ts +25 -0
  18. package/dist/components/LuDataGrid.types.d.ts +39 -0
  19. package/dist/components/LuDataGrid.vue.d.ts +84 -0
  20. package/dist/components/LuDateRangePicker.vue.d.ts +29 -0
  21. package/dist/components/LuDoughnutChart.vue.d.ts +17 -0
  22. package/dist/components/LuDrawer.vue.d.ts +33 -0
  23. package/dist/components/LuFileUpload.vue.d.ts +38 -0
  24. package/dist/components/LuForm.vue.d.ts +2 -2
  25. package/dist/components/LuFormField.vue.d.ts +21 -0
  26. package/dist/components/LuFormWizard.types.d.ts +7 -0
  27. package/dist/components/LuFormWizard.vue.d.ts +33 -0
  28. package/dist/components/LuGaugeChart.vue.d.ts +16 -0
  29. package/dist/components/LuKanban.types.d.ts +24 -0
  30. package/dist/components/LuKanban.vue.d.ts +30 -0
  31. package/dist/components/LuLineChart.vue.d.ts +19 -0
  32. package/dist/components/LuList.vue.d.ts +18 -0
  33. package/dist/components/LuListDivider.vue.d.ts +5 -0
  34. package/dist/components/LuListItem.vue.d.ts +32 -0
  35. package/dist/components/LuListSubheader.vue.d.ts +16 -0
  36. package/dist/components/LuMediaGallery.vue.d.ts +25 -0
  37. package/dist/components/LuMenu.vue.d.ts +2 -2
  38. package/dist/components/LuModal.vue.d.ts +5 -5
  39. package/dist/components/LuPagination.vue.d.ts +2 -2
  40. package/dist/components/LuPlanner.types.d.ts +14 -0
  41. package/dist/components/LuPlanner.vue.d.ts +23 -0
  42. package/dist/components/LuPopover.vue.d.ts +24 -0
  43. package/dist/components/LuRadioGroup.types.d.ts +1 -0
  44. package/dist/components/LuRadioGroup.vue.d.ts +2 -2
  45. package/dist/components/LuRichTextEditor.vue.d.ts +27 -0
  46. package/dist/components/LuSelect.vue.d.ts +35 -2
  47. package/dist/components/{LuPageHeader.vue.d.ts → LuSparkline.vue.d.ts} +9 -5
  48. package/dist/components/LuSwitch.vue.d.ts +19 -5
  49. package/dist/components/LuTimeline.vue.d.ts +17 -0
  50. package/dist/components/LuTimelineItem.vue.d.ts +24 -0
  51. package/dist/components/LuToast.vue.d.ts +5 -0
  52. package/dist/components/LuTree.types.d.ts +9 -0
  53. package/dist/components/LuTree.vue.d.ts +25 -0
  54. package/dist/components/LuTreeNode.vue.d.ts +37 -0
  55. package/dist/components/__tests__/LuAccordion.test.d.ts +1 -0
  56. package/dist/components/__tests__/LuBarChart.test.d.ts +1 -0
  57. package/dist/components/__tests__/LuBottomSheet.test.d.ts +1 -0
  58. package/dist/components/__tests__/LuCalendar.test.d.ts +1 -0
  59. package/dist/components/__tests__/LuCheckbox.test.d.ts +1 -0
  60. package/dist/components/__tests__/LuChip.test.d.ts +1 -0
  61. package/dist/components/__tests__/LuCommandPalette.test.d.ts +1 -0
  62. package/dist/components/__tests__/LuDataGrid.test.d.ts +1 -0
  63. package/dist/components/__tests__/LuDateRangePicker.test.d.ts +1 -0
  64. package/dist/components/__tests__/LuDoughnutChart.test.d.ts +1 -0
  65. package/dist/components/__tests__/LuDrawer.test.d.ts +1 -0
  66. package/dist/components/__tests__/LuFileUpload.test.d.ts +1 -0
  67. package/dist/components/__tests__/LuFormWizard.test.d.ts +1 -0
  68. package/dist/components/__tests__/LuGaugeChart.test.d.ts +1 -0
  69. package/dist/components/__tests__/LuKanban.test.d.ts +1 -0
  70. package/dist/components/__tests__/LuLineChart.test.d.ts +1 -0
  71. package/dist/components/__tests__/LuList.test.d.ts +1 -0
  72. package/dist/components/__tests__/LuMediaGallery.test.d.ts +1 -0
  73. package/dist/components/__tests__/LuPlanner.test.d.ts +1 -0
  74. package/dist/components/__tests__/LuPopover.test.d.ts +1 -0
  75. package/dist/components/__tests__/LuRadio.test.d.ts +1 -0
  76. package/dist/components/__tests__/LuRichTextEditor.test.d.ts +1 -0
  77. package/dist/components/__tests__/LuSelect.test.d.ts +1 -0
  78. package/dist/components/__tests__/LuSparkline.test.d.ts +1 -0
  79. package/dist/components/__tests__/LuSwitch.test.d.ts +1 -0
  80. package/dist/components/__tests__/LuTimeline.test.d.ts +1 -0
  81. package/dist/components/__tests__/LuToast.test.d.ts +1 -0
  82. package/dist/components/__tests__/LuTree.test.d.ts +1 -0
  83. package/dist/components/_all.d.ts +3 -0
  84. package/dist/components/index.d.ts +42 -3
  85. package/dist/components/index.js +73 -44
  86. package/dist/composables/index.d.ts +3 -0
  87. package/dist/composables/index.js +34 -14
  88. package/dist/composables/lazyVChart.d.ts +10 -0
  89. package/dist/composables/useChartTheme.d.ts +65 -0
  90. package/dist/composables/useDataGrid.d.ts +52 -0
  91. package/dist/composables/useFloating.d.ts +12 -0
  92. package/dist/composables/useLuToast.d.ts +14 -0
  93. package/dist/composables/useShiki.d.ts +2 -0
  94. package/dist/context-CGS7Ou_x.js +36 -0
  95. package/dist/index.d.ts +5 -0
  96. package/dist/index.js +217 -81
  97. package/dist/layout/LuFill.vue.d.ts +0 -3
  98. package/dist/layout/LuFixed.vue.d.ts +0 -3
  99. package/dist/layout/LuGrid.vue.d.ts +0 -4
  100. package/dist/layout/LuStack.vue.d.ts +5 -3
  101. package/dist/layout/index.js +1 -1
  102. package/dist/shell/index.js +1 -1
  103. package/dist/skins/components.d.ts +2 -0
  104. package/dist/skins/index.js +1053 -219
  105. package/dist/skins/layout.d.ts +2 -0
  106. package/dist/skins/shell/desktop.d.ts +2 -0
  107. package/dist/skins/shell/embedded.d.ts +2 -0
  108. package/dist/skins/shell/mobile.d.ts +2 -0
  109. package/dist/useLuToast-D5d7Wrcr.js +1029 -0
  110. package/dist/utils.d.ts +0 -11
  111. package/package.json +95 -94
  112. package/src/lumora.css +259 -16
  113. package/dist/LuCodeBlock.vue_vue_type_script_setup_true_lang-BjwcjuXF.js +0 -1623
  114. package/dist/LuOverlay.vue_vue_type_script_setup_true_lang-DZch4Vrw.js +0 -226
  115. package/dist/components/LuThemeSelect.vue.d.ts +0 -2
  116. package/dist/components/LuThemeSwitch.vue.d.ts +0 -2
  117. package/dist/context-0gENwESP.js +0 -62
  118. package/dist/useTheme-Cd4wVaLs.js +0 -21
package/CHANGELOG.md CHANGED
@@ -1,141 +1,230 @@
1
- # Changelog
2
-
3
- ## [0.2.1] — 2026-05-12
4
-
5
- ### Fixed
6
- - Package publishing now ships compiled `dist` outputs (`.js` + `.d.ts`) and exports no longer point to raw `src/*.ts` entrypoints, preventing downstream strict TypeScript checks from surfacing Lumora internals.
7
- - Cleaned internal type noise in core source (`unused imports/params`, `type`-only `VNode` import) so workspace `vue-tsc` checks remain clean.
8
-
9
- ---
10
-
11
- ## [0.2.0] — 2026-04-27
12
-
13
- ### Maintenance
14
-
15
- - bump version to 0.2.0 (`d52e5c1`)
16
-
17
-
18
- ---
19
-
20
- ## [0.2.0] — 2026-04-27
21
-
22
- ### Added
23
- - `LuCodeBlock` — Native Shiki-powered syntax highlighter with `default` and `preview` variants (supporting `tabbed` and `split` layouts).
24
- - `LuToggleGroup` & `LuToggleButton` New layout primitives for grouped button selections.
25
- - `LuMenu` — Refactored and renamed from legacy `LuDropdown` to align with the core primitives naming convention.
26
- - New showcase documentation dedicated to Toggle Group and components.
27
-
28
- ### Fixed
29
- - WPF-like edge-docking regressions in `LuDock` via a newly implemented programmatic render function.
30
- - Reactivity bugs in `LuSplit` (`LuSplitPane`, `LuSplitResizer`) failing to unwrap injected `direction` refs.
31
- - Missing `LuSplit` component skins.
32
- - Various visual hierarchy issues in documentation via typography `LuText` adjustments.
33
-
34
- ### Changed
35
- - **Zero-Raw-HTML Adherence**: Removed all raw DOM nodes (`div`, `span`, etc.) and `PreviewBlock` from the showcase application in favor of 100% native `Lu*` primitives.
36
- - Integrated Shiki to `@astrake/lumora-ui` core package dependencies.
37
-
38
- ---
39
-
40
- ## [0.1.7] — 2026-04-26
41
-
42
- ### Breaking Changes (structurally additive — no API surface removed)
43
- - Framework now ships `lumora.css` consumers must add `import '@astrake/lumora-ui/style'` to their app entry
44
-
45
- ### Fixed
46
- - Shell components (`LuDesktopShell`, `LuMobileShell`, `LuEmbeddedShell`) no longer require Tailwind CSS to be configured for `node_modules` structural layout is now framework-owned CSS
47
- - Layout primitives (`LuDock`, `LuStack`, `LuFill`, `LuScroll`, `LuGrid`, etc.) structural classes are now framework-owned, not Tailwind fallbacks
48
- - `LuDesktopRailItem` icon and label structural defaults are now framework-owned
49
- - Plugin config is now `shallowReactive` — dynamic skin switching and `config.skin = newSkin` mutations now correctly trigger reactive re-renders in all components
50
-
51
- ### Added
52
- - `lumora.css` — zero-dependency CSS baseline for all structural/layout defaults; exported at `@astrake/lumora-ui/style`
53
- - `tailwindContent()` helper exported at `@astrake/lumora-ui/tailwind` — resolves correct `node_modules` source glob for Tailwind `content` config
54
-
55
- ---
56
-
57
- ## [0.1.6]2026-04-25
58
-
59
- ### Maintenance
60
-
61
- - bump version to 0.1.6 - add LuForm validation orchestrator (`1f11734`)
62
-
63
- ---
64
-
65
- ## [0.1.6] — 2026-04-26
66
-
67
- ### Added
68
- - `LuForm` headless validation orchestrator component with slot-based API
69
- - `LuForm.types.ts` — `LuFormRules`, `LuFormErrors`, `LuFormValidator`, `LuFormContext` types
70
- - Form context integration for `LuInput`, `LuSelect`, `LuSwitch` — `name`, `error` props; register/unregister lifecycle
71
- - `LuFormContextKey` injection key (internal Symbol) for child-field coordination
72
- - 10 vitest test cases covering submit, validation, reset, blur, disabled, and programmatic API
73
-
74
- ---
75
-
76
- ## [0.1.5]2026-04-25
77
-
78
- ### Fixed
79
-
80
- - ci workflow errors npm publish auth and correct artifact path (`af81e69`)
81
-
82
- ---
83
-
84
- ## [0.1.4] 2026-04-25
85
-
86
- ### Fixed
87
-
88
- - prepack hook to include README and CHANGELOG in npm tarball (`e69bdfb`)
89
-
90
-
91
- ---
92
-
93
- ## [0.1.3] 2026-04-25
94
-
95
- ### Maintenance
96
-
97
- - fix CI pipeline failures (`cde8248`)
98
- - verify automated release pipeline (`c153464`)
99
-
100
- All notable changes to `@astrake/lumora-ui` are documented here.
101
-
102
- Format: [Keep a Changelog](https://keepachangelog.com/) · Commits: [Conventional Commits](https://www.conventionalcommits.org/)
103
-
104
-
105
- ---
106
-
107
- ## [0.1.0]2026-04-25
108
-
109
- ### Added
110
-
111
- - Initial workspace scaffold (`packages/core`, `apps/showcase`, `tools/`)
112
- - Headless Vue 3 primitive component library targeting three surface types:
113
- - **Mobile (`LuM*`):** touch-first components for PWA apps (≥44px targets, bottom nav, swipe)
114
- - **Desktop (`LuD*`):** feature-rich browser/Electron components (sidebars, tables, modals)
115
- - **Embedded (`LuE*`):** fixed-viewport components for kiosk/IoT/in-car screens
116
- - **Shared (`Lu*`):** cross-surface primitives (`LuIcon`, `LuSpinner`, `LuBadge`, `LuPortal`)
117
- - Design token system (`--lu-*` CSS custom properties) — color, typography, spacing, radius, shadow, motion
118
- - Three package entry points: `@astrake/lumora-ui`, `/mobile`, `/desktop`, `/embedded`
119
- - Skin configuration system via `LumoraUI` Vue plugin
120
- - Shell components (`LuMobileShell`, `LuDesktopShell`, `LuEmbeddedShell`) with named-slot architecture
121
- - Layout primitives and composable layer
122
- - Reference showcase app (Vite + Vue 3) with `/mobile`, `/desktop`, `/embedded` routes
123
- - `tools/build.ts` — Vite library-mode build (three entry points)
124
- - `tools/check.ts` — vue-tsc typecheck
125
- - `tools/version.ts` VERSION package.json sync
126
- - `tools/changelog.ts` — automated changelog generator (zero npm deps)
127
- - `LICENSE` — MIT license
128
- - `SECURITY.md` responsible disclosure policy
129
- - `README.md` badges, install, usage, design token overview, automation table, disclaimer
130
- - `docs/LEGAL.md` full warranty disclaimer and legal notice
131
- - `docs/PROJECT.md` — project overview
132
- - `docs/ARCHITECTURE.md` — architecture guide
133
- - `docs/DEVELOPMENT.md` — development workflow
134
- - `docs/RELEASES.md` release workflow documentation
135
- - `docs/AI_AGENT_GUIDE.md` AI coding agent guide
136
- - `AGENTS.md` — agent working rules and repo map
137
- - `.npmrc` — `@astrake` scope, `git-tag-version=false`
138
- - GitHub Actions: `ci.yml` — install, version-check, typecheck, test, build, artifact upload
139
- - GitHub Actions: `release.yml`dual trigger, changelog, GitHub Release, npm publish
140
- - GitHub Actions: `version-check.yml` — VERSION single-source-of-truth enforcement
141
- - GitHub Actions: `codeql.yml`weekly TypeScript security scan
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ---
6
+
7
+ ## [0.7.2] 2026-05-23
8
+
9
+ ### Fixed
10
+ - Fixed CI release workflow git authentication: added `token: ${{ secrets.GITHUB_TOKEN }}` to checkout step and explicit remote URL configuration before tag push to resolve "No such device or address" error.
11
+
12
+ ---
13
+
14
+ ## [0.7.1] — 2026-05-23
15
+
16
+ ### Fixed
17
+ - Fixed GitHub Actions release workflow `npm publish` double-packing issue.
18
+
19
+ ---
20
+
21
+ ## [0.7.0] — 2026-05-23
22
+
23
+ ### Added
24
+ - `LuPlanner` Weekly scheduling grid with absolute-positioned time slots, event blocks, and `slot-click` / `event-click` emissions
25
+ - `LuSelect` — Rebuilt with text search/filter, option groups, chip-based multi-select, clearable state, and async-ready slot API
26
+ - `LuDataGrid` Column sorting (asc/desc/none cycle), header select-all checkbox, local text search bar, per-column filter support
27
+ - `LuTimeline` — `compact` and `numbered` layout variants; `status` prop for per-item color coding (success/warning/error/info)
28
+ - `LuSwitch` — Indeterminate / tri-state variant via `indeterminate` prop
29
+ - `LuCalendar` `size="mini"` compact variant and `showEventLabels` boolean prop
30
+ - Showcase: `LuCodeBlock` dedicated documentation page
31
+ - New skin keys: `timeline.*`, `calendar.*`, `planner.*`, `select.*` (chip, group, search, clearable styles)
32
+ - Test coverage: 5 new test files `LuCheckbox`, `LuRadio`, `LuSwitch`, `LuSelect`, `LuPlanner`
33
+
34
+ ### Fixed
35
+ - `LuFormWizard` Step navigation regressions and layout rendering corrected
36
+ - `LuCheckbox` / `LuRadio` / `LuSwitch` Complete default-skin visual overhaul: accessible focus rings, checked/disabled states, label alignment
37
+
38
+ ---
39
+
40
+ ## [0.6.0] — 2026-05-23
41
+
42
+ ### Breaking Changes
43
+ - Removed from core exports: `LuEntityCard`, `LuEntityCardStat`, `LuPageHeader`, `LuNotificationCenter`, `LuDashboardGrid`, `LuThemeSwitch`, `LuThemeSelect`, `LuEmbeddedPOS*` (5 components). Moved to showcase recipes.
44
+
45
+ ### Added
46
+ - `LuDrawer` — Overlay/push drawer panel (left/right/top/bottom)
47
+ - `LuList`, `LuListItem`, `LuListDivider`, `LuListSubheader` Structured list primitives
48
+ - `LuPopover` Rich content anchored to trigger (floating-ui)
49
+ - `LuBottomSheet` — Mobile-friendly bottom panel with drag support
50
+ - `LuToast` + `useLuToast()` — Non-blocking notification system
51
+ - `LuChip`, `LuChipGroup` — Interactive selection chips
52
+ - `LuAccordion` — Grouped collapsibles with exclusive-open mode
53
+ - `useFloating()` Shared floating-ui composable
54
+ - Showcase: 11 functional navigation categories + Recipes section
55
+
56
+ ### Changed
57
+ - `LuTooltip`Now uses floating-ui for precise positioning with auto-flip
58
+ - `LuMenu` — Now uses floating-ui, replaces hardcoded CSS alignment
59
+ - `LuDesktopRailBar` promoted as the recommended rail/mini-drawer pattern
60
+
61
+ ---
62
+
63
+ ## [0.5.0] — 2026-05-22
64
+
65
+ ### Added
66
+
67
+ - **`LuEntityCard` + `LuEntityCardStat`** — Rich entity summary cards with avatar, meta, stats grid, and actions slots.
68
+ - Complete v0.3.0 to v0.5.0 roadmap implementation.
69
+
70
+ ---
71
+
72
+ ## [0.2.2] 2026-05-14
73
+
74
+ ### Fixed
75
+
76
+ - **`LuButton`**`to` and `href` declared props are now explicitly re-bound on the dynamic
77
+ `<component>`, fixing Vue Router console warnings (`Missing required prop: "to"`) when rendering
78
+ as `RouterLink` with `inheritAttrs: false`.
79
+ - **`LuTab` active indicator** — Changed `border-rose-500` → `border-b-rose-500` so the bottom
80
+ underline correctly overrides the `border-transparent` default in light mode (was invisible).
81
+ - **`LuToggleButton` active skin** — `activeSkin` resolver is now variant-aware: resolves
82
+ `${variant}-active` (e.g. `ghost-active`) before falling back to the generic `active` skin key.
83
+ - **`LuCodeBlock` copy button** — Hover style uses `hover:bg-white/10 hover:text-zinc-100`
84
+ (alpha overlay) instead of the mode-sensitive `hover:bg-zinc-700 hover:text-white`, ensuring
85
+ icon visibility on the always-dark `#282c34` code header in both light and dark themes.
86
+ - **`LuCollapsibleTrigger` default skin** — Removed hard-coded sidebar typography
87
+ (`text-[10px] uppercase tracking-widest text-zinc-400`). The skin is now a generic neutral
88
+ trigger container; label typography is delegated to slot content via `LuText variant="label"`.
89
+ - **Tab list borders** — `LuTabList` default and `card-header` variants changed from
90
+ `dark:border-zinc-800` → `dark:border-zinc-700`, normalising separator visual weight across modes.
91
+ - **Showcase build** — `apps/showcase/vite.config.ts` now uses an ordered alias array covering all
92
+ `@astrake/lumora-ui` sub-path exports (`/style`, `/composables`, `/layout`, `/shell`,
93
+ `/components`, `/skins`), fixing standalone `bun run build` without pre-built core artifacts.
94
+
95
+ ### Added
96
+
97
+ - **`LuToggleGroup ghost` variant** Removes the segmented-control background container for use
98
+ in minimal topbar / toolbar contexts.
99
+ - **`LuToggleButton ghost` + `ghost-active` variants** — Subtle icon-button states with an elevated
100
+ `ring` on the active element; consumed by the documentation `ThemeToggle` topbar widget.
101
+
102
+ ### Refactored (Showcase)
103
+
104
+ - **`DocsSearch`** — Rebuilt as a floating dropdown (`absolute top-full z-50`) with styled result
105
+ rows: muted section caption, bold item label, per-row hover highlight, Escape-key dismiss, and
106
+ external-link icon indicator.
107
+ - **`DocsSidebar`**Removed redundant nested `LuStack` wrappers inside the `#trigger` slot that
108
+ created double padding and triple hover-layer stacking in dark mode.
109
+
110
+ ---
111
+
112
+ ## [0.2.1] 2026-05-12
113
+
114
+ - Package publishing now ships compiled `dist` outputs (`.js` + `.d.ts`) and exports no longer point to raw `src/*.ts` entrypoints, preventing downstream strict TypeScript checks from surfacing Lumora internals.
115
+ - Cleaned internal type noise in core source (`unused imports/params`, `type`-only `VNode` import) so workspace `vue-tsc` checks remain clean.
116
+
117
+ ---
118
+
119
+ ## [0.2.0] 2026-04-27
120
+
121
+ ### Added
122
+ - `LuCodeBlock` Native Shiki-powered syntax highlighter with `default` and `preview` variants (supporting `tabbed` and `split` layouts).
123
+ - `LuToggleGroup` & `LuToggleButton` New layout primitives for grouped button selections.
124
+ - `LuMenu` — Refactored and renamed from legacy `LuDropdown` to align with the core primitives naming convention.
125
+ - New showcase documentation dedicated to Toggle Group and components.
126
+
127
+ ### Fixed
128
+ - WPF-like edge-docking regressions in `LuDock` via a newly implemented programmatic render function.
129
+ - Reactivity bugs in `LuSplit` (`LuSplitPane`, `LuSplitResizer`) failing to unwrap injected `direction` refs.
130
+ - Missing `LuSplit` component skins.
131
+ - Various visual hierarchy issues in documentation via typography `LuText` adjustments.
132
+
133
+ ### Changed
134
+ - **Zero-Raw-HTML Adherence**: Removed all raw DOM nodes (`div`, `span`, etc.) and `PreviewBlock` from the showcase application in favor of 100% native `Lu*` primitives.
135
+ - Integrated Shiki to `@astrake/lumora-ui` core package dependencies.
136
+
137
+ ---
138
+
139
+ ## [0.1.7]2026-04-26
140
+
141
+ ### Breaking Changes (structurally additive no API surface removed)
142
+ - Framework now ships `lumora.css` — consumers must add `import '@astrake/lumora-ui/style'` to their app entry
143
+
144
+ ### Fixed
145
+ - Shell components (`LuDesktopShell`, `LuMobileShell`, `LuEmbeddedShell`) no longer require Tailwind CSS to be configured for `node_modules` — structural layout is now framework-owned CSS
146
+ - Layout primitives (`LuDock`, `LuStack`, `LuFill`, `LuScroll`, `LuGrid`, etc.) structural classes are now framework-owned, not Tailwind fallbacks
147
+ - `LuDesktopRailItem` icon and label structural defaults are now framework-owned
148
+ - Plugin config is now `shallowReactive` — dynamic skin switching and `config.skin = newSkin` mutations now correctly trigger reactive re-renders in all components
149
+
150
+ ### Added
151
+ - `lumora.css` — zero-dependency CSS baseline for all structural/layout defaults; exported at `@astrake/lumora-ui/style`
152
+ - `tailwindContent()` helper exported at `@astrake/lumora-ui/tailwind` — resolves correct `node_modules` source glob for Tailwind `content` config
153
+
154
+ ---
155
+
156
+ ## [0.1.6] — 2026-04-26
157
+
158
+ ### Added
159
+ - `LuForm` — headless validation orchestrator component with slot-based API
160
+ - `LuForm.types.ts` — `LuFormRules`, `LuFormErrors`, `LuFormValidator`, `LuFormContext` types
161
+ - Form context integration for `LuInput`, `LuSelect`, `LuSwitch` — `name`, `error` props; register/unregister lifecycle
162
+ - `LuFormContextKey` injection key (internal Symbol) for child-field coordination
163
+ - 10 vitest test cases covering submit, validation, reset, blur, disabled, and programmatic API
164
+
165
+ ---
166
+
167
+ ## [0.1.5] — 2026-04-25
168
+
169
+ ### Fixed
170
+
171
+ - ci workflow errors — npm publish auth and correct artifact path (`af81e69`)
172
+
173
+ ---
174
+
175
+ ## [0.1.4] — 2026-04-25
176
+
177
+ ### Fixed
178
+
179
+ - prepack hook to include README and CHANGELOG in npm tarball (`e69bdfb`)
180
+
181
+ ---
182
+
183
+ ## [0.1.3] — 2026-04-25
184
+
185
+ ### Maintenance
186
+
187
+ - fix CI pipeline failures (`cde8248`)
188
+ - verify automated release pipeline (`c153464`)
189
+
190
+ All notable changes to `@astrake/lumora-ui` are documented here.
191
+
192
+ Format: [Keep a Changelog](https://keepachangelog.com/) · Commits: [Conventional Commits](https://www.conventionalcommits.org/)
193
+
194
+ ---
195
+
196
+ ## [0.1.0] — 2026-04-25
197
+
198
+ ### Added
199
+
200
+ - Initial workspace scaffold (`packages/core`, `apps/showcase`, `tools/`)
201
+ - Headless Vue 3 primitive component library targeting three surface types:
202
+ - **Mobile (`LuM*`):** touch-first components for PWA apps (≥44px targets, bottom nav, swipe)
203
+ - **Desktop (`LuD*`):** feature-rich browser/Electron components (sidebars, tables, modals)
204
+ - **Embedded (`LuE*`):** fixed-viewport components for kiosk/IoT/in-car screens
205
+ - **Shared (`Lu*`):** cross-surface primitives (`LuIcon`, `LuSpinner`, `LuBadge`, `LuPortal`)
206
+ - Design token system (`--lu-*` CSS custom properties) — color, typography, spacing, radius, shadow, motion
207
+ - Three package entry points: `@astrake/lumora-ui`, `/mobile`, `/desktop`, `/embedded`
208
+ - Skin configuration system via `LumoraUI` Vue plugin
209
+ - Shell components (`LuMobileShell`, `LuDesktopShell`, `LuEmbeddedShell`) with named-slot architecture
210
+ - Layout primitives and composable layer
211
+ - Reference showcase app (Vite + Vue 3) with `/mobile`, `/desktop`, `/embedded` routes
212
+ - `tools/build.ts` — Vite library-mode build (three entry points)
213
+ - `tools/check.ts` — vue-tsc typecheck
214
+ - `tools/version.ts` — VERSION → package.json sync
215
+ - `tools/changelog.ts` — automated changelog generator (zero npm deps)
216
+ - `LICENSE` — MIT license
217
+ - `SECURITY.md` — responsible disclosure policy
218
+ - `README.md` — badges, install, usage, design token overview, automation table, disclaimer
219
+ - `docs/LEGAL.md` — full warranty disclaimer and legal notice
220
+ - `docs/PROJECT.md` — project overview
221
+ - `docs/ARCHITECTURE.md` — architecture guide
222
+ - `docs/DEVELOPMENT.md` — development workflow
223
+ - `docs/RELEASES.md` — release workflow documentation
224
+ - `docs/AI_AGENT_GUIDE.md` — AI coding agent guide
225
+ - `AGENTS.md` — agent working rules and repo map
226
+ - `.npmrc` — `@astrake` scope, `git-tag-version=false`
227
+ - GitHub Actions: `ci.yml` — install, version-check, typecheck, test, build, artifact upload
228
+ - GitHub Actions: `release.yml` — dual trigger, changelog, GitHub Release, npm publish
229
+ - GitHub Actions: `version-check.yml` — VERSION single-source-of-truth enforcement
230
+ - GitHub Actions: `codeql.yml` — weekly TypeScript security scan
package/README.md CHANGED
@@ -20,10 +20,10 @@
20
20
 
21
21
  | Target | Components | Use case |
22
22
  |--------|-----------|---------|
23
- | **Mobile** (`LuM*`) | `LuMButton`, `LuMInput`, `LuMCard`, `LuMList`, `LuMBottomSheet`, `LuMNavBar` | PWA-ready apps — touch targets ≥44px, swipe gestures, bottom nav |
24
- | **Desktop** (`LuD*`) | `LuDButton`, `LuDInput`, `LuDTable`, `LuDSidebar`, `LuDDropdown`, `LuDModal` | Feature-rich browser / Electron apps — data tables, keyboard shortcuts |
25
- | **Embedded** (`LuE*`) | `LuEButton`, `LuEDisplay`, `LuEGrid`, `LuEStatusBar`, `LuEAlert`, `LuENumpad` | Kiosk, IoT, in-car screens — fixed viewport, high contrast, minimal JS |
26
- | **Shared** (`Lu*`) | `LuIcon`, `LuSpinner`, `LuBadge`, `LuPortal` | Cross-surface primitives |
23
+ | **Mobile** (`LuMobile*`) | `LuMobileShell`, `LuMobileHeader`, `LuMobileNavBar` | PWA-ready apps — touch targets ≥44px, swipe gestures, bottom nav |
24
+ | **Desktop** (`LuDesktop*`) | `LuDesktopShell`, `LuDesktopSidebar`, `LuDesktopTopBar` | Feature-rich browser / Electron apps — resizable splits, keyboard shortcuts |
25
+ | **Embedded** (`LuEmbedded*`) | `LuEmbeddedShell` | Retail POS, Kiosk, IoT, in-car screens — fixed viewport, high contrast, touch-first |
26
+ | **Shared** (`Lu*`) | `LuDataGrid`, `LuKanban`, `LuBarChart`, `LuRichTextEditor`, `LuButton` | Cross-surface primitives, data-rich components, and operational features |
27
27
 
28
28
  ---
29
29
 
@@ -48,13 +48,11 @@ bun add vue@^3.5.0
48
48
  ## Usage
49
49
 
50
50
  ```ts
51
- // Import all targets
52
- import { LuIcon, LuSpinner } from "@astrake/lumora-ui"
51
+ // Import shared components and layout primitives
52
+ import { LuButton, LuDataGrid, LuKanban, LuStack } from "@astrake/lumora-ui"
53
53
 
54
- // Import a specific target (recommended for tree-shaking)
55
- import { LuMButton, LuMCard } from "@astrake/lumora-ui/mobile"
56
- import { LuDTable, LuDSidebar } from "@astrake/lumora-ui/desktop"
57
- import { LuEDisplay, LuEGrid } from "@astrake/lumora-ui/embedded"
54
+ // Import surface-specific shells
55
+ import { LuMobileShell, LuDesktopShell, LuEmbeddedShell } from "@astrake/lumora-ui"
58
56
  ```
59
57
 
60
58
  **Register the plugin:**
@@ -62,10 +60,11 @@ import { LuEDisplay, LuEGrid } from "@astrake/lumora-ui/embedded"
62
60
  ```ts
63
61
  // main.ts
64
62
  import { createApp } from "vue"
65
- import { LumoraUI } from "@astrake/lumora-ui"
63
+ import { createLumoraUI } from "@astrake/lumora-ui"
64
+ import "@astrake/lumora-ui/style"
66
65
  import App from "./App.vue"
67
66
 
68
- createApp(App).use(LumoraUI).mount("#app")
67
+ createApp(App).use(createLumoraUI()).mount("#app")
69
68
  ```
70
69
 
71
70
  ---
@@ -94,9 +93,10 @@ Each target root overrides tokens as appropriate (e.g., Embedded reduces shadow
94
93
  | Component framework | Vue 3.5+ (Composition API) |
95
94
  | Language | TypeScript 5.9+ |
96
95
  | Bundler | Vite (library mode, three entry points) |
96
+ | Interactive Add-ons (Peer) | Apache ECharts, Tiptap, Sortable.js (`vue-draggable-plus`) |
97
97
  | Type check | vue-tsc |
98
98
  | Tests | Vitest + @vue/test-utils |
99
- | Package manager | Bun 1.3.12 |
99
+ | Package manager | Bun 1.3+ |
100
100
 
101
101
  ---
102
102
 
@@ -106,14 +106,16 @@ Each target root overrides tokens as appropriate (e.g., Embedded reduces shadow
106
106
  LumoraUI/
107
107
  ├── packages/core/ ← @astrake/lumora-ui (published package)
108
108
  │ └── src/
109
- │ ├── tokens/ CSS custom properties (--lu-*)
110
- │ ├── shared/ ← cross-target primitives (Lu*)
111
- │ ├── mobile/ Mobile components (LuM*)
112
- │ ├── desktop/ Desktop components (LuD*)
113
- │ ├── embedded/ Embedded components (LuE*)
109
+ │ ├── components/ shared primitives + complex components (Lu*)
110
+ │ ├── layout/ ← layout primitives (LuStack, LuGrid, LuDock, etc.)
111
+ │ ├── shell/ surface shells (LuDesktopShell, LuMobileShell, etc.)
112
+ │ ├── composables/ shared composition functions
113
+ │ ├── skins/ SkinMap default theme
114
+ │ ├── lumora.css ← structural CSS baseline
114
115
  │ └── index.ts
115
- ├── apps/showcase/ ← reference Vite + Vue 3 app
116
+ ├── apps/showcase/ ← reference Vite + Vue 3 showcase app
116
117
  ├── tools/ ← build, check, version, changelog scripts
118
+ ├── .agent/ ← AI agent rules and authoring guides
117
119
  └── docs/ ← architecture, development, releases, legal
118
120
  ```
119
121
 
@@ -126,7 +128,7 @@ git clone https://github.com/madlybong/LumoraUI.git
126
128
  cd LumoraUI
127
129
  bun install
128
130
  bun run check # typecheck
129
- bun test # run test suite
131
+ bun run test --run # run test suite
130
132
  bun run dev # start the showcase app
131
133
  ```
132
134
 
@@ -138,7 +140,7 @@ bun run dev # start the showcase app
138
140
  - [Architecture Guide](./docs/ARCHITECTURE.md)
139
141
  - [Development Workflow](./docs/DEVELOPMENT.md)
140
142
  - [Release Workflow](./docs/RELEASES.md)
141
- - [AI Agent Guide](./docs/AI_AGENT_GUIDE.md)
143
+ - [AI Agent Knowledge Base](./.agent/README.md)
142
144
  - [Legal Notice & Disclaimer](./docs/LEGAL.md)
143
145
 
144
146
  ---