shelving 1.236.0 → 1.236.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/api/cache/APICache.d.ts +69 -6
- package/api/cache/APICache.js +61 -5
- package/api/cache/EndpointCache.d.ts +75 -7
- package/api/cache/EndpointCache.js +75 -7
- package/api/endpoint/Endpoint.d.ts +141 -25
- package/api/endpoint/Endpoint.js +55 -9
- package/api/endpoint/util.d.ts +28 -6
- package/api/provider/APIProvider.d.ts +58 -14
- package/api/provider/APIProvider.js +24 -2
- package/api/provider/CachedAPIProvider.d.ts +58 -5
- package/api/provider/CachedAPIProvider.js +58 -6
- package/api/provider/ClientAPIProvider.d.ts +80 -4
- package/api/provider/ClientAPIProvider.js +75 -4
- package/api/provider/DebugAPIProvider.d.ts +40 -1
- package/api/provider/DebugAPIProvider.js +40 -1
- package/api/provider/JSONAPIProvider.d.ts +18 -2
- package/api/provider/JSONAPIProvider.js +18 -2
- package/api/provider/LoggingAPIProvider.d.ts +25 -2
- package/api/provider/LoggingAPIProvider.js +25 -2
- package/api/provider/MockAPIProvider.d.ts +72 -1
- package/api/provider/MockAPIProvider.js +60 -4
- package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
- package/api/provider/MockEndpointAPIProvider.js +9 -0
- package/api/provider/ThroughAPIProvider.d.ts +67 -1
- package/api/provider/ThroughAPIProvider.js +67 -1
- package/api/provider/ValidationAPIProvider.d.ts +32 -1
- package/api/provider/ValidationAPIProvider.js +32 -1
- package/api/provider/XMLAPIProvider.d.ts +18 -2
- package/api/provider/XMLAPIProvider.js +18 -2
- package/api/store/EndpointStore.d.ts +24 -1
- package/api/store/EndpointStore.js +24 -1
- package/bun/BunPostgreSQLProvider.d.ts +38 -0
- package/bun/BunPostgreSQLProvider.js +38 -2
- package/cloudflare/CloudflareD1Provider.d.ts +29 -2
- package/cloudflare/CloudflareD1Provider.js +29 -2
- package/cloudflare/CloudflareKVProvider.d.ts +115 -0
- package/cloudflare/CloudflareKVProvider.js +115 -0
- package/cloudflare/types.d.ts +41 -7
- package/db/cache/CollectionCache.d.ts +83 -7
- package/db/cache/CollectionCache.js +83 -7
- package/db/cache/DBCache.d.ts +93 -8
- package/db/cache/DBCache.js +85 -7
- package/db/collection/Collection.d.ts +103 -15
- package/db/collection/Collection.js +58 -6
- package/db/migrate/DBMigrator.d.ts +29 -1
- package/db/migrate/DBMigrator.js +20 -1
- package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
- package/db/migrate/PostgreSQLMigrator.js +8 -1
- package/db/migrate/SQLMigrator.d.ts +63 -4
- package/db/migrate/SQLMigrator.js +51 -1
- package/db/migrate/SQLiteMigrator.d.ts +8 -1
- package/db/migrate/SQLiteMigrator.js +8 -1
- package/db/provider/CacheDBProvider.d.ts +135 -1
- package/db/provider/CacheDBProvider.js +135 -1
- package/db/provider/ChangesDBProvider.d.ts +84 -3
- package/db/provider/ChangesDBProvider.js +77 -2
- package/db/provider/DBProvider.d.ts +148 -1
- package/db/provider/DBProvider.js +51 -1
- package/db/provider/DebugDBProvider.d.ts +118 -1
- package/db/provider/DebugDBProvider.js +118 -1
- package/db/provider/MemoryDBProvider.d.ts +262 -7
- package/db/provider/MemoryDBProvider.js +262 -7
- package/db/provider/MockDBProvider.d.ts +113 -2
- package/db/provider/MockDBProvider.js +106 -1
- package/db/provider/PostgreSQLProvider.d.ts +34 -2
- package/db/provider/PostgreSQLProvider.js +34 -4
- package/db/provider/SQLProvider.d.ts +250 -14
- package/db/provider/SQLProvider.js +237 -13
- package/db/provider/SQLiteProvider.d.ts +41 -1
- package/db/provider/SQLiteProvider.js +41 -4
- package/db/provider/ThroughDBProvider.d.ts +156 -1
- package/db/provider/ThroughDBProvider.js +156 -1
- package/db/provider/ValidationDBProvider.d.ts +120 -1
- package/db/provider/ValidationDBProvider.js +120 -1
- package/db/store/ItemStore.d.ts +38 -2
- package/db/store/ItemStore.js +38 -2
- package/db/store/QueryStore.d.ts +64 -6
- package/db/store/QueryStore.js +64 -6
- package/error/BaseError.d.ts +27 -2
- package/error/BaseError.js +14 -0
- package/error/Errors.d.ts +12 -1
- package/error/Errors.js +12 -1
- package/error/NetworkError.d.ts +13 -1
- package/error/NetworkError.js +13 -1
- package/error/RequestError.d.ts +90 -7
- package/error/RequestError.js +90 -7
- package/error/RequiredError.d.ts +11 -1
- package/error/RequiredError.js +11 -1
- package/error/ResponseError.d.ts +19 -2
- package/error/ResponseError.js +19 -2
- package/error/UnexpectedError.d.ts +14 -1
- package/error/UnexpectedError.js +14 -1
- package/error/UnimplementedError.d.ts +13 -1
- package/error/UnimplementedError.js +13 -1
- package/error/ValueError.d.ts +14 -1
- package/error/ValueError.js +14 -1
- package/extract/DirectoryExtractor.d.ts +35 -1
- package/extract/DirectoryExtractor.js +30 -0
- package/extract/Extractor.d.ts +21 -2
- package/extract/Extractor.js +7 -1
- package/extract/FileExtractor.d.ts +18 -0
- package/extract/FileExtractor.js +18 -0
- package/extract/IndexExtractor.d.ts +36 -1
- package/extract/IndexExtractor.js +31 -0
- package/extract/MarkupExtractor.d.ts +15 -0
- package/extract/MarkupExtractor.js +15 -0
- package/extract/MergingExtractor.d.ts +36 -1
- package/extract/MergingExtractor.js +31 -0
- package/extract/ModuleExtractor.d.ts +25 -1
- package/extract/ModuleExtractor.js +20 -0
- package/extract/PackageExtractor.d.ts +36 -1
- package/extract/PackageExtractor.js +31 -0
- package/extract/ThroughExtractor.d.ts +22 -1
- package/extract/ThroughExtractor.js +22 -1
- package/extract/TypescriptExtractor.d.ts +21 -0
- package/extract/TypescriptExtractor.js +28 -3
- package/firestore/client/FirestoreClientProvider.d.ts +129 -4
- package/firestore/client/FirestoreClientProvider.js +129 -4
- package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
- package/firestore/lite/FirestoreLiteProvider.js +128 -3
- package/firestore/server/FirestoreServerProvider.d.ts +129 -2
- package/firestore/server/FirestoreServerProvider.js +129 -2
- package/markup/MarkupParser.d.ts +57 -10
- package/markup/MarkupParser.js +50 -9
- package/markup/MarkupRule.d.ts +34 -1
- package/markup/Parser.d.ts +18 -0
- package/markup/Parser.js +11 -0
- package/markup/rule/blockquote.d.ts +3 -0
- package/markup/rule/blockquote.js +3 -0
- package/markup/rule/code.d.ts +3 -0
- package/markup/rule/code.js +3 -0
- package/markup/rule/fenced.d.ts +3 -0
- package/markup/rule/fenced.js +3 -0
- package/markup/rule/heading.d.ts +3 -0
- package/markup/rule/heading.js +3 -0
- package/markup/rule/index.d.ts +16 -3
- package/markup/rule/index.js +16 -3
- package/markup/rule/inline.d.ts +4 -1
- package/markup/rule/inline.js +5 -2
- package/markup/rule/linebreak.d.ts +3 -0
- package/markup/rule/linebreak.js +3 -0
- package/markup/rule/link.d.ts +6 -0
- package/markup/rule/link.js +6 -0
- package/markup/rule/ordered.d.ts +3 -0
- package/markup/rule/ordered.js +3 -0
- package/markup/rule/paragraph.d.ts +3 -0
- package/markup/rule/paragraph.js +3 -0
- package/markup/rule/separator.d.ts +3 -0
- package/markup/rule/separator.js +3 -0
- package/markup/rule/table.d.ts +3 -0
- package/markup/rule/table.js +3 -0
- package/markup/rule/unordered.d.ts +3 -0
- package/markup/rule/unordered.js +3 -0
- package/markup/util/regexp.d.ts +80 -3
- package/markup/util/regexp.js +44 -0
- package/package.json +1 -1
- package/react/createAPIContext.d.ts +15 -0
- package/react/createAPIContext.js +10 -0
- package/react/createDBContext.d.ts +15 -0
- package/react/createDBContext.js +10 -0
- package/react/useInstance.d.ts +11 -0
- package/react/useInstance.js +11 -0
- package/react/useLazy.d.ts +11 -0
- package/react/useMap.d.ts +14 -1
- package/react/useMap.js +14 -1
- package/react/useReduce.d.ts +12 -0
- package/react/useSequence.d.ts +10 -0
- package/react/useSequence.js +10 -0
- package/react/useStore.d.ts +16 -1
- package/schema/AddressSchema.d.ts +41 -4
- package/schema/AddressSchema.js +36 -3
- package/schema/ArraySchema.d.ts +48 -6
- package/schema/ArraySchema.js +40 -5
- package/schema/BooleanSchema.d.ts +59 -3
- package/schema/BooleanSchema.js +51 -2
- package/schema/ChoiceSchema.d.ts +61 -7
- package/schema/ChoiceSchema.js +44 -2
- package/schema/ColorSchema.d.ts +41 -8
- package/schema/ColorSchema.js +36 -7
- package/schema/CountrySchema.d.ts +44 -4
- package/schema/CountrySchema.js +39 -3
- package/schema/CurrencyAmountSchema.d.ts +104 -8
- package/schema/CurrencyAmountSchema.js +91 -4
- package/schema/CurrencyCodeSchema.d.ts +56 -4
- package/schema/CurrencyCodeSchema.js +49 -3
- package/schema/DataSchema.d.ts +101 -10
- package/schema/DataSchema.js +87 -8
- package/schema/DateSchema.d.ts +73 -4
- package/schema/DateSchema.js +57 -2
- package/schema/DateTimeSchema.d.ts +40 -3
- package/schema/DateTimeSchema.js +40 -3
- package/schema/DictionarySchema.d.ts +54 -4
- package/schema/DictionarySchema.js +47 -3
- package/schema/EmailSchema.d.ts +34 -3
- package/schema/EmailSchema.js +34 -3
- package/schema/EntitySchema.d.ts +45 -4
- package/schema/EntitySchema.js +38 -3
- package/schema/FileSchema.d.ts +45 -4
- package/schema/FileSchema.js +39 -3
- package/schema/KeySchema.d.ts +32 -3
- package/schema/KeySchema.js +32 -3
- package/schema/NullableSchema.d.ts +64 -4
- package/schema/NullableSchema.js +59 -3
- package/schema/NumberSchema.d.ts +137 -12
- package/schema/NumberSchema.js +127 -11
- package/schema/OptionalSchema.d.ts +61 -4
- package/schema/OptionalSchema.js +56 -4
- package/schema/PasswordSchema.d.ts +37 -1
- package/schema/PasswordSchema.js +32 -1
- package/schema/PhoneSchema.d.ts +40 -4
- package/schema/PhoneSchema.js +35 -3
- package/schema/RequiredSchema.d.ts +39 -3
- package/schema/RequiredSchema.js +41 -3
- package/schema/Schema.d.ts +67 -7
- package/schema/Schema.js +42 -6
- package/schema/SlugSchema.d.ts +37 -5
- package/schema/SlugSchema.js +37 -5
- package/schema/StringSchema.d.ts +124 -19
- package/schema/StringSchema.js +107 -17
- package/schema/ThroughSchema.d.ts +35 -2
- package/schema/ThroughSchema.js +30 -1
- package/schema/TimeSchema.d.ts +43 -3
- package/schema/TimeSchema.js +43 -3
- package/schema/URISchema.d.ts +67 -6
- package/schema/URISchema.js +60 -6
- package/schema/URLSchema.d.ts +69 -6
- package/schema/URLSchema.js +61 -6
- package/schema/UUIDSchema.d.ts +37 -4
- package/schema/UUIDSchema.js +37 -4
- package/sequence/DeferredSequence.d.ts +49 -3
- package/sequence/DeferredSequence.js +39 -3
- package/sequence/InspectSequence.d.ts +59 -5
- package/sequence/InspectSequence.js +59 -5
- package/sequence/LazySequence.d.ts +30 -2
- package/sequence/LazySequence.js +30 -2
- package/sequence/Sequence.d.ts +11 -0
- package/sequence/Sequence.js +10 -0
- package/sequence/ThroughSequence.d.ts +15 -0
- package/sequence/ThroughSequence.js +15 -0
- package/store/ArrayStore.d.ts +74 -11
- package/store/ArrayStore.js +74 -11
- package/store/BooleanStore.d.ts +19 -2
- package/store/BooleanStore.js +19 -2
- package/store/BusyStore.d.ts +13 -1
- package/store/BusyStore.js +13 -1
- package/store/DataStore.d.ts +118 -15
- package/store/DataStore.js +118 -15
- package/store/DictionaryStore.d.ts +66 -8
- package/store/DictionaryStore.js +66 -8
- package/store/FetchStore.d.ts +43 -6
- package/store/FetchStore.js +36 -5
- package/store/PathStore.d.ts +44 -5
- package/store/PathStore.js +44 -5
- package/store/PayloadFetchStore.d.ts +16 -1
- package/store/PayloadFetchStore.js +9 -1
- package/store/Store.d.ts +85 -16
- package/store/Store.js +52 -10
- package/store/URLStore.d.ts +173 -15
- package/store/URLStore.js +173 -15
- package/test/basics.d.ts +70 -0
- package/test/basics.js +60 -0
- package/test/people.d.ts +45 -0
- package/test/people.js +35 -0
- package/test/util.d.ts +30 -3
- package/test/util.js +30 -3
- package/ui/app/App.d.ts +14 -2
- package/ui/app/App.js +9 -2
- package/ui/app/App.tsx +14 -2
- package/ui/block/Address.d.ts +45 -3
- package/ui/block/Address.js +30 -3
- package/ui/block/Address.tsx +46 -3
- package/ui/block/Block.d.ts +23 -1
- package/ui/block/Block.js +13 -1
- package/ui/block/Block.tsx +23 -1
- package/ui/block/Blockquote.d.ts +21 -0
- package/ui/block/Blockquote.js +16 -0
- package/ui/block/Blockquote.tsx +22 -0
- package/ui/block/Caption.d.ts +21 -1
- package/ui/block/Caption.js +16 -1
- package/ui/block/Caption.tsx +22 -1
- package/ui/block/Card.d.ts +6 -0
- package/ui/block/Card.js +1 -0
- package/ui/block/Card.tsx +6 -0
- package/ui/block/Definitions.d.ts +18 -0
- package/ui/block/Definitions.js +13 -0
- package/ui/block/Definitions.tsx +19 -0
- package/ui/block/Divider.d.ts +21 -0
- package/ui/block/Divider.js +16 -0
- package/ui/block/Divider.tsx +22 -0
- package/ui/block/Heading.d.ts +20 -1
- package/ui/block/Heading.js +15 -0
- package/ui/block/Heading.tsx +21 -1
- package/ui/block/Image.d.ts +23 -0
- package/ui/block/Image.js +18 -0
- package/ui/block/Image.tsx +24 -0
- package/ui/block/Label.d.ts +18 -3
- package/ui/block/Label.js +13 -3
- package/ui/block/Label.tsx +18 -3
- package/ui/block/List.d.ts +30 -0
- package/ui/block/List.js +25 -0
- package/ui/block/List.tsx +32 -0
- package/ui/block/Panel.d.ts +13 -1
- package/ui/block/Panel.js +3 -0
- package/ui/block/Panel.tsx +13 -1
- package/ui/block/Paragraph.d.ts +23 -0
- package/ui/block/Paragraph.js +18 -0
- package/ui/block/Paragraph.tsx +24 -0
- package/ui/block/Preformatted.d.ts +20 -0
- package/ui/block/Preformatted.js +15 -0
- package/ui/block/Preformatted.tsx +21 -0
- package/ui/block/Prose.d.ts +14 -1
- package/ui/block/Prose.js +9 -1
- package/ui/block/Prose.tsx +14 -1
- package/ui/block/Section.d.ts +69 -6
- package/ui/block/Section.js +59 -6
- package/ui/block/Section.tsx +70 -6
- package/ui/block/Subheading.d.ts +20 -1
- package/ui/block/Subheading.js +15 -0
- package/ui/block/Subheading.tsx +21 -1
- package/ui/block/Table.d.ts +20 -0
- package/ui/block/Table.js +15 -0
- package/ui/block/Table.tsx +21 -0
- package/ui/block/Title.d.ts +20 -1
- package/ui/block/Title.js +15 -0
- package/ui/block/Title.tsx +21 -1
- package/ui/block/Video.d.ts +50 -3
- package/ui/block/Video.js +30 -3
- package/ui/block/Video.tsx +50 -3
- package/ui/dialog/Dialog.d.ts +28 -1
- package/ui/dialog/Dialog.js +18 -1
- package/ui/dialog/Dialog.tsx +28 -1
- package/ui/dialog/Dialogs.d.ts +53 -6
- package/ui/dialog/Dialogs.js +43 -6
- package/ui/dialog/Dialogs.tsx +53 -6
- package/ui/dialog/Modal.d.ts +13 -0
- package/ui/dialog/Modal.js +8 -0
- package/ui/dialog/Modal.tsx +13 -0
- package/ui/docs/DocumentationButtons.d.ts +5 -1
- package/ui/docs/DocumentationButtons.tsx +5 -1
- package/ui/docs/DocumentationCard.d.ts +6 -1
- package/ui/docs/DocumentationCard.js +6 -1
- package/ui/docs/DocumentationCard.tsx +6 -1
- package/ui/docs/DocumentationKind.d.ts +13 -1
- package/ui/docs/DocumentationKind.js +8 -0
- package/ui/docs/DocumentationKind.tsx +13 -1
- package/ui/docs/DocumentationPage.d.ts +6 -1
- package/ui/docs/DocumentationPage.js +6 -1
- package/ui/docs/DocumentationPage.tsx +6 -1
- package/ui/docs/DocumentationSignatures.d.ts +10 -1
- package/ui/docs/DocumentationSignatures.js +5 -0
- package/ui/docs/DocumentationSignatures.tsx +10 -1
- package/ui/form/ArrayInput.d.ts +15 -0
- package/ui/form/ArrayInput.tsx +15 -0
- package/ui/form/ArrayRadioInputs.d.ts +10 -0
- package/ui/form/ArrayRadioInputs.js +5 -0
- package/ui/form/ArrayRadioInputs.tsx +10 -0
- package/ui/form/Button.d.ts +19 -3
- package/ui/form/Button.js +14 -2
- package/ui/form/Button.tsx +19 -3
- package/ui/form/ButtonInput.d.ts +14 -1
- package/ui/form/ButtonInput.js +9 -1
- package/ui/form/ButtonInput.tsx +14 -1
- package/ui/form/ButtonInputPopover.d.ts +10 -0
- package/ui/form/ButtonInputPopover.js +5 -0
- package/ui/form/ButtonInputPopover.tsx +10 -0
- package/ui/form/ButtonPopover.d.ts +11 -1
- package/ui/form/ButtonPopover.js +6 -1
- package/ui/form/ButtonPopover.tsx +11 -1
- package/ui/form/CheckboxInput.d.ts +14 -1
- package/ui/form/CheckboxInput.js +9 -1
- package/ui/form/CheckboxInput.tsx +14 -1
- package/ui/form/ChoiceRadioInputs.d.ts +10 -0
- package/ui/form/ChoiceRadioInputs.tsx +10 -0
- package/ui/form/Clickable.d.ts +45 -5
- package/ui/form/Clickable.js +30 -3
- package/ui/form/Clickable.tsx +45 -5
- package/ui/form/DataInput.d.ts +14 -0
- package/ui/form/DataInput.tsx +14 -0
- package/ui/form/DateInput.d.ts +14 -0
- package/ui/form/DateInput.js +9 -0
- package/ui/form/DateInput.tsx +14 -0
- package/ui/form/DictionaryInput.d.ts +15 -0
- package/ui/form/DictionaryInput.tsx +15 -0
- package/ui/form/Field.d.ts +5 -0
- package/ui/form/Field.tsx +5 -0
- package/ui/form/FileInput.d.ts +14 -0
- package/ui/form/FileInput.js +9 -0
- package/ui/form/FileInput.tsx +14 -0
- package/ui/form/Form.d.ts +55 -6
- package/ui/form/Form.js +35 -3
- package/ui/form/Form.tsx +55 -6
- package/ui/form/FormContext.d.ts +24 -3
- package/ui/form/FormContext.js +5 -1
- package/ui/form/FormContext.tsx +24 -3
- package/ui/form/FormFields.d.ts +15 -2
- package/ui/form/FormFields.js +15 -2
- package/ui/form/FormFields.tsx +15 -2
- package/ui/form/FormFooter.d.ts +13 -3
- package/ui/form/FormFooter.js +8 -3
- package/ui/form/FormFooter.tsx +13 -3
- package/ui/form/FormInput.d.ts +21 -2
- package/ui/form/FormInput.js +16 -2
- package/ui/form/FormInput.tsx +21 -2
- package/ui/form/FormMessage.d.ts +8 -1
- package/ui/form/FormMessage.js +8 -1
- package/ui/form/FormMessage.tsx +8 -2
- package/ui/form/FormNotice.d.ts +8 -1
- package/ui/form/FormNotice.js +8 -1
- package/ui/form/FormNotice.tsx +8 -2
- package/ui/form/FormNotify.d.ts +8 -1
- package/ui/form/FormNotify.js +8 -1
- package/ui/form/FormNotify.tsx +8 -2
- package/ui/form/FormStore.d.ts +50 -6
- package/ui/form/FormStore.js +50 -6
- package/ui/form/FormStore.tsx +50 -6
- package/ui/form/Input.d.ts +65 -1
- package/ui/form/Input.js +60 -0
- package/ui/form/Input.tsx +77 -1
- package/ui/form/NumberInput.d.ts +14 -0
- package/ui/form/NumberInput.js +9 -0
- package/ui/form/NumberInput.tsx +14 -0
- package/ui/form/OutputInput.d.ts +13 -1
- package/ui/form/OutputInput.js +8 -1
- package/ui/form/OutputInput.tsx +13 -1
- package/ui/form/Popover.d.ts +18 -2
- package/ui/form/Popover.js +8 -2
- package/ui/form/Popover.tsx +18 -2
- package/ui/form/Progress.d.ts +26 -2
- package/ui/form/Progress.js +16 -2
- package/ui/form/Progress.tsx +26 -2
- package/ui/form/QueryInput.d.ts +14 -5
- package/ui/form/QueryInput.js +9 -5
- package/ui/form/QueryInput.tsx +14 -5
- package/ui/form/RadioInput.d.ts +14 -1
- package/ui/form/RadioInput.js +9 -1
- package/ui/form/RadioInput.tsx +14 -1
- package/ui/form/SchemaInput.d.ts +138 -7
- package/ui/form/SchemaInput.js +79 -4
- package/ui/form/SchemaInput.tsx +138 -7
- package/ui/form/SelectInput.d.ts +14 -0
- package/ui/form/SelectInput.tsx +14 -0
- package/ui/form/SubmitButton.d.ts +14 -1
- package/ui/form/SubmitButton.js +9 -1
- package/ui/form/SubmitButton.tsx +14 -1
- package/ui/form/TextInput.d.ts +15 -0
- package/ui/form/TextInput.js +10 -0
- package/ui/form/TextInput.tsx +15 -0
- package/ui/inline/Code.d.ts +29 -0
- package/ui/inline/Code.js +24 -0
- package/ui/inline/Code.tsx +31 -0
- package/ui/inline/Deleted.d.ts +23 -0
- package/ui/inline/Deleted.js +18 -0
- package/ui/inline/Deleted.tsx +24 -0
- package/ui/inline/Emphasis.d.ts +23 -0
- package/ui/inline/Emphasis.js +18 -0
- package/ui/inline/Emphasis.tsx +24 -0
- package/ui/inline/Inserted.d.ts +23 -0
- package/ui/inline/Inserted.js +18 -0
- package/ui/inline/Inserted.tsx +24 -0
- package/ui/inline/Link.d.ts +23 -0
- package/ui/inline/Link.js +18 -0
- package/ui/inline/Link.tsx +24 -0
- package/ui/inline/Mark.d.ts +23 -0
- package/ui/inline/Mark.js +18 -0
- package/ui/inline/Mark.tsx +24 -0
- package/ui/inline/Small.d.ts +23 -0
- package/ui/inline/Small.js +18 -0
- package/ui/inline/Small.tsx +24 -0
- package/ui/inline/Strong.d.ts +23 -0
- package/ui/inline/Strong.js +18 -0
- package/ui/inline/Strong.tsx +24 -0
- package/ui/inline/Subscript.d.ts +23 -0
- package/ui/inline/Subscript.js +18 -0
- package/ui/inline/Subscript.tsx +24 -0
- package/ui/inline/Superscript.d.ts +23 -0
- package/ui/inline/Superscript.js +18 -0
- package/ui/inline/Superscript.tsx +24 -0
- package/ui/inline/When.d.ts +42 -3
- package/ui/inline/When.js +27 -3
- package/ui/inline/When.tsx +42 -3
- package/ui/layout/CenteredLayout.d.ts +12 -1
- package/ui/layout/CenteredLayout.js +7 -1
- package/ui/layout/CenteredLayout.tsx +12 -1
- package/ui/layout/Layout.d.ts +12 -3
- package/ui/layout/Layout.js +12 -3
- package/ui/layout/Layout.ts +12 -3
- package/ui/layout/SidebarLayout.d.ts +12 -0
- package/ui/layout/SidebarLayout.js +7 -0
- package/ui/layout/SidebarLayout.tsx +12 -0
- package/ui/menu/Menu.d.ts +22 -0
- package/ui/menu/Menu.js +12 -0
- package/ui/menu/Menu.tsx +22 -0
- package/ui/misc/Catcher.d.ts +77 -5
- package/ui/misc/Catcher.js +47 -5
- package/ui/misc/Catcher.tsx +77 -5
- package/ui/misc/Loading.d.ts +20 -0
- package/ui/misc/Loading.js +15 -0
- package/ui/misc/Loading.tsx +20 -0
- package/ui/misc/Mapper.d.ts +13 -1
- package/ui/misc/Mapper.js +4 -0
- package/ui/misc/Mapper.tsx +13 -1
- package/ui/misc/Markup.d.ts +9 -1
- package/ui/misc/Markup.js +4 -0
- package/ui/misc/Markup.tsx +9 -1
- package/ui/misc/MetaContext.d.ts +24 -7
- package/ui/misc/MetaContext.js +19 -6
- package/ui/misc/MetaContext.tsx +24 -7
- package/ui/misc/StatusIcon.d.ts +16 -1
- package/ui/misc/StatusIcon.js +11 -1
- package/ui/misc/StatusIcon.tsx +16 -1
- package/ui/misc/Tag.d.ts +21 -0
- package/ui/misc/Tag.js +11 -0
- package/ui/misc/Tag.tsx +21 -0
- package/ui/notice/Message.d.ts +27 -1
- package/ui/notice/Message.js +22 -1
- package/ui/notice/Message.tsx +27 -1
- package/ui/notice/Notice.d.ts +24 -0
- package/ui/notice/Notice.js +19 -0
- package/ui/notice/Notice.tsx +24 -0
- package/ui/notice/NoticeStore.d.ts +30 -2
- package/ui/notice/NoticeStore.js +30 -2
- package/ui/notice/NoticeStore.ts +30 -2
- package/ui/notice/Notices.d.ts +11 -1
- package/ui/notice/Notices.js +6 -1
- package/ui/notice/Notices.tsx +11 -1
- package/ui/notice/NoticesStore.d.ts +23 -3
- package/ui/notice/NoticesStore.js +23 -3
- package/ui/notice/NoticesStore.ts +23 -3
- package/ui/page/HTML.d.ts +13 -2
- package/ui/page/HTML.js +8 -2
- package/ui/page/HTML.tsx +13 -2
- package/ui/page/Head.d.ts +5 -1
- package/ui/page/Head.js +5 -1
- package/ui/page/Head.tsx +5 -1
- package/ui/page/Page.d.ts +12 -1
- package/ui/page/Page.js +7 -1
- package/ui/page/Page.tsx +12 -1
- package/ui/router/Navigation.d.ts +11 -0
- package/ui/router/Navigation.js +6 -0
- package/ui/router/Navigation.tsx +11 -0
- package/ui/router/NavigationContext.d.ts +14 -2
- package/ui/router/NavigationContext.js +14 -2
- package/ui/router/NavigationContext.tsx +14 -2
- package/ui/router/NavigationStore.d.ts +29 -1
- package/ui/router/NavigationStore.js +29 -1
- package/ui/router/NavigationStore.tsx +29 -1
- package/ui/router/Router.d.ts +12 -1
- package/ui/router/Router.js +7 -1
- package/ui/router/Router.tsx +12 -1
- package/ui/router/Routes.d.ts +14 -4
- package/ui/router/Routes.tsx +14 -4
- package/ui/style/Color.d.ts +15 -2
- package/ui/style/Color.js +5 -0
- package/ui/style/Color.tsx +15 -2
- package/ui/style/Flex.d.ts +41 -4
- package/ui/style/Flex.js +26 -3
- package/ui/style/Flex.tsx +41 -4
- package/ui/style/Gap.d.ts +18 -3
- package/ui/style/Gap.js +8 -1
- package/ui/style/Gap.tsx +18 -3
- package/ui/style/Padding.d.ts +18 -3
- package/ui/style/Padding.js +8 -1
- package/ui/style/Padding.tsx +18 -3
- package/ui/style/Scroll.d.ts +36 -1
- package/ui/style/Scroll.js +26 -1
- package/ui/style/Scroll.tsx +37 -1
- package/ui/style/Space.d.ts +18 -3
- package/ui/style/Space.js +8 -1
- package/ui/style/Space.tsx +18 -3
- package/ui/style/Status.d.ts +23 -7
- package/ui/style/Status.js +13 -5
- package/ui/style/Status.tsx +23 -7
- package/ui/style/Tint.d.ts +7 -1
- package/ui/style/Tint.js +7 -1
- package/ui/style/Tint.tsx +7 -1
- package/ui/style/Typography.d.ts +38 -6
- package/ui/style/Typography.js +8 -0
- package/ui/style/Typography.tsx +38 -6
- package/ui/style/Width.d.ts +18 -1
- package/ui/style/Width.js +8 -0
- package/ui/style/Width.tsx +18 -1
- package/ui/transition/CollapseTransition.d.ts +13 -0
- package/ui/transition/CollapseTransition.js +8 -0
- package/ui/transition/CollapseTransition.tsx +13 -0
- package/ui/transition/FadeTransition.d.ts +13 -0
- package/ui/transition/FadeTransition.js +8 -0
- package/ui/transition/FadeTransition.tsx +13 -0
- package/ui/transition/HorizontalTransition.d.ts +13 -0
- package/ui/transition/HorizontalTransition.js +8 -0
- package/ui/transition/HorizontalTransition.tsx +13 -0
- package/ui/transition/Transition.d.ts +12 -4
- package/ui/transition/Transition.js +7 -3
- package/ui/transition/Transition.tsx +12 -4
- package/ui/transition/VerticalTransition.d.ts +13 -0
- package/ui/transition/VerticalTransition.js +8 -0
- package/ui/transition/VerticalTransition.tsx +13 -0
- package/ui/transition/util.d.ts +16 -6
- package/ui/transition/util.js +7 -1
- package/ui/transition/util.tsx +16 -6
- package/ui/tree/TreeApp.d.ts +11 -0
- package/ui/tree/TreeApp.js +6 -0
- package/ui/tree/TreeApp.tsx +11 -0
- package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
- package/ui/tree/TreeBreadcrumbs.js +6 -0
- package/ui/tree/TreeBreadcrumbs.tsx +11 -0
- package/ui/tree/TreeButton.d.ts +9 -1
- package/ui/tree/TreeButton.js +4 -0
- package/ui/tree/TreeButton.tsx +9 -1
- package/ui/tree/TreeCard.d.ts +8 -1
- package/ui/tree/TreeCard.js +8 -1
- package/ui/tree/TreeCard.tsx +8 -1
- package/ui/tree/TreeCards.d.ts +16 -1
- package/ui/tree/TreeCards.js +11 -1
- package/ui/tree/TreeCards.tsx +16 -1
- package/ui/tree/TreeContext.d.ts +18 -1
- package/ui/tree/TreeContext.js +18 -1
- package/ui/tree/TreeContext.tsx +18 -1
- package/ui/tree/TreeMenu.d.ts +28 -1
- package/ui/tree/TreeMenu.js +23 -1
- package/ui/tree/TreeMenu.tsx +28 -1
- package/ui/tree/TreePage.d.ts +6 -0
- package/ui/tree/TreePage.js +6 -0
- package/ui/tree/TreePage.tsx +6 -0
- package/ui/tree/TreeRouter.d.ts +17 -2
- package/ui/tree/TreeRouter.js +12 -2
- package/ui/tree/TreeRouter.tsx +17 -2
- package/ui/tree/TreeSidebar.d.ts +11 -0
- package/ui/tree/TreeSidebar.js +6 -0
- package/ui/tree/TreeSidebar.tsx +11 -0
- package/ui/util/context.d.ts +13 -1
- package/ui/util/context.ts +13 -1
- package/ui/util/css.d.ts +17 -4
- package/ui/util/css.js +5 -1
- package/ui/util/css.ts +17 -4
- package/ui/util/event.d.ts +9 -1
- package/ui/util/event.js +9 -1
- package/ui/util/event.ts +9 -1
- package/ui/util/focus.d.ts +24 -5
- package/ui/util/focus.js +24 -5
- package/ui/util/focus.ts +24 -5
- package/ui/util/meta.d.ts +113 -21
- package/ui/util/meta.js +73 -13
- package/ui/util/meta.ts +113 -21
- package/ui/util/notice.d.ts +98 -10
- package/ui/util/notice.js +93 -9
- package/ui/util/notice.ts +98 -10
- package/ui/util/props.d.ts +10 -2
- package/ui/util/props.ts +10 -2
- package/ui/util/refresh.d.ts +10 -1
- package/ui/util/refresh.js +10 -1
- package/ui/util/refresh.ts +10 -1
- package/ui/util/scroll.d.ts +20 -4
- package/ui/util/scroll.js +20 -4
- package/ui/util/scroll.ts +20 -4
- package/ui/util/state.d.ts +19 -5
- package/ui/util/state.js +19 -5
- package/ui/util/state.ts +19 -5
- package/util/ansi.d.ts +118 -0
- package/util/ansi.js +116 -0
- package/util/array.d.ts +349 -33
- package/util/array.js +284 -27
- package/util/async.d.ts +87 -9
- package/util/async.js +80 -8
- package/util/base64.d.ts +56 -6
- package/util/base64.js +56 -6
- package/util/boolean.d.ts +75 -10
- package/util/boolean.js +75 -10
- package/util/buffer.d.ts +26 -3
- package/util/buffer.js +21 -3
- package/util/bytes.d.ts +42 -4
- package/util/bytes.js +32 -2
- package/util/class.d.ts +59 -8
- package/util/class.js +44 -5
- package/util/color.d.ts +131 -13
- package/util/color.js +126 -12
- package/util/constants.d.ts +132 -19
- package/util/constants.js +132 -19
- package/util/crypto.d.ts +17 -1
- package/util/crypto.js +17 -1
- package/util/currency.d.ts +38 -4
- package/util/currency.js +33 -3
- package/util/data.d.ts +139 -24
- package/util/data.js +39 -5
- package/util/date.d.ts +152 -18
- package/util/date.js +147 -17
- package/util/debug.d.ts +112 -11
- package/util/debug.js +114 -11
- package/util/dictionary.d.ts +205 -24
- package/util/dictionary.js +162 -17
- package/util/diff.d.ts +22 -3
- package/util/diff.js +11 -1
- package/util/dispose.d.ts +74 -2
- package/util/dispose.js +74 -2
- package/util/duration.d.ts +278 -16
- package/util/duration.js +267 -15
- package/util/element.d.ts +59 -6
- package/util/element.js +32 -3
- package/util/entity.d.ts +39 -6
- package/util/entity.js +5 -1
- package/util/entry.d.ts +56 -9
- package/util/entry.js +32 -4
- package/util/env.d.ts +26 -4
- package/util/env.js +26 -4
- package/util/equal.d.ts +181 -17
- package/util/equal.js +181 -17
- package/util/error.d.ts +57 -5
- package/util/error.js +52 -4
- package/util/file.d.ts +30 -7
- package/util/file.js +25 -6
- package/util/filter.d.ts +36 -4
- package/util/filter.js +31 -3
- package/util/focus.d.ts +9 -1
- package/util/focus.js +9 -1
- package/util/format.d.ts +186 -22
- package/util/format.js +135 -14
- package/util/function.d.ts +66 -11
- package/util/function.js +31 -4
- package/util/geo.d.ts +60 -8
- package/util/geo.js +45 -5
- package/util/hash.d.ts +21 -2
- package/util/hash.js +21 -2
- package/util/http.d.ts +134 -19
- package/util/http.js +94 -11
- package/util/hydrate.d.ts +19 -2
- package/util/hydrate.js +12 -1
- package/util/item.d.ts +70 -11
- package/util/item.js +35 -4
- package/util/iterate.d.ts +109 -13
- package/util/iterate.js +86 -10
- package/util/jwt.d.ts +47 -13
- package/util/jwt.js +36 -12
- package/util/lazy.d.ts +9 -6
- package/util/link.d.ts +10 -3
- package/util/link.js +5 -2
- package/util/log.d.ts +26 -3
- package/util/log.js +26 -3
- package/util/map.d.ts +144 -19
- package/util/map.js +101 -11
- package/util/merge.d.ts +23 -1
- package/util/merge.js +6 -0
- package/util/null.d.ts +102 -13
- package/util/null.js +92 -11
- package/util/number.d.ts +125 -8
- package/util/number.js +120 -7
- package/util/object.d.ts +263 -31
- package/util/object.js +154 -17
- package/util/path.d.ts +91 -15
- package/util/path.js +60 -9
- package/util/query.d.ts +78 -9
- package/util/query.js +58 -6
- package/util/random.d.ts +67 -4
- package/util/random.js +67 -4
- package/util/regexp.d.ts +201 -24
- package/util/regexp.js +106 -11
- package/util/sequence.d.ts +66 -8
- package/util/sequence.js +52 -7
- package/util/serialise.d.ts +7 -1
- package/util/serialise.js +7 -1
- package/util/set.d.ts +103 -13
- package/util/set.js +83 -9
- package/util/sort.d.ts +32 -7
- package/util/sort.js +26 -6
- package/util/source.d.ts +28 -3
- package/util/source.js +22 -2
- package/util/start.d.ts +62 -5
- package/util/start.js +47 -2
- package/util/string.d.ts +209 -25
- package/util/string.js +188 -21
- package/util/template.d.ts +58 -9
- package/util/template.js +45 -6
- package/util/timeout.d.ts +35 -11
- package/util/timeout.js +35 -11
- package/util/transform.d.ts +87 -8
- package/util/transform.js +75 -7
- package/util/tree.d.ts +39 -6
- package/util/tree.js +3 -0
- package/util/types.d.ts +8 -2
- package/util/undefined.d.ts +47 -6
- package/util/undefined.js +47 -6
- package/util/units.d.ts +107 -12
- package/util/units.js +97 -12
- package/util/update.d.ts +36 -4
- package/util/update.js +24 -2
- package/util/uri.d.ts +138 -6
- package/util/uri.js +44 -3
- package/util/url.d.ts +152 -7
- package/util/url.js +136 -5
- package/util/uuid.d.ts +28 -3
- package/util/uuid.js +28 -3
- package/util/validate.d.ts +85 -20
- package/util/validate.js +61 -12
- package/util/xml.d.ts +9 -10
- package/util/xml.js +9 -10
package/ui/page/Page.d.ts
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
2
|
import type { PossibleMeta } from "../util/index.js";
|
|
3
3
|
import type { ChildProps } from "../util/props.js";
|
|
4
|
+
/**
|
|
5
|
+
* Props for `<Page>` — per-page `Meta` (title, description, etc.) plus the page `children`.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/page/Page/PageProps
|
|
8
|
+
*/
|
|
4
9
|
export interface PageProps extends PossibleMeta, ChildProps {
|
|
5
10
|
}
|
|
6
11
|
/**
|
|
7
|
-
*
|
|
12
|
+
* Wrap a single page (or screen) within an app, applying its meta and head tags.
|
|
8
13
|
* - Sets the document title and other head metadata via `<Head>`, which emits hoistable tags inline; React 19 hoists each one into the document `<head>`. `<base>` is not emitted here — it lives in the `<HTML>` shell's `<Head>`.
|
|
9
14
|
* - Also updates `window.history` to match the page URL.
|
|
15
|
+
*
|
|
16
|
+
* @param children The page content.
|
|
17
|
+
* @param meta Per-page meta (title, description, etc.) merged with the surrounding `<Meta>` context.
|
|
18
|
+
* @returns The page element with its meta applied.
|
|
19
|
+
* @example <Page title="Settings"><SettingsForm /></Page>
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/ui/page/Page/Page
|
|
10
21
|
*/
|
|
11
22
|
export declare function Page({ children, ...meta }: PageProps): ReactElement;
|
package/ui/page/Page.js
CHANGED
|
@@ -2,9 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { MetaContext, requireMeta } from "../misc/MetaContext.js";
|
|
3
3
|
import { Head } from "./Head.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Wrap a single page (or screen) within an app, applying its meta and head tags.
|
|
6
6
|
* - Sets the document title and other head metadata via `<Head>`, which emits hoistable tags inline; React 19 hoists each one into the document `<head>`. `<base>` is not emitted here — it lives in the `<HTML>` shell's `<Head>`.
|
|
7
7
|
* - Also updates `window.history` to match the page URL.
|
|
8
|
+
*
|
|
9
|
+
* @param children The page content.
|
|
10
|
+
* @param meta Per-page meta (title, description, etc.) merged with the surrounding `<Meta>` context.
|
|
11
|
+
* @returns The page element with its meta applied.
|
|
12
|
+
* @example <Page title="Settings"><SettingsForm /></Page>
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/ui/page/Page/Page
|
|
8
14
|
*/
|
|
9
15
|
export function Page({ children, ...meta }) {
|
|
10
16
|
const merged = requireMeta(meta);
|
package/ui/page/Page.tsx
CHANGED
|
@@ -4,12 +4,23 @@ import type { PossibleMeta } from "../util/index.js";
|
|
|
4
4
|
import type { ChildProps } from "../util/props.js";
|
|
5
5
|
import { Head } from "./Head.js";
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Props for `<Page>` — per-page `Meta` (title, description, etc.) plus the page `children`.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/ui/page/Page/PageProps
|
|
11
|
+
*/
|
|
7
12
|
export interface PageProps extends PossibleMeta, ChildProps {}
|
|
8
13
|
|
|
9
14
|
/**
|
|
10
|
-
*
|
|
15
|
+
* Wrap a single page (or screen) within an app, applying its meta and head tags.
|
|
11
16
|
* - Sets the document title and other head metadata via `<Head>`, which emits hoistable tags inline; React 19 hoists each one into the document `<head>`. `<base>` is not emitted here — it lives in the `<HTML>` shell's `<Head>`.
|
|
12
17
|
* - Also updates `window.history` to match the page URL.
|
|
18
|
+
*
|
|
19
|
+
* @param children The page content.
|
|
20
|
+
* @param meta Per-page meta (title, description, etc.) merged with the surrounding `<Meta>` context.
|
|
21
|
+
* @returns The page element with its meta applied.
|
|
22
|
+
* @example <Page title="Settings"><SettingsForm /></Page>
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/ui/page/Page/Page
|
|
13
24
|
*/
|
|
14
25
|
export function Page({ children, ...meta }: PageProps): ReactElement {
|
|
15
26
|
const merged = requireMeta(meta);
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
2
|
import type { PossibleMeta } from "../util/index.js";
|
|
3
3
|
import type { OptionalChildProps } from "../util/props.js";
|
|
4
|
+
/**
|
|
5
|
+
* Props for `<Navigation>` — initial `Meta` (url/base) plus optional `children`.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Navigation/NavigationProps
|
|
8
|
+
*/
|
|
4
9
|
export interface NavigationProps extends PossibleMeta, OptionalChildProps {
|
|
5
10
|
}
|
|
6
11
|
/**
|
|
@@ -13,5 +18,11 @@ export interface NavigationProps extends PossibleMeta, OptionalChildProps {
|
|
|
13
18
|
* Exactly one `<Navigation>` per app — nested routers share this single store.
|
|
14
19
|
*
|
|
15
20
|
* TODO: switch click/popstate handling to the browser Navigation API when broadly supported.
|
|
21
|
+
*
|
|
22
|
+
* @param children The app subtree to provide navigation to.
|
|
23
|
+
* @param meta Initial meta (url/base) merged with the surrounding `<Meta>` context.
|
|
24
|
+
* @returns The navigation provider wrapping `children`.
|
|
25
|
+
* @example <Navigation><App /></Navigation>
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Navigation/Navigation
|
|
16
27
|
*/
|
|
17
28
|
export declare function Navigation({ children, ...meta }: NavigationProps): ReactElement;
|
package/ui/router/Navigation.js
CHANGED
|
@@ -15,6 +15,12 @@ import { NavigationStore } from "./NavigationStore.js";
|
|
|
15
15
|
* Exactly one `<Navigation>` per app — nested routers share this single store.
|
|
16
16
|
*
|
|
17
17
|
* TODO: switch click/popstate handling to the browser Navigation API when broadly supported.
|
|
18
|
+
*
|
|
19
|
+
* @param children The app subtree to provide navigation to.
|
|
20
|
+
* @param meta Initial meta (url/base) merged with the surrounding `<Meta>` context.
|
|
21
|
+
* @returns The navigation provider wrapping `children`.
|
|
22
|
+
* @example <Navigation><App /></Navigation>
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Navigation/Navigation
|
|
18
24
|
*/
|
|
19
25
|
export function Navigation({ children, ...meta }) {
|
|
20
26
|
const { url, root, ...merged } = requireMeta(meta);
|
package/ui/router/Navigation.tsx
CHANGED
|
@@ -7,6 +7,11 @@ import type { OptionalChildProps } from "../util/props.js";
|
|
|
7
7
|
import { NavigationContext } from "./NavigationContext.js";
|
|
8
8
|
import { NavigationStore } from "./NavigationStore.js";
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Props for `<Navigation>` — initial `Meta` (url/base) plus optional `children`.
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Navigation/NavigationProps
|
|
14
|
+
*/
|
|
10
15
|
export interface NavigationProps extends PossibleMeta, OptionalChildProps {}
|
|
11
16
|
|
|
12
17
|
/**
|
|
@@ -19,6 +24,12 @@ export interface NavigationProps extends PossibleMeta, OptionalChildProps {}
|
|
|
19
24
|
* Exactly one `<Navigation>` per app — nested routers share this single store.
|
|
20
25
|
*
|
|
21
26
|
* TODO: switch click/popstate handling to the browser Navigation API when broadly supported.
|
|
27
|
+
*
|
|
28
|
+
* @param children The app subtree to provide navigation to.
|
|
29
|
+
* @param meta Initial meta (url/base) merged with the surrounding `<Meta>` context.
|
|
30
|
+
* @returns The navigation provider wrapping `children`.
|
|
31
|
+
* @example <Navigation><App /></Navigation>
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Navigation/Navigation
|
|
22
33
|
*/
|
|
23
34
|
export function Navigation({ children, ...meta }: NavigationProps): ReactElement {
|
|
24
35
|
const { url, root, ...merged } = requireMeta(meta);
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { NavigationStore } from "./NavigationStore.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* React context holding the current `NavigationStore`, provided by `<Navigation>`.
|
|
4
|
+
*
|
|
5
|
+
* @example <NavigationContext value={store}>…</NavigationContext>
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/NavigationContext
|
|
7
|
+
*/
|
|
3
8
|
export declare const NavigationContext: import("react").Context<NavigationStore | undefined>;
|
|
4
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Read the current `NavigationStore` from context, throwing if used outside `<Navigation>`.
|
|
11
|
+
*
|
|
12
|
+
* @returns The current `NavigationStore`.
|
|
13
|
+
* @throws RequiredError If no `<Navigation>` provider is present above.
|
|
14
|
+
* @example const nav = requireNavigation(); nav.forward("/home");
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/requireNavigation
|
|
16
|
+
*/
|
|
5
17
|
export declare function requireNavigation(): NavigationStore;
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import { createContext } from "react";
|
|
2
2
|
import { requireContext } from "../util/context.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* React context holding the current `NavigationStore`, provided by `<Navigation>`.
|
|
5
|
+
*
|
|
6
|
+
* @example <NavigationContext value={store}>…</NavigationContext>
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/NavigationContext
|
|
8
|
+
*/
|
|
4
9
|
export const NavigationContext = createContext(undefined);
|
|
5
10
|
NavigationContext.displayName = "NavigationContext";
|
|
6
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Read the current `NavigationStore` from context, throwing if used outside `<Navigation>`.
|
|
13
|
+
*
|
|
14
|
+
* @returns The current `NavigationStore`.
|
|
15
|
+
* @throws RequiredError If no `<Navigation>` provider is present above.
|
|
16
|
+
* @example const nav = requireNavigation(); nav.forward("/home");
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/requireNavigation
|
|
18
|
+
*/
|
|
7
19
|
export function requireNavigation() {
|
|
8
20
|
return requireContext(NavigationContext, requireNavigation);
|
|
9
21
|
}
|
|
@@ -2,11 +2,23 @@ import { createContext } from "react";
|
|
|
2
2
|
import { requireContext } from "../util/context.js";
|
|
3
3
|
import type { NavigationStore } from "./NavigationStore.js";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* React context holding the current `NavigationStore`, provided by `<Navigation>`.
|
|
7
|
+
*
|
|
8
|
+
* @example <NavigationContext value={store}>…</NavigationContext>
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/NavigationContext
|
|
10
|
+
*/
|
|
6
11
|
export const NavigationContext = createContext<NavigationStore | undefined>(undefined);
|
|
7
12
|
NavigationContext.displayName = "NavigationContext";
|
|
8
13
|
|
|
9
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Read the current `NavigationStore` from context, throwing if used outside `<Navigation>`.
|
|
16
|
+
*
|
|
17
|
+
* @returns The current `NavigationStore`.
|
|
18
|
+
* @throws RequiredError If no `<Navigation>` provider is present above.
|
|
19
|
+
* @example const nav = requireNavigation(); nav.forward("/home");
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/requireNavigation
|
|
21
|
+
*/
|
|
10
22
|
export function requireNavigation(): NavigationStore {
|
|
11
23
|
return requireContext(NavigationContext, requireNavigation);
|
|
12
24
|
}
|
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
import { URLStore } from "../../store/URLStore.js";
|
|
2
2
|
import { type PossibleURL } from "../../util/url.js";
|
|
3
3
|
/**
|
|
4
|
-
* Store the current navigation
|
|
4
|
+
* Store holding the current navigation URL and driving browser history.
|
|
5
|
+
*
|
|
6
|
+
* - Extends `URLStore`; the current location is its `value`.
|
|
7
|
+
* - `forward()` pushes a new history entry; `redirect()` replaces the current one.
|
|
5
8
|
* - TODO: switch to the browser Navigation API when broadly supported.
|
|
9
|
+
*
|
|
10
|
+
* @example const nav = new NavigationStore("/"); nav.forward("/home");
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore
|
|
6
12
|
*/
|
|
7
13
|
export declare class NavigationStore extends URLStore {
|
|
14
|
+
/**
|
|
15
|
+
* Create a new `NavigationStore`.
|
|
16
|
+
*
|
|
17
|
+
* @param url The initial URL (defaults to `"/"`).
|
|
18
|
+
* @param base Optional base URL that relative navigations resolve against.
|
|
19
|
+
*/
|
|
8
20
|
constructor(url?: PossibleURL, base?: PossibleURL);
|
|
21
|
+
/**
|
|
22
|
+
* Navigate forward to a URL, pushing a new browser history entry.
|
|
23
|
+
*
|
|
24
|
+
* @param possible The destination URL, resolved against `base`.
|
|
25
|
+
* @throws RequiredError If `possible` cannot be resolved to a valid URL.
|
|
26
|
+
* @example nav.forward("/settings");
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/forward
|
|
28
|
+
*/
|
|
9
29
|
forward(possible: PossibleURL): void;
|
|
30
|
+
/**
|
|
31
|
+
* Redirect to a URL, replacing the current browser history entry.
|
|
32
|
+
*
|
|
33
|
+
* @param possible The destination URL, resolved against `base`.
|
|
34
|
+
* @throws RequiredError If `possible` cannot be resolved to a valid URL.
|
|
35
|
+
* @example nav.redirect("/login");
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/redirect
|
|
37
|
+
*/
|
|
10
38
|
redirect(possible: PossibleURL): void;
|
|
11
39
|
}
|
|
@@ -1,17 +1,45 @@
|
|
|
1
1
|
import { URLStore } from "../../store/URLStore.js";
|
|
2
2
|
import { requireURL } from "../../util/url.js";
|
|
3
3
|
/**
|
|
4
|
-
* Store the current navigation
|
|
4
|
+
* Store holding the current navigation URL and driving browser history.
|
|
5
|
+
*
|
|
6
|
+
* - Extends `URLStore`; the current location is its `value`.
|
|
7
|
+
* - `forward()` pushes a new history entry; `redirect()` replaces the current one.
|
|
5
8
|
* - TODO: switch to the browser Navigation API when broadly supported.
|
|
9
|
+
*
|
|
10
|
+
* @example const nav = new NavigationStore("/"); nav.forward("/home");
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore
|
|
6
12
|
*/
|
|
7
13
|
export class NavigationStore extends URLStore {
|
|
14
|
+
/**
|
|
15
|
+
* Create a new `NavigationStore`.
|
|
16
|
+
*
|
|
17
|
+
* @param url The initial URL (defaults to `"/"`).
|
|
18
|
+
* @param base Optional base URL that relative navigations resolve against.
|
|
19
|
+
*/
|
|
8
20
|
constructor(url = "/", base) {
|
|
9
21
|
super(url, base);
|
|
10
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Navigate forward to a URL, pushing a new browser history entry.
|
|
25
|
+
*
|
|
26
|
+
* @param possible The destination URL, resolved against `base`.
|
|
27
|
+
* @throws RequiredError If `possible` cannot be resolved to a valid URL.
|
|
28
|
+
* @example nav.forward("/settings");
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/forward
|
|
30
|
+
*/
|
|
11
31
|
forward(possible) {
|
|
12
32
|
this.value = requireURL(possible, this.base, this.forward);
|
|
13
33
|
window.history.pushState(null, "", this.value);
|
|
14
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Redirect to a URL, replacing the current browser history entry.
|
|
37
|
+
*
|
|
38
|
+
* @param possible The destination URL, resolved against `base`.
|
|
39
|
+
* @throws RequiredError If `possible` cannot be resolved to a valid URL.
|
|
40
|
+
* @example nav.redirect("/login");
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/redirect
|
|
42
|
+
*/
|
|
15
43
|
redirect(possible) {
|
|
16
44
|
this.value = requireURL(possible, this.base, this.redirect);
|
|
17
45
|
window.history.replaceState(null, "", this.value);
|
|
@@ -2,19 +2,47 @@ import { URLStore } from "../../store/URLStore.js";
|
|
|
2
2
|
import { type PossibleURL, requireURL } from "../../util/url.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Store the current navigation
|
|
5
|
+
* Store holding the current navigation URL and driving browser history.
|
|
6
|
+
*
|
|
7
|
+
* - Extends `URLStore`; the current location is its `value`.
|
|
8
|
+
* - `forward()` pushes a new history entry; `redirect()` replaces the current one.
|
|
6
9
|
* - TODO: switch to the browser Navigation API when broadly supported.
|
|
10
|
+
*
|
|
11
|
+
* @example const nav = new NavigationStore("/"); nav.forward("/home");
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore
|
|
7
13
|
*/
|
|
8
14
|
export class NavigationStore extends URLStore {
|
|
15
|
+
/**
|
|
16
|
+
* Create a new `NavigationStore`.
|
|
17
|
+
*
|
|
18
|
+
* @param url The initial URL (defaults to `"/"`).
|
|
19
|
+
* @param base Optional base URL that relative navigations resolve against.
|
|
20
|
+
*/
|
|
9
21
|
constructor(url: PossibleURL = "/", base?: PossibleURL) {
|
|
10
22
|
super(url, base);
|
|
11
23
|
}
|
|
12
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Navigate forward to a URL, pushing a new browser history entry.
|
|
27
|
+
*
|
|
28
|
+
* @param possible The destination URL, resolved against `base`.
|
|
29
|
+
* @throws RequiredError If `possible` cannot be resolved to a valid URL.
|
|
30
|
+
* @example nav.forward("/settings");
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/forward
|
|
32
|
+
*/
|
|
13
33
|
forward(possible: PossibleURL): void {
|
|
14
34
|
this.value = requireURL(possible, this.base, this.forward);
|
|
15
35
|
window.history.pushState(null, "", this.value);
|
|
16
36
|
}
|
|
17
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Redirect to a URL, replacing the current browser history entry.
|
|
40
|
+
*
|
|
41
|
+
* @param possible The destination URL, resolved against `base`.
|
|
42
|
+
* @throws RequiredError If `possible` cannot be resolved to a valid URL.
|
|
43
|
+
* @example nav.redirect("/login");
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/redirect
|
|
45
|
+
*/
|
|
18
46
|
redirect(possible: PossibleURL): void {
|
|
19
47
|
this.value = requireURL(possible, this.base, this.redirect);
|
|
20
48
|
window.history.replaceState(null, "", this.value);
|
package/ui/router/Router.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
2
|
import type { PossibleMeta } from "../util/meta.js";
|
|
3
3
|
import type { Routes } from "./Routes.js";
|
|
4
|
+
/**
|
|
5
|
+
* Props for `<Router>` — the `routes` to match against plus an optional `fallback`.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Router/RouterProps
|
|
8
|
+
*/
|
|
4
9
|
export interface RouterProps extends PossibleMeta {
|
|
5
10
|
/** List of routes for the router to match against. */
|
|
6
11
|
readonly routes: Routes;
|
|
@@ -18,6 +23,12 @@ export interface RouterProps extends PossibleMeta {
|
|
|
18
23
|
* - Route `{placeholders}` are passed as props to function/component route values along with merged URL `?query` params. They are not published into context — descendants of a `ReactElement`-valued route can't see them automatically.
|
|
19
24
|
* - Returns `null` when there's no URL in context or the URL is outside the base.
|
|
20
25
|
*
|
|
21
|
-
* @
|
|
26
|
+
* @param routes The route table to match the current URL against.
|
|
27
|
+
* @param fallback Element to render when nothing matches; explicit `null` renders nothing instead of throwing.
|
|
28
|
+
* @param meta Optional meta (url/base) overrides for this router scope.
|
|
29
|
+
* @returns The matched route element, or `null`/`fallback` when nothing matches.
|
|
30
|
+
* @throws NotFoundError If no route matches and `fallback` is `undefined`.
|
|
31
|
+
* @example <Router routes={{ "/": HomePage, "/about": AboutPage }} />
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Router/Router
|
|
22
33
|
*/
|
|
23
34
|
export declare function Router({ routes, fallback, ...meta }: RouterProps): ReactElement | null;
|
package/ui/router/Router.js
CHANGED
|
@@ -12,7 +12,13 @@ import { MetaContext, requireMetaURL } from "../misc/MetaContext.js";
|
|
|
12
12
|
* - Route `{placeholders}` are passed as props to function/component route values along with merged URL `?query` params. They are not published into context — descendants of a `ReactElement`-valued route can't see them automatically.
|
|
13
13
|
* - Returns `null` when there's no URL in context or the URL is outside the base.
|
|
14
14
|
*
|
|
15
|
-
* @
|
|
15
|
+
* @param routes The route table to match the current URL against.
|
|
16
|
+
* @param fallback Element to render when nothing matches; explicit `null` renders nothing instead of throwing.
|
|
17
|
+
* @param meta Optional meta (url/base) overrides for this router scope.
|
|
18
|
+
* @returns The matched route element, or `null`/`fallback` when nothing matches.
|
|
19
|
+
* @throws NotFoundError If no route matches and `fallback` is `undefined`.
|
|
20
|
+
* @example <Router routes={{ "/": HomePage, "/about": AboutPage }} />
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Router/Router
|
|
16
22
|
*/
|
|
17
23
|
export function Router({ routes, fallback, ...meta }) {
|
|
18
24
|
const combined = requireMetaURL(meta);
|
package/ui/router/Router.tsx
CHANGED
|
@@ -7,6 +7,11 @@ import { MetaContext, type MetaURL, requireMetaURL } from "../misc/MetaContext.j
|
|
|
7
7
|
import type { PossibleMeta } from "../util/meta.js";
|
|
8
8
|
import type { Routes } from "./Routes.js";
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Props for `<Router>` — the `routes` to match against plus an optional `fallback`.
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Router/RouterProps
|
|
14
|
+
*/
|
|
10
15
|
export interface RouterProps extends PossibleMeta {
|
|
11
16
|
/** List of routes for the router to match against. */
|
|
12
17
|
readonly routes: Routes;
|
|
@@ -26,7 +31,13 @@ export interface RouterProps extends PossibleMeta {
|
|
|
26
31
|
* - Route `{placeholders}` are passed as props to function/component route values along with merged URL `?query` params. They are not published into context — descendants of a `ReactElement`-valued route can't see them automatically.
|
|
27
32
|
* - Returns `null` when there's no URL in context or the URL is outside the base.
|
|
28
33
|
*
|
|
29
|
-
* @
|
|
34
|
+
* @param routes The route table to match the current URL against.
|
|
35
|
+
* @param fallback Element to render when nothing matches; explicit `null` renders nothing instead of throwing.
|
|
36
|
+
* @param meta Optional meta (url/base) overrides for this router scope.
|
|
37
|
+
* @returns The matched route element, or `null`/`fallback` when nothing matches.
|
|
38
|
+
* @throws NotFoundError If no route matches and `fallback` is `undefined`.
|
|
39
|
+
* @example <Router routes={{ "/": HomePage, "/about": AboutPage }} />
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Router/Router
|
|
30
41
|
*/
|
|
31
42
|
export function Router({ routes, fallback, ...meta }: RouterProps): ReactElement | null {
|
|
32
43
|
const combined = requireMetaURL(meta);
|
package/ui/router/Routes.d.ts
CHANGED
|
@@ -6,22 +6,32 @@ import type { URIParams } from "../../util/uri.js";
|
|
|
6
6
|
* Props for a component that works as a route in the router.
|
|
7
7
|
* - Combines `?query` params from the URL and `{placeholder}` matches from the route template into one flat string dictionary.
|
|
8
8
|
* - Template placeholder values take precedence over query params with the same name.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteProps
|
|
9
11
|
*/
|
|
10
12
|
export type RouteProps = URIParams;
|
|
11
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* React component usable as a route value — a function or class component accepting `RouteProps`.
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteComponent
|
|
17
|
+
*/
|
|
12
18
|
export type RouteComponent = FunctionComponent<RouteProps> | ComponentClass<RouteProps>;
|
|
13
19
|
/**
|
|
14
20
|
* Valid route values:
|
|
15
21
|
* - `RouteComponent` — rendered as `<Component {...params}/>` with merged placeholder + query params.
|
|
16
22
|
* - `AbsolutePath` string — triggers a redirect to that path.
|
|
17
23
|
* - `ReactElement` — rendered as-is (use for layout-wrapping a nested `<Router>` inside).
|
|
24
|
+
*
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/Route
|
|
18
26
|
*/
|
|
19
27
|
export type Route = RouteComponent | AbsolutePath | ReactElement;
|
|
20
28
|
/**
|
|
21
|
-
*
|
|
29
|
+
* Route table mapping `{ path: RouteComponent | redirectPath | ReactElement }` for a `<Router>`.
|
|
30
|
+
*
|
|
31
|
+
* - Each key is a path starting with `/`, optionally containing `{named}` placeholders passed into the component.
|
|
32
|
+
* - Each value is a `Route` (or a nullish/`false` value to disable that route).
|
|
22
33
|
*
|
|
23
|
-
* @
|
|
24
|
-
* @param value Route value — see `Route`.
|
|
34
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/Routes
|
|
25
35
|
*/
|
|
26
36
|
export type Routes = {
|
|
27
37
|
[key: AbsolutePath]: Nullish<Route | false>;
|
package/ui/router/Routes.tsx
CHANGED
|
@@ -7,10 +7,16 @@ import type { URIParams } from "../../util/uri.js";
|
|
|
7
7
|
* Props for a component that works as a route in the router.
|
|
8
8
|
* - Combines `?query` params from the URL and `{placeholder}` matches from the route template into one flat string dictionary.
|
|
9
9
|
* - Template placeholder values take precedence over query params with the same name.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteProps
|
|
10
12
|
*/
|
|
11
13
|
export type RouteProps = URIParams;
|
|
12
14
|
|
|
13
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* React component usable as a route value — a function or class component accepting `RouteProps`.
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteComponent
|
|
19
|
+
*/
|
|
14
20
|
export type RouteComponent = FunctionComponent<RouteProps> | ComponentClass<RouteProps>;
|
|
15
21
|
|
|
16
22
|
/**
|
|
@@ -18,14 +24,18 @@ export type RouteComponent = FunctionComponent<RouteProps> | ComponentClass<Rout
|
|
|
18
24
|
* - `RouteComponent` — rendered as `<Component {...params}/>` with merged placeholder + query params.
|
|
19
25
|
* - `AbsolutePath` string — triggers a redirect to that path.
|
|
20
26
|
* - `ReactElement` — rendered as-is (use for layout-wrapping a nested `<Router>` inside).
|
|
27
|
+
*
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/Route
|
|
21
29
|
*/
|
|
22
30
|
export type Route = RouteComponent | AbsolutePath | ReactElement;
|
|
23
31
|
|
|
24
32
|
/**
|
|
25
|
-
*
|
|
33
|
+
* Route table mapping `{ path: RouteComponent | redirectPath | ReactElement }` for a `<Router>`.
|
|
34
|
+
*
|
|
35
|
+
* - Each key is a path starting with `/`, optionally containing `{named}` placeholders passed into the component.
|
|
36
|
+
* - Each value is a `Route` (or a nullish/`false` value to disable that route).
|
|
26
37
|
*
|
|
27
|
-
* @
|
|
28
|
-
* @param value Route value — see `Route`.
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/ui/router/Routes/Routes
|
|
29
39
|
*/
|
|
30
40
|
export type Routes = {
|
|
31
41
|
[key: AbsolutePath]: Nullish<Route | false>;
|
package/ui/style/Color.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Enumerated colour names selectable via the `color` variant prop.
|
|
3
|
+
*
|
|
4
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/UIColor
|
|
5
|
+
*/
|
|
2
6
|
export type UIColor = "primary" | "secondary" | "tertiary" | "red" | "orange" | "yellow" | "green" | "aqua" | "blue" | "purple" | "pink" | "gray";
|
|
3
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Variant props for colouring an element, e.g. `color="purple"`.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/ColorVariants
|
|
11
|
+
*/
|
|
4
12
|
export interface ColorVariants {
|
|
5
13
|
/** Colour of the element. */
|
|
6
14
|
color?: UIColor | undefined;
|
|
@@ -11,5 +19,10 @@ export interface ColorVariants {
|
|
|
11
19
|
* - Sets the key `.tint-50` color for an element (e.g. `--color-purple` or `--color-primary`) based on `color="purple"` or `color="primary"`
|
|
12
20
|
* - Full set of shades e.g. `--tint-20` and `--tint-95` are created for the selected color.
|
|
13
21
|
* - Element can now compose these shades to style itself using the selected color.
|
|
22
|
+
*
|
|
23
|
+
* @param variants Variant props containing the optional `color` selection.
|
|
24
|
+
* @returns The combined tint + colour class string, or `undefined` when no `color` is set.
|
|
25
|
+
* @example getColorClass({ color: "purple" }) // "tint color-purple"
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/getColorClass
|
|
14
27
|
*/
|
|
15
28
|
export declare function getColorClass({ color }: ColorVariants): string | undefined;
|
package/ui/style/Color.js
CHANGED
|
@@ -7,6 +7,11 @@ import { TINT_CLASS } from "./Tint.js";
|
|
|
7
7
|
* - Sets the key `.tint-50` color for an element (e.g. `--color-purple` or `--color-primary`) based on `color="purple"` or `color="primary"`
|
|
8
8
|
* - Full set of shades e.g. `--tint-20` and `--tint-95` are created for the selected color.
|
|
9
9
|
* - Element can now compose these shades to style itself using the selected color.
|
|
10
|
+
*
|
|
11
|
+
* @param variants Variant props containing the optional `color` selection.
|
|
12
|
+
* @returns The combined tint + colour class string, or `undefined` when no `color` is set.
|
|
13
|
+
* @example getColorClass({ color: "purple" }) // "tint color-purple"
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/getColorClass
|
|
10
15
|
*/
|
|
11
16
|
export function getColorClass({ color }) {
|
|
12
17
|
if (color)
|
package/ui/style/Color.tsx
CHANGED
|
@@ -2,7 +2,11 @@ import { getClass, getModuleClass } from "../util/css.js";
|
|
|
2
2
|
import COLOR_CSS from "./Color.module.css";
|
|
3
3
|
import { TINT_CLASS } from "./Tint.js";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Enumerated colour names selectable via the `color` variant prop.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/UIColor
|
|
9
|
+
*/
|
|
6
10
|
export type UIColor =
|
|
7
11
|
| "primary"
|
|
8
12
|
| "secondary"
|
|
@@ -17,7 +21,11 @@ export type UIColor =
|
|
|
17
21
|
| "pink"
|
|
18
22
|
| "gray";
|
|
19
23
|
|
|
20
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Variant props for colouring an element, e.g. `color="purple"`.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/ColorVariants
|
|
28
|
+
*/
|
|
21
29
|
export interface ColorVariants {
|
|
22
30
|
/** Colour of the element. */
|
|
23
31
|
color?: UIColor | undefined;
|
|
@@ -29,6 +37,11 @@ export interface ColorVariants {
|
|
|
29
37
|
* - Sets the key `.tint-50` color for an element (e.g. `--color-purple` or `--color-primary`) based on `color="purple"` or `color="primary"`
|
|
30
38
|
* - Full set of shades e.g. `--tint-20` and `--tint-95` are created for the selected color.
|
|
31
39
|
* - Element can now compose these shades to style itself using the selected color.
|
|
40
|
+
*
|
|
41
|
+
* @param variants Variant props containing the optional `color` selection.
|
|
42
|
+
* @returns The combined tint + colour class string, or `undefined` when no `color` is set.
|
|
43
|
+
* @example getColorClass({ color: "purple" }) // "tint color-purple"
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Color/getColorClass
|
|
32
45
|
*/
|
|
33
46
|
export function getColorClass({ color }: ColorVariants): string | undefined {
|
|
34
47
|
if (color) return getClass(TINT_CLASS, getModuleClass(COLOR_CSS, color));
|
package/ui/style/Flex.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
2
|
import type { OptionalChildProps } from "../util/props.js";
|
|
3
3
|
import { type GapVariants } from "./Gap.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Variant props for flex layout — opt-in modifiers any component can mix in via `getFlexClass()`.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Flex/FlexVariants
|
|
8
|
+
*/
|
|
5
9
|
export interface FlexVariants extends GapVariants {
|
|
6
10
|
/** Wrap overflowing elements onto the next line (defaults to no wrapping). */
|
|
7
11
|
wrap?: boolean | undefined;
|
|
@@ -60,13 +64,46 @@ export interface FlexVariants extends GapVariants {
|
|
|
60
64
|
*/
|
|
61
65
|
baseline?: boolean | undefined;
|
|
62
66
|
}
|
|
63
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Get the flex layout class for a component from its flex variant props.
|
|
69
|
+
*
|
|
70
|
+
* - Composes the `gap` prop so `<Flex gap="large">` etc. just works.
|
|
71
|
+
*
|
|
72
|
+
* @param props Flex variant props (direction, justification, alignment, wrap, gap).
|
|
73
|
+
* @returns The combined flex + gap class string.
|
|
74
|
+
* @example getFlexClass({ column: true, center: true, gap: "large" })
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Flex/getFlexClass
|
|
76
|
+
*/
|
|
64
77
|
export declare function getFlexClass(props: FlexVariants): string;
|
|
78
|
+
/**
|
|
79
|
+
* Props for the `Row` component — flex variants plus optional children.
|
|
80
|
+
*
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Flex/RowProps
|
|
82
|
+
*/
|
|
65
83
|
export interface RowProps extends FlexVariants, OptionalChildProps {
|
|
66
84
|
}
|
|
67
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Flex container that arranges its children as a row by default.
|
|
87
|
+
*
|
|
88
|
+
* @param props Flex variant props plus `children`.
|
|
89
|
+
* @returns A `<div>` element with the computed flex class.
|
|
90
|
+
* @example <Row gap="small" center>{items}</Row>
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Flex/Row
|
|
92
|
+
*/
|
|
68
93
|
export declare function Row({ children, ...props }: RowProps): ReactElement;
|
|
94
|
+
/**
|
|
95
|
+
* Props for the `Column` component — flex variants plus optional children.
|
|
96
|
+
*
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Flex/ColumnProps
|
|
98
|
+
*/
|
|
69
99
|
export interface ColumnProps extends FlexVariants, OptionalChildProps {
|
|
70
100
|
}
|
|
71
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* Flex container that stacks its children as a column by default.
|
|
103
|
+
*
|
|
104
|
+
* @param props Flex variant props plus `children` (`column` defaults to `true`).
|
|
105
|
+
* @returns A `<div>` element with the computed flex class.
|
|
106
|
+
* @example <Column gap="small">{items}</Column>
|
|
107
|
+
* @see https://dhoulb.github.io/shelving/ui/style/Flex/Column
|
|
108
|
+
*/
|
|
72
109
|
export declare function Column({ children, column, ...props }: ColumnProps): ReactElement;
|