@jameskabz/nextcraft-ui 0.5.0 → 0.6.0

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 (59) hide show
  1. package/README.md +94 -0
  2. package/dist/chunk-6F7FN2ZF.js +671 -0
  3. package/dist/chunk-6F7FN2ZF.js.map +1 -0
  4. package/dist/chunk-7Q4Z47HT.js +657 -0
  5. package/dist/chunk-7Q4Z47HT.js.map +1 -0
  6. package/dist/chunk-7SKDTIEK.js +49 -0
  7. package/dist/chunk-7SKDTIEK.js.map +1 -0
  8. package/dist/chunk-FEFH5O5K.js +49 -0
  9. package/dist/chunk-FEFH5O5K.js.map +1 -0
  10. package/dist/chunk-M2EKVXB6.js +127 -0
  11. package/dist/chunk-M2EKVXB6.js.map +1 -0
  12. package/dist/chunk-SBLIF6UU.js +1029 -0
  13. package/dist/chunk-SBLIF6UU.js.map +1 -0
  14. package/dist/chunk-VQ6T3HIX.js +9 -0
  15. package/dist/chunk-VQ6T3HIX.js.map +1 -0
  16. package/dist/chunk-YVZL4GET.js +328 -0
  17. package/dist/chunk-YVZL4GET.js.map +1 -0
  18. package/dist/chunk-ZRV4Y374.js +582 -0
  19. package/dist/chunk-ZRV4Y374.js.map +1 -0
  20. package/dist/craft/components.cjs +1838 -0
  21. package/dist/craft/components.cjs.map +1 -0
  22. package/dist/craft/components.d.cts +369 -0
  23. package/dist/craft/components.d.ts +369 -0
  24. package/dist/craft/components.js +78 -0
  25. package/dist/craft/components.js.map +1 -0
  26. package/dist/craft/forms.cjs +1376 -0
  27. package/dist/craft/forms.cjs.map +1 -0
  28. package/dist/craft/forms.d.cts +101 -0
  29. package/dist/craft/forms.d.ts +101 -0
  30. package/dist/craft/forms.js +14 -0
  31. package/dist/craft/forms.js.map +1 -0
  32. package/dist/craft/layout.cjs +410 -0
  33. package/dist/craft/layout.cjs.map +1 -0
  34. package/dist/craft/layout.d.cts +170 -0
  35. package/dist/craft/layout.d.ts +170 -0
  36. package/dist/craft/layout.js +27 -0
  37. package/dist/craft/layout.js.map +1 -0
  38. package/dist/craft/table.cjs +662 -0
  39. package/dist/craft/table.cjs.map +1 -0
  40. package/dist/craft/table.d.cts +99 -0
  41. package/dist/craft/table.d.ts +99 -0
  42. package/dist/craft/table.js +15 -0
  43. package/dist/craft/table.js.map +1 -0
  44. package/dist/craft/theme.cjs +166 -0
  45. package/dist/craft/theme.cjs.map +1 -0
  46. package/dist/craft/theme.d.cts +10 -0
  47. package/dist/craft/theme.d.ts +10 -0
  48. package/dist/craft/theme.js +12 -0
  49. package/dist/craft/theme.js.map +1 -0
  50. package/dist/index.cjs +1000 -299
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.d.cts +10 -499
  53. package/dist/index.d.ts +10 -499
  54. package/dist/index.js +81 -2689
  55. package/dist/index.js.map +1 -1
  56. package/dist/styles.css +124 -0
  57. package/dist/theme-context-EVI9PfKv.d.cts +22 -0
  58. package/dist/theme-context-EVI9PfKv.d.ts +22 -0
  59. package/package.json +28 -1
package/README.md CHANGED
@@ -69,6 +69,100 @@ Per-component theme override:
69
69
  <GlassCard tone="ember">...</GlassCard>
70
70
  ```
71
71
 
72
+ ## Layout templates (config-driven)
73
+
74
+ You can drive the layout from JSON and reuse it across apps.
75
+
76
+ Example config:
77
+
78
+ ```json
79
+ {
80
+ "sidebar": {
81
+ "title": "Nextcraft",
82
+ "items": [
83
+ { "label": "Dashboard", "href": "/dashboard", "icon": "home" },
84
+ { "label": "Projects", "href": "/projects", "icon": "folder" }
85
+ ],
86
+ "footerText": "Version 0.1.3"
87
+ },
88
+ "header": {
89
+ "title": "Dashboard",
90
+ "breadcrumb": [
91
+ { "label": "Home", "href": "/" },
92
+ { "label": "Dashboard" }
93
+ ]
94
+ }
95
+ }
96
+ ```
97
+
98
+ Use it:
99
+
100
+ ```tsx
101
+ import {
102
+ AppTemplate,
103
+ CraftIconProvider,
104
+ type LayoutConfig,
105
+ } from "@jameskabz/nextcraft-ui";
106
+ import { Home, Folder } from "lucide-react";
107
+
108
+ const layoutConfig: LayoutConfig = {
109
+ sidebar: {
110
+ title: "Nextcraft",
111
+ items: [
112
+ { label: "Dashboard", href: "/dashboard", icon: "home" },
113
+ { label: "Projects", href: "/projects", icon: "folder" },
114
+ ],
115
+ },
116
+ header: {
117
+ title: "Dashboard",
118
+ breadcrumb: [
119
+ { label: "Home", href: "/" },
120
+ { label: "Dashboard" },
121
+ ],
122
+ },
123
+ };
124
+
125
+ const icons = {
126
+ home: <Home size={16} />,
127
+ folder: <Folder size={16} />,
128
+ };
129
+
130
+ export default function Page() {
131
+ return (
132
+ <CraftIconProvider icons={icons}>
133
+ <AppTemplate config={layoutConfig} getActivePath={() => "/dashboard"}>
134
+ {/* content */}
135
+ </AppTemplate>
136
+ </CraftIconProvider>
137
+ );
138
+ }
139
+ ```
140
+
141
+ Notes:
142
+ - `getActivePath` can be replaced with `activePath` if you already know the path.
143
+ - Config schema is exported as `layoutConfigSchema`.
144
+ - An example file is in `examples/layout-config.json`.
145
+ - Demo page: `src/app/layout-template-demo/page.tsx`.
146
+
147
+ ## CraftIcon
148
+
149
+ CraftIcon supports lucide icons by name (via `lucide-react/dynamic`), or you can register your own icons once and use them by name anywhere:
150
+
151
+ ```tsx
152
+ import { CraftIcon, CraftIconProvider } from "@jameskabz/nextcraft-ui";
153
+ import { Home } from "lucide-react";
154
+
155
+ const icons = { home: <Home size={16} /> };
156
+
157
+ export function App() {
158
+ return (
159
+ <CraftIconProvider icons={icons}>
160
+ <CraftIcon name="home" className="text-white" />
161
+ </CraftIconProvider>
162
+ );
163
+ }
164
+ ```
165
+
72
166
  ## Troubleshooting: Module not found
73
167
 
74
168
  If your app (for example, a folder named `spendwise`) shows: