kumo-svelte 0.2.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +130 -16
- package/ai/component-registry.md +9 -1
- package/dist/components/button/Button.svelte +52 -15
- package/dist/components/button/Button.svelte.d.ts +6 -6
- package/dist/components/button/button.test.js +13 -0
- package/dist/components/chart/BubbleMap.svelte +369 -0
- package/dist/components/chart/BubbleMap.svelte.d.ts +51 -0
- package/dist/components/chart/BubbleMap.test.d.ts +1 -0
- package/dist/components/chart/BubbleMap.test.js +104 -0
- package/dist/components/chart/Chart.svelte +10 -1
- package/dist/components/chart/Chart.svelte.d.ts +1 -0
- package/dist/components/chart/ChartLegend.svelte +46 -3
- package/dist/components/chart/ChartLegend.svelte.d.ts +5 -0
- package/dist/components/chart/ChoroplethMap.svelte +321 -0
- package/dist/components/chart/ChoroplethMap.svelte.d.ts +33 -0
- package/dist/components/chart/Color.d.ts +17 -2
- package/dist/components/chart/Color.js +34 -9
- package/dist/components/chart/SankeyChart.svelte +2 -3
- package/dist/components/chart/TimeseriesChart.svelte +22 -1
- package/dist/components/chart/TimeseriesChart.svelte.d.ts +4 -1
- package/dist/components/chart/index.d.ts +11 -7
- package/dist/components/chart/index.js +7 -5
- package/dist/components/chart/tooltip-utils.d.ts +3 -0
- package/dist/components/chart/tooltip-utils.js +8 -0
- package/dist/components/dialog/Dialog.svelte +6 -37
- package/dist/components/dialog/Dialog.svelte.d.ts +10 -39
- package/dist/components/dialog/Dialog.variants.d.ts +34 -0
- package/dist/components/dialog/Dialog.variants.js +34 -0
- package/dist/components/dialog/dialog.test.d.ts +1 -0
- package/dist/components/dialog/dialog.test.js +16 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/dropdown-menu/DropdownMenuContent.svelte +1 -0
- package/dist/components/input-group/InputGroup.svelte +7 -1
- package/dist/components/input-group/InputGroup.svelte.d.ts +1 -0
- package/dist/components/input-group/InputGroupInput.svelte +4 -0
- package/dist/components/input-group/InputGroupInput.svelte.d.ts +1 -0
- package/dist/components/input-group/context.d.ts +1 -0
- package/dist/components/radio/Radio.svelte +1 -1
- package/dist/components/radio/Radio.svelte.d.ts +1 -1
- package/dist/components/radio/RadioGroup.svelte +38 -9
- package/dist/components/radio/RadioGroup.svelte.d.ts +27 -6
- package/dist/components/radio/RadioItem.svelte +7 -5
- package/dist/components/radio/RadioItem.svelte.d.ts +25 -4
- package/dist/components/radio/RadioTypedValueTestHost.svelte +14 -0
- package/dist/components/radio/RadioTypedValueTestHost.svelte.d.ts +3 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/radio.test.d.ts +1 -0
- package/dist/components/radio/radio.test.js +11 -0
- package/dist/components/sidebar/SidebarContent.svelte +1 -1
- package/dist/components/sidebar/SidebarGroupLabel.svelte +1 -1
- package/dist/components/toasty/KumoToastContent.svelte +13 -4
- package/dist/components/toasty/Toasty.svelte +4 -0
- package/dist/components/toasty/Toasty.svelte.d.ts +4 -0
- package/dist/components/toolbar/Toolbar.svelte +68 -0
- package/dist/components/toolbar/Toolbar.svelte.d.ts +12 -0
- package/dist/components/toolbar/ToolbarButton.svelte +46 -0
- package/dist/components/toolbar/ToolbarButton.svelte.d.ts +14 -0
- package/dist/components/toolbar/ToolbarInput.svelte +18 -0
- package/dist/components/toolbar/ToolbarInput.svelte.d.ts +9 -0
- package/dist/components/toolbar/ToolbarInputGroup.svelte +20 -0
- package/dist/components/toolbar/ToolbarInputGroup.svelte.d.ts +9 -0
- package/dist/components/toolbar/ToolbarTestHost.svelte +36 -0
- package/dist/components/toolbar/ToolbarTestHost.svelte.d.ts +18 -0
- package/dist/components/toolbar/context.d.ts +30 -0
- package/dist/components/toolbar/context.js +35 -0
- package/dist/components/toolbar/index.d.ts +16 -0
- package/dist/components/toolbar/index.js +12 -0
- package/dist/components/toolbar/toolbar.test.d.ts +1 -0
- package/dist/components/toolbar/toolbar.test.js +59 -0
- package/dist/docs/HomeGrid.svelte +27 -0
- package/dist/docs/MdxPage.svelte +7 -3
- package/dist/docs/PropsTable.svelte +3 -1
- package/dist/docs/PropsTable.svelte.d.ts +1 -0
- package/dist/docs/demo-snippets/BadgeColorVariantsDemo.svelte +1 -0
- package/dist/docs/demo-snippets/BubbleMapCloudflareLocationsDemo.svelte +40 -0
- package/dist/docs/demo-snippets/BubbleMapCloudflareLocationsDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/BubbleMapDemo.svelte +37 -0
- package/dist/docs/demo-snippets/BubbleMapDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/CategoricalColorsDemo.svelte +4 -4
- package/dist/docs/demo-snippets/CategoricalCvdDemo.svelte +4 -4
- package/dist/docs/demo-snippets/ChartColorSystemsDemo.svelte +2 -2
- package/dist/docs/demo-snippets/ChoroplethMapDemo.svelte +34 -0
- package/dist/docs/demo-snippets/ChoroplethMapDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/DialogMaxWidthDemo.svelte +14 -0
- package/dist/docs/demo-snippets/DialogMaxWidthDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/DialogSizesDemo.svelte +65 -0
- package/dist/docs/demo-snippets/DialogSizesDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/DialogWithSelectDemo.svelte +21 -5
- package/dist/docs/demo-snippets/LegendHighlightDemo.svelte +105 -0
- package/dist/docs/demo-snippets/LegendHighlightDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/LegendOnClickDemo.svelte +118 -0
- package/dist/docs/demo-snippets/LegendOnClickDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/RadioTypedValueDemo.svelte +26 -0
- package/dist/docs/demo-snippets/RadioTypedValueDemo.svelte.d.ts +3 -0
- package/dist/docs/demo-snippets/SemanticColorsDemo.svelte +4 -4
- package/dist/docs/demo-snippets/SequentialColorsDemo.svelte +3 -3
- package/dist/docs/demo-snippets/SidebarDemoShell.svelte +5 -1
- package/dist/docs/demo-snippets/ToolbarActionsDemo.svelte +9 -0
- package/dist/docs/demo-snippets/ToolbarActionsDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/ToolbarDemo.svelte +15 -0
- package/dist/docs/demo-snippets/ToolbarDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/ToolbarInputGroupDemo.svelte +11 -0
- package/dist/docs/demo-snippets/ToolbarInputGroupDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/ToolbarLabelsDemo.svelte +9 -0
- package/dist/docs/demo-snippets/ToolbarLabelsDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/ToolbarMixedControlsDemo.svelte +10 -0
- package/dist/docs/demo-snippets/ToolbarMixedControlsDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/ToolbarSizesDemo.svelte +17 -0
- package/dist/docs/demo-snippets/ToolbarSizesDemo.svelte.d.ts +18 -0
- package/dist/docs/demo-snippets/map-demo-data.d.ts +25 -0
- package/dist/docs/demo-snippets/map-demo-data.js +73 -0
- package/dist/docs/nav.js +2 -0
- package/dist/docs/props-data/BubbleMap.d.ts +3 -0
- package/dist/docs/props-data/BubbleMap.js +172 -0
- package/dist/docs/props-data/ChartLegend.js +50 -26
- package/dist/docs/props-data/ChoroplethMap.d.ts +3 -0
- package/dist/docs/props-data/ChoroplethMap.js +164 -0
- package/dist/docs/props-data/Dialog.js +1 -1
- package/dist/docs/props-data/Radio.js +1 -1
- package/dist/docs/props-data/Radio__Group.js +6 -6
- package/dist/docs/props-data/Radio__Item.js +2 -2
- package/dist/docs/props-data/TimeseriesChart.js +106 -99
- package/dist/docs/props-data/Toolbar.d.ts +20 -0
- package/dist/docs/props-data/Toolbar.js +19 -0
- package/dist/docs/props-data/Toolbar__Button.d.ts +6 -0
- package/dist/docs/props-data/Toolbar__Button.js +27 -0
- package/dist/docs/props-data/Toolbar__Input.d.ts +6 -0
- package/dist/docs/props-data/Toolbar__Input.js +17 -0
- package/dist/docs/props-data/Toolbar__InputGroup.d.ts +12 -0
- package/dist/docs/props-data/Toolbar__InputGroup.js +13 -0
- package/dist/index.d.ts +67 -65
- package/dist/index.js +48 -47
- package/dist/styles.css +2 -2
- package/dist/utils/cn.d.ts +2 -2
- package/dist/utils/cn.js +17 -4
- package/package.json +20 -19
- package/src/lib/components/button/Button.svelte +52 -15
- package/src/lib/components/button/button.test.ts +18 -0
- package/src/lib/components/chart/BubbleMap.svelte +369 -0
- package/src/lib/components/chart/BubbleMap.test.ts +129 -0
- package/src/lib/components/chart/Chart.svelte +10 -1
- package/src/lib/components/chart/ChartLegend.svelte +46 -3
- package/src/lib/components/chart/ChoroplethMap.svelte +321 -0
- package/src/lib/components/chart/Color.ts +91 -37
- package/src/lib/components/chart/SankeyChart.svelte +2 -3
- package/src/lib/components/chart/TimeseriesChart.svelte +22 -1
- package/src/lib/components/chart/index.ts +21 -7
- package/src/lib/components/chart/tooltip-utils.ts +10 -0
- package/src/lib/components/dialog/Dialog.svelte +6 -37
- package/src/lib/components/dialog/Dialog.variants.ts +36 -0
- package/src/lib/components/dialog/dialog.test.ts +17 -0
- package/src/lib/components/dialog/index.ts +1 -0
- package/src/lib/components/dropdown-menu/DropdownMenuContent.svelte +1 -0
- package/src/lib/components/input-group/InputGroup.svelte +7 -1
- package/src/lib/components/input-group/InputGroupInput.svelte +4 -0
- package/src/lib/components/input-group/context.ts +1 -0
- package/src/lib/components/radio/Radio.svelte +1 -1
- package/src/lib/components/radio/RadioGroup.svelte +38 -9
- package/src/lib/components/radio/RadioItem.svelte +7 -5
- package/src/lib/components/radio/RadioTypedValueTestHost.svelte +14 -0
- package/src/lib/components/radio/index.ts +7 -1
- package/src/lib/components/radio/radio.test.ts +14 -0
- package/src/lib/components/sidebar/SidebarContent.svelte +1 -1
- package/src/lib/components/sidebar/SidebarGroupLabel.svelte +1 -1
- package/src/lib/components/toasty/KumoToastContent.svelte +13 -4
- package/src/lib/components/toasty/Toasty.svelte +4 -0
- package/src/lib/components/toolbar/Toolbar.svelte +68 -0
- package/src/lib/components/toolbar/ToolbarButton.svelte +46 -0
- package/src/lib/components/toolbar/ToolbarInput.svelte +18 -0
- package/src/lib/components/toolbar/ToolbarInputGroup.svelte +20 -0
- package/src/lib/components/toolbar/ToolbarTestHost.svelte +36 -0
- package/src/lib/components/toolbar/context.ts +54 -0
- package/src/lib/components/toolbar/index.ts +34 -0
- package/src/lib/components/toolbar/toolbar.test.ts +81 -0
- package/src/lib/docs/HomeGrid.svelte +27 -0
- package/src/lib/docs/MdxPage.svelte +7 -3
- package/src/lib/docs/PropsTable.svelte +3 -1
- package/src/lib/docs/demo-snippets/BadgeColorVariantsDemo.svelte +1 -0
- package/src/lib/docs/demo-snippets/BubbleMapCloudflareLocationsDemo.svelte +40 -0
- package/src/lib/docs/demo-snippets/BubbleMapDemo.svelte +37 -0
- package/src/lib/docs/demo-snippets/CategoricalColorsDemo.svelte +4 -4
- package/src/lib/docs/demo-snippets/CategoricalCvdDemo.svelte +4 -4
- package/src/lib/docs/demo-snippets/ChartColorSystemsDemo.svelte +2 -2
- package/src/lib/docs/demo-snippets/ChoroplethMapDemo.svelte +34 -0
- package/src/lib/docs/demo-snippets/DialogMaxWidthDemo.svelte +14 -0
- package/src/lib/docs/demo-snippets/DialogSizesDemo.svelte +65 -0
- package/src/lib/docs/demo-snippets/DialogWithSelectDemo.svelte +21 -5
- package/src/lib/docs/demo-snippets/LegendHighlightDemo.svelte +105 -0
- package/src/lib/docs/demo-snippets/LegendOnClickDemo.svelte +118 -0
- package/src/lib/docs/demo-snippets/RadioTypedValueDemo.svelte +26 -0
- package/src/lib/docs/demo-snippets/SemanticColorsDemo.svelte +4 -4
- package/src/lib/docs/demo-snippets/SequentialColorsDemo.svelte +3 -3
- package/src/lib/docs/demo-snippets/SidebarDemoShell.svelte +5 -1
- package/src/lib/docs/demo-snippets/ToolbarActionsDemo.svelte +9 -0
- package/src/lib/docs/demo-snippets/ToolbarDemo.svelte +15 -0
- package/src/lib/docs/demo-snippets/ToolbarInputGroupDemo.svelte +11 -0
- package/src/lib/docs/demo-snippets/ToolbarLabelsDemo.svelte +9 -0
- package/src/lib/docs/demo-snippets/ToolbarMixedControlsDemo.svelte +10 -0
- package/src/lib/docs/demo-snippets/ToolbarSizesDemo.svelte +17 -0
- package/src/lib/docs/demo-snippets/map-demo-data.ts +103 -0
- package/src/lib/docs/nav.ts +2 -0
- package/src/lib/docs/props-data/BubbleMap.ts +181 -0
- package/src/lib/docs/props-data/ChartLegend.ts +55 -26
- package/src/lib/docs/props-data/ChoroplethMap.ts +173 -0
- package/src/lib/docs/props-data/Dialog.ts +1 -1
- package/src/lib/docs/props-data/Radio.ts +1 -1
- package/src/lib/docs/props-data/Radio__Group.ts +6 -6
- package/src/lib/docs/props-data/Radio__Item.ts +2 -2
- package/src/lib/docs/props-data/TimeseriesChart.ts +118 -99
- package/src/lib/docs/props-data/Toolbar.ts +19 -0
- package/src/lib/docs/props-data/Toolbar__Button.ts +27 -0
- package/src/lib/docs/props-data/Toolbar__Input.ts +17 -0
- package/src/lib/docs/props-data/Toolbar__InputGroup.ts +13 -0
- package/src/lib/index.ts +166 -74
- package/src/lib/styles.css +13 -5
- package/src/lib/utils/cn.ts +18 -4
- package/src/routes/charts/+page.md +24 -7
- package/src/routes/charts/colors/+page.md +1 -0
- package/src/routes/charts/maps/+page.md +188 -0
- package/src/routes/charts/timeseries/+page.md +43 -21
- package/src/routes/components/dialog/+page.md +19 -16
- package/src/routes/components/radio/+page.md +7 -0
- package/src/routes/components/toolbar/+page.md +133 -0
- package/src/blocks/delete-resource/delete-resource.svelte.d.ts +0 -32
- package/src/blocks/delete-resource/index.d.ts +0 -2
- package/src/blocks/page-header/index.d.ts +0 -2
- package/src/blocks/page-header/page-header.svelte.d.ts +0 -46
- package/src/blocks/resource-list/index.d.ts +0 -1
- package/src/blocks/resource-list/resource-list.svelte.d.ts +0 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.7.0",
|
|
3
3
|
"components": {
|
|
4
4
|
"Autocomplete": {
|
|
5
5
|
"name": "Autocomplete",
|
|
@@ -608,15 +608,14 @@
|
|
|
608
608
|
},
|
|
609
609
|
"colors": [
|
|
610
610
|
"bg-kumo-base",
|
|
611
|
-
"bg-kumo-brand",
|
|
612
|
-
"bg-kumo-brand-hover",
|
|
613
|
-
"bg-kumo-danger",
|
|
614
611
|
"bg-kumo-tint",
|
|
615
612
|
"ring-kumo-brand",
|
|
613
|
+
"ring-kumo-danger",
|
|
616
614
|
"ring-kumo-focus",
|
|
617
|
-
"ring-kumo-
|
|
615
|
+
"ring-kumo-line",
|
|
618
616
|
"text-kumo-danger",
|
|
619
617
|
"text-kumo-default",
|
|
618
|
+
"text-kumo-strong",
|
|
620
619
|
"text-kumo-subtle"
|
|
621
620
|
],
|
|
622
621
|
"subComponents": {
|
|
@@ -2055,7 +2054,7 @@
|
|
|
2055
2054
|
"xl"
|
|
2056
2055
|
],
|
|
2057
2056
|
"default": "base",
|
|
2058
|
-
"description": "
|
|
2057
|
+
"description": "Fixed dialog width preset: sm (288px), base (384px), lg (512px), or xl (768px)."
|
|
2059
2058
|
},
|
|
2060
2059
|
"style": {
|
|
2061
2060
|
"type": "string",
|
|
@@ -3569,7 +3568,7 @@
|
|
|
3569
3568
|
"description": "Additional classes merged onto the root element."
|
|
3570
3569
|
},
|
|
3571
3570
|
"onValueChange": {
|
|
3572
|
-
"type": "(value: string) => void",
|
|
3571
|
+
"type": "(value: string, eventDetails?: unknown) => void",
|
|
3573
3572
|
"optional": true,
|
|
3574
3573
|
"description": "Called when the value changes."
|
|
3575
3574
|
}
|
|
@@ -3635,9 +3634,9 @@
|
|
|
3635
3634
|
"description": "Supporting description text."
|
|
3636
3635
|
},
|
|
3637
3636
|
"value": {
|
|
3638
|
-
"type": "
|
|
3637
|
+
"type": "Value",
|
|
3639
3638
|
"optional": true,
|
|
3640
|
-
"description": "Controlled value."
|
|
3639
|
+
"description": "Controlled value. Parameterized by the radio value type Value, which defaults to string."
|
|
3641
3640
|
},
|
|
3642
3641
|
"disabled": {
|
|
3643
3642
|
"type": "boolean",
|
|
@@ -3665,9 +3664,9 @@
|
|
|
3665
3664
|
"description": "Additional classes merged onto the root element."
|
|
3666
3665
|
},
|
|
3667
3666
|
"defaultValue": {
|
|
3668
|
-
"type": "
|
|
3667
|
+
"type": "Value",
|
|
3669
3668
|
"optional": true,
|
|
3670
|
-
"description": "Initial uncontrolled value."
|
|
3669
|
+
"description": "Initial uncontrolled value. Parameterized by the radio value type Value, which defaults to string."
|
|
3671
3670
|
},
|
|
3672
3671
|
"required": {
|
|
3673
3672
|
"type": "boolean",
|
|
@@ -3675,9 +3674,9 @@
|
|
|
3675
3674
|
"description": "Marks the field as required."
|
|
3676
3675
|
},
|
|
3677
3676
|
"onValueChange": {
|
|
3678
|
-
"type": "(value:
|
|
3677
|
+
"type": "(value: Value, eventDetails?: unknown) => void",
|
|
3679
3678
|
"optional": true,
|
|
3680
|
-
"description": "Called when the value changes."
|
|
3679
|
+
"description": "Called when the value changes. The second argument carries native event details about the interaction."
|
|
3681
3680
|
}
|
|
3682
3681
|
}
|
|
3683
3682
|
},
|
|
@@ -3731,10 +3730,10 @@
|
|
|
3731
3730
|
"description": "Supporting description text."
|
|
3732
3731
|
},
|
|
3733
3732
|
"value": {
|
|
3734
|
-
"type": "
|
|
3733
|
+
"type": "Value",
|
|
3735
3734
|
"optional": false,
|
|
3736
3735
|
"required": true,
|
|
3737
|
-
"description": "
|
|
3736
|
+
"description": "Item value. Parameterized by the radio value type Value to match the enclosing Radio.Group value type."
|
|
3738
3737
|
}
|
|
3739
3738
|
}
|
|
3740
3739
|
},
|
|
@@ -5189,6 +5188,118 @@
|
|
|
5189
5188
|
"props": {},
|
|
5190
5189
|
"colors": []
|
|
5191
5190
|
},
|
|
5191
|
+
"Toolbar": {
|
|
5192
|
+
"name": "Toolbar",
|
|
5193
|
+
"type": "component",
|
|
5194
|
+
"category": "Action",
|
|
5195
|
+
"description": "Compose explicit toolbar controls into one clean grouped card.",
|
|
5196
|
+
"importPath": "kumo-svelte/components/toolbar",
|
|
5197
|
+
"sourceFile": "components/toolbar",
|
|
5198
|
+
"props": {
|
|
5199
|
+
"children": {
|
|
5200
|
+
"type": "Snippet",
|
|
5201
|
+
"optional": false,
|
|
5202
|
+
"required": true,
|
|
5203
|
+
"description": "Toolbar controls rendered as one grouped card."
|
|
5204
|
+
},
|
|
5205
|
+
"size": {
|
|
5206
|
+
"type": "enum",
|
|
5207
|
+
"optional": true,
|
|
5208
|
+
"values": [
|
|
5209
|
+
"xs",
|
|
5210
|
+
"sm",
|
|
5211
|
+
"base",
|
|
5212
|
+
"lg"
|
|
5213
|
+
],
|
|
5214
|
+
"default": "base",
|
|
5215
|
+
"description": "Locks every toolbar item to this size."
|
|
5216
|
+
},
|
|
5217
|
+
"class": {
|
|
5218
|
+
"type": "string",
|
|
5219
|
+
"optional": true,
|
|
5220
|
+
"description": "Additional classes merged onto the toolbar root."
|
|
5221
|
+
}
|
|
5222
|
+
},
|
|
5223
|
+
"colors": [
|
|
5224
|
+
"bg-kumo-control",
|
|
5225
|
+
"border-kumo-line",
|
|
5226
|
+
"ring-kumo-brand",
|
|
5227
|
+
"ring-kumo-line"
|
|
5228
|
+
],
|
|
5229
|
+
"subComponents": {
|
|
5230
|
+
"Button": {
|
|
5231
|
+
"description": "Toolbar.Button",
|
|
5232
|
+
"props": {
|
|
5233
|
+
"children": {
|
|
5234
|
+
"type": "Snippet",
|
|
5235
|
+
"optional": true,
|
|
5236
|
+
"description": "Optional visible button label."
|
|
5237
|
+
},
|
|
5238
|
+
"icon": {
|
|
5239
|
+
"type": "Component",
|
|
5240
|
+
"optional": true,
|
|
5241
|
+
"description": "Optional icon component rendered before the label."
|
|
5242
|
+
},
|
|
5243
|
+
"shape": {
|
|
5244
|
+
"type": "enum",
|
|
5245
|
+
"optional": true,
|
|
5246
|
+
"values": [
|
|
5247
|
+
"base",
|
|
5248
|
+
"square",
|
|
5249
|
+
"circle"
|
|
5250
|
+
],
|
|
5251
|
+
"description": "Button shape. Icon-only toolbar buttons default to square."
|
|
5252
|
+
},
|
|
5253
|
+
"disabled": {
|
|
5254
|
+
"type": "boolean",
|
|
5255
|
+
"optional": true,
|
|
5256
|
+
"description": "Disables the toolbar button."
|
|
5257
|
+
},
|
|
5258
|
+
"loading": {
|
|
5259
|
+
"type": "boolean",
|
|
5260
|
+
"optional": true,
|
|
5261
|
+
"description": "Shows a loading indicator and disables the toolbar button."
|
|
5262
|
+
}
|
|
5263
|
+
}
|
|
5264
|
+
},
|
|
5265
|
+
"Input": {
|
|
5266
|
+
"description": "Toolbar.Input",
|
|
5267
|
+
"props": {
|
|
5268
|
+
"value": {
|
|
5269
|
+
"type": "string | number",
|
|
5270
|
+
"optional": true,
|
|
5271
|
+
"description": "Input value, bindable with `bind:value`."
|
|
5272
|
+
},
|
|
5273
|
+
"onValueChange": {
|
|
5274
|
+
"type": "(value: string) => void",
|
|
5275
|
+
"optional": true,
|
|
5276
|
+
"description": "Called when the input value changes."
|
|
5277
|
+
},
|
|
5278
|
+
"class": {
|
|
5279
|
+
"type": "string",
|
|
5280
|
+
"optional": true,
|
|
5281
|
+
"description": "Additional classes merged onto the toolbar input."
|
|
5282
|
+
}
|
|
5283
|
+
}
|
|
5284
|
+
},
|
|
5285
|
+
"InputGroup": {
|
|
5286
|
+
"description": "Toolbar.InputGroup",
|
|
5287
|
+
"props": {
|
|
5288
|
+
"children": {
|
|
5289
|
+
"type": "Snippet",
|
|
5290
|
+
"optional": false,
|
|
5291
|
+
"required": true,
|
|
5292
|
+
"description": "InputGroup children rendered as one toolbar item."
|
|
5293
|
+
},
|
|
5294
|
+
"class": {
|
|
5295
|
+
"type": "string",
|
|
5296
|
+
"optional": true,
|
|
5297
|
+
"description": "Additional classes merged onto the toolbar input group."
|
|
5298
|
+
}
|
|
5299
|
+
}
|
|
5300
|
+
}
|
|
5301
|
+
}
|
|
5302
|
+
},
|
|
5192
5303
|
"Tooltip": {
|
|
5193
5304
|
"name": "Tooltip",
|
|
5194
5305
|
"type": "component",
|
|
@@ -5362,12 +5473,14 @@
|
|
|
5362
5473
|
"Tabs",
|
|
5363
5474
|
"Text",
|
|
5364
5475
|
"Toast",
|
|
5476
|
+
"Toolbar",
|
|
5365
5477
|
"Tooltip"
|
|
5366
5478
|
],
|
|
5367
5479
|
"byCategory": {
|
|
5368
5480
|
"Action": [
|
|
5369
5481
|
"Button",
|
|
5370
|
-
"Link"
|
|
5482
|
+
"Link",
|
|
5483
|
+
"Toolbar"
|
|
5371
5484
|
],
|
|
5372
5485
|
"Display": [
|
|
5373
5486
|
"Badge",
|
|
@@ -5465,6 +5578,7 @@
|
|
|
5465
5578
|
"Tabs",
|
|
5466
5579
|
"Text",
|
|
5467
5580
|
"Toast",
|
|
5581
|
+
"Toolbar",
|
|
5468
5582
|
"Tooltip"
|
|
5469
5583
|
],
|
|
5470
5584
|
"block": [
|
package/ai/component-registry.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Kumo Svelte Component Registry
|
|
2
2
|
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
|
|
5
5
|
## Autocomplete
|
|
6
6
|
|
|
@@ -322,6 +322,14 @@ A notification system for displaying brief, non-intrusive messages to users.
|
|
|
322
322
|
- Import: `import { Toast } from "kumo-svelte/components/toast";`
|
|
323
323
|
- Source: `components/toast`
|
|
324
324
|
|
|
325
|
+
## Toolbar
|
|
326
|
+
|
|
327
|
+
Compose explicit toolbar controls into one clean grouped card.
|
|
328
|
+
|
|
329
|
+
- Category: Action
|
|
330
|
+
- Import: `import { Toolbar } from "kumo-svelte/components/toolbar";`
|
|
331
|
+
- Source: `components/toolbar`
|
|
332
|
+
|
|
325
333
|
## Tooltip
|
|
326
334
|
|
|
327
335
|
A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.
|
|
@@ -45,12 +45,13 @@
|
|
|
45
45
|
},
|
|
46
46
|
variant: {
|
|
47
47
|
primary: {
|
|
48
|
-
classes:
|
|
48
|
+
classes:
|
|
49
|
+
'relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) focus:ring-(--kumo-button-emphasis-ring) focus-visible:ring-(--kumo-button-emphasis-ring) active:ring-(--kumo-button-emphasis-ring) disabled:opacity-50',
|
|
49
50
|
description: 'High-emphasis button for primary actions'
|
|
50
51
|
},
|
|
51
52
|
secondary: {
|
|
52
53
|
classes:
|
|
53
|
-
'bg-kumo-base !text-kumo-default ring not-disabled:hover:bg-kumo-tint disabled:bg-kumo-base/50 disabled:!text-kumo-default/70 ring-kumo-
|
|
54
|
+
'bg-kumo-base !text-kumo-default ring not-disabled:hover:bg-kumo-tint disabled:bg-kumo-base/50 disabled:!text-kumo-default/70 ring-kumo-line data-[state=open]:bg-kumo-base',
|
|
54
55
|
description: 'Default button style for most actions'
|
|
55
56
|
},
|
|
56
57
|
ghost: {
|
|
@@ -58,16 +59,18 @@
|
|
|
58
59
|
description: 'Minimal button with no background'
|
|
59
60
|
},
|
|
60
61
|
destructive: {
|
|
61
|
-
classes:
|
|
62
|
+
classes:
|
|
63
|
+
'relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) focus:ring-(--kumo-button-emphasis-ring) focus-visible:ring-(--kumo-button-emphasis-ring) active:ring-(--kumo-button-emphasis-ring) disabled:opacity-50',
|
|
62
64
|
description: 'Danger button for destructive actions like delete'
|
|
63
65
|
},
|
|
64
66
|
'secondary-destructive': {
|
|
65
67
|
classes:
|
|
66
|
-
'bg-kumo-base !text-kumo-danger ring not-disabled:hover:
|
|
68
|
+
'bg-kumo-base !text-kumo-danger ring not-disabled:hover:!text-kumo-danger not-disabled:hover:ring-kumo-danger/30 disabled:bg-kumo-base/50 disabled:!text-kumo-danger/70 ring-kumo-line data-[state=open]:bg-kumo-base',
|
|
67
69
|
description: 'Secondary button with destructive text for less prominent dangerous actions'
|
|
68
70
|
},
|
|
69
71
|
outline: {
|
|
70
|
-
classes:
|
|
72
|
+
classes:
|
|
73
|
+
'bg-transparent text-kumo-default ring ring-kumo-line transition-colors not-disabled:hover:text-kumo-strong not-disabled:hover:ring-kumo-focus/25',
|
|
71
74
|
description: 'Bordered button with transparent background'
|
|
72
75
|
}
|
|
73
76
|
}
|
|
@@ -100,10 +103,10 @@
|
|
|
100
103
|
'focus:outline-none focus:ring-kumo-focus/50 focus-visible:ring-2 focus-visible:ring-kumo-brand',
|
|
101
104
|
'cursor-pointer',
|
|
102
105
|
'disabled:cursor-not-allowed disabled:text-kumo-subtle',
|
|
103
|
-
KUMO_BUTTON_VARIANTS.variant[variant].classes,
|
|
104
106
|
KUMO_BUTTON_VARIANTS.size[size].classes,
|
|
105
107
|
KUMO_BUTTON_VARIANTS.shape[shape].classes,
|
|
106
|
-
isCompactShape && KUMO_BUTTON_VARIANTS.compactSize[size].classes
|
|
108
|
+
isCompactShape && KUMO_BUTTON_VARIANTS.compactSize[size].classes,
|
|
109
|
+
KUMO_BUTTON_VARIANTS.variant[variant].classes
|
|
107
110
|
);
|
|
108
111
|
}
|
|
109
112
|
|
|
@@ -120,7 +123,7 @@
|
|
|
120
123
|
variant?: Variant;
|
|
121
124
|
loading?: boolean;
|
|
122
125
|
title?: string;
|
|
123
|
-
componentName?: 'Button' | 'LinkButton';
|
|
126
|
+
componentName?: 'Button' | 'LinkButton' | 'Toolbar.Button';
|
|
124
127
|
[key: string]: unknown;
|
|
125
128
|
}
|
|
126
129
|
|
|
@@ -152,6 +155,19 @@
|
|
|
152
155
|
|
|
153
156
|
const loaderSize = $derived(size === 'lg' ? 16 : 14);
|
|
154
157
|
const externalProps = $derived(external ? { target: '_blank', rel: 'noopener noreferrer' } : {});
|
|
158
|
+
const emphasisToken = $derived(
|
|
159
|
+
variant === 'primary'
|
|
160
|
+
? 'var(--color-kumo-brand)'
|
|
161
|
+
: variant === 'destructive'
|
|
162
|
+
? 'var(--color-kumo-danger)'
|
|
163
|
+
: undefined
|
|
164
|
+
);
|
|
165
|
+
const emphasisRing = $derived(emphasisToken ? `color-mix(in oklch, ${emphasisToken}, black 10%)` : undefined);
|
|
166
|
+
const emphasisBg = $derived(emphasisToken ? `color-mix(in oklch, ${emphasisToken}, white 30%)` : undefined);
|
|
167
|
+
const emphasisGradientStart = $derived(
|
|
168
|
+
emphasisToken ? `color-mix(in oklch, ${emphasisToken}, white 15%)` : undefined
|
|
169
|
+
);
|
|
170
|
+
const emphasisGradientEnd = $derived(emphasisToken);
|
|
155
171
|
</script>
|
|
156
172
|
|
|
157
173
|
{#snippet buttonElement()}
|
|
@@ -164,16 +180,37 @@
|
|
|
164
180
|
aria-busy={loading || undefined}
|
|
165
181
|
data-kumo-component={componentName}
|
|
166
182
|
data-kumo-part={href ? 'link-button' : 'button'}
|
|
183
|
+
style:--kumo-button-emphasis-ring={emphasisRing}
|
|
184
|
+
style:--kumo-button-emphasis-bg={emphasisBg}
|
|
185
|
+
style:--kumo-button-emphasis-gradient-start={emphasisGradientStart}
|
|
186
|
+
style:--kumo-button-emphasis-gradient-end={emphasisGradientEnd}
|
|
167
187
|
{...externalProps}
|
|
168
188
|
{...rest}
|
|
169
189
|
>
|
|
170
|
-
{#if
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
190
|
+
{#if emphasisToken}
|
|
191
|
+
<span
|
|
192
|
+
aria-hidden="true"
|
|
193
|
+
class="absolute inset-0 rounded-[inherit] bg-linear-to-b from-(--kumo-button-emphasis-gradient-start) to-(--kumo-button-emphasis-gradient-end) shadow-[inset_0_1px_0_0_var(--kumo-button-emphasis-bg)] group-hover:from-(--kumo-button-emphasis-bg)"
|
|
194
|
+
></span>
|
|
195
|
+
<span class="relative flex items-center gap-1.5">
|
|
196
|
+
{#if loading}
|
|
197
|
+
<Loader size={loaderSize} />
|
|
198
|
+
{:else if IconComponent}
|
|
199
|
+
<IconComponent />
|
|
200
|
+
{/if}
|
|
201
|
+
{#if children}
|
|
202
|
+
<span class="contents">{@render children()}</span>
|
|
203
|
+
{/if}
|
|
204
|
+
</span>
|
|
205
|
+
{:else}
|
|
206
|
+
{#if loading}
|
|
207
|
+
<Loader size={loaderSize} />
|
|
208
|
+
{:else if IconComponent}
|
|
209
|
+
<IconComponent />
|
|
210
|
+
{/if}
|
|
211
|
+
{#if children}
|
|
212
|
+
<span class="contents">{@render children()}</span>
|
|
213
|
+
{/if}
|
|
177
214
|
{/if}
|
|
178
215
|
</svelte:element>
|
|
179
216
|
{/snippet}
|
|
@@ -13,7 +13,7 @@ declare const Button: Component<{
|
|
|
13
13
|
variant?: "secondary" | "primary" | "ghost" | "destructive" | "secondary-destructive" | "outline";
|
|
14
14
|
loading?: boolean;
|
|
15
15
|
title?: string;
|
|
16
|
-
componentName?: "Button" | "LinkButton";
|
|
16
|
+
componentName?: "Button" | "LinkButton" | "Toolbar.Button";
|
|
17
17
|
}, {
|
|
18
18
|
KUMO_BUTTON_VARIANTS: {
|
|
19
19
|
readonly shape: {
|
|
@@ -64,11 +64,11 @@ declare const Button: Component<{
|
|
|
64
64
|
};
|
|
65
65
|
readonly variant: {
|
|
66
66
|
readonly primary: {
|
|
67
|
-
readonly classes: "bg-kumo-
|
|
67
|
+
readonly classes: "relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) focus:ring-(--kumo-button-emphasis-ring) focus-visible:ring-(--kumo-button-emphasis-ring) active:ring-(--kumo-button-emphasis-ring) disabled:opacity-50";
|
|
68
68
|
readonly description: "High-emphasis button for primary actions";
|
|
69
69
|
};
|
|
70
70
|
readonly secondary: {
|
|
71
|
-
readonly classes: "bg-kumo-base !text-kumo-default ring not-disabled:hover:bg-kumo-tint disabled:bg-kumo-base/50 disabled:!text-kumo-default/70 ring-kumo-
|
|
71
|
+
readonly classes: "bg-kumo-base !text-kumo-default ring not-disabled:hover:bg-kumo-tint disabled:bg-kumo-base/50 disabled:!text-kumo-default/70 ring-kumo-line data-[state=open]:bg-kumo-base";
|
|
72
72
|
readonly description: "Default button style for most actions";
|
|
73
73
|
};
|
|
74
74
|
readonly ghost: {
|
|
@@ -76,15 +76,15 @@ declare const Button: Component<{
|
|
|
76
76
|
readonly description: "Minimal button with no background";
|
|
77
77
|
};
|
|
78
78
|
readonly destructive: {
|
|
79
|
-
readonly classes: "bg-kumo-
|
|
79
|
+
readonly classes: "relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) focus:ring-(--kumo-button-emphasis-ring) focus-visible:ring-(--kumo-button-emphasis-ring) active:ring-(--kumo-button-emphasis-ring) disabled:opacity-50";
|
|
80
80
|
readonly description: "Danger button for destructive actions like delete";
|
|
81
81
|
};
|
|
82
82
|
readonly 'secondary-destructive': {
|
|
83
|
-
readonly classes: "bg-kumo-base !text-kumo-danger ring not-disabled:hover:
|
|
83
|
+
readonly classes: "bg-kumo-base !text-kumo-danger ring not-disabled:hover:!text-kumo-danger not-disabled:hover:ring-kumo-danger/30 disabled:bg-kumo-base/50 disabled:!text-kumo-danger/70 ring-kumo-line data-[state=open]:bg-kumo-base";
|
|
84
84
|
readonly description: "Secondary button with destructive text for less prominent dangerous actions";
|
|
85
85
|
};
|
|
86
86
|
readonly outline: {
|
|
87
|
-
readonly classes: "bg-transparent text-kumo-default ring ring-kumo-
|
|
87
|
+
readonly classes: "bg-transparent text-kumo-default ring ring-kumo-line transition-colors not-disabled:hover:text-kumo-strong not-disabled:hover:ring-kumo-focus/25";
|
|
88
88
|
readonly description: "Bordered button with transparent background";
|
|
89
89
|
};
|
|
90
90
|
};
|
|
@@ -30,4 +30,17 @@ describe('Button', () => {
|
|
|
30
30
|
expect(button.disabled).toBe(true);
|
|
31
31
|
expect(button.getAttribute('aria-busy')).toBe('true');
|
|
32
32
|
});
|
|
33
|
+
it('keeps emphasized variant rings color-matched when pressed or focused', () => {
|
|
34
|
+
for (const variant of ['primary', 'destructive']) {
|
|
35
|
+
render(Button, {
|
|
36
|
+
variant,
|
|
37
|
+
'aria-label': variant
|
|
38
|
+
});
|
|
39
|
+
const className = screen.getByRole('button', { name: variant }).className;
|
|
40
|
+
expect(className).toContain('ring-(--kumo-button-emphasis-ring)');
|
|
41
|
+
expect(className).toContain('focus:ring-(--kumo-button-emphasis-ring)');
|
|
42
|
+
expect(className).toContain('focus-visible:ring-(--kumo-button-emphasis-ring)');
|
|
43
|
+
expect(className).toContain('active:ring-(--kumo-button-emphasis-ring)');
|
|
44
|
+
}
|
|
45
|
+
});
|
|
33
46
|
});
|