@nanisoft/prism-ui 0.10.1 → 0.13.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.
- package/LICENSE +21 -21
- package/dist/.tsbuildinfo +1 -1
- package/dist/blocks/app-shell-01/app-shell.js +4 -4
- package/dist/blocks/app-shell-01/index.d.ts +2 -2
- package/dist/blocks/app-shell-01/index.js +1 -1
- package/dist/blocks/auth-form-01/auth-form.d.ts +11 -1
- package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -1
- package/dist/blocks/auth-form-01/auth-form.js +11 -8
- package/dist/blocks/auth-form-01/index.d.ts +2 -2
- package/dist/blocks/auth-form-01/index.js +1 -1
- package/dist/blocks/cta-01/cta.d.ts +26 -21
- package/dist/blocks/cta-01/cta.d.ts.map +1 -1
- package/dist/blocks/cta-01/cta.js +2 -2
- package/dist/blocks/cta-01/index.d.ts +2 -2
- package/dist/blocks/cta-01/index.js +1 -1
- package/dist/blocks/data-table-01/data-table.js +7 -7
- package/dist/blocks/data-table-01/index.d.ts +2 -2
- package/dist/blocks/data-table-01/index.js +1 -1
- package/dist/blocks/empty-state-01/empty-state.d.ts +143 -0
- package/dist/blocks/empty-state-01/empty-state.d.ts.map +1 -0
- package/dist/blocks/empty-state-01/empty-state.js +104 -0
- package/dist/blocks/empty-state-01/index.d.ts +3 -0
- package/dist/blocks/empty-state-01/index.d.ts.map +1 -0
- package/dist/blocks/empty-state-01/index.js +1 -0
- package/dist/blocks/feature-grid-01/feature-grid.d.ts +28 -1
- package/dist/blocks/feature-grid-01/feature-grid.d.ts.map +1 -1
- package/dist/blocks/feature-grid-01/feature-grid.js +34 -3
- package/dist/blocks/feature-grid-01/index.d.ts +2 -2
- package/dist/blocks/feature-grid-01/index.js +1 -1
- package/dist/blocks/hero-01/hero.d.ts +49 -17
- package/dist/blocks/hero-01/hero.d.ts.map +1 -1
- package/dist/blocks/hero-01/hero.js +14 -9
- package/dist/blocks/hero-01/index.d.ts +2 -1
- package/dist/blocks/hero-01/index.d.ts.map +1 -1
- package/dist/blocks/hero-01/index.js +1 -1
- package/dist/blocks/index.d.ts +20 -20
- package/dist/blocks/index.js +19 -19
- package/dist/blocks/instrument-panel-01/index.d.ts +2 -2
- package/dist/blocks/instrument-panel-01/index.js +1 -1
- package/dist/blocks/instrument-panel-01/instrument-panel.js +1 -1
- package/dist/blocks/logo-strip-01/index.d.ts +2 -2
- package/dist/blocks/logo-strip-01/index.js +1 -1
- package/dist/blocks/logo-strip-01/logo-strip.d.ts +1 -1
- package/dist/blocks/logo-strip-01/logo-strip.js +2 -2
- package/dist/blocks/note-grid-01/index.d.ts +2 -2
- package/dist/blocks/note-grid-01/index.js +1 -1
- package/dist/blocks/note-grid-01/note-grid.d.ts +1 -1
- package/dist/blocks/note-grid-01/note-grid.js +1 -1
- package/dist/blocks/page-header-01/index.d.ts +2 -2
- package/dist/blocks/page-header-01/index.js +1 -1
- package/dist/blocks/page-header-01/page-header.d.ts +1 -1
- package/dist/blocks/page-header-01/page-header.js +4 -4
- package/dist/blocks/pricing-01/index.d.ts +1 -1
- package/dist/blocks/pricing-01/index.js +1 -1
- package/dist/blocks/pricing-01/pricing.d.ts +8 -1
- package/dist/blocks/pricing-01/pricing.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.js +15 -5
- package/dist/blocks/process-flow-01/index.d.ts +3 -0
- package/dist/blocks/process-flow-01/index.d.ts.map +1 -0
- package/dist/blocks/process-flow-01/index.js +1 -0
- package/dist/blocks/process-flow-01/process-flow.d.ts +118 -0
- package/dist/blocks/process-flow-01/process-flow.d.ts.map +1 -0
- package/dist/blocks/process-flow-01/process-flow.js +71 -0
- package/dist/blocks/process-rail-01/index.d.ts +2 -2
- package/dist/blocks/process-rail-01/index.js +1 -1
- package/dist/blocks/process-rail-01/process-rail.d.ts +1 -1
- package/dist/blocks/process-rail-01/process-rail.js +2 -2
- package/dist/blocks/product-grid-01/index.d.ts +2 -2
- package/dist/blocks/product-grid-01/index.js +1 -1
- package/dist/blocks/product-grid-01/product-grid.d.ts +37 -5
- package/dist/blocks/product-grid-01/product-grid.d.ts.map +1 -1
- package/dist/blocks/product-grid-01/product-grid.js +20 -6
- package/dist/blocks/run-console-01/index.d.ts +3 -0
- package/dist/blocks/run-console-01/index.d.ts.map +1 -0
- package/dist/blocks/run-console-01/index.js +1 -0
- package/dist/blocks/run-console-01/run-console.d.ts +111 -0
- package/dist/blocks/run-console-01/run-console.d.ts.map +1 -0
- package/dist/blocks/run-console-01/run-console.js +48 -0
- package/dist/blocks/settings-panel-01/index.d.ts +2 -2
- package/dist/blocks/settings-panel-01/index.js +1 -1
- package/dist/blocks/settings-panel-01/settings-panel.d.ts +11 -1
- package/dist/blocks/settings-panel-01/settings-panel.d.ts.map +1 -1
- package/dist/blocks/settings-panel-01/settings-panel.js +15 -10
- package/dist/blocks/site-footer/index.d.ts +2 -2
- package/dist/blocks/site-footer/index.js +1 -1
- package/dist/blocks/site-footer/site-footer.d.ts +1 -1
- package/dist/blocks/site-footer/site-footer.js +2 -2
- package/dist/blocks/site-header/index.d.ts +2 -2
- package/dist/blocks/site-header/index.js +1 -1
- package/dist/blocks/site-header/site-header.d.ts +2 -2
- package/dist/blocks/site-header/site-header.js +3 -3
- package/dist/blocks/site-navbar/index.d.ts +3 -0
- package/dist/blocks/site-navbar/index.d.ts.map +1 -0
- package/dist/blocks/site-navbar/index.js +1 -0
- package/dist/blocks/site-navbar/mobile-nav.d.ts +48 -0
- package/dist/blocks/site-navbar/mobile-nav.d.ts.map +1 -0
- package/dist/blocks/site-navbar/mobile-nav.js +35 -0
- package/dist/blocks/site-navbar/mode-toggle.d.ts +39 -0
- package/dist/blocks/site-navbar/mode-toggle.d.ts.map +1 -0
- package/dist/blocks/site-navbar/mode-toggle.js +39 -0
- package/dist/blocks/site-navbar/navbar-controls.d.ts +79 -0
- package/dist/blocks/site-navbar/navbar-controls.d.ts.map +1 -0
- package/dist/blocks/site-navbar/navbar-controls.js +40 -0
- package/dist/blocks/site-navbar/search-entry.d.ts +29 -0
- package/dist/blocks/site-navbar/search-entry.d.ts.map +1 -0
- package/dist/blocks/site-navbar/search-entry.js +52 -0
- package/dist/blocks/site-navbar/site-navbar.d.ts +212 -0
- package/dist/blocks/site-navbar/site-navbar.d.ts.map +1 -0
- package/dist/blocks/site-navbar/site-navbar.js +61 -0
- package/dist/blocks/site-navbar/sites-menu.d.ts +40 -0
- package/dist/blocks/site-navbar/sites-menu.d.ts.map +1 -0
- package/dist/blocks/site-navbar/sites-menu.js +48 -0
- package/dist/blocks/site-navbar/theme-menu.d.ts +47 -0
- package/dist/blocks/site-navbar/theme-menu.d.ts.map +1 -0
- package/dist/blocks/site-navbar/theme-menu.js +55 -0
- package/dist/blocks/stack-grid-01/index.d.ts +2 -2
- package/dist/blocks/stack-grid-01/index.js +1 -1
- package/dist/blocks/stack-grid-01/stack-grid.d.ts +42 -11
- package/dist/blocks/stack-grid-01/stack-grid.d.ts.map +1 -1
- package/dist/blocks/stack-grid-01/stack-grid.js +15 -7
- package/dist/blocks/stats-01/index.d.ts +9 -1
- package/dist/blocks/stats-01/index.d.ts.map +1 -1
- package/dist/blocks/stats-01/index.js +8 -1
- package/dist/blocks/stats-01/stats.d.ts +1 -1
- package/dist/blocks/stats-01/stats.js +2 -2
- package/dist/blocks/status-ledger-01/index.d.ts +2 -2
- package/dist/blocks/status-ledger-01/index.js +1 -1
- package/dist/blocks/status-ledger-01/status-ledger.d.ts +1 -1
- package/dist/blocks/status-ledger-01/status-ledger.js +2 -2
- package/dist/catalog.d.ts +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +473 -1
- package/dist/components/index.d.ts +104 -66
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +74 -40
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/alert-dialog.d.ts +119 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +82 -0
- package/dist/components/ui/alert.js +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +60 -0
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio.js +61 -0
- package/dist/components/ui/avatar.js +1 -1
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/breadcrumb.js +1 -1
- package/dist/components/ui/button-group.d.ts +68 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button-group.js +54 -0
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/calendar.d.ts +158 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar.js +216 -0
- package/dist/components/ui/card.d.ts +18 -6
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/card.js +23 -8
- package/dist/components/ui/carousel.d.ts +118 -0
- package/dist/components/ui/carousel.d.ts.map +1 -0
- package/dist/components/ui/carousel.js +152 -0
- package/dist/components/ui/chart-frame.d.ts +216 -0
- package/dist/components/ui/chart-frame.d.ts.map +1 -0
- package/dist/components/ui/chart-frame.js +286 -0
- package/dist/components/ui/checkbox.js +1 -1
- package/dist/components/ui/collapsible.d.ts +97 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +54 -0
- package/dist/components/ui/combobox.d.ts +141 -0
- package/dist/components/ui/combobox.d.ts.map +1 -0
- package/dist/components/ui/combobox.js +243 -0
- package/dist/components/ui/command-palette.d.ts +106 -0
- package/dist/components/ui/command-palette.d.ts.map +1 -0
- package/dist/components/ui/command-palette.js +176 -0
- package/dist/components/ui/command.d.ts +82 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/command.js +37 -0
- package/dist/components/ui/context-menu.d.ts +151 -0
- package/dist/components/ui/context-menu.d.ts.map +1 -0
- package/dist/components/ui/context-menu.js +97 -0
- package/dist/components/ui/cta-link.js +1 -1
- package/dist/components/ui/date-picker.d.ts +111 -0
- package/dist/components/ui/date-picker.d.ts.map +1 -0
- package/dist/components/ui/date-picker.js +74 -0
- package/dist/components/ui/diagram.d.ts +84 -15
- package/dist/components/ui/diagram.d.ts.map +1 -1
- package/dist/components/ui/diagram.js +77 -7
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/diff.d.ts +105 -0
- package/dist/components/ui/diff.d.ts.map +1 -0
- package/dist/components/ui/diff.js +113 -0
- package/dist/components/ui/dropdown-menu.d.ts +18 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +1 -1
- package/dist/components/ui/fact-list.js +1 -1
- package/dist/components/ui/field.js +1 -1
- package/dist/components/ui/form.d.ts +151 -0
- package/dist/components/ui/form.d.ts.map +1 -0
- package/dist/components/ui/form.js +73 -0
- package/dist/components/ui/hover-card.d.ts +105 -0
- package/dist/components/ui/hover-card.d.ts.map +1 -0
- package/dist/components/ui/hover-card.js +49 -0
- package/dist/components/ui/input-group.d.ts +99 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/input-group.js +83 -0
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/item.d.ts +113 -0
- package/dist/components/ui/item.d.ts.map +1 -0
- package/dist/components/ui/item.js +61 -0
- package/dist/components/ui/kbd.js +1 -1
- package/dist/components/ui/label.d.ts +58 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +29 -0
- package/dist/components/ui/live-region.d.ts +9 -0
- package/dist/components/ui/live-region.d.ts.map +1 -1
- package/dist/components/ui/live-region.js +10 -2
- package/dist/components/ui/mark.js +1 -1
- package/dist/components/ui/menubar.d.ts +197 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/menubar.js +109 -0
- package/dist/components/ui/meter.d.ts +121 -0
- package/dist/components/ui/meter.d.ts.map +1 -0
- package/dist/components/ui/meter.js +82 -0
- package/dist/components/ui/native-select.d.ts +72 -0
- package/dist/components/ui/native-select.d.ts.map +1 -0
- package/dist/components/ui/native-select.js +55 -0
- package/dist/components/ui/navigation-menu.d.ts +186 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.js +94 -0
- package/dist/components/ui/number-field.d.ts +111 -0
- package/dist/components/ui/number-field.d.ts.map +1 -0
- package/dist/components/ui/number-field.js +84 -0
- package/dist/components/ui/one-time-code.d.ts +127 -0
- package/dist/components/ui/one-time-code.d.ts.map +1 -0
- package/dist/components/ui/one-time-code.js +57 -0
- package/dist/components/ui/pagination.js +1 -1
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/product-mark.d.ts +1 -1
- package/dist/components/ui/product-mark.js +1 -1
- package/dist/components/ui/product-switcher.d.ts +1 -1
- package/dist/components/ui/product-switcher.js +2 -2
- package/dist/components/ui/progress.js +1 -1
- package/dist/components/ui/prose.js +1 -1
- package/dist/components/ui/pulse-graph.js +1 -1
- package/dist/components/ui/pulse-series.js +1 -1
- package/dist/components/ui/radio-group.js +1 -1
- package/dist/components/ui/resizable.d.ts +129 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/components/ui/resizable.js +205 -0
- package/dist/components/ui/scroll-area.d.ts +97 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +68 -0
- package/dist/components/ui/search-dialog.d.ts +139 -0
- package/dist/components/ui/search-dialog.d.ts.map +1 -0
- package/dist/components/ui/search-dialog.js +178 -0
- package/dist/components/ui/section.d.ts +26 -0
- package/dist/components/ui/section.d.ts.map +1 -1
- package/dist/components/ui/section.js +32 -1
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/separator.js +1 -1
- package/dist/components/ui/sheet.d.ts +103 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet.js +58 -0
- package/dist/components/ui/sidebar.d.ts +228 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -0
- package/dist/components/ui/sidebar.js +172 -0
- package/dist/components/ui/signal-field.js +1 -1
- package/dist/components/ui/skeleton.js +1 -1
- package/dist/components/ui/slider.js +1 -1
- package/dist/components/ui/spinner.d.ts +79 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner.js +79 -0
- package/dist/components/ui/switch.js +1 -1
- package/dist/components/ui/table-sort.d.ts +97 -0
- package/dist/components/ui/table-sort.d.ts.map +1 -0
- package/dist/components/ui/table-sort.js +102 -0
- package/dist/components/ui/table.js +1 -1
- package/dist/components/ui/tabs.js +1 -1
- package/dist/components/ui/textarea.js +1 -1
- package/dist/components/ui/timeline.d.ts +106 -0
- package/dist/components/ui/timeline.d.ts.map +1 -0
- package/dist/components/ui/timeline.js +111 -0
- package/dist/components/ui/toast.d.ts +219 -0
- package/dist/components/ui/toast.d.ts.map +1 -0
- package/dist/components/ui/toast.js +270 -0
- package/dist/components/ui/toggle-group.d.ts +118 -0
- package/dist/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.js +194 -0
- package/dist/components/ui/toggle.d.ts +73 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle.js +44 -0
- package/dist/components/ui/tooltip.js +1 -1
- package/dist/components/ui/tree.js +1 -1
- package/dist/components/ui/typography.js +1 -1
- package/dist/fonts/Inter-OFL.txt +93 -93
- package/dist/index.d.ts +72 -70
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -60
- package/dist/lib/rank.d.ts +69 -0
- package/dist/lib/rank.d.ts.map +1 -0
- package/dist/lib/rank.js +77 -0
- package/dist/live/index.d.ts +22 -0
- package/dist/live/index.d.ts.map +1 -0
- package/dist/live/index.js +20 -0
- package/dist/live/run-stream-01/index.d.ts +3 -0
- package/dist/live/run-stream-01/index.d.ts.map +1 -0
- package/dist/live/run-stream-01/index.js +1 -0
- package/dist/live/run-stream-01/run-stream.d.ts +125 -0
- package/dist/live/run-stream-01/run-stream.d.ts.map +1 -0
- package/dist/live/run-stream-01/run-stream.js +111 -0
- package/dist/pages/auth-page/index.d.ts +15 -2
- package/dist/pages/auth-page/index.d.ts.map +1 -1
- package/dist/pages/auth-page/index.js +8 -4
- package/dist/pages/blog-post-page/index.js +5 -5
- package/dist/pages/dashboard-page/index.d.ts +4 -4
- package/dist/pages/dashboard-page/index.js +4 -4
- package/dist/pages/docs-shell/docs-shell.d.ts +37 -4
- package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
- package/dist/pages/docs-shell/docs-shell.js +107 -16
- package/dist/pages/docs-shell/index.d.ts +2 -2
- package/dist/pages/docs-shell/index.js +1 -1
- package/dist/pages/index.d.ts +14 -14
- package/dist/pages/index.js +7 -7
- package/dist/pages/marketing-page/index.d.ts +6 -6
- package/dist/pages/marketing-page/index.js +5 -5
- package/dist/pages/not-found-page/index.js +4 -4
- package/dist/pages/settings-page/index.d.ts +3 -3
- package/dist/pages/settings-page/index.js +4 -4
- package/dist/provider/index.d.ts +4 -4
- package/dist/provider/index.js +2 -2
- package/dist/provider/provider.d.ts +1 -1
- package/dist/provider/provider.js +1 -1
- package/dist/provider/theme-script.d.ts +1 -1
- package/dist/provider/theme-script.js +1 -1
- package/dist/styles.css +689 -0
- package/package.json +9 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Card, CardDescription, CardHeader, CardTitle } from '../../components/ui/card';
|
|
3
|
-
import { Section, SectionHeading } from '../../components/ui/section';
|
|
2
|
+
import { Card, CardDescription, CardHeader, CardTitle } from '../../components/ui/card.js';
|
|
3
|
+
import { Section, SectionHeading, childLevel } from '../../components/ui/section.js';
|
|
4
4
|
/**
|
|
5
5
|
* A grid of short feature blurbs.
|
|
6
6
|
*
|
|
@@ -11,14 +11,45 @@ import { Section, SectionHeading } from '../../components/ui/section';
|
|
|
11
11
|
* The `icon` variant renders a tile per feature and requires an icon per feature.
|
|
12
12
|
* The `bare` variant renders no tile and requires no icon, and the type says so
|
|
13
13
|
* rather than the renderer finding out.
|
|
14
|
+
*
|
|
15
|
+
* **The section heading is aligned left, and that is this Block joining the other
|
|
16
|
+
* eight rather than inventing an answer.** `SectionHeading` states its own rule:
|
|
17
|
+
* `center` is right for a band that is only a heading, and `left` is right for a
|
|
18
|
+
* section with content under it, because a centred title above a left-aligned
|
|
19
|
+
* grid reads as two unrelated pieces. A grid of cards is content under its
|
|
20
|
+
* heading, so the rule says left. `NoteGrid01`, `StackGrid01`, `StatusLedger01`,
|
|
21
|
+
* `ProductGrid01`, `LogoStrip01`, `Stats01`, `ProcessRail01` and `ProcessFlow01`
|
|
22
|
+
* all pass `align="left"` for that reason, and this one did not, so it was one of
|
|
23
|
+
* only two Blocks in the package that centred a heading over content.
|
|
24
|
+
*
|
|
25
|
+
* The cost was not visible in this repository, which previews one Block at a time
|
|
26
|
+
* and so never put a centred title next to a left-aligned one. It was visible in
|
|
27
|
+
* the consumer: the Nexus landing is composed from seven of these Blocks and put
|
|
28
|
+
* two centred section titles among five left ones, and the page's own rhythm read
|
|
29
|
+
* as an accident rather than as a decision. A page's composition is the consumer's,
|
|
30
|
+
* but a Block that is the only one of its kind answering a shared question is not a
|
|
31
|
+
* composition the consumer can correct without restyling a catalogue item, which
|
|
32
|
+
* the no-override-path rule does not allow.
|
|
33
|
+
*
|
|
34
|
+
* `Hero01` is the deliberate exception and keeps its own `align`, and `Cta01` draws
|
|
35
|
+
* no section heading at all: a centred hero is a band that is only a heading, the
|
|
36
|
+
* two-column form puts its figure beside the copy rather than under it, and the
|
|
37
|
+
* closing band is a title and two actions on a filled panel with nothing underneath.
|
|
38
|
+
* `test/section-heading-align.test.tsx` holds the whole list, which is the
|
|
39
|
+
* assertion, so a Block that opens with a heading and content under it cannot be
|
|
40
|
+
* added answering this question a second way.
|
|
14
41
|
*/
|
|
15
42
|
export function FeatureGrid01(props) {
|
|
16
43
|
const { eyebrow, title, description, numbered = false, headingLevel = 'h2' } = props;
|
|
44
|
+
// A card title is a heading one step below the section that introduces the set,
|
|
45
|
+
// derived rather than written, so a Block embedded one level deeper carries its
|
|
46
|
+
// five headings with it instead of announcing five siblings of the section.
|
|
47
|
+
const Title = childLevel(headingLevel);
|
|
17
48
|
// Read off `props` rather than destructured, so the two stay one value: taking
|
|
18
49
|
// `variant` and `features` apart is what would let the arm the type checked
|
|
19
50
|
// and the arm the renderer followed come to be two different ones.
|
|
20
51
|
const variant = props.variant ?? 'icon';
|
|
21
52
|
const { features } = props;
|
|
22
|
-
return (_jsxs(Section, { children: [title ? (_jsx(SectionHeading, { as: headingLevel, eyebrow: eyebrow, title: title, description: description, className: "mb-12" })) : null, _jsx("div", { className: "grid gap-6 sm:grid-cols-2", children: features.map((feature, index) => (_jsx(Card, { className: "gap-4 py-6", children: _jsxs(CardHeader, { children: [numbered ? (_jsx("span", { className: "text-muted-foreground font-mono text-xs", children: String(index + 1).padStart(2, '0') })) : null, variant === 'icon' && 'icon' in feature ? (_jsx("span", { className: "bg-accent text-accent-foreground mb-2 flex size-10 items-center justify-center rounded-lg", children: _jsx(feature.icon, { className: "size-5" }) })) : null, _jsx(CardTitle, { children: feature.title }), _jsx(CardDescription, { children: feature.body })] }) }, feature.title))) })] }));
|
|
53
|
+
return (_jsxs(Section, { children: [title ? (_jsx(SectionHeading, { as: headingLevel, align: "left", eyebrow: eyebrow, title: title, description: description, className: "mb-12" })) : null, _jsx("div", { className: "grid gap-6 sm:grid-cols-2", children: features.map((feature, index) => (_jsx(Card, { className: "gap-4 py-6", children: _jsxs(CardHeader, { children: [numbered ? (_jsx("span", { className: "text-muted-foreground font-mono text-xs", children: String(index + 1).padStart(2, '0') })) : null, variant === 'icon' && 'icon' in feature ? (_jsx("span", { className: "bg-accent text-accent-foreground mb-2 flex size-10 items-center justify-center rounded-lg", children: _jsx(feature.icon, { className: "size-5" }) })) : null, _jsx(CardTitle, { children: _jsx(Title, { children: feature.title }) }), _jsx(CardDescription, { children: feature.body })] }) }, feature.title))) })] }));
|
|
23
54
|
}
|
|
24
55
|
export default FeatureGrid01;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { FeatureGrid01, default } from './feature-grid';
|
|
2
|
-
export type { BareFeature, Feature, FeatureGrid01Props, IconFeature, } from './feature-grid';
|
|
1
|
+
export { FeatureGrid01, default } from './feature-grid.js';
|
|
2
|
+
export type { BareFeature, Feature, FeatureGrid01Props, IconFeature, } from './feature-grid.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { FeatureGrid01, default } from './feature-grid';
|
|
1
|
+
export { FeatureGrid01, default } from './feature-grid.js';
|
|
@@ -1,24 +1,44 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import { type HeadingLevel } from '../../components/ui/section';
|
|
2
|
+
import { type HeadingLevel } from '../../components/ui/section.js';
|
|
3
|
+
/**
|
|
4
|
+
* One action in a hero's action row.
|
|
5
|
+
*
|
|
6
|
+
* **The two arms are two elements, and a caller should not be able to reach the
|
|
7
|
+
* wrong one by accident.** An action that names a destination is an anchor and
|
|
8
|
+
* navigates; an action that does not is a button, and a Block ships no behaviour,
|
|
9
|
+
* so that button is inert by design rather than by accident. The arms are a union
|
|
10
|
+
* rather than one shape with an optional `href` because an optional `href` makes
|
|
11
|
+
* both mistakes silent:
|
|
12
|
+
*
|
|
13
|
+
* - `{ label: 'Start free' }` compiles and renders a primary button that goes
|
|
14
|
+
* nowhere. A hero's first action is almost always a link, so this is the likely
|
|
15
|
+
* mistake and it looks correct on the page.
|
|
16
|
+
* - `{ label: 'Start free', href: maybeUrl }` compiles today and renders a button
|
|
17
|
+
* whenever `maybeUrl` is `undefined`, which is a runtime branch the type said
|
|
18
|
+
* nothing about.
|
|
19
|
+
*
|
|
20
|
+
* So the link arm *requires* `href` and the button arm *forbids* it, as
|
|
21
|
+
* `href?: never`. The second of those is the one worth having: a value that is
|
|
22
|
+
* sometimes a string and sometimes `undefined` is now a type error rather than a
|
|
23
|
+
* button, which is the whole of "a caller should not be able to get it wrong
|
|
24
|
+
* silently".
|
|
25
|
+
*/
|
|
3
26
|
export type HeroAction = {
|
|
4
27
|
label: string;
|
|
5
|
-
/**
|
|
6
|
-
* Where the action goes. Required for an action that navigates, which is what
|
|
7
|
-
* an action in a hero almost always is.
|
|
8
|
-
*
|
|
9
|
-
* It was optional here and the Component ignored it, which meant an action
|
|
10
|
-
* with a destination rendered as a `<button>` that went nowhere: a control
|
|
11
|
-
* that looks like a link and is not one, and a dead end for a reader who
|
|
12
|
-
* pressed it. An action now renders as a real anchor whenever it names a
|
|
13
|
-
* destination, and falls back to a button only when it genuinely is one. A
|
|
14
|
-
* Block ships no behaviour, so a button here is inert by design rather than by
|
|
15
|
-
* accident, and the two shapes are told apart by exactly this.
|
|
16
|
-
*/
|
|
17
|
-
href?: string;
|
|
18
28
|
variant?: 'default' | 'outline' | 'secondary' | 'ghost';
|
|
29
|
+
} & ({
|
|
30
|
+
/** Where the action goes. Present makes the action an anchor. */
|
|
31
|
+
href: string;
|
|
19
32
|
/** Opens the destination in a new tab, with the matching `rel`. */
|
|
20
33
|
newTab?: boolean;
|
|
21
|
-
}
|
|
34
|
+
} | {
|
|
35
|
+
/**
|
|
36
|
+
* Forbidden, so that "a link whose address happens to be undefined" is a
|
|
37
|
+
* type error rather than a button. Omit the key entirely to mean a button.
|
|
38
|
+
*/
|
|
39
|
+
href?: never;
|
|
40
|
+
newTab?: never;
|
|
41
|
+
});
|
|
22
42
|
export type Hero01Props = {
|
|
23
43
|
/**
|
|
24
44
|
* Optional label above the headline. Intentionally has no default: an earlier
|
|
@@ -27,8 +47,20 @@ export type Hero01Props = {
|
|
|
27
47
|
* about their product. Pass one if you mean it.
|
|
28
48
|
*/
|
|
29
49
|
eyebrow?: string;
|
|
30
|
-
|
|
31
|
-
|
|
50
|
+
/**
|
|
51
|
+
* The headline.
|
|
52
|
+
*
|
|
53
|
+
* A `ReactNode` rather than a `string`, because `SectionHeading` already takes
|
|
54
|
+
* one and a Block that narrowed it would have been the odd one out. Three of the
|
|
55
|
+
* five product sites set the emphasised word in their own mark rather than in a
|
|
56
|
+
* wrapper, so a `string` here would have forced each of them to drop the
|
|
57
|
+
* emphasis or reach for a second component. Every string a site renders is
|
|
58
|
+
* still the site's, and `check-block-copy.mjs` still holds this Block to
|
|
59
|
+
* shipping none.
|
|
60
|
+
*/
|
|
61
|
+
title: ReactNode;
|
|
62
|
+
/** The supporting line. A node for the same reason the title is one. */
|
|
63
|
+
description?: ReactNode;
|
|
32
64
|
actions?: HeroAction[];
|
|
33
65
|
/**
|
|
34
66
|
* Whether the copy is centered in the band or set flush to the left edge of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../../src/blocks/hero-01/hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAGxF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb
|
|
1
|
+
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../../src/blocks/hero-01/hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAGxF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;CACxD,GAAG,CACA;IACE,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,GACD;IACE;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,MAAM,CAAC,EAAE,KAAK,CAAA;CACf,CACJ,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB,wEAAwE;IACxE,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;IACtB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACzB;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAY,EACZ,KAAgB,EAChB,UAAU,EACV,KAAK,EACL,YAAmB,EACnB,SAAS,GACV,EAAE,WAAW,+BAoGb;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ArrowRight } from 'lucide-react';
|
|
3
|
-
import { Button } from '../../components/ui/button';
|
|
4
|
-
import { CtaLink } from '../../components/ui/cta-link';
|
|
5
|
-
import { Section, SectionHeading } from '../../components/ui/section';
|
|
6
|
-
import { cn } from '../../lib/utils';
|
|
3
|
+
import { Button } from '../../components/ui/button.js';
|
|
4
|
+
import { CtaLink } from '../../components/ui/cta-link.js';
|
|
5
|
+
import { Section, SectionHeading } from '../../components/ui/section.js';
|
|
6
|
+
import { cn } from '../../lib/utils.js';
|
|
7
7
|
/**
|
|
8
8
|
* A marketing hero with a headline, a supporting line, up to two actions, and
|
|
9
9
|
* an optional live figure beside them.
|
|
@@ -43,11 +43,16 @@ export function Hero01({ eyebrow, title, description, actions = [], align = 'cen
|
|
|
43
43
|
const twoColumn = split ?? instrument !== undefined;
|
|
44
44
|
const copy = (_jsxs("div", { "data-slot": "hero-01-copy", className: cn('flex flex-col gap-10', twoColumn ? 'items-start text-left' : align === 'center' ? 'items-center text-center' : 'items-start text-left'), children: [eyebrow ? (_jsx("span", { className: "bg-muted text-muted-foreground rounded-full px-3 py-1 text-xs font-medium", children: eyebrow })) : null, _jsx(SectionHeading, { as: headingLevel, align: twoColumn ? 'left' : align, title: title, description: description }), actions.length ? (_jsx("div", { className: "flex flex-col gap-3 sm:flex-row", children: actions.map((action, index) => {
|
|
45
45
|
const variant = action.variant ?? (index === 0 ? 'default' : 'outline');
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
// The arrow is a link affordance, so it follows the element and not the
|
|
47
|
+
// position. It was `index === 0`, which put a "goes forward" arrow on an
|
|
48
|
+
// inert button: the one control in the row that cannot be followed wore
|
|
49
|
+
// the mark that says it can. A first action that is genuinely a button
|
|
50
|
+
// gets no arrow, and a second action that is a link still gets none,
|
|
51
|
+
// because the arrow marks the row's primary destination and only one
|
|
52
|
+
// thing is that.
|
|
53
|
+
const isLink = action.href !== undefined;
|
|
54
|
+
const content = (_jsxs(_Fragment, { children: [action.label, index === 0 && isLink ? (_jsx(ArrowRight, { className: "motion-safe:transition-transform size-4 group-hover:translate-x-0.5" })) : null] }));
|
|
55
|
+
return isLink ? (_jsx(CtaLink, { href: action.href, newTab: action.newTab, size: "lg", variant: variant, className: "group", children: content }, index)) : (_jsx(Button, { size: "lg", variant: variant, className: "group", children: content }, index));
|
|
51
56
|
}) })) : null] }));
|
|
52
57
|
return (_jsxs(Section, { className: cn('relative overflow-hidden', className), children: [_jsx("div", { "aria-hidden": true, className: "from-primary/5 pointer-events-none absolute inset-0 -z-10 bg-gradient-to-b to-transparent" }), _jsxs("div", { "data-slot": "hero-01-band", className: cn(twoColumn
|
|
53
58
|
? 'grid items-center gap-10 lg:grid-cols-[5fr_6fr] lg:gap-14'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/hero-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/hero-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAIxC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Hero01, default } from './hero';
|
|
1
|
+
export { Hero01, default } from './hero.js';
|
package/dist/blocks/index.d.ts
CHANGED
|
@@ -5,24 +5,24 @@
|
|
|
5
5
|
* content as props and never fetches application data (ticket 07). The `-NN`
|
|
6
6
|
* suffix is the block-family variant ordinal.
|
|
7
7
|
*/
|
|
8
|
-
export { Hero01 } from './hero-01';
|
|
9
|
-
export { FeatureGrid01 } from './feature-grid-01';
|
|
10
|
-
export { Stats01 } from './stats-01';
|
|
11
|
-
export { Pricing01 } from './pricing-01';
|
|
12
|
-
export { Cta01 } from './cta-01';
|
|
13
|
-
export { PageHeader01 } from './page-header-01';
|
|
14
|
-
export { DataTable01 } from './data-table-01';
|
|
15
|
-
export { SettingsPanel01 } from './settings-panel-01';
|
|
16
|
-
export { AuthForm01 } from './auth-form-01';
|
|
17
|
-
export { AppShell01 } from './app-shell-01';
|
|
18
|
-
export { ProcessRail01 } from './process-rail-01';
|
|
19
|
-
export { StatusLedger01, STATUS_TIERS } from './status-ledger-01';
|
|
20
|
-
export type { StatusTier } from './status-ledger-01';
|
|
21
|
-
export { ProductGrid01 } from './product-grid-01';
|
|
22
|
-
export { StackGrid01 } from './stack-grid-01';
|
|
23
|
-
export { LogoStrip01 } from './logo-strip-01';
|
|
24
|
-
export { NoteGrid01 } from './note-grid-01';
|
|
25
|
-
export { InstrumentPanel01 } from './instrument-panel-01';
|
|
26
|
-
export { SiteHeader } from './site-header';
|
|
27
|
-
export { SiteFooter } from './site-footer';
|
|
8
|
+
export { Hero01 } from './hero-01/index.js';
|
|
9
|
+
export { FeatureGrid01 } from './feature-grid-01/index.js';
|
|
10
|
+
export { Stats01 } from './stats-01/index.js';
|
|
11
|
+
export { Pricing01 } from './pricing-01/index.js';
|
|
12
|
+
export { Cta01 } from './cta-01/index.js';
|
|
13
|
+
export { PageHeader01 } from './page-header-01/index.js';
|
|
14
|
+
export { DataTable01 } from './data-table-01/index.js';
|
|
15
|
+
export { SettingsPanel01 } from './settings-panel-01/index.js';
|
|
16
|
+
export { AuthForm01 } from './auth-form-01/index.js';
|
|
17
|
+
export { AppShell01 } from './app-shell-01/index.js';
|
|
18
|
+
export { ProcessRail01 } from './process-rail-01/index.js';
|
|
19
|
+
export { StatusLedger01, STATUS_TIERS } from './status-ledger-01/index.js';
|
|
20
|
+
export type { StatusTier } from './status-ledger-01/index.js';
|
|
21
|
+
export { ProductGrid01 } from './product-grid-01/index.js';
|
|
22
|
+
export { StackGrid01 } from './stack-grid-01/index.js';
|
|
23
|
+
export { LogoStrip01 } from './logo-strip-01/index.js';
|
|
24
|
+
export { NoteGrid01 } from './note-grid-01/index.js';
|
|
25
|
+
export { InstrumentPanel01 } from './instrument-panel-01/index.js';
|
|
26
|
+
export { SiteHeader } from './site-header/index.js';
|
|
27
|
+
export { SiteFooter } from './site-footer/index.js';
|
|
28
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/blocks/index.js
CHANGED
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
* content as props and never fetches application data (ticket 07). The `-NN`
|
|
6
6
|
* suffix is the block-family variant ordinal.
|
|
7
7
|
*/
|
|
8
|
-
export { Hero01 } from './hero-01';
|
|
9
|
-
export { FeatureGrid01 } from './feature-grid-01';
|
|
10
|
-
export { Stats01 } from './stats-01';
|
|
11
|
-
export { Pricing01 } from './pricing-01';
|
|
12
|
-
export { Cta01 } from './cta-01';
|
|
13
|
-
export { PageHeader01 } from './page-header-01';
|
|
14
|
-
export { DataTable01 } from './data-table-01';
|
|
15
|
-
export { SettingsPanel01 } from './settings-panel-01';
|
|
16
|
-
export { AuthForm01 } from './auth-form-01';
|
|
17
|
-
export { AppShell01 } from './app-shell-01';
|
|
18
|
-
export { ProcessRail01 } from './process-rail-01';
|
|
19
|
-
export { StatusLedger01, STATUS_TIERS } from './status-ledger-01';
|
|
20
|
-
export { ProductGrid01 } from './product-grid-01';
|
|
21
|
-
export { StackGrid01 } from './stack-grid-01';
|
|
22
|
-
export { LogoStrip01 } from './logo-strip-01';
|
|
23
|
-
export { NoteGrid01 } from './note-grid-01';
|
|
24
|
-
export { InstrumentPanel01 } from './instrument-panel-01';
|
|
25
|
-
export { SiteHeader } from './site-header';
|
|
26
|
-
export { SiteFooter } from './site-footer';
|
|
8
|
+
export { Hero01 } from './hero-01/index.js';
|
|
9
|
+
export { FeatureGrid01 } from './feature-grid-01/index.js';
|
|
10
|
+
export { Stats01 } from './stats-01/index.js';
|
|
11
|
+
export { Pricing01 } from './pricing-01/index.js';
|
|
12
|
+
export { Cta01 } from './cta-01/index.js';
|
|
13
|
+
export { PageHeader01 } from './page-header-01/index.js';
|
|
14
|
+
export { DataTable01 } from './data-table-01/index.js';
|
|
15
|
+
export { SettingsPanel01 } from './settings-panel-01/index.js';
|
|
16
|
+
export { AuthForm01 } from './auth-form-01/index.js';
|
|
17
|
+
export { AppShell01 } from './app-shell-01/index.js';
|
|
18
|
+
export { ProcessRail01 } from './process-rail-01/index.js';
|
|
19
|
+
export { StatusLedger01, STATUS_TIERS } from './status-ledger-01/index.js';
|
|
20
|
+
export { ProductGrid01 } from './product-grid-01/index.js';
|
|
21
|
+
export { StackGrid01 } from './stack-grid-01/index.js';
|
|
22
|
+
export { LogoStrip01 } from './logo-strip-01/index.js';
|
|
23
|
+
export { NoteGrid01 } from './note-grid-01/index.js';
|
|
24
|
+
export { InstrumentPanel01 } from './instrument-panel-01/index.js';
|
|
25
|
+
export { SiteHeader } from './site-header/index.js';
|
|
26
|
+
export { SiteFooter } from './site-footer/index.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { InstrumentPanel01, default } from './instrument-panel';
|
|
2
|
-
export type { InstrumentPanel01Props, PanelState } from './instrument-panel';
|
|
1
|
+
export { InstrumentPanel01, default } from './instrument-panel.js';
|
|
2
|
+
export type { InstrumentPanel01Props, PanelState } from './instrument-panel.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { InstrumentPanel01, default } from './instrument-panel';
|
|
1
|
+
export { InstrumentPanel01, default } from './instrument-panel.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { LogoStrip01, default } from './logo-strip';
|
|
2
|
-
export type { LogoStrip01Props, LogoStripItem } from './logo-strip';
|
|
1
|
+
export { LogoStrip01, default } from './logo-strip.js';
|
|
2
|
+
export type { LogoStrip01Props, LogoStripItem } from './logo-strip.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { LogoStrip01, default } from './logo-strip';
|
|
1
|
+
export { LogoStrip01, default } from './logo-strip.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Section, SectionHeading } from '../../components/ui/section';
|
|
3
|
-
import { cn } from '../../lib/utils';
|
|
2
|
+
import { Section, SectionHeading } from '../../components/ui/section.js';
|
|
3
|
+
import { cn } from '../../lib/utils.js';
|
|
4
4
|
/**
|
|
5
5
|
* A single line of short items: the transition band between a hero and the
|
|
6
6
|
* section that follows it.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { NoteGrid01, default } from './note-grid';
|
|
2
|
-
export type { NoteGrid01Props, NoteGrid01Note } from './note-grid';
|
|
1
|
+
export { NoteGrid01, default } from './note-grid.js';
|
|
2
|
+
export type { NoteGrid01Props, NoteGrid01Note } from './note-grid.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { NoteGrid01, default } from './note-grid';
|
|
1
|
+
export { NoteGrid01, default } from './note-grid.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Section, SectionHeading } from '../../components/ui/section';
|
|
2
|
+
import { Section, SectionHeading } from '../../components/ui/section.js';
|
|
3
3
|
/**
|
|
4
4
|
* A grid of short points: a title and a sentence or two, on a hairline above each
|
|
5
5
|
* one, with no tile and no icon.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { PageHeader01, default } from './page-header';
|
|
2
|
-
export type { PageHeader01Props, PageHeaderAction, PageHeaderCrumb } from './page-header';
|
|
1
|
+
export { PageHeader01, default } from './page-header.js';
|
|
2
|
+
export type { PageHeader01Props, PageHeaderAction, PageHeaderCrumb } from './page-header.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { PageHeader01, default } from './page-header';
|
|
1
|
+
export { PageHeader01, default } from './page-header.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
-
import { type HeadingElement } from '../../components/ui/typography';
|
|
2
|
+
import { type HeadingElement } from '../../components/ui/typography.js';
|
|
3
3
|
export type PageHeaderCrumb = {
|
|
4
4
|
label: ReactNode;
|
|
5
5
|
/** Renders a native anchor. Omit on the current, final step. */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Fragment } from 'react';
|
|
3
|
-
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '../../components/ui/breadcrumb';
|
|
4
|
-
import { Button } from '../../components/ui/button';
|
|
5
|
-
import { Separator } from '../../components/ui/separator';
|
|
6
|
-
import { Heading, Text } from '../../components/ui/typography';
|
|
3
|
+
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '../../components/ui/breadcrumb.js';
|
|
4
|
+
import { Button } from '../../components/ui/button.js';
|
|
5
|
+
import { Separator } from '../../components/ui/separator.js';
|
|
6
|
+
import { Heading, Text } from '../../components/ui/typography.js';
|
|
7
7
|
/**
|
|
8
8
|
* A page title band.
|
|
9
9
|
*
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Pricing01, default } from './pricing';
|
|
1
|
+
export { Pricing01, default } from './pricing.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Pricing01, default } from './pricing';
|
|
1
|
+
export { Pricing01, default } from './pricing.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type HeadingLevel } from '../../components/ui/section';
|
|
1
|
+
import { type HeadingLevel } from '../../components/ui/section.js';
|
|
2
2
|
export type Plan = {
|
|
3
3
|
name: string;
|
|
4
4
|
price: string;
|
|
@@ -29,6 +29,13 @@ export type Pricing01Props = {
|
|
|
29
29
|
* plan". A shared library has no plans to sell, so those strings described a
|
|
30
30
|
* business that does not exist here, and every consumer who installed the block
|
|
31
31
|
* inherited them.
|
|
32
|
+
*
|
|
33
|
+
* The section heading is aligned left, for the reason `FeatureGrid01` now records
|
|
34
|
+
* in full and `test/section-heading-align.test.tsx` holds: three cards sit under
|
|
35
|
+
* it, and a centred title above a left-aligned grid reads as two unrelated pieces.
|
|
36
|
+
* `Pricing01` and `FeatureGrid01` were the only two Blocks that left the heading
|
|
37
|
+
* centred over content, and neither had a stated reason for it, so both were
|
|
38
|
+
* taking the default rather than making a decision.
|
|
32
39
|
*/
|
|
33
40
|
export declare function Pricing01({ eyebrow, title, description, plans, headingLevel, }: Pricing01Props): import("react").JSX.Element;
|
|
34
41
|
export default Pricing01;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../src/blocks/pricing-01/pricing.tsx"],"names":[],"mappings":"AAYA,OAAO,
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../src/blocks/pricing-01/pricing.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAEpG,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,+DAA+D;IAC/D,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,WAAW,EACX,KAAK,EACL,YAAmB,GACpB,EAAE,cAAc,+BAwEhB;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Check } from 'lucide-react';
|
|
3
|
-
import { Badge } from '../../components/ui/badge';
|
|
4
|
-
import { Button } from '../../components/ui/button';
|
|
5
|
-
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '../../components/ui/card';
|
|
6
|
-
import { Section, SectionHeading } from '../../components/ui/section';
|
|
3
|
+
import { Badge } from '../../components/ui/badge.js';
|
|
4
|
+
import { Button } from '../../components/ui/button.js';
|
|
5
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '../../components/ui/card.js';
|
|
6
|
+
import { Section, SectionHeading, childLevel } from '../../components/ui/section.js';
|
|
7
7
|
/**
|
|
8
8
|
* A three-up plan comparison.
|
|
9
9
|
*
|
|
@@ -13,8 +13,18 @@ import { Section, SectionHeading } from '../../components/ui/section';
|
|
|
13
13
|
* plan". A shared library has no plans to sell, so those strings described a
|
|
14
14
|
* business that does not exist here, and every consumer who installed the block
|
|
15
15
|
* inherited them.
|
|
16
|
+
*
|
|
17
|
+
* The section heading is aligned left, for the reason `FeatureGrid01` now records
|
|
18
|
+
* in full and `test/section-heading-align.test.tsx` holds: three cards sit under
|
|
19
|
+
* it, and a centred title above a left-aligned grid reads as two unrelated pieces.
|
|
20
|
+
* `Pricing01` and `FeatureGrid01` were the only two Blocks that left the heading
|
|
21
|
+
* centred over content, and neither had a stated reason for it, so both were
|
|
22
|
+
* taking the default rather than making a decision.
|
|
16
23
|
*/
|
|
17
24
|
export function Pricing01({ eyebrow, title, description, plans, headingLevel = 'h2', }) {
|
|
18
|
-
|
|
25
|
+
// A plan name is a heading one step below the section that introduces the set,
|
|
26
|
+
// so three plans under one `h2` are three `h3`s and not three competing sections.
|
|
27
|
+
const Title = childLevel(headingLevel);
|
|
28
|
+
return (_jsxs(Section, { children: [title ? (_jsx(SectionHeading, { as: headingLevel, align: "left", eyebrow: eyebrow, title: title, description: description, className: "mb-12" })) : null, _jsx("div", { className: "grid gap-6 lg:grid-cols-3", children: plans.map((plan) => (_jsxs(Card, { className: plan.featured ? 'border-primary shadow-md' : undefined, children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx(CardTitle, { children: _jsx(Title, { children: plan.name }) }), plan.featured && plan.badge ? _jsx(Badge, { children: plan.badge }) : null] }), plan.body ? _jsx(CardDescription, { children: plan.body }) : null, _jsxs("p", { className: "mt-2 text-3xl font-semibold tracking-tight", children: [plan.price, plan.period ? (_jsx("span", { className: "text-muted-foreground text-sm font-normal", children: plan.period })) : null] })] }), _jsx(CardContent, { className: "flex flex-col gap-3", children: plan.features.map((feature, index) => (_jsxs("p", { className: "flex items-start gap-2 text-sm", children: [_jsx(Check, { className: "text-success mt-0.5 size-4 shrink-0" }), feature] }, index))) }), _jsx(CardFooter, { className: "mt-auto", children: _jsx(Button, { className: "w-full", variant: plan.featured ? 'default' : 'outline', children: plan.cta }) })] }, plan.name))) })] }));
|
|
19
29
|
}
|
|
20
30
|
export default Pricing01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/process-flow-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ProcessFlow01, default } from './process-flow.js';
|