ui-lab-registry 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component-dependencies.d.ts +0 -11
- package/dist/component-dependencies.d.ts.map +1 -1
- package/dist/component-dependencies.js +4 -4
- package/dist/component-dependencies.js.map +1 -1
- package/dist/component-order.js +3 -3
- package/dist/component-order.js.map +1 -1
- package/dist/components/Anchor/index.d.ts +1 -1
- package/dist/components/Anchor/index.d.ts.map +1 -1
- package/dist/components/Anchor/index.js.map +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Banner/index.d.ts +1 -1
- package/dist/components/Banner/index.d.ts.map +1 -1
- package/dist/components/Banner/index.js.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Card/index.d.ts +1 -1
- package/dist/components/Card/index.d.ts.map +1 -1
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Checkbox/examples/index.d.ts +4 -4
- package/dist/components/Checkbox/examples/index.d.ts.map +1 -1
- package/dist/components/Checkbox/examples/index.js.map +1 -1
- package/dist/components/Checkbox/index.d.ts +1 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/Color/examples/03-format-switching.d.ts +0 -4
- package/dist/components/Color/examples/03-format-switching.d.ts.map +1 -1
- package/dist/components/Color/examples/03-format-switching.js +2 -2
- package/dist/components/Color/examples/03-format-switching.js.map +1 -1
- package/dist/components/Color/examples/index.d.ts +3 -3
- package/dist/components/Color/examples/index.d.ts.map +1 -1
- package/dist/components/Color/examples/index.js.map +1 -1
- package/dist/components/Color/examples.json +0 -5
- package/dist/components/Color/index.d.ts +1 -1
- package/dist/components/Color/index.d.ts.map +1 -1
- package/dist/components/Color/index.js.map +1 -1
- package/dist/components/Command/examples/01-basic-command.js +1 -1
- package/dist/components/Command/examples/01-basic-command.js.map +1 -1
- package/dist/components/Command/examples/index.d.ts +2 -2
- package/dist/components/Command/examples/index.d.ts.map +1 -1
- package/dist/components/Command/examples/index.js.map +1 -1
- package/dist/components/Command/examples.json +1 -1
- package/dist/components/Command/index.d.ts +1 -1
- package/dist/components/Command/index.d.ts.map +1 -1
- package/dist/components/Command/index.js +3 -3
- package/dist/components/Command/index.js.map +1 -1
- package/dist/components/Confirm/examples/index.d.ts +2 -2
- package/dist/components/Confirm/examples/index.d.ts.map +1 -1
- package/dist/components/Confirm/examples/index.js.map +1 -1
- package/dist/components/Confirm/index.d.ts +1 -1
- package/dist/components/Confirm/index.d.ts.map +1 -1
- package/dist/components/Confirm/index.js.map +1 -1
- package/dist/components/Date/index.js.map +1 -1
- package/dist/components/Divider/examples/02-pattern-variants.js +1 -1
- package/dist/components/Divider/examples.json +1 -1
- package/dist/components/Divider/index.d.ts +1 -1
- package/dist/components/Divider/index.d.ts.map +1 -1
- package/dist/components/Divider/index.js.map +1 -1
- package/dist/components/Expand/index.d.ts +1 -1
- package/dist/components/Expand/index.d.ts.map +1 -1
- package/dist/components/Expand/index.js.map +1 -1
- package/dist/components/Flex/index.d.ts +1 -1
- package/dist/components/Flex/index.d.ts.map +1 -1
- package/dist/components/Flex/index.js.map +1 -1
- package/dist/components/Frame/index.d.ts +1 -1
- package/dist/components/Frame/index.d.ts.map +1 -1
- package/dist/components/Frame/index.js.map +1 -1
- package/dist/components/Gallery/index.d.ts +1 -1
- package/dist/components/Gallery/index.d.ts.map +1 -1
- package/dist/components/Gallery/index.js.map +1 -1
- package/dist/components/Grid/examples/01-basic-grid.js +1 -1
- package/dist/components/Grid/examples/01-basic-grid.js.map +1 -1
- package/dist/components/Grid/examples.json +1 -1
- package/dist/components/Grid/index.d.ts +1 -1
- package/dist/components/Grid/index.d.ts.map +1 -1
- package/dist/components/Grid/index.js +2 -2
- package/dist/components/Grid/index.js.map +1 -1
- package/dist/components/Group/index.d.ts +1 -1
- package/dist/components/Group/index.d.ts.map +1 -1
- package/dist/components/Group/index.js.map +1 -1
- package/dist/components/Input/examples/02-validation.js +1 -1
- package/dist/components/Input/examples/02-validation.js.map +1 -1
- package/dist/components/Input/examples.json +1 -1
- package/dist/components/Input/index.d.ts +1 -1
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Label/index.d.ts +1 -1
- package/dist/components/Label/index.d.ts.map +1 -1
- package/dist/components/Label/index.js.map +1 -1
- package/dist/components/List/index.d.ts +1 -1
- package/dist/components/List/index.d.ts.map +1 -1
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Mask/index.d.ts +1 -1
- package/dist/components/Mask/index.d.ts.map +1 -1
- package/dist/components/Mask/index.js.map +1 -1
- package/dist/components/Menu/index.d.ts +1 -1
- package/dist/components/Menu/index.d.ts.map +1 -1
- package/dist/components/Menu/index.js.map +1 -1
- package/dist/components/Modal/index.d.ts +1 -1
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/Path/examples.json +0 -5
- package/dist/components/Path/index.d.ts +1 -1
- package/dist/components/Path/index.d.ts.map +1 -1
- package/dist/components/Path/index.js.map +1 -1
- package/dist/components/Popover/index.d.ts +1 -1
- package/dist/components/Popover/index.d.ts.map +1 -1
- package/dist/components/Popover/index.js.map +1 -1
- package/dist/components/Progress/index.d.ts +1 -1
- package/dist/components/Progress/index.d.ts.map +1 -1
- package/dist/components/Progress/index.js.map +1 -1
- package/dist/components/Radio/index.d.ts +1 -1
- package/dist/components/Radio/index.d.ts.map +1 -1
- package/dist/components/Radio/index.js +1 -1
- package/dist/components/Radio/index.js.map +1 -1
- package/dist/components/Scroll/index.d.ts +1 -1
- package/dist/components/Scroll/index.d.ts.map +1 -1
- package/dist/components/Scroll/index.js.map +1 -1
- package/dist/components/Select/examples/02-searchable-select.js +1 -1
- package/dist/components/Select/examples/02-searchable-select.js.map +1 -1
- package/dist/components/Select/examples.json +1 -1
- package/dist/components/Select/index.d.ts +1 -1
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/Slider/index.d.ts +1 -1
- package/dist/components/Slider/index.d.ts.map +1 -1
- package/dist/components/Slider/index.js.map +1 -1
- package/dist/components/Switch/index.d.ts +1 -1
- package/dist/components/Switch/index.d.ts.map +1 -1
- package/dist/components/Switch/index.js.map +1 -1
- package/dist/components/Table/index.d.ts +1 -1
- package/dist/components/Table/index.d.ts.map +1 -1
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/examples/01-basic-tabs.js +2 -2
- package/dist/components/Tabs/examples/01-basic-tabs.js.map +1 -1
- package/dist/components/Tabs/examples/02-vertical-tabs.js +2 -2
- package/dist/components/Tabs/examples/02-vertical-tabs.js.map +1 -1
- package/dist/components/Tabs/examples.json +2 -2
- package/dist/components/Tabs/index.d.ts +1 -1
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/index.js +11 -11
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Textarea/index.d.ts +1 -1
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js.map +1 -1
- package/dist/components/Toast/index.d.ts +1 -1
- package/dist/components/Toast/index.d.ts.map +1 -1
- package/dist/components/Toast/index.js.map +1 -1
- package/dist/components/Tooltip/index.d.ts +1 -1
- package/dist/components/Tooltip/index.d.ts.map +1 -1
- package/dist/components/Tooltip/index.js.map +1 -1
- package/dist/elements/AI/AIChatInput/index.d.ts +1 -1
- package/dist/elements/AI/AIChatInput/index.d.ts.map +1 -1
- package/dist/elements/AI/AIChatInput/index.js +1 -1
- package/dist/elements/AI/AIChatInput/variations/01-basic/index.js.map +1 -1
- package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/index.js +1 -1
- package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/index.js.map +1 -1
- package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/layout/PromptInputWithSuggestions.js +1 -1
- package/dist/elements/AI/AIChatInput/variations.json +3 -3
- package/dist/elements/AI/ChainOfThought/index.d.ts +1 -1
- package/dist/elements/AI/ChainOfThought/index.d.ts.map +1 -1
- package/dist/elements/AI/ChainOfThought/index.js +1 -1
- package/dist/elements/AI/ChainOfThought/variations/01-basic/index.js.map +1 -1
- package/dist/elements/AI/ChainOfThought/variations/02-with-details/index.js.map +1 -1
- package/dist/elements/AI/ChainOfThought/variations.json +2 -2
- package/dist/elements/AI/Chat/index.d.ts +1 -1
- package/dist/elements/AI/Chat/index.d.ts.map +1 -1
- package/dist/elements/AI/Chat/index.js +1 -1
- package/dist/elements/AI/Chat/variations/01-basic/index.js.map +1 -1
- package/dist/elements/AI/Chat/variations/02-with-actions/index.js +1 -1
- package/dist/elements/AI/Chat/variations/02-with-actions/index.js.map +1 -1
- package/dist/elements/AI/Chat/variations.json +2 -2
- package/dist/elements/Documentation/CopyPage/index.d.ts +1 -1
- package/dist/elements/Documentation/CopyPage/index.d.ts.map +1 -1
- package/dist/elements/Documentation/CopyPage/index.js +1 -1
- package/dist/elements/Documentation/CopyPage/variations/01-basic/index.js.map +1 -1
- package/dist/elements/Documentation/CopyPage/variations/02-with-success/index.js.map +1 -1
- package/dist/elements/Documentation/CopyPage/variations.json +2 -2
- package/dist/elements/Documentation/NextArticle/index.d.ts +1 -1
- package/dist/elements/Documentation/NextArticle/index.d.ts.map +1 -1
- package/dist/elements/Documentation/NextArticle/index.js +1 -1
- package/dist/elements/Documentation/NextArticle/variations/01-basic/index.js.map +1 -1
- package/dist/elements/Documentation/NextArticle/variations/01-basic/layout/NextArticleCard.js +1 -1
- package/dist/elements/Documentation/NextArticle/variations/02-with-icon/index.js.map +1 -1
- package/dist/elements/Documentation/NextArticle/variations/02-with-icon/layout/NextArticleWithIconCard.js +1 -1
- package/dist/elements/Documentation/NextArticle/variations.json +4 -4
- package/dist/elements/Documentation/TOC/index.d.ts +1 -1
- package/dist/elements/Documentation/TOC/index.d.ts.map +1 -1
- package/dist/elements/Documentation/TOC/index.js +1 -1
- package/dist/elements/Documentation/TOC/variations/01-basic/index.js.map +1 -1
- package/dist/elements/Documentation/TOC/variations/02-expanded/index.js.map +1 -1
- package/dist/elements/Documentation/TOC/variations.json +2 -2
- package/dist/elements/Elements/Carousel/index.d.ts +1 -1
- package/dist/elements/Elements/Carousel/index.d.ts.map +1 -1
- package/dist/elements/Elements/Rating/index.d.ts +1 -1
- package/dist/elements/Elements/Rating/index.d.ts.map +1 -1
- package/dist/elements/Elements/Timeline/index.d.ts +1 -1
- package/dist/elements/Elements/Timeline/index.d.ts.map +1 -1
- package/dist/elements/Elements/TreeView/index.d.ts +1 -1
- package/dist/elements/Elements/TreeView/index.d.ts.map +1 -1
- package/dist/elements/categories.d.ts +1 -1
- package/dist/elements/categories.d.ts.map +1 -1
- package/dist/elements/foundation/Header/index.d.ts +1 -1
- package/dist/elements/foundation/Header/index.d.ts.map +1 -1
- package/dist/elements/foundation/Header/variations/01-basic/index.js.map +1 -1
- package/dist/elements/foundation/Header/variations.json +1 -1
- package/dist/elements/foundation/Page/index.d.ts +1 -1
- package/dist/elements/foundation/Page/index.d.ts.map +1 -1
- package/dist/elements/foundation/Page/variations/01-basic/index.js.map +1 -1
- package/dist/elements/foundation/Page/variations.json +1 -1
- package/dist/elements/foundation/Sidebar/index.d.ts +1 -1
- package/dist/elements/foundation/Sidebar/index.d.ts.map +1 -1
- package/dist/elements/foundation/Sidebar/variations/01-basic/index.js.map +1 -1
- package/dist/elements/foundation/Sidebar/variations.json +1 -1
- package/dist/generated-controls.d.ts +3 -0
- package/dist/generated-controls.d.ts.map +1 -0
- package/dist/generated-controls.js +161 -0
- package/dist/generated-controls.js.map +1 -0
- package/dist/generated-data.d.ts.map +1 -1
- package/dist/generated-data.js +214 -948
- package/dist/generated-data.js.map +1 -1
- package/dist/generated-styles.d.ts.map +1 -1
- package/dist/generated-styles.js +177 -69
- package/dist/generated-styles.js.map +1 -1
- package/dist/generated-styles.json +177 -69
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/patterns/data/data-table-row/metadata.json +3 -3
- package/dist/patterns/data/data-table-row/variations/expandable/index.js +1 -1
- package/dist/patterns/data/data-table-row/variations/main/index.js +1 -1
- package/dist/patterns/data/data-table-row/variations/selectable/index.js +1 -1
- package/dist/patterns/data/progress-metric/metadata.json +3 -3
- package/dist/patterns/data/progress-metric/variations/colored/index.js +1 -1
- package/dist/patterns/data/progress-metric/variations/main/index.js +1 -1
- package/dist/patterns/data/progress-metric/variations/stacked/index.js +1 -1
- package/dist/patterns/form/labeled-field/metadata.json +4 -4
- package/dist/patterns/form/labeled-field/variations/main/index.js +1 -1
- package/dist/patterns/form/labeled-field/variations/with-error/index.js +1 -1
- package/dist/patterns/form/labeled-field/variations/with-hint/index.js +1 -1
- package/dist/patterns/form/select-row/metadata.json +2 -2
- package/dist/patterns/form/select-row/variations/main/index.js +1 -1
- package/dist/patterns/form/select-row/variations/with-icon/index.js +1 -1
- package/dist/patterns/form/toggle-setting-row/metadata.json +2 -2
- package/dist/patterns/form/toggle-setting-row/variations/destructive/index.js +1 -1
- package/dist/patterns/form/toggle-setting-row/variations/main/index.js +1 -1
- package/dist/patterns/interaction/icon-action-bar/variations/compact/index.js +1 -1
- package/dist/patterns/layout/media-object/metadata.json +1 -1
- package/dist/patterns/layout/media-object/variations/sm/index.js +1 -1
- package/dist/patterns/layout/split-row/metadata.json +3 -3
- package/dist/patterns/layout/split-row/variations/actions/index.js +1 -1
- package/dist/patterns/layout/split-row/variations/main/index.js +1 -1
- package/dist/patterns/layout/split-row/variations/meta/index.js +1 -1
- package/dist/patterns/layout/stat-block/metadata.json +3 -3
- package/dist/patterns/layout/stat-block/variations/compact/index.js +1 -1
- package/dist/patterns/layout/stat-block/variations/main/index.js +1 -1
- package/dist/patterns/layout/stat-block/variations/with-icon/index.js +1 -1
- package/dist/providers/Theme/examples/01-provider-setup.d.ts +1 -1
- package/dist/providers/Theme/examples/index.d.ts +3 -3
- package/dist/providers/Theme/examples/index.d.ts.map +1 -1
- package/dist/providers/Theme/examples/index.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +18 -28
- package/dist/registry.js.map +1 -1
- package/dist/sections/CTA/index.d.ts +1 -1
- package/dist/sections/CTA/index.d.ts.map +1 -1
- package/dist/sections/CTA/variations/02-split/index.js +1 -1
- package/dist/sections/CTA/variations.json +1 -1
- package/dist/sections/Features/index.d.ts +1 -1
- package/dist/sections/Features/index.d.ts.map +1 -1
- package/dist/sections/Hero/index.d.ts +1 -1
- package/dist/sections/Hero/index.d.ts.map +1 -1
- package/dist/sections/Pricing/index.d.ts +1 -1
- package/dist/sections/Pricing/index.d.ts.map +1 -1
- package/dist/sections/Pricing/variations/01-cards/index.js +1 -1
- package/dist/sections/Pricing/variations/02-comparison/index.js +1 -1
- package/dist/sections/Pricing/variations.json +2 -2
- package/dist/sections/Testimonials/index.d.ts +1 -1
- package/dist/sections/Testimonials/index.d.ts.map +1 -1
- package/dist/sections/categories.d.ts +0 -11
- package/dist/sections/categories.d.ts.map +1 -1
- package/dist/sections/categories.js +2 -2
- package/dist/sections/categories.js.map +1 -1
- package/dist/starters/Astro/index.d.ts +1 -1
- package/dist/starters/Astro/index.d.ts.map +1 -1
- package/dist/starters/Blog/index.d.ts +1 -1
- package/dist/starters/Blog/index.d.ts.map +1 -1
- package/dist/starters/CRM/index.d.ts +1 -1
- package/dist/starters/CRM/index.d.ts.map +1 -1
- package/dist/starters/Documentation/index.d.ts +1 -1
- package/dist/starters/Documentation/index.d.ts.map +1 -1
- package/dist/starters/NextJS/index.d.ts +1 -1
- package/dist/starters/NextJS/index.d.ts.map +1 -1
- package/dist/starters/NextJS/index.js +1 -1
- package/dist/starters/Productivity/index.d.ts +1 -1
- package/dist/starters/Productivity/index.d.ts.map +1 -1
- package/dist/starters/Tauri/index.d.ts +1 -1
- package/dist/starters/Tauri/index.d.ts.map +1 -1
- package/dist/starters/Vite/index.d.ts +1 -1
- package/dist/starters/Vite/index.d.ts.map +1 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/get-category-icon.d.ts +1 -1
- package/dist/utils/get-category-icon.d.ts.map +1 -1
- package/dist/utils/load-component-examples.d.ts +3 -2
- package/dist/utils/load-component-examples.d.ts.map +1 -1
- package/package.json +3 -7
- package/src/component-dependencies.ts +4 -4
- package/src/component-order.ts +3 -3
- package/src/components/Anchor/index.tsx +2 -2
- package/src/components/Anchor/metadata.json +1 -1
- package/src/components/Badge/index.tsx +2 -2
- package/src/components/Banner/index.tsx +2 -2
- package/src/components/Banner/metadata.json +1 -1
- package/src/components/Button/index.tsx +2 -2
- package/src/components/Card/index.tsx +2 -2
- package/src/components/Card/metadata.json +1 -1
- package/src/components/Checkbox/examples/index.ts +4 -4
- package/src/components/Checkbox/index.tsx +2 -2
- package/src/components/Code/metadata.json +1 -1
- package/src/components/Color/examples/03-format-switching.tsx +3 -3
- package/src/components/Color/examples/index.ts +3 -3
- package/src/components/Color/examples.json +0 -5
- package/src/components/Color/index.tsx +2 -2
- package/src/components/Command/examples/01-basic-command.tsx +1 -1
- package/src/components/Command/examples/index.ts +2 -2
- package/src/components/Command/examples.json +1 -1
- package/src/components/Command/index.tsx +5 -5
- package/src/components/Confirm/examples/index.ts +2 -2
- package/src/components/Confirm/index.tsx +2 -2
- package/src/components/Date/index.tsx +1 -1
- package/src/components/Date/metadata.json +1 -1
- package/src/components/Divider/examples/02-pattern-variants.tsx +3 -3
- package/src/components/Divider/examples.json +1 -1
- package/src/components/Divider/index.tsx +2 -2
- package/src/components/Expand/index.tsx +2 -2
- package/src/components/Flex/index.tsx +2 -2
- package/src/components/Flex/metadata.json +1 -1
- package/src/components/Frame/index.tsx +2 -2
- package/src/components/Gallery/index.tsx +2 -2
- package/src/components/Gallery/metadata.json +1 -1
- package/src/components/Grid/examples/01-basic-grid.tsx +1 -1
- package/src/components/Grid/examples.json +1 -1
- package/src/components/Grid/index.tsx +5 -5
- package/src/components/Group/index.tsx +2 -2
- package/src/components/Group/metadata.json +1 -1
- package/src/components/Input/examples/02-validation.tsx +2 -2
- package/src/components/Input/examples.json +1 -1
- package/src/components/Input/index.tsx +2 -2
- package/src/components/Label/index.tsx +2 -2
- package/src/components/List/index.tsx +2 -2
- package/src/components/List/metadata.json +1 -1
- package/src/components/Mask/index.tsx +2 -2
- package/src/components/Menu/index.tsx +2 -2
- package/src/components/Modal/index.tsx +2 -2
- package/src/components/Page/metadata.json +1 -1
- package/src/components/Panel/metadata.json +2 -2
- package/src/components/Path/examples.json +0 -5
- package/src/components/Path/index.tsx +2 -2
- package/src/components/Popover/index.tsx +2 -2
- package/src/components/Progress/index.tsx +3 -3
- package/src/components/Radio/index.tsx +5 -5
- package/src/components/Scroll/index.tsx +2 -2
- package/src/components/Select/examples/02-searchable-select.tsx +1 -1
- package/src/components/Select/examples.json +1 -1
- package/src/components/Select/index.tsx +2 -2
- package/src/components/Slider/index.tsx +2 -2
- package/src/components/Switch/index.tsx +2 -2
- package/src/components/Table/index.tsx +2 -2
- package/src/components/Tabs/examples/01-basic-tabs.tsx +12 -12
- package/src/components/Tabs/examples/02-vertical-tabs.tsx +19 -19
- package/src/components/Tabs/examples.json +2 -2
- package/src/components/Tabs/index.tsx +47 -47
- package/src/components/Textarea/index.tsx +2 -2
- package/src/components/Toast/index.tsx +2 -2
- package/src/components/Tooltip/index.tsx +2 -2
- package/src/elements/AI/AIChatInput/index.tsx +3 -3
- package/src/elements/AI/AIChatInput/variations/01-basic/index.tsx +1 -1
- package/src/elements/AI/AIChatInput/variations/02-with-suggestions/index.tsx +2 -2
- package/src/elements/AI/AIChatInput/variations/02-with-suggestions/layout/PromptInputWithSuggestions.tsx +1 -1
- package/src/elements/AI/AIChatInput/variations.json +3 -3
- package/src/elements/AI/ChainOfThought/index.tsx +2 -2
- package/src/elements/AI/ChainOfThought/variations/01-basic/index.tsx +1 -1
- package/src/elements/AI/ChainOfThought/variations/02-with-details/index.tsx +1 -1
- package/src/elements/AI/ChainOfThought/variations.json +2 -2
- package/src/elements/AI/Chat/index.tsx +5 -5
- package/src/elements/AI/Chat/variations/01-basic/index.tsx +3 -3
- package/src/elements/AI/Chat/variations/02-with-actions/index.tsx +6 -6
- package/src/elements/AI/Chat/variations.json +2 -2
- package/src/elements/Documentation/CopyPage/index.tsx +2 -2
- package/src/elements/Documentation/CopyPage/variations/01-basic/index.tsx +1 -1
- package/src/elements/Documentation/CopyPage/variations/02-with-success/index.tsx +1 -1
- package/src/elements/Documentation/CopyPage/variations.json +2 -2
- package/src/elements/Documentation/NextArticle/index.tsx +2 -2
- package/src/elements/Documentation/NextArticle/variations/01-basic/index.tsx +1 -1
- package/src/elements/Documentation/NextArticle/variations/01-basic/layout/NextArticleCard.tsx +1 -1
- package/src/elements/Documentation/NextArticle/variations/02-with-icon/index.tsx +1 -1
- package/src/elements/Documentation/NextArticle/variations/02-with-icon/layout/NextArticleWithIconCard.tsx +1 -1
- package/src/elements/Documentation/NextArticle/variations.json +4 -4
- package/src/elements/Documentation/TOC/index.tsx +5 -5
- package/src/elements/Documentation/TOC/variations/01-basic/index.tsx +1 -1
- package/src/elements/Documentation/TOC/variations/02-expanded/index.tsx +1 -1
- package/src/elements/Documentation/TOC/variations.json +2 -2
- package/src/elements/Elements/Carousel/index.tsx +1 -1
- package/src/elements/Elements/Rating/index.tsx +1 -1
- package/src/elements/Elements/Timeline/index.tsx +1 -1
- package/src/elements/Elements/TreeView/index.tsx +1 -1
- package/src/elements/categories.ts +1 -1
- package/src/elements/foundation/Header/index.tsx +1 -1
- package/src/elements/foundation/Header/variations/01-basic/index.tsx +1 -1
- package/src/elements/foundation/Header/variations.json +1 -1
- package/src/elements/foundation/Page/index.tsx +1 -1
- package/src/elements/foundation/Page/variations/01-basic/index.tsx +1 -1
- package/src/elements/foundation/Page/variations.json +1 -1
- package/src/elements/foundation/Sidebar/index.tsx +1 -1
- package/src/elements/foundation/Sidebar/variations/01-basic/index.tsx +1 -1
- package/src/elements/foundation/Sidebar/variations.json +1 -1
- package/src/generated-controls.ts +194 -0
- package/src/generated-data.ts +214 -948
- package/src/generated-styles.ts +177 -69
- package/src/index.ts +1 -0
- package/src/patterns/data/data-table-row/metadata.json +4 -4
- package/src/patterns/data/data-table-row/variations/expandable/index.tsx +3 -3
- package/src/patterns/data/data-table-row/variations/main/index.tsx +2 -2
- package/src/patterns/data/data-table-row/variations/selectable/index.tsx +2 -2
- package/src/patterns/data/progress-metric/metadata.json +4 -4
- package/src/patterns/data/progress-metric/variations/colored/index.tsx +2 -2
- package/src/patterns/data/progress-metric/variations/main/index.tsx +2 -2
- package/src/patterns/data/progress-metric/variations/stacked/index.tsx +2 -2
- package/src/patterns/form/labeled-field/metadata.json +5 -5
- package/src/patterns/form/labeled-field/variations/main/index.tsx +1 -1
- package/src/patterns/form/labeled-field/variations/with-error/index.tsx +1 -1
- package/src/patterns/form/labeled-field/variations/with-hint/index.tsx +1 -1
- package/src/patterns/form/select-row/metadata.json +3 -3
- package/src/patterns/form/select-row/variations/main/index.tsx +1 -1
- package/src/patterns/form/select-row/variations/with-icon/index.tsx +1 -1
- package/src/patterns/form/toggle-setting-row/metadata.json +3 -3
- package/src/patterns/form/toggle-setting-row/variations/destructive/index.tsx +1 -1
- package/src/patterns/form/toggle-setting-row/variations/main/index.tsx +1 -1
- package/src/patterns/interaction/icon-action-bar/variations/compact/index.tsx +1 -1
- package/src/patterns/layout/media-object/metadata.json +2 -2
- package/src/patterns/layout/media-object/variations/sm/index.tsx +2 -2
- package/src/patterns/layout/split-row/metadata.json +4 -4
- package/src/patterns/layout/split-row/variations/actions/index.tsx +1 -1
- package/src/patterns/layout/split-row/variations/main/index.tsx +2 -2
- package/src/patterns/layout/split-row/variations/meta/index.tsx +3 -3
- package/src/patterns/layout/stat-block/metadata.json +4 -4
- package/src/patterns/layout/stat-block/variations/compact/index.tsx +1 -1
- package/src/patterns/layout/stat-block/variations/main/index.tsx +1 -1
- package/src/patterns/layout/stat-block/variations/with-icon/index.tsx +1 -1
- package/src/registry.ts +18 -28
- package/src/sections/CTA/index.tsx +1 -1
- package/src/sections/CTA/variations/02-split/index.tsx +1 -1
- package/src/sections/CTA/variations.json +1 -1
- package/src/sections/Features/index.tsx +1 -1
- package/src/sections/Hero/index.tsx +1 -1
- package/src/sections/Pricing/index.tsx +1 -1
- package/src/sections/Pricing/variations/01-cards/index.tsx +1 -1
- package/src/sections/Pricing/variations/02-comparison/index.tsx +1 -1
- package/src/sections/Pricing/variations.json +2 -2
- package/src/sections/Testimonials/index.tsx +1 -1
- package/src/sections/categories.ts +2 -2
- package/src/starters/Astro/index.tsx +1 -1
- package/src/starters/Blog/index.tsx +1 -1
- package/src/starters/CRM/index.tsx +1 -1
- package/src/starters/Documentation/index.tsx +1 -1
- package/src/starters/NextJS/index.tsx +3 -3
- package/src/starters/Productivity/index.tsx +1 -1
- package/src/starters/Tauri/index.tsx +1 -1
- package/src/starters/Vite/index.tsx +1 -1
- package/src/types.ts +1 -2
- package/src/utils/get-category-icon.tsx +1 -1
- package/src/utils/load-component-examples.ts +2 -2
- package/dist/components/Button/examples/02-joined-toggle-buttons.d.ts +0 -6
- package/dist/components/Button/examples/02-joined-toggle-buttons.d.ts.map +0 -1
- package/dist/components/Button/examples/02-joined-toggle-buttons.js +0 -15
- package/dist/components/Button/examples/02-joined-toggle-buttons.js.map +0 -1
- package/dist/components/Button/examples/03-split-action-button.d.ts +0 -6
- package/dist/components/Button/examples/03-split-action-button.d.ts.map +0 -1
- package/dist/components/Button/examples/03-split-action-button.js +0 -11
- package/dist/components/Button/examples/03-split-action-button.js.map +0 -1
- package/dist/components/Button/examples/04-toolbar-buttons.d.ts +0 -6
- package/dist/components/Button/examples/04-toolbar-buttons.d.ts.map +0 -1
- package/dist/components/Button/examples/04-toolbar-buttons.js +0 -11
- package/dist/components/Button/examples/04-toolbar-buttons.js.map +0 -1
- package/dist/components/Button/examples/05-pagination-controls.d.ts +0 -6
- package/dist/components/Button/examples/05-pagination-controls.d.ts.map +0 -1
- package/dist/components/Button/examples/05-pagination-controls.js +0 -16
- package/dist/components/Button/examples/05-pagination-controls.js.map +0 -1
- package/dist/components/Card/examples/02-user-profile-card.d.ts +0 -6
- package/dist/components/Card/examples/02-user-profile-card.d.ts.map +0 -1
- package/dist/components/Card/examples/02-user-profile-card.js +0 -12
- package/dist/components/Card/examples/02-user-profile-card.js.map +0 -1
- package/dist/components/Card/examples/03-settings-panel-card.d.ts +0 -6
- package/dist/components/Card/examples/03-settings-panel-card.d.ts.map +0 -1
- package/dist/components/Card/examples/03-settings-panel-card.js +0 -17
- package/dist/components/Card/examples/03-settings-panel-card.js.map +0 -1
- package/dist/components/Card/examples/04-task-progress-card.d.ts +0 -6
- package/dist/components/Card/examples/04-task-progress-card.d.ts.map +0 -1
- package/dist/components/Card/examples/04-task-progress-card.js +0 -12
- package/dist/components/Card/examples/04-task-progress-card.js.map +0 -1
- package/dist/components/Card/examples/05-data-summary-card.d.ts +0 -6
- package/dist/components/Card/examples/05-data-summary-card.d.ts.map +0 -1
- package/dist/components/Card/examples/05-data-summary-card.js +0 -12
- package/dist/components/Card/examples/05-data-summary-card.js.map +0 -1
- package/dist/components/CodeBlock/index.d.ts +0 -3
- package/dist/components/CodeBlock/index.d.ts.map +0 -1
- package/dist/components/CodeBlock/index.js +0 -58
- package/dist/components/CodeBlock/index.js.map +0 -1
- package/dist/components/Fold/examples/01-basic-fold.d.ts +0 -6
- package/dist/components/Fold/examples/01-basic-fold.d.ts.map +0 -1
- package/dist/components/Fold/examples/01-basic-fold.js +0 -11
- package/dist/components/Fold/examples/01-basic-fold.js.map +0 -1
- package/dist/components/Fold/examples/index.d.ts +0 -3
- package/dist/components/Fold/examples/index.d.ts.map +0 -1
- package/dist/components/Fold/examples/index.js +0 -4
- package/dist/components/Fold/examples/index.js.map +0 -1
- package/dist/components/Fold/examples.json +0 -7
- package/dist/components/Fold/index.d.ts +0 -6
- package/dist/components/Fold/index.d.ts.map +0 -1
- package/dist/components/Fold/index.js +0 -68
- package/dist/components/Fold/index.js.map +0 -1
- package/dist/components/Group/examples/02-active-buttons.d.ts +0 -6
- package/dist/components/Group/examples/02-active-buttons.d.ts.map +0 -1
- package/dist/components/Group/examples/02-active-buttons.js +0 -13
- package/dist/components/Group/examples/02-active-buttons.js.map +0 -1
- package/dist/components/Layout/index.d.ts +0 -5
- package/dist/components/Layout/index.d.ts.map +0 -1
- package/dist/components/Layout/index.js +0 -85
- package/dist/components/Layout/index.js.map +0 -1
- package/dist/components/Toast/examples/03-destructive-toast.d.ts +0 -6
- package/dist/components/Toast/examples/03-destructive-toast.d.ts.map +0 -1
- package/dist/components/Toast/examples/03-destructive-toast.js +0 -15
- package/dist/components/Toast/examples/03-destructive-toast.js.map +0 -1
- package/dist/patterns/content/feature-grid/example.d.ts +0 -6
- package/dist/patterns/content/feature-grid/example.d.ts.map +0 -1
- package/dist/patterns/content/feature-grid/example.js +0 -44
- package/dist/patterns/content/feature-grid/example.js.map +0 -1
- package/dist/patterns/content/feature-grid/metadata.json +0 -17
- package/dist/patterns/content/pricing-cards/example.d.ts +0 -6
- package/dist/patterns/content/pricing-cards/example.d.ts.map +0 -1
- package/dist/patterns/content/pricing-cards/example.js +0 -65
- package/dist/patterns/content/pricing-cards/example.js.map +0 -1
- package/dist/patterns/content/pricing-cards/metadata.json +0 -17
- package/dist/patterns/forms/settings-form-layout/example.d.ts +0 -6
- package/dist/patterns/forms/settings-form-layout/example.d.ts.map +0 -1
- package/dist/patterns/forms/settings-form-layout/example.js +0 -11
- package/dist/patterns/forms/settings-form-layout/example.js.map +0 -1
- package/dist/patterns/forms/settings-form-layout/metadata.json +0 -17
- package/dist/patterns/hero-landing/hero-with-cta/example.d.ts +0 -6
- package/dist/patterns/hero-landing/hero-with-cta/example.d.ts.map +0 -1
- package/dist/patterns/hero-landing/hero-with-cta/example.js +0 -11
- package/dist/patterns/hero-landing/hero-with-cta/example.js.map +0 -1
- package/dist/patterns/hero-landing/hero-with-cta/metadata.json +0 -17
- package/dist/patterns/navigation/sticky-header/example.d.ts +0 -6
- package/dist/patterns/navigation/sticky-header/example.d.ts.map +0 -1
- package/dist/patterns/navigation/sticky-header/example.js +0 -12
- package/dist/patterns/navigation/sticky-header/example.js.map +0 -1
- package/dist/patterns/navigation/sticky-header/metadata.json +0 -17
- package/dist/styles.css +0 -2042
- package/src/components/Path/examples/01-basic-breadcrumbs.tsx +0 -17
- package/src/providers/Theme/examples/01-provider-setup.tsx +0 -37
- package/src/providers/Theme/examples/02-toggle-component.tsx +0 -52
- package/src/providers/Theme/examples/03-advanced-patterns.tsx +0 -138
- package/src/providers/Theme/examples/index.ts +0 -3
- package/src/src/generated-styles.ts +0 -1359
package/src/registry.ts
CHANGED
|
@@ -4,7 +4,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
4
4
|
anchor: {
|
|
5
5
|
id: "anchor",
|
|
6
6
|
name: "Anchor",
|
|
7
|
-
description: "Styled link with
|
|
7
|
+
description: "Styled link with animated underline and hover popover preview.",
|
|
8
8
|
category: "information",
|
|
9
9
|
source: {
|
|
10
10
|
"packageName": "ui-lab-components",
|
|
@@ -53,7 +53,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
53
53
|
banner: {
|
|
54
54
|
id: "banner",
|
|
55
55
|
name: "Banner",
|
|
56
|
-
description: "Full-width
|
|
56
|
+
description: "Full-width strip for surfacing alerts, notices, and messages.",
|
|
57
57
|
category: "information",
|
|
58
58
|
source: {
|
|
59
59
|
"packageName": "ui-lab-components",
|
|
@@ -140,7 +140,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
140
140
|
code: {
|
|
141
141
|
id: "code",
|
|
142
142
|
name: "Code",
|
|
143
|
-
description: "
|
|
143
|
+
description: "Displays syntax-highlighted code with a built-in copy button.",
|
|
144
144
|
category: "display",
|
|
145
145
|
experimental: true,
|
|
146
146
|
source: {
|
|
@@ -178,11 +178,6 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
178
178
|
"title": "Opacity Slider",
|
|
179
179
|
"description": "Color picker with opacity/alpha slider enabled for transparent color selection.",
|
|
180
180
|
"code": "import React, { useState } from 'react';\nimport { Color } from 'ui-lab-components';\n\nexport default function Example() {\n const [color, setColor] = useState('rgba(106, 90, 205, 0.75)');\n\n return (\n <div className=\"p-4 space-y-4\">\n <div>\n <p className=\"text-sm text-foreground-300 mb-3\">Selected color: <code className=\"text-accent-500 font-mono\">{color}</code></p>\n <Color\n value={color}\n onChange={setColor}\n showOpacity\n format=\"rgb\"\n defaultValue=\"rgba(106, 90, 205, 0.75)\"\n />\n </div>\n </div>\n );\n}"
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
"title": "Format Switching",
|
|
184
|
-
"description": "Color picker with format toggle between hex and RGB to copy colors in different formats.",
|
|
185
|
-
"code": "import React, { useState } from 'react';\nimport { Color } from 'ui-lab-components';\n\nexport default function Example() {\n const [color, setColor] = useState('#3B82F6');\n const [format, setFormat] = useState<'hex' | 'rgb'>('hex');\n\n const handleFormatChange = () => {\n setFormat(format === 'hex' ? 'rgb' : 'hex');\n };\n\n return (\n <div className=\"p-4 space-y-4\">\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-sm text-foreground-300\">\n Selected color: <code className=\"text-accent-500 font-mono\">{color}</code>\n </p>\n <button\n onClick={handleFormatChange}\n className=\"px-3 py-1 text-xs bg-foreground-400 hover:bg-foreground-400 text-foreground-100 rounded transition-colors\"\n >\n Format: {format.toUpperCase()}\n </button>\n </div>\n <Color\n value={color}\n onChange={setColor}\n format={format}\n defaultValue=\"#3B82F6\"\n />\n </div>\n <div className=\"mt-4 p-3 bg-foreground-400 rounded border border-foreground-400\">\n <p className=\"text-xs text-foreground-300\">\n <strong>Tip:</strong> Click the format button to switch between hex and RGB output formats.\n This is useful when you need to copy colors in different formats for different contexts.\n </p>\n </div>\n </div>\n );\n}"
|
|
186
181
|
}
|
|
187
182
|
],
|
|
188
183
|
},
|
|
@@ -205,7 +200,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
205
200
|
{
|
|
206
201
|
"title": "Basic Command Palette",
|
|
207
202
|
"description": "A searchable command palette with keyboard shortcuts. Use Cmd+K (or Ctrl+K) to open.",
|
|
208
|
-
"code": "'use client';\n\nimport React from 'react';\nimport { Command, Button, Badge } from 'ui-lab-components';\n\nexport default function Example() {\n const [open, setOpen] = React.useState(false);\n\n const commands = [\n {\n id: 'search',\n label: 'Search',\n description: 'Search documents',\n shortcut: '⌘F',\n action: () => console.log('Search'),\n },\n {\n id: 'create',\n label: 'Create new',\n description: 'Create a new document',\n shortcut: '⌘N',\n action: () => console.log('Create'),\n },\n {\n id: 'settings',\n label: 'Settings',\n description: 'Open application settings',\n shortcut: '⌘,',\n action: () => console.log('Settings'),\n },\n ];\n\n return (\n <>\n <Button onClick={() => setOpen(true)}>\n Open Palette (⌘K)\n </Button>\n <Command\n open={open}\n onOpenChange={setOpen}\n items={commands}\n >\n <Command.
|
|
203
|
+
"code": "'use client';\n\nimport React from 'react';\nimport { Command, Button, Badge } from 'ui-lab-components';\n\nexport default function Example() {\n const [open, setOpen] = React.useState(false);\n\n const commands = [\n {\n id: 'search',\n label: 'Search',\n description: 'Search documents',\n shortcut: '⌘F',\n action: () => console.log('Search'),\n },\n {\n id: 'create',\n label: 'Create new',\n description: 'Create a new document',\n shortcut: '⌘N',\n action: () => console.log('Create'),\n },\n {\n id: 'settings',\n label: 'Settings',\n description: 'Open application settings',\n shortcut: '⌘,',\n action: () => console.log('Settings'),\n },\n ];\n\n return (\n <>\n <Button onClick={() => setOpen(true)}>\n Open Palette (⌘K)\n </Button>\n <Command\n open={open}\n onOpenChange={setOpen}\n items={commands}\n >\n <Command.Input placeholder=\"Search commands...\" />\n <Command.List>\n <Command.Groups\n renderCategory={(category) =>\n category ? <Command.Category>{category}</Command.Category> : null\n }\n renderItem={(cmd) => (\n <Command.Item\n key={cmd.id}\n value={cmd.id}\n textValue={cmd.label}\n action={cmd.action}\n hint={cmd.shortcut}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div>\n <div style={{ fontWeight: 500 }}>{cmd.label}</div>\n {cmd.description && (\n <div style={{ fontSize: '0.875em', opacity: 0.7 }}>\n {cmd.description}\n </div>\n )}\n </div>\n </div>\n </Command.Item>\n )}\n />\n </Command.List>\n </Command>\n </>\n );\n}"
|
|
209
204
|
}
|
|
210
205
|
],
|
|
211
206
|
},
|
|
@@ -235,7 +230,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
235
230
|
date: {
|
|
236
231
|
id: "date",
|
|
237
232
|
name: "Date",
|
|
238
|
-
description: "
|
|
233
|
+
description: "Calendar date picker with keyboard navigation and accessibility.",
|
|
239
234
|
category: "input",
|
|
240
235
|
source: {
|
|
241
236
|
"packageName": "ui-lab-components",
|
|
@@ -270,7 +265,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
270
265
|
{
|
|
271
266
|
"title": "Pattern Variants",
|
|
272
267
|
"description": "Dividers support three distinct pattern styles: solid for continuous lines, dashed for rectangular segments, and dotted for circular dots.",
|
|
273
|
-
"code": "import { Divider } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <div className=\"space-y-6 w-full\">\n <div className=\"space-y-2\">\n <span className=\"text-
|
|
268
|
+
"code": "import { Divider } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <div className=\"space-y-6 w-full\">\n <div className=\"space-y-2\">\n <span className=\"text-sm text-foreground-400\">Solid</span>\n <Divider variant=\"solid\" />\n </div>\n <div className=\"space-y-2\">\n <span className=\"text-sm text-foreground-400\">Dashed</span>\n <Divider variant=\"dashed\" />\n </div>\n <div className=\"space-y-2\">\n <span className=\"text-sm text-foreground-400\">Dotted</span>\n <Divider variant=\"dotted\" />\n </div>\n </div>\n );\n}"
|
|
274
269
|
},
|
|
275
270
|
{
|
|
276
271
|
"title": "Vertical Orientation",
|
|
@@ -305,7 +300,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
305
300
|
flex: {
|
|
306
301
|
id: "flex",
|
|
307
302
|
name: "Flex",
|
|
308
|
-
description: "
|
|
303
|
+
description: "Flexbox layout primitive with container query support for UIs.",
|
|
309
304
|
category: "layout",
|
|
310
305
|
source: {
|
|
311
306
|
"packageName": "ui-lab-components",
|
|
@@ -359,7 +354,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
359
354
|
gallery: {
|
|
360
355
|
id: "gallery",
|
|
361
356
|
name: "Gallery",
|
|
362
|
-
description: "Responsive grid layout for displaying
|
|
357
|
+
description: "Responsive grid layout for displaying images and media items.",
|
|
363
358
|
category: "layout",
|
|
364
359
|
source: {
|
|
365
360
|
"packageName": "ui-lab-components",
|
|
@@ -395,7 +390,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
395
390
|
{
|
|
396
391
|
"title": "Basic Grid",
|
|
397
392
|
"description": "A simple grid layout with multiple cells. Use this for organizing content in a responsive grid structure.",
|
|
398
|
-
"code": "import React from 'react';\nimport { Grid } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Grid columns
|
|
393
|
+
"code": "import React from 'react';\nimport { Grid } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Grid columns={3} gap=\"md\">\n <div style={{ padding: '1rem', background: '#e0e0e0' }}>Cell 1</div>\n <div style={{ padding: '1rem', background: '#d0d0d0' }}>Cell 2</div>\n <div style={{ padding: '1rem', background: '#c0c0c0' }}>Cell 3</div>\n <div style={{ padding: '1rem', background: '#b0b0b0' }}>Cell 4</div>\n <div style={{ padding: '1rem', background: '#a0a0a0' }}>Cell 5</div>\n <div style={{ padding: '1rem', background: '#909090' }}>Cell 6</div>\n </Grid>\n );\n}"
|
|
399
394
|
}
|
|
400
395
|
],
|
|
401
396
|
},
|
|
@@ -403,7 +398,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
403
398
|
group: {
|
|
404
399
|
id: "group",
|
|
405
400
|
name: "Group",
|
|
406
|
-
description: "
|
|
401
|
+
description: "Groups Button, Input, and Select with unified border styling.",
|
|
407
402
|
category: "composition",
|
|
408
403
|
experimental: true,
|
|
409
404
|
source: {
|
|
@@ -445,7 +440,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
445
440
|
{
|
|
446
441
|
"title": "Validation States",
|
|
447
442
|
"description": "Input fields with error and success validation states, including helper text for user feedback.",
|
|
448
|
-
"code": "import React from 'react';\nimport { Input, Label } from 'ui-lab-components';\nimport { FaCircleExclamation, FaCircleCheck } from 'react-icons/fa6';\n\nexport default function Example() {\n return (\n <div className=\"flex flex-col gap-6 w-full max-w-sm\">\n {/* Error State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label error helperText=\"Please enter a valid email address\" helperTextError>\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n error\n defaultValue=\"invalid-email\"\n
|
|
443
|
+
"code": "import React from 'react';\nimport { Input, Label } from 'ui-lab-components';\nimport { FaCircleExclamation, FaCircleCheck } from 'react-icons/fa6';\n\nexport default function Example() {\n return (\n <div className=\"flex flex-col gap-6 w-full max-w-sm\">\n {/* Error State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label error helperText=\"Please enter a valid email address\" helperTextError>\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n error\n defaultValue=\"invalid-email\"\n icon={{ suffix: <FaCircleExclamation className=\"text-danger-600\" size={14} /> }}\n />\n </div>\n\n {/* Success State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label helperText=\"Email address is available\">\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n defaultValue=\"user@example.com\"\n icon={{ suffix: <FaCircleCheck className=\"text-success-600\" size={14} /> }}\n className=\"border-success-600 focus:border-success-600\"\n />\n </div>\n\n {/* Default State with Helper Text */}\n <div className=\"flex flex-col gap-1.5\">\n <Label required helperText=\"We'll never share your email with anyone else.\">\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n />\n </div>\n </div>\n );\n}"
|
|
449
444
|
}
|
|
450
445
|
],
|
|
451
446
|
},
|
|
@@ -475,7 +470,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
475
470
|
list: {
|
|
476
471
|
id: "list",
|
|
477
472
|
name: "List",
|
|
478
|
-
description: "
|
|
473
|
+
description: "Displays item collections with built-in selection and actions.",
|
|
479
474
|
category: "composition",
|
|
480
475
|
experimental: true,
|
|
481
476
|
source: {
|
|
@@ -581,7 +576,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
581
576
|
page: {
|
|
582
577
|
id: "page",
|
|
583
578
|
name: "Page",
|
|
584
|
-
description: "
|
|
579
|
+
description: "Top-level page container with constraints and semantic structure.",
|
|
585
580
|
category: "container",
|
|
586
581
|
experimental: true,
|
|
587
582
|
source: {
|
|
@@ -598,8 +593,8 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
598
593
|
panel: {
|
|
599
594
|
id: "panel",
|
|
600
595
|
name: "Panel",
|
|
601
|
-
description: "
|
|
602
|
-
category: "
|
|
596
|
+
description: "Region container managing header, content, and footer areas.",
|
|
597
|
+
category: "layout",
|
|
603
598
|
experimental: true,
|
|
604
599
|
source: {
|
|
605
600
|
"packageName": "ui-lab-components",
|
|
@@ -626,11 +621,6 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
626
621
|
tags: ["navigation","path","hierarchy","parent-pages"],
|
|
627
622
|
accessibility: {"hasAriaSupport":true,"notes":["Uses nav element with landmark role","Semantic ordered list structure","Current page marked with aria-current","Full keyboard navigation support","Screen reader friendly labels"]},
|
|
628
623
|
examples: [
|
|
629
|
-
{
|
|
630
|
-
"title": "Basic Path",
|
|
631
|
-
"description": "A simple path navigation showing the current page location. Use this to help users understand their position in the site hierarchy.",
|
|
632
|
-
"code": "import { PathItem, Path } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Path>\n <PathItem href=\"/\">Home</PathItem>\n <PathItem href=\"/products\">Products</PathItem>\n <PathItem href=\"/products/electronics\">Electronics</PathItem>\n <PathItem>Laptop</PathItem>\n </Path>\n );\n}"
|
|
633
|
-
},
|
|
634
624
|
{
|
|
635
625
|
"title": "Basic Path",
|
|
636
626
|
"description": "A simple path navigation showing the current page location. Use this to help users understand their position in the site hierarchy.",
|
|
@@ -755,7 +745,7 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
755
745
|
{
|
|
756
746
|
"title": "Searchable Select",
|
|
757
747
|
"description": "A filterable select component with search input. Type to filter through a large list of options.",
|
|
758
|
-
"code": "import React from 'react';\nimport { Select, Searchable } from 'ui-lab-components';\n\nconst countries = [\n { value: 'us', label: 'United States' },\n { value: 'ca', label: 'Canada' },\n { value: 'mx', label: 'Mexico' },\n { value: 'br', label: 'Brazil' },\n { value: 'ar', label: 'Argentina' },\n { value: 'uk', label: 'United Kingdom' },\n { value: 'fr', label: 'France' },\n { value: 'de', label: 'Germany' },\n { value: 'it', label: 'Italy' },\n { value: 'es', label: 'Spain' },\n { value: 'pt', label: 'Portugal' },\n { value: 'nl', label: 'Netherlands' },\n { value: 'be', label: 'Belgium' },\n { value: 'ch', label: 'Switzerland' },\n { value: 'at', label: 'Austria' },\n { value: 'se', label: 'Sweden' },\n { value: 'no', label: 'Norway' },\n { value: 'dk', label: 'Denmark' },\n { value: 'fi', label: 'Finland' },\n { value: 'pl', label: 'Poland' },\n { value: 'jp', label: 'Japan' },\n { value: 'cn', label: 'China' },\n { value: 'kr', label: 'South Korea' },\n { value: 'in', label: 'India' },\n { value: 'au', label: 'Australia' },\n { value: 'nz', label: 'New Zealand' },\n];\n\nexport default function Example() {\n return (\n <Select>\n <Searchable.
|
|
748
|
+
"code": "import React from 'react';\nimport { Select, Searchable } from 'ui-lab-components';\n\nconst countries = [\n { value: 'us', label: 'United States' },\n { value: 'ca', label: 'Canada' },\n { value: 'mx', label: 'Mexico' },\n { value: 'br', label: 'Brazil' },\n { value: 'ar', label: 'Argentina' },\n { value: 'uk', label: 'United Kingdom' },\n { value: 'fr', label: 'France' },\n { value: 'de', label: 'Germany' },\n { value: 'it', label: 'Italy' },\n { value: 'es', label: 'Spain' },\n { value: 'pt', label: 'Portugal' },\n { value: 'nl', label: 'Netherlands' },\n { value: 'be', label: 'Belgium' },\n { value: 'ch', label: 'Switzerland' },\n { value: 'at', label: 'Austria' },\n { value: 'se', label: 'Sweden' },\n { value: 'no', label: 'Norway' },\n { value: 'dk', label: 'Denmark' },\n { value: 'fi', label: 'Finland' },\n { value: 'pl', label: 'Poland' },\n { value: 'jp', label: 'Japan' },\n { value: 'cn', label: 'China' },\n { value: 'kr', label: 'South Korea' },\n { value: 'in', label: 'India' },\n { value: 'au', label: 'Australia' },\n { value: 'nz', label: 'New Zealand' },\n];\n\nexport default function Example() {\n return (\n <Select>\n <Searchable.Input placeholder=\"Search countries...\" />\n <Searchable.Content searchPlaceholder=\"Type to filter...\">\n {countries.map((country) => (\n <Select.Item key={country.value} value={country.value} textValue={country.label}>\n {country.label}\n </Select.Item>\n ))}\n </Searchable.Content>\n </Select>\n );\n}"
|
|
759
749
|
}
|
|
760
750
|
],
|
|
761
751
|
},
|
|
@@ -843,12 +833,12 @@ export const componentRegistry: ComponentRegistry = {
|
|
|
843
833
|
{
|
|
844
834
|
"title": "Basic Tabs",
|
|
845
835
|
"description": "A simple tabbed interface with content switching. Use this to organize related content into separate views.",
|
|
846
|
-
"code": "import React from 'react';\nimport { Tabs
|
|
836
|
+
"code": "import React from 'react';\nimport { Tabs } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Tabs defaultValue=\"overview\">\n <Tabs.List aria-label=\"Content sections\">\n <Tabs.Trigger value=\"overview\">Overview</Tabs.Trigger>\n <Tabs.Trigger value=\"details\">Details</Tabs.Trigger>\n <Tabs.Trigger value=\"settings\">Settings</Tabs.Trigger>\n </Tabs.List>\n <Tabs.Content value=\"overview\">\n <p>Overview content goes here.</p>\n </Tabs.Content>\n <Tabs.Content value=\"details\">\n <p>Details content goes here.</p>\n </Tabs.Content>\n <Tabs.Content value=\"settings\">\n <p>Settings content goes here.</p>\n </Tabs.Content>\n </Tabs>\n );\n}"
|
|
847
837
|
},
|
|
848
838
|
{
|
|
849
839
|
"title": "Vertical Tabs (Sidebar)",
|
|
850
840
|
"description": "A vertical tab layout ideal for settings pages or sidebar navigation. Tabs are stacked vertically with content panels beside them.",
|
|
851
|
-
"code": "import React from 'react';\nimport { Tabs,
|
|
841
|
+
"code": "import React from 'react';\nimport { Tabs, Card } from 'ui-lab-components';\nimport { User, Settings, Bell, Shield } from 'lucide-react';\n\nexport default function Example() {\n return (\n <div className=\"flex items-center justify-center bg-background-950 p-4 min-h-[400px]\">\n <Card className=\"w-full max-w-2xl\">\n <Tabs defaultValue=\"profile\" className=\"flex flex-row\">\n {/* Vertical tab list - styled as sidebar */}\n <Tabs.List\n aria-label=\"Settings sections\"\n className=\"flex-col items-stretch justify-start h-auto w-48 border-r border-background-700 rounded-none bg-transparent p-2\"\n >\n <Tabs.Trigger value=\"profile\" icon={<User className=\"w-4 h-4\" />} className=\"justify-start\">\n Profile\n </Tabs.Trigger>\n <Tabs.Trigger value=\"notifications\" icon={<Bell className=\"w-4 h-4\" />} className=\"justify-start\">\n Notifications\n </Tabs.Trigger>\n <Tabs.Trigger value=\"security\" icon={<Shield className=\"w-4 h-4\" />} className=\"justify-start\">\n Security\n </Tabs.Trigger>\n <Tabs.Trigger value=\"preferences\" icon={<Settings className=\"w-4 h-4\" />} className=\"justify-start\">\n Preferences\n </Tabs.Trigger>\n </Tabs.List>\n\n {/* Content panels */}\n <div className=\"flex-1 p-6\">\n <Tabs.Content value=\"profile\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Profile Settings</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Manage your personal information and how others see you on the platform.\n </p>\n <div className=\"space-y-3\">\n <div className=\"h-10 w-full bg-background-800 rounded border border-background-700\" />\n <div className=\"h-10 w-full bg-background-800 rounded border border-background-700\" />\n <div className=\"h-10 w-2/3 bg-background-800 rounded border border-background-700\" />\n </div>\n </Tabs.Content>\n\n <Tabs.Content value=\"notifications\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Notification Preferences</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Control how and when you receive alerts and updates.\n </p>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-accent-500 rounded\" />\n <div className=\"h-4 w-32 bg-background-800 rounded\" />\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-background-700 rounded\" />\n <div className=\"h-4 w-40 bg-background-800 rounded\" />\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-accent-500 rounded\" />\n <div className=\"h-4 w-28 bg-background-800 rounded\" />\n </div>\n </div>\n </Tabs.Content>\n\n <Tabs.Content value=\"security\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Security Settings</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Protect your account with passwords, two-factor authentication, and more.\n </p>\n <div className=\"space-y-3\">\n <div className=\"p-3 bg-background-800 rounded border border-background-700\">\n <div className=\"h-4 w-24 bg-background-700 rounded mb-2\" />\n <div className=\"h-3 w-48 bg-background-700/50 rounded\" />\n </div>\n <div className=\"p-3 bg-background-800 rounded border border-background-700\">\n <div className=\"h-4 w-32 bg-background-700 rounded mb-2\" />\n <div className=\"h-3 w-40 bg-background-700/50 rounded\" />\n </div>\n </div>\n </Tabs.Content>\n\n <Tabs.Content value=\"preferences\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">General Preferences</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Customize your experience with theme, language, and display options.\n </p>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n </div>\n </Tabs.Content>\n </div>\n </Tabs>\n </Card>\n </div>\n );\n}"
|
|
852
842
|
}
|
|
853
843
|
],
|
|
854
844
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SectionMetadata } from '../../types';
|
|
2
|
+
import type { SectionMetadata } from '../../types.js';
|
|
3
3
|
import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
|
|
4
4
|
import variationsData from './variations.json' with { type: 'json' };
|
|
5
5
|
|
|
@@ -69,7 +69,7 @@ export function SplitCTA() {
|
|
|
69
69
|
{[1, 2, 3].map((i) => (
|
|
70
70
|
<div key={i} className="rounded bg-background-700 p-3 text-center">
|
|
71
71
|
<div className="text-lg font-bold text-accent-500">42K</div>
|
|
72
|
-
<div className="text-
|
|
72
|
+
<div className="text-sm text-foreground-400">Active Users</div>
|
|
73
73
|
</div>
|
|
74
74
|
))}
|
|
75
75
|
</div>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{
|
|
21
21
|
"filename": "index.tsx",
|
|
22
22
|
"language": "typescript",
|
|
23
|
-
"code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { CheckCircle2 } from 'lucide-react';\n\nexport function SplitCTA() {\n const features = [\n 'Instant setup and configuration',\n 'Real-time analytics and reporting',\n 'Dedicated customer support',\n 'Enterprise-grade security',\n ];\n\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n <div className=\"grid gap-8 md:gap-12 md:grid-cols-2 items-center\">\n {/* Left content */}\n <div className=\"order-2 md:order-1\">\n <div className=\"mb-4 inline-block rounded-full bg-accent-500/10 px-4 py-1.5\">\n <span className=\"text-sm font-medium text-accent-600\">Limited Time Offer</span>\n </div>\n\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Get 50% off for the first 3 months\n </h2>\n <p className=\"mb-8 text-lg text-foreground-400\">\n Upgrade your workflow and unlock powerful features that will transform how your team collaborates.\n </p>\n\n <ul className=\"mb-8 space-y-3\">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-center gap-3\">\n <CheckCircle2 className=\"h-5 w-5 flex-shrink-0 text-accent-500\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <Button size=\"lg\" className=\"w-full sm:w-auto\">\n Claim Offer\n </Button>\n <Button variant=\"outline\" size=\"lg\" className=\"w-full sm:w-auto\">\n Learn More\n </Button>\n </div>\n\n <p className=\"mt-6 text-sm text-foreground-400\">\n No credit card needed. Cancel anytime.\n </p>\n </div>\n\n {/* Right visual */}\n <div className=\"order-1 md:order-2\">\n <div className=\"relative\">\n {/* Decorative background */}\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-br from-background-800 to-background-900\" />\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-tr from-accent-500/20 to-accent-600/20\" />\n\n {/* Content */}\n <div className=\"relative rounded-2xl border border-background-700 bg-background-900/50 p-8 backdrop-blur-sm\">\n <div className=\"space-y-4\">\n <div className=\"h-3 w-24 rounded-full bg-background-700\" />\n <div className=\"h-3 w-32 rounded-full bg-background-700\" />\n <div className=\"mt-6 h-32 rounded-md bg-gradient-to-br from-accent-500/30 to-accent-600/30\" />\n <div className=\"grid grid-cols-3 gap-4 pt-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"rounded bg-background-700 p-3 text-center\">\n <div className=\"text-lg font-bold text-accent-500\">42K</div>\n <div className=\"text-
|
|
23
|
+
"code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { CheckCircle2 } from 'lucide-react';\n\nexport function SplitCTA() {\n const features = [\n 'Instant setup and configuration',\n 'Real-time analytics and reporting',\n 'Dedicated customer support',\n 'Enterprise-grade security',\n ];\n\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n <div className=\"grid gap-8 md:gap-12 md:grid-cols-2 items-center\">\n {/* Left content */}\n <div className=\"order-2 md:order-1\">\n <div className=\"mb-4 inline-block rounded-full bg-accent-500/10 px-4 py-1.5\">\n <span className=\"text-sm font-medium text-accent-600\">Limited Time Offer</span>\n </div>\n\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Get 50% off for the first 3 months\n </h2>\n <p className=\"mb-8 text-lg text-foreground-400\">\n Upgrade your workflow and unlock powerful features that will transform how your team collaborates.\n </p>\n\n <ul className=\"mb-8 space-y-3\">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-center gap-3\">\n <CheckCircle2 className=\"h-5 w-5 flex-shrink-0 text-accent-500\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <Button size=\"lg\" className=\"w-full sm:w-auto\">\n Claim Offer\n </Button>\n <Button variant=\"outline\" size=\"lg\" className=\"w-full sm:w-auto\">\n Learn More\n </Button>\n </div>\n\n <p className=\"mt-6 text-sm text-foreground-400\">\n No credit card needed. Cancel anytime.\n </p>\n </div>\n\n {/* Right visual */}\n <div className=\"order-1 md:order-2\">\n <div className=\"relative\">\n {/* Decorative background */}\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-br from-background-800 to-background-900\" />\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-tr from-accent-500/20 to-accent-600/20\" />\n\n {/* Content */}\n <div className=\"relative rounded-2xl border border-background-700 bg-background-900/50 p-8 backdrop-blur-sm\">\n <div className=\"space-y-4\">\n <div className=\"h-3 w-24 rounded-full bg-background-700\" />\n <div className=\"h-3 w-32 rounded-full bg-background-700\" />\n <div className=\"mt-6 h-32 rounded-md bg-gradient-to-br from-accent-500/30 to-accent-600/30\" />\n <div className=\"grid grid-cols-3 gap-4 pt-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"rounded bg-background-700 p-3 text-center\">\n <div className=\"text-lg font-bold text-accent-500\">42K</div>\n <div className=\"text-sm text-foreground-400\">Active Users</div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Split CTA',\n description: 'Two-column layout with promotional content on left and visual mockup on right',\n demoPath: 'cta-split',\n};",
|
|
24
24
|
"isEntryPoint": true
|
|
25
25
|
}
|
|
26
26
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SectionMetadata } from '../../types';
|
|
2
|
+
import type { SectionMetadata } from '../../types.js';
|
|
3
3
|
import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
|
|
4
4
|
import variationsData from './variations.json' with { type: 'json' };
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SectionMetadata } from '../../types';
|
|
2
|
+
import type { SectionMetadata } from '../../types.js';
|
|
3
3
|
import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
|
|
4
4
|
import variationsData from './variations.json' with { type: 'json' };
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SectionMetadata } from '../../types';
|
|
2
|
+
import type { SectionMetadata } from '../../types.js';
|
|
3
3
|
import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
|
|
4
4
|
import variationsData from './variations.json' with { type: 'json' };
|
|
5
5
|
|
|
@@ -83,7 +83,7 @@ export function PricingCards() {
|
|
|
83
83
|
>
|
|
84
84
|
{plan.highlighted && (
|
|
85
85
|
<div className="absolute -top-4 left-1/2 -translate-x-1/2">
|
|
86
|
-
<span className="rounded-full bg-accent-500 px-4 py-1 text-
|
|
86
|
+
<span className="rounded-full bg-accent-500 px-4 py-1 text-sm font-semibold text-white">
|
|
87
87
|
Most Popular
|
|
88
88
|
</span>
|
|
89
89
|
</div>
|
|
@@ -72,7 +72,7 @@ export function PricingComparison() {
|
|
|
72
72
|
{plan.price ? (
|
|
73
73
|
<div className="text-lg font-bold text-accent-500">
|
|
74
74
|
${plan.price}
|
|
75
|
-
<span className="text-
|
|
75
|
+
<span className="text-sm text-foreground-400">/mo</span>
|
|
76
76
|
</div>
|
|
77
77
|
) : (
|
|
78
78
|
<div className="text-sm text-foreground-400">Custom</div>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
{
|
|
8
8
|
"filename": "index.tsx",
|
|
9
9
|
"language": "typescript",
|
|
10
|
-
"code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check } from 'lucide-react';\n\nconst pricingPlans = [\n {\n id: 1,\n name: 'Starter',\n description: 'Perfect for getting started',\n price: 29,\n period: 'month',\n cta: 'Get Started',\n highlighted: false,\n features: [\n 'Up to 1,000 requests/month',\n 'Basic analytics',\n 'Community support',\n 'API access',\n ],\n },\n {\n id: 2,\n name: 'Professional',\n description: 'Best for growing teams',\n price: 99,\n period: 'month',\n cta: 'Start Free Trial',\n highlighted: true,\n features: [\n 'Up to 100,000 requests/month',\n 'Advanced analytics',\n 'Priority email support',\n 'API access',\n 'Custom integrations',\n 'Team collaboration',\n ],\n },\n {\n id: 3,\n name: 'Enterprise',\n description: 'For large-scale operations',\n price: null,\n period: 'contact',\n cta: 'Contact Sales',\n highlighted: false,\n features: [\n 'Unlimited requests',\n 'Real-time analytics',\n '24/7 dedicated support',\n 'Custom API endpoints',\n 'Advanced security',\n 'SLA guarantee',\n ],\n },\n];\n\nexport function PricingCards() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n {/* Header */}\n <div className=\"mb-12 text-center md:mb-16\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Simple, transparent pricing\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Choose the perfect plan for your needs. Always flexible to scale.\n </p>\n </div>\n\n {/* Pricing Cards */}\n <div className=\"grid gap-8 md:grid-cols-3 items-start\">\n {pricingPlans.map((plan) => (\n <div\n key={plan.id}\n className={`relative rounded-2xl p-8 transition-all ${\n plan.highlighted\n ? 'border border-accent-500 bg-gradient-to-br from-accent-500/10 to-accent-600/5 ring-1 ring-accent-500/20'\n : 'border border-background-700 bg-background-900/50 hover:border-background-600'\n }`}\n >\n {plan.highlighted && (\n <div className=\"absolute -top-4 left-1/2 -translate-x-1/2\">\n <span className=\"rounded-full bg-accent-500 px-4 py-1 text-
|
|
10
|
+
"code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check } from 'lucide-react';\n\nconst pricingPlans = [\n {\n id: 1,\n name: 'Starter',\n description: 'Perfect for getting started',\n price: 29,\n period: 'month',\n cta: 'Get Started',\n highlighted: false,\n features: [\n 'Up to 1,000 requests/month',\n 'Basic analytics',\n 'Community support',\n 'API access',\n ],\n },\n {\n id: 2,\n name: 'Professional',\n description: 'Best for growing teams',\n price: 99,\n period: 'month',\n cta: 'Start Free Trial',\n highlighted: true,\n features: [\n 'Up to 100,000 requests/month',\n 'Advanced analytics',\n 'Priority email support',\n 'API access',\n 'Custom integrations',\n 'Team collaboration',\n ],\n },\n {\n id: 3,\n name: 'Enterprise',\n description: 'For large-scale operations',\n price: null,\n period: 'contact',\n cta: 'Contact Sales',\n highlighted: false,\n features: [\n 'Unlimited requests',\n 'Real-time analytics',\n '24/7 dedicated support',\n 'Custom API endpoints',\n 'Advanced security',\n 'SLA guarantee',\n ],\n },\n];\n\nexport function PricingCards() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n {/* Header */}\n <div className=\"mb-12 text-center md:mb-16\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Simple, transparent pricing\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Choose the perfect plan for your needs. Always flexible to scale.\n </p>\n </div>\n\n {/* Pricing Cards */}\n <div className=\"grid gap-8 md:grid-cols-3 items-start\">\n {pricingPlans.map((plan) => (\n <div\n key={plan.id}\n className={`relative rounded-2xl p-8 transition-all ${\n plan.highlighted\n ? 'border border-accent-500 bg-gradient-to-br from-accent-500/10 to-accent-600/5 ring-1 ring-accent-500/20'\n : 'border border-background-700 bg-background-900/50 hover:border-background-600'\n }`}\n >\n {plan.highlighted && (\n <div className=\"absolute -top-4 left-1/2 -translate-x-1/2\">\n <span className=\"rounded-full bg-accent-500 px-4 py-1 text-sm font-semibold text-white\">\n Most Popular\n </span>\n </div>\n )}\n\n <h3 className=\"mb-2 text-2xl font-bold text-foreground-900\">\n {plan.name}\n </h3>\n <p className=\"mb-6 text-foreground-400\">{plan.description}</p>\n\n {/* Pricing */}\n <div className=\"mb-8\">\n {plan.price ? (\n <>\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-4xl font-bold text-foreground-900\">\n ${plan.price}\n </span>\n <span className=\"text-foreground-400\">/{plan.period}</span>\n </div>\n </>\n ) : (\n <div className=\"text-lg font-semibold text-foreground-900\">\n Custom pricing\n </div>\n )}\n </div>\n\n {/* CTA */}\n <Button\n className=\"mb-8 w-full\"\n variant={plan.highlighted ? 'default' : 'outline'}\n >\n {plan.cta}\n </Button>\n\n {/* Features */}\n <div className=\"border-t border-background-700 pt-8\">\n <ul className=\"space-y-4\">\n {plan.features.map((feature, index) => (\n <li key={index} className=\"flex items-start gap-3\">\n <Check className=\"h-5 w-5 flex-shrink-0 text-accent-500 mt-0.5\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer note */}\n <div className=\"mt-12 text-center\">\n <p className=\"text-foreground-400\">\n All plans include a 14-day free trial. No credit card required.\n </p>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Pricing Cards',\n description: '3-column pricing tier cards with features list and highlighted popular plan',\n demoPath: 'pricing-cards',\n};",
|
|
11
11
|
"isEntryPoint": true
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{
|
|
21
21
|
"filename": "index.tsx",
|
|
22
22
|
"language": "typescript",
|
|
23
|
-
"code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check, X } from 'lucide-react';\n\nconst comparisonData = {\n plans: [\n { id: 1, name: 'Starter', price: 29 },\n { id: 2, name: 'Professional', price: 99 },\n { id: 3, name: 'Enterprise', price: null },\n ],\n features: [\n {\n category: 'Core Features',\n items: [\n { name: 'API Requests', starter: '1K/month', professional: '100K/month', enterprise: 'Unlimited' },\n { name: 'Rate Limits', starter: '10 req/sec', professional: '100 req/sec', enterprise: 'Custom' },\n { name: 'Data Retention', starter: '30 days', professional: '90 days', enterprise: 'Unlimited' },\n { name: 'Webhook Support', starter: true, professional: true, enterprise: true },\n ],\n },\n {\n category: 'Analytics & Reporting',\n items: [\n { name: 'Basic Analytics', starter: true, professional: true, enterprise: true },\n { name: 'Advanced Analytics', starter: false, professional: true, enterprise: true },\n { name: 'Custom Reports', starter: false, professional: true, enterprise: true },\n { name: 'Real-time Dashboards', starter: false, professional: false, enterprise: true },\n ],\n },\n {\n category: 'Support & Security',\n items: [\n { name: 'Email Support', starter: true, professional: true, enterprise: true },\n { name: 'Priority Support', starter: false, professional: true, enterprise: true },\n { name: '24/7 Phone Support', starter: false, professional: false, enterprise: true },\n { name: 'SSO & SAML', starter: false, professional: false, enterprise: true },\n ],\n },\n ],\n};\n\nexport function PricingComparison() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-7xl\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Compare all plans\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Find the perfect plan with detailed feature comparison\n </p>\n </div>\n\n {/* Comparison Table */}\n <div className=\"overflow-x-auto rounded-2xl border border-background-700 bg-background-900/50\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-background-700\">\n <th className=\"px-6 py-4 text-left text-sm font-semibold text-foreground-900\">\n Features\n </th>\n {comparisonData.plans.map((plan) => (\n <th\n key={plan.id}\n className=\"px-6 py-4 text-center text-sm font-semibold text-foreground-900\"\n >\n <div className=\"mb-2\">{plan.name}</div>\n {plan.price ? (\n <div className=\"text-lg font-bold text-accent-500\">\n ${plan.price}\n <span className=\"text-
|
|
23
|
+
"code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check, X } from 'lucide-react';\n\nconst comparisonData = {\n plans: [\n { id: 1, name: 'Starter', price: 29 },\n { id: 2, name: 'Professional', price: 99 },\n { id: 3, name: 'Enterprise', price: null },\n ],\n features: [\n {\n category: 'Core Features',\n items: [\n { name: 'API Requests', starter: '1K/month', professional: '100K/month', enterprise: 'Unlimited' },\n { name: 'Rate Limits', starter: '10 req/sec', professional: '100 req/sec', enterprise: 'Custom' },\n { name: 'Data Retention', starter: '30 days', professional: '90 days', enterprise: 'Unlimited' },\n { name: 'Webhook Support', starter: true, professional: true, enterprise: true },\n ],\n },\n {\n category: 'Analytics & Reporting',\n items: [\n { name: 'Basic Analytics', starter: true, professional: true, enterprise: true },\n { name: 'Advanced Analytics', starter: false, professional: true, enterprise: true },\n { name: 'Custom Reports', starter: false, professional: true, enterprise: true },\n { name: 'Real-time Dashboards', starter: false, professional: false, enterprise: true },\n ],\n },\n {\n category: 'Support & Security',\n items: [\n { name: 'Email Support', starter: true, professional: true, enterprise: true },\n { name: 'Priority Support', starter: false, professional: true, enterprise: true },\n { name: '24/7 Phone Support', starter: false, professional: false, enterprise: true },\n { name: 'SSO & SAML', starter: false, professional: false, enterprise: true },\n ],\n },\n ],\n};\n\nexport function PricingComparison() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-7xl\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Compare all plans\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Find the perfect plan with detailed feature comparison\n </p>\n </div>\n\n {/* Comparison Table */}\n <div className=\"overflow-x-auto rounded-2xl border border-background-700 bg-background-900/50\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-background-700\">\n <th className=\"px-6 py-4 text-left text-sm font-semibold text-foreground-900\">\n Features\n </th>\n {comparisonData.plans.map((plan) => (\n <th\n key={plan.id}\n className=\"px-6 py-4 text-center text-sm font-semibold text-foreground-900\"\n >\n <div className=\"mb-2\">{plan.name}</div>\n {plan.price ? (\n <div className=\"text-lg font-bold text-accent-500\">\n ${plan.price}\n <span className=\"text-sm text-foreground-400\">/mo</span>\n </div>\n ) : (\n <div className=\"text-sm text-foreground-400\">Custom</div>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {comparisonData.features.map((category, categoryIndex) => (\n <React.Fragment key={categoryIndex}>\n <tr className=\"border-t border-background-700 bg-background-900/30\">\n <td\n colSpan={4}\n className=\"px-6 py-4 text-sm font-semibold text-foreground-700\"\n >\n {category.category}\n </td>\n </tr>\n {category.items.map((item, itemIndex) => (\n <tr key={itemIndex} className=\"border-t border-background-700/50\">\n <td className=\"px-6 py-4 text-sm text-foreground-700\">\n {item.name}\n </td>\n {comparisonData.plans.map((plan) => {\n const value =\n item[plan.name.toLowerCase() as keyof typeof item];\n return (\n <td key={plan.id} className=\"px-6 py-4 text-center\">\n {typeof value === 'boolean' ? (\n value ? (\n <Check className=\"mx-auto h-5 w-5 text-accent-500\" />\n ) : (\n <X className=\"mx-auto h-5 w-5 text-foreground-400\" />\n )\n ) : (\n <span className=\"text-sm text-foreground-700\">\n {value}\n </span>\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </React.Fragment>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* CTA Section */}\n <div className=\"mt-12 rounded-2xl border border-background-700 bg-background-900/50 p-8 text-center\">\n <h3 className=\"mb-4 text-2xl font-bold text-foreground-900\">\n Ready to get started?\n </h3>\n <p className=\"mb-6 text-foreground-400\">\n Choose your plan and start building today. All plans include a 14-day free trial.\n </p>\n <div className=\"flex flex-col gap-3 sm:flex-row sm:justify-center\">\n <Button variant=\"outline\">View Starter</Button>\n <Button>View Professional</Button>\n <Button variant=\"outline\">Contact Sales</Button>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Pricing Comparison',\n description: 'Feature comparison table showing all plans with detailed breakdown',\n demoPath: 'pricing-comparison',\n};",
|
|
24
24
|
"isEntryPoint": true
|
|
25
25
|
}
|
|
26
26
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SectionMetadata } from '../../types';
|
|
2
|
+
import type { SectionMetadata } from '../../types.js';
|
|
3
3
|
import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
|
|
4
4
|
import variationsData from './variations.json' with { type: 'json' };
|
|
5
5
|
|
|
@@ -84,14 +84,14 @@ export function groupSectionsByCategory(sections: Array<{ id: string; category:
|
|
|
84
84
|
return grouped;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
function getSectionsInCategory(
|
|
88
88
|
sections: Array<{ id: string; category: SectionCategoryId }>,
|
|
89
89
|
categoryId: SectionCategoryId
|
|
90
90
|
) {
|
|
91
91
|
return sections.filter(s => s.category === categoryId);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
function getCategoriesWithSections(
|
|
95
95
|
sections: Array<{ id: string; category: SectionCategoryId }>
|
|
96
96
|
): SectionCategoryDefinition[] {
|
|
97
97
|
const grouped = groupSectionsByCategory(sections);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { StarterMetadata } from '../../types';
|
|
2
|
+
import type { StarterMetadata } from '../../types.js';
|
|
3
3
|
|
|
4
4
|
const baseMetadata = {
|
|
5
5
|
id: 'nextjs-basic',
|
|
@@ -118,10 +118,10 @@ export function getPreview(): React.ReactNode {
|
|
|
118
118
|
</svg>
|
|
119
119
|
<div>
|
|
120
120
|
<div className="text-sm font-semibold text-foreground-50">Next.js</div>
|
|
121
|
-
<div className="text-
|
|
121
|
+
<div className="text-sm text-foreground-400">App Router + TypeScript</div>
|
|
122
122
|
</div>
|
|
123
123
|
</div>
|
|
124
|
-
<div className="flex-1 border border-background-700 rounded bg-background-900/50 p-2 text-
|
|
124
|
+
<div className="flex-1 border border-background-700 rounded bg-background-900/50 p-2 text-sm font-mono">
|
|
125
125
|
<div className="text-foreground-300 mb-1">📁 Project Structure</div>
|
|
126
126
|
<div className="pl-2 text-foreground-400 space-y-0.5">
|
|
127
127
|
<div>📄 package.json</div>
|
package/src/types.ts
CHANGED
|
@@ -213,7 +213,7 @@ export interface CategoryDefinition {
|
|
|
213
213
|
iconName: string;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
|
|
216
|
+
interface StarterPreset {
|
|
217
217
|
templateName: 'next' | 'vite' | 'tauri';
|
|
218
218
|
components: string[];
|
|
219
219
|
description: string;
|
|
@@ -272,7 +272,6 @@ export interface SiteComponentExample {
|
|
|
272
272
|
preview: React.ReactNode;
|
|
273
273
|
controls?: ControlDef[];
|
|
274
274
|
renderPreview?: (props: Record<string, any>) => React.ReactNode;
|
|
275
|
-
previewHeight?: string;
|
|
276
275
|
previewLayout?: 'center' | 'start';
|
|
277
276
|
}
|
|
278
277
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { categoryIconConfig } from '../icons-config.js';
|
|
2
2
|
import { categories } from '../categories.js';
|
|
3
|
-
import type { ComponentCategory } from '../types';
|
|
3
|
+
import type { ComponentCategory } from '../types.js';
|
|
4
4
|
|
|
5
5
|
// Generate icon map from config
|
|
6
6
|
const iconMap = Object.fromEntries(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SiteComponentExample } from '@/types';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
interface ExampleData {
|
|
5
5
|
id: string;
|
|
6
6
|
Component: React.ComponentType;
|
|
7
7
|
metadata: {
|
|
@@ -10,7 +10,7 @@ export interface ExampleData {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
interface ExamplesJsonEntry {
|
|
14
14
|
title: string;
|
|
15
15
|
description: string;
|
|
16
16
|
code: string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"02-joined-toggle-buttons.d.ts","sourceRoot":"","sources":["../../../../src/components/Button/examples/02-joined-toggle-buttons.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ;;;CAGpB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,4CAgC9B"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use client';
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { useState } from 'react';
|
|
5
|
-
import { Group } from 'ui-lab-components';
|
|
6
|
-
import { LayoutList, LayoutGrid, Table } from 'lucide-react';
|
|
7
|
-
export const metadata = {
|
|
8
|
-
title: 'Joined Toggle Buttons',
|
|
9
|
-
description: 'Multiple buttons grouped together for view/mode selection. Demonstrates Group component with toggle state.'
|
|
10
|
-
};
|
|
11
|
-
export default function Example() {
|
|
12
|
-
const [viewMode, setViewMode] = useState('list');
|
|
13
|
-
return (_jsx("div", { className: "p-4 space-y-4", children: _jsx("div", { className: "space-y-2", children: _jsxs(Group, { orientation: "horizontal", spacing: "none", children: [_jsxs(Group.Button, { variant: viewMode === 'list' ? 'default' : 'outline', onClick: () => setViewMode('list'), children: [_jsx(LayoutList, { size: 17, className: "mr-2 text-foreground-400" }), "List"] }), _jsxs(Group.Button, { variant: viewMode === 'grid' ? 'default' : 'outline', onClick: () => setViewMode('grid'), children: [_jsx(LayoutGrid, { size: 17, className: "mr-2 text-foreground-400" }), "Grid"] }), _jsxs(Group.Button, { variant: viewMode === 'table' ? 'default' : 'outline', onClick: () => setViewMode('table'), children: [_jsx(Table, { size: 17, className: "mr-2 text-foreground-400" }), "Table"] })] }) }) }));
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=02-joined-toggle-buttons.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"02-joined-toggle-buttons.js","sourceRoot":"","sources":["../../../../src/components/Button/examples/02-joined-toggle-buttons.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,4GAA4G;CAC1H,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,OAAO;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,CACL,cAAK,SAAS,EAAC,eAAe,YAC5B,cAAK,SAAS,EAAC,WAAW,YACxB,MAAC,KAAK,IAAC,WAAW,EAAC,YAAY,EAAC,OAAO,EAAC,MAAM,aAC5C,MAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAElC,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0BAA0B,GAAG,YAEhD,EACf,MAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAElC,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0BAA0B,GAAG,YAEhD,EACf,MAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACrD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,aAEnC,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0BAA0B,GAAG,aAE3C,IACT,GACJ,GACF,CACP,CAAA;AACH,CAAC"}
|