@pithyjs/ui-kit 0.1.0-beta.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 -0
- package/dist/animation/animate-in.d.ts +35 -0
- package/dist/animation/animate-in.d.ts.map +1 -0
- package/dist/animation/animate-in.js +71 -0
- package/dist/animation/animate-in.js.map +1 -0
- package/dist/atoms/actions/_icon-control.scss +53 -0
- package/dist/atoms/actions/button/Button.d.ts +93 -0
- package/dist/atoms/actions/button/Button.d.ts.map +1 -0
- package/dist/atoms/actions/button/Button.js +332 -0
- package/dist/atoms/actions/button/Button.js.map +1 -0
- package/dist/atoms/actions/button/button.scss +342 -0
- package/dist/atoms/actions/icon-button/IconButton.d.ts +47 -0
- package/dist/atoms/actions/icon-button/IconButton.d.ts.map +1 -0
- package/dist/atoms/actions/icon-button/IconButton.js +81 -0
- package/dist/atoms/actions/icon-button/IconButton.js.map +1 -0
- package/dist/atoms/actions/icon-button/icon-button.scss +20 -0
- package/dist/atoms/actions/icon-group/IconGroup.d.ts +60 -0
- package/dist/atoms/actions/icon-group/IconGroup.d.ts.map +1 -0
- package/dist/atoms/actions/icon-group/IconGroup.js +191 -0
- package/dist/atoms/actions/icon-group/IconGroup.js.map +1 -0
- package/dist/atoms/actions/icon-group/icon-group.scss +36 -0
- package/dist/atoms/actions/segmented-control/SegmentedControl.d.ts +49 -0
- package/dist/atoms/actions/segmented-control/SegmentedControl.d.ts.map +1 -0
- package/dist/atoms/actions/segmented-control/SegmentedControl.js +107 -0
- package/dist/atoms/actions/segmented-control/SegmentedControl.js.map +1 -0
- package/dist/atoms/actions/segmented-control/segmented-control.scss +90 -0
- package/dist/atoms/content/_mixins.scss +79 -0
- package/dist/atoms/content/action-tile/ActionTile.d.ts +27 -0
- package/dist/atoms/content/action-tile/ActionTile.d.ts.map +1 -0
- package/dist/atoms/content/action-tile/ActionTile.js +98 -0
- package/dist/atoms/content/action-tile/ActionTile.js.map +1 -0
- package/dist/atoms/content/action-tile/action-tile.scss +150 -0
- package/dist/atoms/content/badge/Badge.d.ts +57 -0
- package/dist/atoms/content/badge/Badge.d.ts.map +1 -0
- package/dist/atoms/content/badge/Badge.js +177 -0
- package/dist/atoms/content/badge/Badge.js.map +1 -0
- package/dist/atoms/content/badge/badge.scss +198 -0
- package/dist/atoms/content/heading/Heading.d.ts +53 -0
- package/dist/atoms/content/heading/Heading.d.ts.map +1 -0
- package/dist/atoms/content/heading/Heading.js +142 -0
- package/dist/atoms/content/heading/Heading.js.map +1 -0
- package/dist/atoms/content/heading/heading.scss +43 -0
- package/dist/atoms/content/icon/Icon.d.ts +68 -0
- package/dist/atoms/content/icon/Icon.d.ts.map +1 -0
- package/dist/atoms/content/icon/Icon.js +137 -0
- package/dist/atoms/content/icon/Icon.js.map +1 -0
- package/dist/atoms/content/icon/icon.scss +66 -0
- package/dist/atoms/content/icon/resolveIconSvg.d.ts +21 -0
- package/dist/atoms/content/icon/resolveIconSvg.d.ts.map +1 -0
- package/dist/atoms/content/icon/resolveIconSvg.js +73 -0
- package/dist/atoms/content/icon/resolveIconSvg.js.map +1 -0
- package/dist/atoms/content/image/Image.d.ts +81 -0
- package/dist/atoms/content/image/Image.d.ts.map +1 -0
- package/dist/atoms/content/image/Image.js +293 -0
- package/dist/atoms/content/image/Image.js.map +1 -0
- package/dist/atoms/content/image/image.scss +77 -0
- package/dist/atoms/content/text/Text.d.ts +58 -0
- package/dist/atoms/content/text/Text.d.ts.map +1 -0
- package/dist/atoms/content/text/Text.js +158 -0
- package/dist/atoms/content/text/Text.js.map +1 -0
- package/dist/atoms/content/text/text.scss +98 -0
- package/dist/atoms/content/tile/Tile.d.ts +66 -0
- package/dist/atoms/content/tile/Tile.d.ts.map +1 -0
- package/dist/atoms/content/tile/Tile.js +125 -0
- package/dist/atoms/content/tile/Tile.js.map +1 -0
- package/dist/atoms/content/tile/tile.scss +122 -0
- package/dist/atoms/feedback/tooltip/Tooltip.d.ts +44 -0
- package/dist/atoms/feedback/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/atoms/feedback/tooltip/Tooltip.js +121 -0
- package/dist/atoms/feedback/tooltip/Tooltip.js.map +1 -0
- package/dist/atoms/feedback/tooltip/tooltip.scss +96 -0
- package/dist/atoms/forms/checkbox/Checkbox.d.ts +49 -0
- package/dist/atoms/forms/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/atoms/forms/checkbox/Checkbox.js +269 -0
- package/dist/atoms/forms/checkbox/Checkbox.js.map +1 -0
- package/dist/atoms/forms/checkbox/CheckboxGroup.d.ts +50 -0
- package/dist/atoms/forms/checkbox/CheckboxGroup.d.ts.map +1 -0
- package/dist/atoms/forms/checkbox/CheckboxGroup.js +132 -0
- package/dist/atoms/forms/checkbox/CheckboxGroup.js.map +1 -0
- package/dist/atoms/forms/checkbox/checkbox.scss +506 -0
- package/dist/atoms/forms/file-picker/FilePicker.d.ts +23 -0
- package/dist/atoms/forms/file-picker/FilePicker.d.ts.map +1 -0
- package/dist/atoms/forms/file-picker/FilePicker.js +103 -0
- package/dist/atoms/forms/file-picker/FilePicker.js.map +1 -0
- package/dist/atoms/forms/file-picker/file-picker.scss +84 -0
- package/dist/atoms/forms/form-field/FormField.d.ts +39 -0
- package/dist/atoms/forms/form-field/FormField.d.ts.map +1 -0
- package/dist/atoms/forms/form-field/FormField.js +139 -0
- package/dist/atoms/forms/form-field/FormField.js.map +1 -0
- package/dist/atoms/forms/form-field/form-field.scss +46 -0
- package/dist/atoms/forms/input/Input.d.ts +81 -0
- package/dist/atoms/forms/input/Input.d.ts.map +1 -0
- package/dist/atoms/forms/input/Input.js +417 -0
- package/dist/atoms/forms/input/Input.js.map +1 -0
- package/dist/atoms/forms/input/input.scss +547 -0
- package/dist/atoms/forms/radio/Radio.d.ts +54 -0
- package/dist/atoms/forms/radio/Radio.d.ts.map +1 -0
- package/dist/atoms/forms/radio/Radio.js +278 -0
- package/dist/atoms/forms/radio/Radio.js.map +1 -0
- package/dist/atoms/forms/radio/RadioGroup.d.ts +54 -0
- package/dist/atoms/forms/radio/RadioGroup.d.ts.map +1 -0
- package/dist/atoms/forms/radio/RadioGroup.js +137 -0
- package/dist/atoms/forms/radio/RadioGroup.js.map +1 -0
- package/dist/atoms/forms/radio/radio.scss +459 -0
- package/dist/atoms/forms/select/Select.d.ts +57 -0
- package/dist/atoms/forms/select/Select.d.ts.map +1 -0
- package/dist/atoms/forms/select/Select.js +457 -0
- package/dist/atoms/forms/select/Select.js.map +1 -0
- package/dist/atoms/forms/select/select-dropdown.d.ts +49 -0
- package/dist/atoms/forms/select/select-dropdown.d.ts.map +1 -0
- package/dist/atoms/forms/select/select-dropdown.js +305 -0
- package/dist/atoms/forms/select/select-dropdown.js.map +1 -0
- package/dist/atoms/forms/select/select-keyboard.d.ts +14 -0
- package/dist/atoms/forms/select/select-keyboard.d.ts.map +1 -0
- package/dist/atoms/forms/select/select-keyboard.js +182 -0
- package/dist/atoms/forms/select/select-keyboard.js.map +1 -0
- package/dist/atoms/forms/select/select.scss +630 -0
- package/dist/atoms/forms/textarea/Textarea.d.ts +69 -0
- package/dist/atoms/forms/textarea/Textarea.d.ts.map +1 -0
- package/dist/atoms/forms/textarea/Textarea.js +394 -0
- package/dist/atoms/forms/textarea/Textarea.js.map +1 -0
- package/dist/atoms/forms/textarea/textarea.scss +486 -0
- package/dist/atoms/forms/toggle/Toggle.d.ts +47 -0
- package/dist/atoms/forms/toggle/Toggle.d.ts.map +1 -0
- package/dist/atoms/forms/toggle/Toggle.js +243 -0
- package/dist/atoms/forms/toggle/Toggle.js.map +1 -0
- package/dist/atoms/forms/toggle/toggle.scss +561 -0
- package/dist/compiler.d.ts +7 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +18 -0
- package/dist/compiler.js.map +1 -0
- package/dist/icons/index.d.ts +14 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +14 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/registry.d.ts +65 -0
- package/dist/icons/registry.d.ts.map +1 -0
- package/dist/icons/registry.js +126 -0
- package/dist/icons/registry.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/Grid.d.ts +78 -0
- package/dist/layout/Grid.d.ts.map +1 -0
- package/dist/layout/Grid.js +272 -0
- package/dist/layout/Grid.js.map +1 -0
- package/dist/layout/GridItem.d.ts +52 -0
- package/dist/layout/GridItem.d.ts.map +1 -0
- package/dist/layout/GridItem.js +99 -0
- package/dist/layout/GridItem.js.map +1 -0
- package/dist/layout/PageSection.d.ts +43 -0
- package/dist/layout/PageSection.d.ts.map +1 -0
- package/dist/layout/PageSection.js +75 -0
- package/dist/layout/PageSection.js.map +1 -0
- package/dist/layout/SmartContainer.d.ts +66 -0
- package/dist/layout/SmartContainer.d.ts.map +1 -0
- package/dist/layout/SmartContainer.js +194 -0
- package/dist/layout/SmartContainer.js.map +1 -0
- package/dist/layout/Stack.d.ts +65 -0
- package/dist/layout/Stack.d.ts.map +1 -0
- package/dist/layout/Stack.js +114 -0
- package/dist/layout/Stack.js.map +1 -0
- package/dist/organisms/content/Card.d.ts +93 -0
- package/dist/organisms/content/Card.d.ts.map +1 -0
- package/dist/organisms/content/Card.js +353 -0
- package/dist/organisms/content/Card.js.map +1 -0
- package/dist/organisms/content/_card-horizontal.scss +88 -0
- package/dist/organisms/content/_card-link.scss +49 -0
- package/dist/organisms/content/_card-overlay.scss +91 -0
- package/dist/organisms/content/_card-root.scss +99 -0
- package/dist/organisms/content/_card-slots.scss +143 -0
- package/dist/organisms/content/_card-states.scss +166 -0
- package/dist/organisms/content/_card-tokens.scss +22 -0
- package/dist/organisms/content/_card-variants.scss +31 -0
- package/dist/organisms/content/card.scss +15 -0
- package/dist/organisms/feedback/Modal.d.ts +39 -0
- package/dist/organisms/feedback/Modal.d.ts.map +1 -0
- package/dist/organisms/feedback/Modal.js +120 -0
- package/dist/organisms/feedback/Modal.js.map +1 -0
- package/dist/organisms/feedback/Popover.d.ts +30 -0
- package/dist/organisms/feedback/Popover.d.ts.map +1 -0
- package/dist/organisms/feedback/Popover.js +151 -0
- package/dist/organisms/feedback/Popover.js.map +1 -0
- package/dist/organisms/feedback/modal.scss +66 -0
- package/dist/organisms/feedback/popover.scss +27 -0
- package/dist/organisms/forms/DynamicForm.d.ts +118 -0
- package/dist/organisms/forms/DynamicForm.d.ts.map +1 -0
- package/dist/organisms/forms/DynamicForm.js +546 -0
- package/dist/organisms/forms/DynamicForm.js.map +1 -0
- package/dist/organisms/forms/Form.d.ts +62 -0
- package/dist/organisms/forms/Form.d.ts.map +1 -0
- package/dist/organisms/forms/Form.js +131 -0
- package/dist/organisms/forms/Form.js.map +1 -0
- package/dist/organisms/forms/dynamic-form.scss +91 -0
- package/dist/organisms/forms/form-helpers.d.ts +21 -0
- package/dist/organisms/forms/form-helpers.d.ts.map +1 -0
- package/dist/organisms/forms/form-helpers.js +57 -0
- package/dist/organisms/forms/form-helpers.js.map +1 -0
- package/dist/organisms/forms/form-state.d.ts +66 -0
- package/dist/organisms/forms/form-state.d.ts.map +1 -0
- package/dist/organisms/forms/form-state.js +156 -0
- package/dist/organisms/forms/form-state.js.map +1 -0
- package/dist/organisms/forms/form.scss +23 -0
- package/dist/organisms/forms/validation.d.ts +32 -0
- package/dist/organisms/forms/validation.d.ts.map +1 -0
- package/dist/organisms/forms/validation.js +118 -0
- package/dist/organisms/forms/validation.js.map +1 -0
- package/dist/organisms/navigation/Navbar.d.ts +66 -0
- package/dist/organisms/navigation/Navbar.d.ts.map +1 -0
- package/dist/organisms/navigation/Navbar.js +881 -0
- package/dist/organisms/navigation/Navbar.js.map +1 -0
- package/dist/organisms/navigation/_navbar-announcement.scss +62 -0
- package/dist/organisms/navigation/_navbar-brand.scss +69 -0
- package/dist/organisms/navigation/_navbar-container.scss +37 -0
- package/dist/organisms/navigation/_navbar-desktop.scss +116 -0
- package/dist/organisms/navigation/_navbar-drawer.scss +97 -0
- package/dist/organisms/navigation/_navbar-links.scss +143 -0
- package/dist/organisms/navigation/_navbar-menu.scss +193 -0
- package/dist/organisms/navigation/_navbar-root.scss +107 -0
- package/dist/organisms/navigation/_navbar-search.scss +83 -0
- package/dist/organisms/navigation/_navbar-toggle.scss +91 -0
- package/dist/organisms/navigation/_navbar-tokens.scss +15 -0
- package/dist/organisms/navigation/navbar.scss +17 -0
- package/dist/registry/categories.d.ts +6 -0
- package/dist/registry/categories.d.ts.map +1 -0
- package/dist/registry/categories.js +13 -0
- package/dist/registry/categories.js.map +1 -0
- package/dist/registry/components.d.ts +5 -0
- package/dist/registry/components.d.ts.map +1 -0
- package/dist/registry/components.js +95 -0
- package/dist/registry/components.js.map +1 -0
- package/dist/registry/index.d.ts +59 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +79 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/levels.d.ts +6 -0
- package/dist/registry/levels.d.ts.map +1 -0
- package/dist/registry/levels.js +9 -0
- package/dist/registry/levels.js.map +1 -0
- package/dist/registry/registry-meta-types.d.ts +67 -0
- package/dist/registry/registry-meta-types.d.ts.map +1 -0
- package/dist/registry/registry-meta-types.js +6 -0
- package/dist/registry/registry-meta-types.js.map +1 -0
- package/dist/registry/registry-meta.d.ts +5 -0
- package/dist/registry/registry-meta.d.ts.map +1 -0
- package/dist/registry/registry-meta.js +731 -0
- package/dist/registry/registry-meta.js.map +1 -0
- package/dist/registry/renderer.d.ts +69 -0
- package/dist/registry/renderer.d.ts.map +1 -0
- package/dist/registry/renderer.js +311 -0
- package/dist/registry/renderer.js.map +1 -0
- package/dist/sections/_section-base.scss +204 -0
- package/dist/sections/contact/ContactSection.d.ts +55 -0
- package/dist/sections/contact/ContactSection.d.ts.map +1 -0
- package/dist/sections/contact/ContactSection.js +142 -0
- package/dist/sections/contact/ContactSection.js.map +1 -0
- package/dist/sections/contact/contact-section.scss +142 -0
- package/dist/sections/cta/CTASection.d.ts +52 -0
- package/dist/sections/cta/CTASection.d.ts.map +1 -0
- package/dist/sections/cta/CTASection.js +130 -0
- package/dist/sections/cta/CTASection.js.map +1 -0
- package/dist/sections/cta/cta-section.scss +131 -0
- package/dist/sections/entrance.d.ts +29 -0
- package/dist/sections/entrance.d.ts.map +1 -0
- package/dist/sections/entrance.js +69 -0
- package/dist/sections/entrance.js.map +1 -0
- package/dist/sections/features/FeaturesSection.d.ts +54 -0
- package/dist/sections/features/FeaturesSection.d.ts.map +1 -0
- package/dist/sections/features/FeaturesSection.js +139 -0
- package/dist/sections/features/FeaturesSection.js.map +1 -0
- package/dist/sections/features/features-section.scss +140 -0
- package/dist/sections/footer/FooterSection.d.ts +53 -0
- package/dist/sections/footer/FooterSection.d.ts.map +1 -0
- package/dist/sections/footer/FooterSection.js +147 -0
- package/dist/sections/footer/FooterSection.js.map +1 -0
- package/dist/sections/footer/footer-section.scss +131 -0
- package/dist/sections/hero/HeroSection.d.ts +66 -0
- package/dist/sections/hero/HeroSection.d.ts.map +1 -0
- package/dist/sections/hero/HeroSection.js +156 -0
- package/dist/sections/hero/HeroSection.js.map +1 -0
- package/dist/sections/hero/hero-section.scss +211 -0
- package/dist/shared/_form-animations.scss +283 -0
- package/dist/shared/_media-fit.scss +63 -0
- package/dist/shared/_mixins.scss +69 -0
- package/dist/shared/_tokens.scss +116 -0
- package/dist/shared/badge.d.ts +15 -0
- package/dist/shared/badge.d.ts.map +1 -0
- package/dist/shared/badge.js +15 -0
- package/dist/shared/badge.js.map +1 -0
- package/dist/shared/button.d.ts +22 -0
- package/dist/shared/button.d.ts.map +1 -0
- package/dist/shared/button.js +22 -0
- package/dist/shared/button.js.map +1 -0
- package/dist/shared/card.d.ts +21 -0
- package/dist/shared/card.d.ts.map +1 -0
- package/dist/shared/card.js +38 -0
- package/dist/shared/card.js.map +1 -0
- package/dist/shared/checkbox.d.ts +10 -0
- package/dist/shared/checkbox.d.ts.map +1 -0
- package/dist/shared/checkbox.js +28 -0
- package/dist/shared/checkbox.js.map +1 -0
- package/dist/shared/clickable.d.ts +34 -0
- package/dist/shared/clickable.d.ts.map +1 -0
- package/dist/shared/clickable.js +54 -0
- package/dist/shared/clickable.js.map +1 -0
- package/dist/shared/common.d.ts +31 -0
- package/dist/shared/common.d.ts.map +1 -0
- package/dist/shared/common.js +92 -0
- package/dist/shared/common.js.map +1 -0
- package/dist/shared/entrance-config.d.ts +46 -0
- package/dist/shared/entrance-config.d.ts.map +1 -0
- package/dist/shared/entrance-config.js +54 -0
- package/dist/shared/entrance-config.js.map +1 -0
- package/dist/shared/focusable.d.ts +8 -0
- package/dist/shared/focusable.d.ts.map +1 -0
- package/dist/shared/focusable.js +17 -0
- package/dist/shared/focusable.js.map +1 -0
- package/dist/shared/form-elements.d.ts +57 -0
- package/dist/shared/form-elements.d.ts.map +1 -0
- package/dist/shared/form-elements.js +95 -0
- package/dist/shared/form-elements.js.map +1 -0
- package/dist/shared/form-state.d.ts +52 -0
- package/dist/shared/form-state.d.ts.map +1 -0
- package/dist/shared/form-state.js +151 -0
- package/dist/shared/form-state.js.map +1 -0
- package/dist/shared/grid.d.ts +21 -0
- package/dist/shared/grid.d.ts.map +1 -0
- package/dist/shared/grid.js +187 -0
- package/dist/shared/grid.js.map +1 -0
- package/dist/shared/icon-slot.d.ts +22 -0
- package/dist/shared/icon-slot.d.ts.map +1 -0
- package/dist/shared/icon-slot.js +38 -0
- package/dist/shared/icon-slot.js.map +1 -0
- package/dist/shared/icon.d.ts +17 -0
- package/dist/shared/icon.d.ts.map +1 -0
- package/dist/shared/icon.js +18 -0
- package/dist/shared/icon.js.map +1 -0
- package/dist/shared/icons.d.ts +19 -0
- package/dist/shared/icons.d.ts.map +1 -0
- package/dist/shared/icons.js +22 -0
- package/dist/shared/icons.js.map +1 -0
- package/dist/shared/image.d.ts +35 -0
- package/dist/shared/image.d.ts.map +1 -0
- package/dist/shared/image.js +46 -0
- package/dist/shared/image.js.map +1 -0
- package/dist/shared/input.d.ts +12 -0
- package/dist/shared/input.d.ts.map +1 -0
- package/dist/shared/input.js +29 -0
- package/dist/shared/input.js.map +1 -0
- package/dist/shared/radio.d.ts +10 -0
- package/dist/shared/radio.d.ts.map +1 -0
- package/dist/shared/radio.js +29 -0
- package/dist/shared/radio.js.map +1 -0
- package/dist/shared/reconcile-list.d.ts +37 -0
- package/dist/shared/reconcile-list.d.ts.map +1 -0
- package/dist/shared/reconcile-list.js +95 -0
- package/dist/shared/reconcile-list.js.map +1 -0
- package/dist/shared/section.d.ts +23 -0
- package/dist/shared/section.d.ts.map +1 -0
- package/dist/shared/section.js +65 -0
- package/dist/shared/section.js.map +1 -0
- package/dist/shared/segmented.d.ts +17 -0
- package/dist/shared/segmented.d.ts.map +1 -0
- package/dist/shared/segmented.js +53 -0
- package/dist/shared/segmented.js.map +1 -0
- package/dist/shared/select.d.ts +18 -0
- package/dist/shared/select.d.ts.map +1 -0
- package/dist/shared/select.js +14 -0
- package/dist/shared/select.js.map +1 -0
- package/dist/shared/slots.d.ts +11 -0
- package/dist/shared/slots.d.ts.map +1 -0
- package/dist/shared/slots.js +33 -0
- package/dist/shared/slots.js.map +1 -0
- package/dist/shared/smart-container.d.ts +19 -0
- package/dist/shared/smart-container.d.ts.map +1 -0
- package/dist/shared/smart-container.js +29 -0
- package/dist/shared/smart-container.js.map +1 -0
- package/dist/shared/text.d.ts +29 -0
- package/dist/shared/text.d.ts.map +1 -0
- package/dist/shared/text.js +72 -0
- package/dist/shared/text.js.map +1 -0
- package/dist/shared/textarea.d.ts +6 -0
- package/dist/shared/textarea.d.ts.map +1 -0
- package/dist/shared/textarea.js +18 -0
- package/dist/shared/textarea.js.map +1 -0
- package/dist/shared/toggle.d.ts +6 -0
- package/dist/shared/toggle.d.ts.map +1 -0
- package/dist/shared/toggle.js +19 -0
- package/dist/shared/toggle.js.map +1 -0
- package/dist/shared/types.d.ts +41 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +20 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/structural/ErrorBoundary.d.ts +18 -0
- package/dist/structural/ErrorBoundary.d.ts.map +1 -0
- package/dist/structural/ErrorBoundary.js +119 -0
- package/dist/structural/ErrorBoundary.js.map +1 -0
- package/dist/structural/For.d.ts +37 -0
- package/dist/structural/For.d.ts.map +1 -0
- package/dist/structural/For.js +129 -0
- package/dist/structural/For.js.map +1 -0
- package/dist/structural/Lazy.d.ts +43 -0
- package/dist/structural/Lazy.d.ts.map +1 -0
- package/dist/structural/Lazy.js +47 -0
- package/dist/structural/Lazy.js.map +1 -0
- package/dist/structural/NavLink.d.ts +45 -0
- package/dist/structural/NavLink.d.ts.map +1 -0
- package/dist/structural/NavLink.js +37 -0
- package/dist/structural/NavLink.js.map +1 -0
- package/dist/structural/Show.d.ts +35 -0
- package/dist/structural/Show.d.ts.map +1 -0
- package/dist/structural/Show.js +34 -0
- package/dist/structural/Show.js.map +1 -0
- package/dist/structural/nav-link.scss +54 -0
- package/dist/styles/index.scss +58 -0
- package/package.json +64 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/** @codex
|
|
2
|
+
{
|
|
3
|
+
"id": "pithy.ui-kit.grid",
|
|
4
|
+
"title": "<Grid> Layout Component",
|
|
5
|
+
"category": "feature"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
import { renderChildren } from '@pithyjs/core';
|
|
9
|
+
import { GAP_CLASS, ROW_GAP_CLASS, COL_GAP_CLASS, ALIGN_CLASS, JUSTIFY_CLASS, CSS_LENGTH_PATTERN, } from '../shared/common';
|
|
10
|
+
import { GRID_COLS_CLASS, RESPONSIVE_GRID_COLS, GRID_ROWS_CLASS, } from '../shared/grid';
|
|
11
|
+
import { CONTAINER_BREAKPOINT_NAMES, GRID_FLUID_MIN_COLUMN_WIDTH, SPACING_CSS_VAR, } from '@pithyjs/design-system';
|
|
12
|
+
// ── Helpers ─────────────────────────────────────────────────────────────
|
|
13
|
+
function clampCols(n) {
|
|
14
|
+
if (!Number.isFinite(n))
|
|
15
|
+
return 1;
|
|
16
|
+
return Math.max(1, Math.min(12, Math.round(n)));
|
|
17
|
+
}
|
|
18
|
+
/** Regex matching GridItem placement utility classes that require explicit grid tracks. */
|
|
19
|
+
const PLACEMENT_RE = /\bu-(col-start|col-end|col-span|row-start|row-end|row-span)-/;
|
|
20
|
+
/**
|
|
21
|
+
* Scans direct children of a fragment/element for GridItem placement classes.
|
|
22
|
+
* When children use explicit placement (span, start, end), the grid must use
|
|
23
|
+
* fixed column tracks — auto-fit would create implicit tracks that break
|
|
24
|
+
* those placements.
|
|
25
|
+
*/
|
|
26
|
+
function hasPlacementClasses(fragment) {
|
|
27
|
+
const children = fragment.children;
|
|
28
|
+
for (let i = 0; i < children.length; i++) {
|
|
29
|
+
const el = children[i];
|
|
30
|
+
for (let j = 0; j < el.classList.length; j++) {
|
|
31
|
+
if (PLACEMENT_RE.test(el.classList[j]))
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
function buildGapClasses(gap, rowGap, colGap) {
|
|
38
|
+
if (rowGap != null && colGap != null) {
|
|
39
|
+
return [ROW_GAP_CLASS[rowGap], COL_GAP_CLASS[colGap]];
|
|
40
|
+
}
|
|
41
|
+
if (rowGap != null) {
|
|
42
|
+
return [ROW_GAP_CLASS[rowGap], COL_GAP_CLASS[gap]];
|
|
43
|
+
}
|
|
44
|
+
if (colGap != null) {
|
|
45
|
+
return [ROW_GAP_CLASS[gap], COL_GAP_CLASS[colGap]];
|
|
46
|
+
}
|
|
47
|
+
return [GAP_CLASS[gap]];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Builds a fluid CSS grid-template-columns value that targets N columns at
|
|
51
|
+
* wide widths and gracefully collapses to fewer columns at narrow widths,
|
|
52
|
+
* using pure CSS — no breakpoints or container queries required.
|
|
53
|
+
*
|
|
54
|
+
* Uses design system spacing CSS variables for the gap calculation.
|
|
55
|
+
*
|
|
56
|
+
* Formula: repeat(auto-fit, minmax(min(100%, max(FLOOR, calc((100% - (N-1) * GAP_VAR) / N - 0.01px))), 1fr))
|
|
57
|
+
*
|
|
58
|
+
* - `calc(...)` computes the exact per-column width for N columns minus a tiny epsilon.
|
|
59
|
+
* - `max(FLOOR, ...)` sets the collapse threshold — when columns would be smaller than FLOOR, auto-fit reduces count.
|
|
60
|
+
* - `min(100%, ...)` ensures single-column works at very narrow widths.
|
|
61
|
+
*/
|
|
62
|
+
function buildFluidGridCols(cols, gapCssVar, minColumnWidth) {
|
|
63
|
+
const gapCount = cols - 1;
|
|
64
|
+
const floor = minColumnWidth ?? GRID_FLUID_MIN_COLUMN_WIDTH;
|
|
65
|
+
return `repeat(auto-fit, minmax(min(100%, max(${floor}, calc((100% - ${gapCount} * ${gapCssVar}) / ${cols} - 0.01px))), 1fr))`;
|
|
66
|
+
}
|
|
67
|
+
// ── Component ───────────────────────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Layout atom that arranges children in a CSS grid.
|
|
70
|
+
*
|
|
71
|
+
* Mobile-first: defaults to 1 column. Supports simple column counts (which
|
|
72
|
+
* are fluid-responsive by default), explicit responsive breakpoints via
|
|
73
|
+
* container queries, and intrinsic auto-fit/fill patterns.
|
|
74
|
+
*
|
|
75
|
+
* When `columns` is a number ≥ 2, the grid uses a fluid CSS formula that
|
|
76
|
+
* targets that exact column count at wide widths but gracefully collapses
|
|
77
|
+
* to fewer columns at narrow widths — no breakpoints required.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```html
|
|
81
|
+
* <!-- Fluid 3-column grid (collapses gracefully on mobile) -->
|
|
82
|
+
* <Grid columns="3" gap="'lg'">
|
|
83
|
+
* <div>Cell 1</div>
|
|
84
|
+
* <div>Cell 2</div>
|
|
85
|
+
* <div>Cell 3</div>
|
|
86
|
+
* </Grid>
|
|
87
|
+
*
|
|
88
|
+
* <!-- Explicit responsive: 1 col mobile → 2 col tablet → 3 col desktop -->
|
|
89
|
+
* <Grid columns="{ base: 1, sm: 2, lg: 3 }">
|
|
90
|
+
* <div>A</div>
|
|
91
|
+
* <div>B</div>
|
|
92
|
+
* <div>C</div>
|
|
93
|
+
* </Grid>
|
|
94
|
+
*
|
|
95
|
+
* <!-- Auto-fit with minimum 250px columns -->
|
|
96
|
+
* <Grid columns="'auto-fit'" minColumnWidth="'250px'">
|
|
97
|
+
* <div>Card</div>
|
|
98
|
+
* <div>Card</div>
|
|
99
|
+
* <div>Card</div>
|
|
100
|
+
* </Grid>
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
/** @codexApi {"parent":"pithy.ui-kit.grid","name":"Grid","stability":"stable","signature":"(props?: GridProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
|
|
104
|
+
export function Grid({ columns = 1, rows = undefined, gap: rawGap = 'md', rowGap: rawRowGap = undefined, colGap: rawColGap = undefined, align: rawAlign = undefined, justify: rawJustify = undefined, minColumnWidth = undefined, as = 'div', } = {}) {
|
|
105
|
+
// Validate and fall back unconditionally (not just DEV) to prevent undefined class names in production
|
|
106
|
+
const hasOwn = Object.prototype.hasOwnProperty;
|
|
107
|
+
const validGap = hasOwn.call(GAP_CLASS, rawGap);
|
|
108
|
+
const validRowGap = rawRowGap == null || hasOwn.call(ROW_GAP_CLASS, rawRowGap);
|
|
109
|
+
const validColGap = rawColGap == null || hasOwn.call(COL_GAP_CLASS, rawColGap);
|
|
110
|
+
const validAlign = rawAlign == null || hasOwn.call(ALIGN_CLASS, rawAlign);
|
|
111
|
+
const validJustify = rawJustify == null || hasOwn.call(JUSTIFY_CLASS, rawJustify);
|
|
112
|
+
if (import.meta.env?.DEV) {
|
|
113
|
+
if (!validGap) {
|
|
114
|
+
const valid = Object.keys(GAP_CLASS).join(', ');
|
|
115
|
+
console.warn(`[<Grid>] Invalid gap value: "${rawGap}". Expected one of: ${valid}. Falling back to "md".`);
|
|
116
|
+
}
|
|
117
|
+
if (!validRowGap) {
|
|
118
|
+
const valid = Object.keys(ROW_GAP_CLASS).join(', ');
|
|
119
|
+
console.warn(`[<Grid>] Invalid rowGap value: "${rawRowGap}". Expected one of: ${valid}. Ignoring.`);
|
|
120
|
+
}
|
|
121
|
+
if (!validColGap) {
|
|
122
|
+
const valid = Object.keys(COL_GAP_CLASS).join(', ');
|
|
123
|
+
console.warn(`[<Grid>] Invalid colGap value: "${rawColGap}". Expected one of: ${valid}. Ignoring.`);
|
|
124
|
+
}
|
|
125
|
+
if (!validAlign) {
|
|
126
|
+
const valid = Object.keys(ALIGN_CLASS).join(', ');
|
|
127
|
+
console.warn(`[<Grid>] Invalid align value: "${rawAlign}". Expected one of: ${valid}. Ignoring.`);
|
|
128
|
+
}
|
|
129
|
+
if (!validJustify) {
|
|
130
|
+
const valid = Object.keys(JUSTIFY_CLASS).join(', ');
|
|
131
|
+
console.warn(`[<Grid>] Invalid justify value: "${rawJustify}". Expected one of: ${valid}. Ignoring.`);
|
|
132
|
+
}
|
|
133
|
+
if (minColumnWidth != null && !CSS_LENGTH_PATTERN.test(minColumnWidth)) {
|
|
134
|
+
console.warn(`[<Grid>] Suspicious minColumnWidth value: "${minColumnWidth}". Expected a CSS length (e.g. "250px", "15rem"). Note: fr units are not valid inside minmax().`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const gap = validGap ? rawGap : 'md';
|
|
138
|
+
const rowGap = validRowGap ? rawRowGap : undefined;
|
|
139
|
+
const colGap = validColGap ? rawColGap : undefined;
|
|
140
|
+
const align = validAlign ? rawAlign : undefined;
|
|
141
|
+
const justify = validJustify ? rawJustify : undefined;
|
|
142
|
+
const rowCount = rows != null && Number.isFinite(rows)
|
|
143
|
+
? Math.max(1, Math.min(6, Math.round(rows)))
|
|
144
|
+
: undefined;
|
|
145
|
+
const gapClasses = buildGapClasses(gap, rowGap, colGap);
|
|
146
|
+
const alignClass = align ? ALIGN_CLASS[align] : '';
|
|
147
|
+
const justifyClass = justify ? JUSTIFY_CLASS[justify] : '';
|
|
148
|
+
const rowClass = rowCount != null ? GRID_ROWS_CLASS[rowCount] : '';
|
|
149
|
+
// Compile children through full pipeline (enables nested <GridItem>, <Stack>, etc.)
|
|
150
|
+
const { el: childFragment, destroy } = renderChildren();
|
|
151
|
+
// ── Auto-fit / auto-fill ──────────────────────────────────
|
|
152
|
+
if (columns === 'auto-fit' || columns === 'auto-fill') {
|
|
153
|
+
const autoClass = columns === 'auto-fit' ? 'u-grid-auto-fit' : 'u-grid-auto-fill';
|
|
154
|
+
const classes = [
|
|
155
|
+
'u-grid',
|
|
156
|
+
autoClass,
|
|
157
|
+
rowClass,
|
|
158
|
+
...gapClasses,
|
|
159
|
+
alignClass,
|
|
160
|
+
justifyClass,
|
|
161
|
+
].filter(Boolean);
|
|
162
|
+
const wrapper = document.createElement(as);
|
|
163
|
+
for (const cls of classes)
|
|
164
|
+
wrapper.classList.add(cls);
|
|
165
|
+
if (minColumnWidth)
|
|
166
|
+
wrapper.style.setProperty('--grid-auto-min', minColumnWidth);
|
|
167
|
+
wrapper.appendChild(childFragment);
|
|
168
|
+
return {
|
|
169
|
+
el: wrapper,
|
|
170
|
+
destroy: () => {
|
|
171
|
+
destroy();
|
|
172
|
+
wrapper.replaceChildren();
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ── Responsive object ─────────────────────────────────────
|
|
177
|
+
if (columns != null && typeof columns === 'object') {
|
|
178
|
+
const base = clampCols(columns.base ?? 1);
|
|
179
|
+
const bpClasses = CONTAINER_BREAKPOINT_NAMES.filter(bp => columns[bp] != null).map(bp => RESPONSIVE_GRID_COLS[bp][clampCols(columns[bp])]);
|
|
180
|
+
const gridClasses = [
|
|
181
|
+
'u-grid',
|
|
182
|
+
GRID_COLS_CLASS[base],
|
|
183
|
+
...bpClasses,
|
|
184
|
+
rowClass,
|
|
185
|
+
...gapClasses,
|
|
186
|
+
alignClass,
|
|
187
|
+
justifyClass,
|
|
188
|
+
].filter(Boolean);
|
|
189
|
+
const outer = document.createElement('div');
|
|
190
|
+
outer.classList.add('u-container-inline');
|
|
191
|
+
const inner = document.createElement(as);
|
|
192
|
+
for (const cls of gridClasses)
|
|
193
|
+
inner.classList.add(cls);
|
|
194
|
+
inner.appendChild(childFragment);
|
|
195
|
+
outer.appendChild(inner);
|
|
196
|
+
return {
|
|
197
|
+
el: outer,
|
|
198
|
+
destroy: () => {
|
|
199
|
+
destroy();
|
|
200
|
+
inner.replaceChildren();
|
|
201
|
+
outer.replaceChildren();
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
// ── Simple number ─────────────────────────────────────────
|
|
206
|
+
const cols = clampCols(columns);
|
|
207
|
+
// For 2+ columns: use fluid CSS formula unless rows is set or children
|
|
208
|
+
// use explicit GridItem placement (span, start, end) which requires
|
|
209
|
+
// fixed column tracks — auto-fit would create implicit tracks that
|
|
210
|
+
// break those placements.
|
|
211
|
+
if (cols >= 2 && rowCount == null && !hasPlacementClasses(childFragment)) {
|
|
212
|
+
const effectiveColGap = colGap ?? gap;
|
|
213
|
+
const gapCssVar = SPACING_CSS_VAR[effectiveColGap];
|
|
214
|
+
const classes = ['u-grid', ...gapClasses, alignClass, justifyClass].filter(Boolean);
|
|
215
|
+
const wrapper = document.createElement(as);
|
|
216
|
+
for (const cls of classes)
|
|
217
|
+
wrapper.classList.add(cls);
|
|
218
|
+
wrapper.style.gridTemplateColumns = buildFluidGridCols(cols, gapCssVar, minColumnWidth);
|
|
219
|
+
wrapper.appendChild(childFragment);
|
|
220
|
+
return {
|
|
221
|
+
el: wrapper,
|
|
222
|
+
destroy: () => {
|
|
223
|
+
destroy();
|
|
224
|
+
wrapper.replaceChildren();
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
// For 2+ columns with rows or explicit placement: use fixed column count
|
|
229
|
+
// to preserve GridItem placement (span, start, rowSpan).
|
|
230
|
+
if (cols >= 2) {
|
|
231
|
+
const classes = [
|
|
232
|
+
'u-grid',
|
|
233
|
+
GRID_COLS_CLASS[cols],
|
|
234
|
+
rowClass,
|
|
235
|
+
...gapClasses,
|
|
236
|
+
alignClass,
|
|
237
|
+
justifyClass,
|
|
238
|
+
].filter(Boolean);
|
|
239
|
+
const wrapper = document.createElement(as);
|
|
240
|
+
for (const cls of classes)
|
|
241
|
+
wrapper.classList.add(cls);
|
|
242
|
+
wrapper.appendChild(childFragment);
|
|
243
|
+
return {
|
|
244
|
+
el: wrapper,
|
|
245
|
+
destroy: () => {
|
|
246
|
+
destroy();
|
|
247
|
+
wrapper.replaceChildren();
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
// Single column — no fluid behavior needed
|
|
252
|
+
const classes = [
|
|
253
|
+
'u-grid',
|
|
254
|
+
GRID_COLS_CLASS[cols],
|
|
255
|
+
rowClass,
|
|
256
|
+
...gapClasses,
|
|
257
|
+
alignClass,
|
|
258
|
+
justifyClass,
|
|
259
|
+
].filter(Boolean);
|
|
260
|
+
const wrapper = document.createElement(as);
|
|
261
|
+
for (const cls of classes)
|
|
262
|
+
wrapper.classList.add(cls);
|
|
263
|
+
wrapper.appendChild(childFragment);
|
|
264
|
+
return {
|
|
265
|
+
el: wrapper,
|
|
266
|
+
destroy: () => {
|
|
267
|
+
destroy();
|
|
268
|
+
wrapper.replaceChildren();
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=Grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../src/layout/Grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** @codex
|
|
2
|
+
{
|
|
3
|
+
"id": "pithy.ui-kit.grid-item",
|
|
4
|
+
"title": "<GridItem> Layout Component",
|
|
5
|
+
"category": "feature"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
import { type PlaceSelf } from '../shared/grid';
|
|
9
|
+
/** @codexApi {"parent":"pithy.ui-kit.grid-item","name":"GridItemProps","stability":"stable","signature":"interface GridItemProps"} */
|
|
10
|
+
export interface GridItemProps {
|
|
11
|
+
/** Column span (1-12 or "full") — maps to u-col-span-* */
|
|
12
|
+
span?: number | 'full';
|
|
13
|
+
/** Column start line (1-13) — maps to u-col-start-* */
|
|
14
|
+
start?: number;
|
|
15
|
+
/** Column end line (1-13) — maps to u-col-end-* */
|
|
16
|
+
end?: number;
|
|
17
|
+
/** Row span (1-6) — maps to u-row-span-* */
|
|
18
|
+
rowSpan?: number;
|
|
19
|
+
/** Row start line (1-7) — maps to u-row-start-* */
|
|
20
|
+
rowStart?: number;
|
|
21
|
+
/** Row end line (1-7) — maps to u-row-end-* */
|
|
22
|
+
rowEnd?: number;
|
|
23
|
+
/** Place self alignment — maps to u-place-self-* */
|
|
24
|
+
placeSelf?: PlaceSelf;
|
|
25
|
+
/** HTML tag to render (default: "div") */
|
|
26
|
+
as?: keyof HTMLElementTagNameMap;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Grid child component for structured placement within a Grid.
|
|
30
|
+
*
|
|
31
|
+
* Designed for use inside Grid — maps props to existing utility classes
|
|
32
|
+
* for column/row spanning and positioning. Critical for site builder
|
|
33
|
+
* serialization and property panels.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```html
|
|
37
|
+
* <Grid columns="3">
|
|
38
|
+
* <GridItem span="2">
|
|
39
|
+
* <div>Spans 2 columns</div>
|
|
40
|
+
* </GridItem>
|
|
41
|
+
* <GridItem start="3">
|
|
42
|
+
* <div>Starts at column 3</div>
|
|
43
|
+
* </GridItem>
|
|
44
|
+
* </Grid>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
/** @codexApi {"parent":"pithy.ui-kit.grid-item","name":"GridItem","stability":"stable","signature":"(props?: GridItemProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
|
|
48
|
+
export declare function GridItem({ span, start, end, rowSpan, rowStart, rowEnd, placeSelf, as, }?: GridItemProps): {
|
|
49
|
+
el: HTMLElement | DocumentFragment;
|
|
50
|
+
destroy: () => void;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=GridItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridItem.d.ts","sourceRoot":"","sources":["../../src/layout/GridItem.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAIF,OAAO,EASL,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAOxB,sIAAsI;AACtI,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,gMAAgM;AAChM,wBAAgB,QAAQ,CAAC,EACvB,IAAgB,EAChB,KAAiB,EACjB,GAAe,EACf,OAAmB,EACnB,QAAoB,EACpB,MAAkB,EAClB,SAAqB,EACrB,EAAU,GACX,GAAE,aAAkB,GAAG;IACtB,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAiEA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/** @codex
|
|
2
|
+
{
|
|
3
|
+
"id": "pithy.ui-kit.grid-item",
|
|
4
|
+
"title": "<GridItem> Layout Component",
|
|
5
|
+
"category": "feature"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
import { renderChildren } from '@pithyjs/core';
|
|
9
|
+
import { captureSlot } from '../shared/slots';
|
|
10
|
+
import { COL_SPAN_CLASS, COL_START_CLASS, COL_END_CLASS, ROW_SPAN_CLASS, ROW_START_CLASS, ROW_END_CLASS, PLACE_SELF_CLASS, PLACE_SELF_ITEMS, } from '../shared/grid';
|
|
11
|
+
function clampFinite(n, min, max) {
|
|
12
|
+
if (!Number.isFinite(n))
|
|
13
|
+
return undefined;
|
|
14
|
+
return Math.max(min, Math.min(max, Math.round(n)));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Grid child component for structured placement within a Grid.
|
|
18
|
+
*
|
|
19
|
+
* Designed for use inside Grid — maps props to existing utility classes
|
|
20
|
+
* for column/row spanning and positioning. Critical for site builder
|
|
21
|
+
* serialization and property panels.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```html
|
|
25
|
+
* <Grid columns="3">
|
|
26
|
+
* <GridItem span="2">
|
|
27
|
+
* <div>Spans 2 columns</div>
|
|
28
|
+
* </GridItem>
|
|
29
|
+
* <GridItem start="3">
|
|
30
|
+
* <div>Starts at column 3</div>
|
|
31
|
+
* </GridItem>
|
|
32
|
+
* </Grid>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
/** @codexApi {"parent":"pithy.ui-kit.grid-item","name":"GridItem","stability":"stable","signature":"(props?: GridItemProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
|
|
36
|
+
export function GridItem({ span = undefined, start = undefined, end = undefined, rowSpan = undefined, rowStart = undefined, rowEnd = undefined, placeSelf = undefined, as = 'div', } = {}) {
|
|
37
|
+
const classes = [];
|
|
38
|
+
// Column span
|
|
39
|
+
if (span === 'full') {
|
|
40
|
+
classes.push('u-col-span-full');
|
|
41
|
+
}
|
|
42
|
+
else if (span != null) {
|
|
43
|
+
const n = clampFinite(span, 1, 12);
|
|
44
|
+
if (n != null)
|
|
45
|
+
classes.push(COL_SPAN_CLASS[n]);
|
|
46
|
+
}
|
|
47
|
+
// Column start/end
|
|
48
|
+
if (start != null) {
|
|
49
|
+
const n = clampFinite(start, 1, 13);
|
|
50
|
+
if (n != null)
|
|
51
|
+
classes.push(COL_START_CLASS[n]);
|
|
52
|
+
}
|
|
53
|
+
if (end != null) {
|
|
54
|
+
const n = clampFinite(end, 1, 13);
|
|
55
|
+
if (n != null)
|
|
56
|
+
classes.push(COL_END_CLASS[n]);
|
|
57
|
+
}
|
|
58
|
+
// Row span
|
|
59
|
+
if (rowSpan != null) {
|
|
60
|
+
const n = clampFinite(rowSpan, 1, 6);
|
|
61
|
+
if (n != null)
|
|
62
|
+
classes.push(ROW_SPAN_CLASS[n]);
|
|
63
|
+
}
|
|
64
|
+
// Row start/end
|
|
65
|
+
if (rowStart != null) {
|
|
66
|
+
const n = clampFinite(rowStart, 1, 7);
|
|
67
|
+
if (n != null)
|
|
68
|
+
classes.push(ROW_START_CLASS[n]);
|
|
69
|
+
}
|
|
70
|
+
if (rowEnd != null) {
|
|
71
|
+
const n = clampFinite(rowEnd, 1, 7);
|
|
72
|
+
if (n != null)
|
|
73
|
+
classes.push(ROW_END_CLASS[n]);
|
|
74
|
+
}
|
|
75
|
+
// Place self — guard against invalid values to prevent "undefined" class name
|
|
76
|
+
if (placeSelf != null &&
|
|
77
|
+
PLACE_SELF_ITEMS.includes(placeSelf)) {
|
|
78
|
+
classes.push(PLACE_SELF_CLASS[placeSelf]);
|
|
79
|
+
}
|
|
80
|
+
else if (placeSelf != null && import.meta.env?.DEV) {
|
|
81
|
+
const valid = PLACE_SELF_ITEMS.join(', ');
|
|
82
|
+
console.warn(`[<GridItem>] Invalid placeSelf value: "${placeSelf}". Expected one of: ${valid}. Ignoring.`);
|
|
83
|
+
}
|
|
84
|
+
// Compile children through full pipeline
|
|
85
|
+
const { el: childFragment, destroy } = renderChildren();
|
|
86
|
+
const wrapper = document.createElement(as);
|
|
87
|
+
for (const cls of classes)
|
|
88
|
+
wrapper.classList.add(cls);
|
|
89
|
+
captureSlot(wrapper, 'default');
|
|
90
|
+
wrapper.appendChild(childFragment);
|
|
91
|
+
return {
|
|
92
|
+
el: wrapper,
|
|
93
|
+
destroy: () => {
|
|
94
|
+
destroy();
|
|
95
|
+
wrapper.replaceChildren();
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=GridItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridItem.js","sourceRoot":"","sources":["../../src/layout/GridItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** @codex
|
|
2
|
+
{
|
|
3
|
+
"id": "pithy.ui-kit.page-section",
|
|
4
|
+
"title": "<PageSection> Layout Component",
|
|
5
|
+
"category": "feature"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
import { type SectionTag } from '../shared/common';
|
|
9
|
+
import { type SpacingSize } from '@pithyjs/design-system';
|
|
10
|
+
/** @codexApi {"parent":"pithy.ui-kit.page-section","name":"PageSectionProps","stability":"stable","signature":"interface PageSectionProps"} */
|
|
11
|
+
export interface PageSectionProps {
|
|
12
|
+
/** Vertical padding — maps to u-py-* utilities (default: "lg") */
|
|
13
|
+
spacing?: SpacingSize;
|
|
14
|
+
/** Apply max-width + centered layout with gutters (default: false) */
|
|
15
|
+
contained?: boolean;
|
|
16
|
+
/** Edge-to-edge viewport width breakout (default: false) */
|
|
17
|
+
fullBleed?: boolean;
|
|
18
|
+
/** Semantic HTML tag (default: "section") */
|
|
19
|
+
as?: SectionTag;
|
|
20
|
+
/** Optional anchor id */
|
|
21
|
+
id?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Semantic page section wrapper with consistent vertical spacing,
|
|
25
|
+
* optional containment, and full-bleed support.
|
|
26
|
+
*
|
|
27
|
+
* Named `PageSection` (not `Section`) to avoid collision with the
|
|
28
|
+
* native HTML `<section>` element — same pattern as `NavLink`.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```html
|
|
32
|
+
* <PageSection spacing="'lg'" contained="true">
|
|
33
|
+
* <h2>Features</h2>
|
|
34
|
+
* <p>Content here</p>
|
|
35
|
+
* </PageSection>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
/** @codexApi {"parent":"pithy.ui-kit.page-section","name":"PageSection","stability":"stable","signature":"(props?: PageSectionProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
|
|
39
|
+
export declare function PageSection({ spacing: rawSpacing, contained, fullBleed, as: rawAs, id, }?: PageSectionProps): {
|
|
40
|
+
el: HTMLElement | DocumentFragment;
|
|
41
|
+
destroy: () => void;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=PageSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSection.d.ts","sourceRoot":"","sources":["../../src/layout/PageSection.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAGF,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAEhC,+IAA+I;AAC/I,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,yBAAyB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;GAcG;AACH,yMAAyM;AACzM,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EAAE,UAAiB,EAC1B,SAAiB,EACjB,SAAiB,EACjB,EAAE,EAAE,KAAiB,EACrB,EAAc,GACf,GAAE,gBAAqB,GAAG;IACzB,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA0DA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** @codex
|
|
2
|
+
{
|
|
3
|
+
"id": "pithy.ui-kit.page-section",
|
|
4
|
+
"title": "<PageSection> Layout Component",
|
|
5
|
+
"category": "feature"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
import { renderChildren } from '@pithyjs/core';
|
|
9
|
+
import { PY_CLASS, SECTION_TAGS } from '../shared/common';
|
|
10
|
+
import { captureSlot } from '../shared/slots';
|
|
11
|
+
import { CONTAINER_BREAKPOINTS, } from '@pithyjs/design-system';
|
|
12
|
+
/**
|
|
13
|
+
* Semantic page section wrapper with consistent vertical spacing,
|
|
14
|
+
* optional containment, and full-bleed support.
|
|
15
|
+
*
|
|
16
|
+
* Named `PageSection` (not `Section`) to avoid collision with the
|
|
17
|
+
* native HTML `<section>` element — same pattern as `NavLink`.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```html
|
|
21
|
+
* <PageSection spacing="'lg'" contained="true">
|
|
22
|
+
* <h2>Features</h2>
|
|
23
|
+
* <p>Content here</p>
|
|
24
|
+
* </PageSection>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
/** @codexApi {"parent":"pithy.ui-kit.page-section","name":"PageSection","stability":"stable","signature":"(props?: PageSectionProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
|
|
28
|
+
export function PageSection({ spacing: rawSpacing = 'lg', contained = false, fullBleed = false, as: rawAs = 'section', id = undefined, } = {}) {
|
|
29
|
+
const hasOwn = Object.prototype.hasOwnProperty;
|
|
30
|
+
const validSpacing = hasOwn.call(PY_CLASS, rawSpacing);
|
|
31
|
+
const validAs = SECTION_TAGS.includes(rawAs);
|
|
32
|
+
if (import.meta.env?.DEV) {
|
|
33
|
+
if (!validSpacing) {
|
|
34
|
+
const valid = Object.keys(PY_CLASS).join(', ');
|
|
35
|
+
console.warn(`[<PageSection>] Invalid spacing value: "${rawSpacing}". Expected one of: ${valid}. Falling back to "lg".`);
|
|
36
|
+
}
|
|
37
|
+
if (!validAs) {
|
|
38
|
+
const valid = SECTION_TAGS.join(', ');
|
|
39
|
+
console.warn(`[<PageSection>] Invalid as value: "${rawAs}". Expected one of: ${valid}. Falling back to "section".`);
|
|
40
|
+
}
|
|
41
|
+
if (contained && fullBleed) {
|
|
42
|
+
console.warn(`[<PageSection>] "contained" and "fullBleed" are mutually exclusive. "fullBleed" takes precedence.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const spacing = validSpacing ? rawSpacing : 'lg';
|
|
46
|
+
const as = validAs ? rawAs : 'section';
|
|
47
|
+
// Create wrapper element
|
|
48
|
+
const wrapper = document.createElement(as);
|
|
49
|
+
wrapper.classList.add(PY_CLASS[spacing]);
|
|
50
|
+
// Optional anchor id
|
|
51
|
+
if (id)
|
|
52
|
+
wrapper.id = id;
|
|
53
|
+
// Full-bleed takes precedence over contained (mutually exclusive)
|
|
54
|
+
if (fullBleed) {
|
|
55
|
+
wrapper.style.width = '100vw';
|
|
56
|
+
wrapper.style.marginInline = 'calc(50% - 50vw)';
|
|
57
|
+
}
|
|
58
|
+
else if (contained) {
|
|
59
|
+
wrapper.style.maxWidth = CONTAINER_BREAKPOINTS.xl;
|
|
60
|
+
wrapper.style.marginInline = 'auto';
|
|
61
|
+
wrapper.style.paddingInline = 'var(--space-md)';
|
|
62
|
+
}
|
|
63
|
+
captureSlot(wrapper, 'default');
|
|
64
|
+
// Compile children through full pipeline
|
|
65
|
+
const { el: childFragment, destroy } = renderChildren();
|
|
66
|
+
wrapper.appendChild(childFragment);
|
|
67
|
+
return {
|
|
68
|
+
el: wrapper,
|
|
69
|
+
destroy: () => {
|
|
70
|
+
destroy();
|
|
71
|
+
wrapper.replaceChildren();
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=PageSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSection.js","sourceRoot":"","sources":["../../src/layout/PageSection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** @codex
|
|
2
|
+
{
|
|
3
|
+
"id": "pithy.ui-kit.smart-container",
|
|
4
|
+
"title": "<SmartContainer> Layout Component",
|
|
5
|
+
"category": "feature"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
import { type AlignItems, type JustifyContent } from '../shared/common';
|
|
9
|
+
import { type Recipe, type Density } from '../shared/smart-container';
|
|
10
|
+
import { type SpacingSize } from '@pithyjs/design-system';
|
|
11
|
+
/** @codexApi {"parent":"pithy.ui-kit.smart-container","name":"SmartContainerProps","stability":"stable","signature":"interface SmartContainerProps"} */
|
|
12
|
+
export interface SmartContainerProps {
|
|
13
|
+
/** Layout recipe (default: "auto-grid") */
|
|
14
|
+
recipe?: Recipe;
|
|
15
|
+
/** Minimum item width for auto-grid recipe, e.g. "14rem", "250px" */
|
|
16
|
+
minItem?: string;
|
|
17
|
+
/** Gap between children — maps to u-gap-* utilities (default: "md") */
|
|
18
|
+
gap?: SpacingSize;
|
|
19
|
+
/** Density scaling: compact (0.9), normal (1.0), relaxed (1.25) */
|
|
20
|
+
density?: Density;
|
|
21
|
+
/** Cross-axis alignment — maps to u-items-* utilities */
|
|
22
|
+
align?: AlignItems;
|
|
23
|
+
/** Main-axis justification — maps to u-justify-* utilities */
|
|
24
|
+
justify?: JustifyContent;
|
|
25
|
+
/** Max column count for equal-cards recipe (2-6, default: 3) */
|
|
26
|
+
lanes?: number;
|
|
27
|
+
/** HTML tag to render (default: "div") */
|
|
28
|
+
as?: keyof HTMLElementTagNameMap;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Higher-level layout component providing 5 opinionated responsive
|
|
32
|
+
* layout recipes that adapt to container width via CSS container queries.
|
|
33
|
+
*
|
|
34
|
+
* Unlike Grid/Stack (low-level primitives), SmartContainer provides
|
|
35
|
+
* common layout patterns that "just work" responsively.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```html
|
|
39
|
+
* <!-- Auto-grid: items flow into columns based on minimum width -->
|
|
40
|
+
* <SmartContainer recipe="'auto-grid'" minItem="'14rem'" gap="'lg'">
|
|
41
|
+
* <div>Card 1</div>
|
|
42
|
+
* <div>Card 2</div>
|
|
43
|
+
* <div>Card 3</div>
|
|
44
|
+
* </SmartContainer>
|
|
45
|
+
*
|
|
46
|
+
* <!-- Stack-to-row: vertical on mobile, horizontal on wider containers -->
|
|
47
|
+
* <SmartContainer recipe="'stack-to-row'">
|
|
48
|
+
* <div>Left</div>
|
|
49
|
+
* <div>Right</div>
|
|
50
|
+
* </SmartContainer>
|
|
51
|
+
*
|
|
52
|
+
* <!-- Equal cards: responsive grid capped at N columns -->
|
|
53
|
+
* <SmartContainer recipe="'equal-cards'" lanes="4">
|
|
54
|
+
* <div>Card 1</div>
|
|
55
|
+
* <div>Card 2</div>
|
|
56
|
+
* <div>Card 3</div>
|
|
57
|
+
* <div>Card 4</div>
|
|
58
|
+
* </SmartContainer>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
/** @codexApi {"parent":"pithy.ui-kit.smart-container","name":"SmartContainer","stability":"stable","signature":"(props?: SmartContainerProps) => { el: HTMLElement | DocumentFragment; destroy: () => void }"} */
|
|
62
|
+
export declare function SmartContainer({ recipe: rawRecipe, minItem, gap: rawGap, density: rawDensity, align: rawAlign, justify: rawJustify, lanes: rawLanes, as, }?: SmartContainerProps): {
|
|
63
|
+
el: HTMLElement | DocumentFragment;
|
|
64
|
+
destroy: () => void;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=SmartContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SmartContainer.d.ts","sourceRoot":"","sources":["../../src/layout/SmartContainer.ts"],"names":[],"mappings":"AAAA;;;;;;EAME;AAIF,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,OAAO,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE/E,wJAAwJ;AACxJ,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;CAClC;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,kNAAkN;AAClN,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EAAE,SAAuB,EAC/B,OAAmB,EACnB,GAAG,EAAE,MAAa,EAClB,OAAO,EAAE,UAAqB,EAC9B,KAAK,EAAE,QAAoB,EAC3B,OAAO,EAAE,UAAsB,EAC/B,KAAK,EAAE,QAAY,EACnB,EAAU,GACX,GAAE,mBAAwB,GAAG;IAC5B,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAmKA"}
|