@engrate/components 0.1.24 → 0.1.26

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.
@@ -94,15 +94,16 @@ If your project uses Tailwind CSS v4, import in your CSS file to get access to a
94
94
 
95
95
  ### Navigation Components
96
96
 
97
- | Component | Purpose |
98
- | ---------------- | ----------------------------------- |
99
- | `Breadcrumbs` | Navigation path |
100
- | `TabList` | Tab navigation |
101
- | `Pagination` | Page navigation |
102
- | `PaginationDots` | Dot indicator for content switching |
103
- | `Sidebar` | Collapsible application sidebar nav |
104
- | `Header` | Page header with logo and nav |
105
- | `Footer` | Page footer with links and info |
97
+ | Component | Purpose |
98
+ | ---------------- | --------------------------------------------------------- |
99
+ | `Breadcrumbs` | Navigation path |
100
+ | `TabList` | Tab navigation |
101
+ | `Stepper` | Multi-step progress indicator (default & mini variants) |
102
+ | `Pagination` | Page navigation |
103
+ | `PaginationDots` | Dot indicator for content switching |
104
+ | `Sidebar` | Collapsible application sidebar nav with sub-item support |
105
+ | `Header` | Page header with logo and nav |
106
+ | `Footer` | Page footer with links and info |
106
107
 
107
108
  ### Overlay Components
108
109
 
@@ -272,10 +273,13 @@ import {
272
273
  SidebarHeader,
273
274
  SidebarItem,
274
275
  SidebarSeparator,
276
+ SidebarSub,
277
+ SidebarSubContent,
278
+ SidebarSubTrigger,
275
279
  SidebarTrigger,
276
280
  EngrateLogo,
277
281
  } from '@engrate/components'
278
- import { Home, Settings, BarChart3, LogOut } from 'lucide-react'
282
+ import { Home, Settings, BarChart3, LogOut, Zap } from 'lucide-react'
279
283
 
280
284
  function AppLayout() {
281
285
  return (
@@ -293,6 +297,16 @@ function AppLayout() {
293
297
  <SidebarItem icon={<BarChart3 className="h-4 w-4" />}>
294
298
  Analytics
295
299
  </SidebarItem>
300
+ <SidebarSub>
301
+ <SidebarSubTrigger icon={<Zap className="h-4 w-4" />}>
302
+ Power Tariffs
303
+ </SidebarSubTrigger>
304
+ <SidebarSubContent>
305
+ <SidebarItem>Spot Prices</SidebarItem>
306
+ <SidebarItem>Forward Prices</SidebarItem>
307
+ <SidebarItem>Network Tariffs</SidebarItem>
308
+ </SidebarSubContent>
309
+ </SidebarSub>
296
310
  </SidebarGroup>
297
311
  <SidebarSeparator />
298
312
  <SidebarGroup>
@@ -314,6 +328,75 @@ function AppLayout() {
314
328
  }
315
329
  ```
316
330
 
331
+ ### Stepper
332
+
333
+ ```tsx
334
+ import {
335
+ Stepper,
336
+ StepperItem,
337
+ StepperTrigger,
338
+ StepperIndicator,
339
+ StepperTitle,
340
+ StepperDescription,
341
+ StepperSeparator,
342
+ } from '@engrate/components'
343
+ import { useState } from 'react'
344
+
345
+ function OnboardingWizard() {
346
+ const [activeStep, setActiveStep] = useState(1)
347
+
348
+ return (
349
+ <Stepper activeStep={activeStep}>
350
+ <StepperItem step={1}>
351
+ <StepperTrigger onClick={() => setActiveStep(1)}>
352
+ <StepperIndicator />
353
+ <StepperTitle>Your details</StepperTitle>
354
+ <StepperDescription>Provide your name and email</StepperDescription>
355
+ </StepperTrigger>
356
+ <StepperSeparator />
357
+ </StepperItem>
358
+ <StepperItem step={2}>
359
+ <StepperTrigger onClick={() => setActiveStep(2)}>
360
+ <StepperIndicator />
361
+ <StepperTitle>Company details</StepperTitle>
362
+ <StepperDescription>About your company</StepperDescription>
363
+ </StepperTrigger>
364
+ <StepperSeparator />
365
+ </StepperItem>
366
+ <StepperItem step={3}>
367
+ <StepperTrigger onClick={() => setActiveStep(3)}>
368
+ <StepperIndicator />
369
+ <StepperTitle>Invite your team</StepperTitle>
370
+ <StepperDescription>Start collaborating</StepperDescription>
371
+ </StepperTrigger>
372
+ </StepperItem>
373
+ </Stepper>
374
+ )
375
+ }
376
+
377
+ // Vertical orientation
378
+ ;<Stepper activeStep={2} orientation="vertical">
379
+ {/* Same StepperItem pattern */}
380
+ </Stepper>
381
+
382
+ // Mini variant — compact inline stepper
383
+ <Stepper variant="mini" totalSteps={4} activeStep={2} />
384
+
385
+ // Mini with small size, good for modal footers
386
+ <Stepper variant="mini" totalSteps={3} activeStep={1} size="sm" />
387
+
388
+ // Mini with accessible labels and click handler
389
+ <Stepper
390
+ variant="mini"
391
+ totalSteps={3}
392
+ activeStep={2}
393
+ labels={['Details', 'Payment', 'Confirm']}
394
+ onStepClick={(step) => setActive(step)}
395
+ />
396
+
397
+ // Mini sizes: sm, default, lg
398
+ ```
399
+
317
400
  ### Header and Footer
318
401
 
319
402
  ```tsx