@trimble-oss/moduswebcomponents-mcp 1.0.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.
Files changed (108) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +337 -0
  3. package/package.json +39 -0
  4. package/versions/1.0.0/component-docs/_all_components.json +56 -0
  5. package/versions/1.0.0/component-docs/modus-wc-autocomplete.json +415 -0
  6. package/versions/1.0.0/component-docs/modus-wc-date.json +227 -0
  7. package/versions/1.0.0/component-docs/modus-wc-dropdown-menu.json +164 -0
  8. package/versions/1.0.0/component-docs/modus-wc-logo.json +61 -0
  9. package/versions/1.0.0/component-docs/modus-wc-menu-item.json +165 -0
  10. package/versions/1.0.0/component-docs/modus-wc-menu.json +106 -0
  11. package/versions/1.0.0/component-docs/modus-wc-navbar.json +290 -0
  12. package/versions/1.0.0/component-docs/modus-wc-profile-menu.json +64 -0
  13. package/versions/1.0.0/component-docs/modus-wc-side-navigation.json +102 -0
  14. package/versions/1.0.0/component-docs/modus-wc-table.json +202 -0
  15. package/versions/1.0.0/component-docs/modus-wc-tooltip.json +94 -0
  16. package/versions/1.0.0/component-docs/modus-wc-typography.json +78 -0
  17. package/versions/1.0.0/docs/_all_docs.json +15 -0
  18. package/versions/1.0.0/docs/angular.mdx +374 -0
  19. package/versions/1.0.0/docs/getting-started.mdx +131 -0
  20. package/versions/1.0.7/component-docs/_all_components.json +55 -0
  21. package/versions/1.0.7/component-docs/modus-wc-autocomplete.json +405 -0
  22. package/versions/1.0.7/component-docs/modus-wc-table.json +202 -0
  23. package/versions/1.0.7/component-docs/modus-wc-tooltip.json +94 -0
  24. package/versions/1.0.7/docs/_all_docs.json +15 -0
  25. package/versions/1.0.7/docs/angular.mdx +374 -0
  26. package/versions/1.1.0/component-docs/_all_components.json +56 -0
  27. package/versions/1.1.0/component-docs/modus-wc-autocomplete.json +405 -0
  28. package/versions/1.1.0/component-docs/modus-wc-navbar.json +290 -0
  29. package/versions/1.1.0/component-docs/modus-wc-profile-menu.json +64 -0
  30. package/versions/1.1.0/component-docs/modus-wc-side-navigation.json +102 -0
  31. package/versions/1.1.0/component-docs/modus-wc-table.json +202 -0
  32. package/versions/1.1.0/component-docs/modus-wc-tooltip.json +94 -0
  33. package/versions/1.1.0/component-docs/modus-wc-typography.json +78 -0
  34. package/versions/1.1.0/docs/_all_docs.json +15 -0
  35. package/versions/1.1.0/docs/angular.mdx +374 -0
  36. package/versions/1.1.0/docs/getting-started.mdx +131 -0
  37. package/versions/1.1.1/component-docs/_all_components.json +56 -0
  38. package/versions/1.1.1/component-docs/modus-wc-autocomplete.json +405 -0
  39. package/versions/1.1.1/component-docs/modus-wc-navbar.json +290 -0
  40. package/versions/1.1.1/component-docs/modus-wc-profile-menu.json +64 -0
  41. package/versions/1.1.1/component-docs/modus-wc-side-navigation.json +102 -0
  42. package/versions/1.1.1/component-docs/modus-wc-table.json +202 -0
  43. package/versions/1.1.1/component-docs/modus-wc-tooltip.json +94 -0
  44. package/versions/1.1.1/component-docs/modus-wc-typography.json +78 -0
  45. package/versions/1.1.1/docs/_all_docs.json +15 -0
  46. package/versions/1.1.1/docs/angular.mdx +374 -0
  47. package/versions/1.1.1/docs/getting-started.mdx +131 -0
  48. package/versions/base/component-docs/_all_components.json +55 -0
  49. package/versions/base/component-docs/modus-wc-accordion.json +48 -0
  50. package/versions/base/component-docs/modus-wc-alert.json +112 -0
  51. package/versions/base/component-docs/modus-wc-autocomplete.json +397 -0
  52. package/versions/base/component-docs/modus-wc-avatar.json +83 -0
  53. package/versions/base/component-docs/modus-wc-badge.json +68 -0
  54. package/versions/base/component-docs/modus-wc-breadcrumbs.json +63 -0
  55. package/versions/base/component-docs/modus-wc-button-group.json +100 -0
  56. package/versions/base/component-docs/modus-wc-button.json +130 -0
  57. package/versions/base/component-docs/modus-wc-card.json +98 -0
  58. package/versions/base/component-docs/modus-wc-checkbox.json +149 -0
  59. package/versions/base/component-docs/modus-wc-chip.json +132 -0
  60. package/versions/base/component-docs/modus-wc-collapse.json +90 -0
  61. package/versions/base/component-docs/modus-wc-date.json +227 -0
  62. package/versions/base/component-docs/modus-wc-divider.json +85 -0
  63. package/versions/base/component-docs/modus-wc-dropdown-menu.json +154 -0
  64. package/versions/base/component-docs/modus-wc-file-dropzone.json +155 -0
  65. package/versions/base/component-docs/modus-wc-handle.json +135 -0
  66. package/versions/base/component-docs/modus-wc-icon.json +722 -0
  67. package/versions/base/component-docs/modus-wc-input-feedback.json +71 -0
  68. package/versions/base/component-docs/modus-wc-input-label.json +84 -0
  69. package/versions/base/component-docs/modus-wc-loader.json +65 -0
  70. package/versions/base/component-docs/modus-wc-logo.json +61 -0
  71. package/versions/base/component-docs/modus-wc-menu-item.json +173 -0
  72. package/versions/base/component-docs/modus-wc-menu.json +86 -0
  73. package/versions/base/component-docs/modus-wc-modal.json +108 -0
  74. package/versions/base/component-docs/modus-wc-navbar.json +280 -0
  75. package/versions/base/component-docs/modus-wc-number-input.json +219 -0
  76. package/versions/base/component-docs/modus-wc-pagination.json +103 -0
  77. package/versions/base/component-docs/modus-wc-panel.json +76 -0
  78. package/versions/base/component-docs/modus-wc-progress.json +86 -0
  79. package/versions/base/component-docs/modus-wc-radio.json +139 -0
  80. package/versions/base/component-docs/modus-wc-rating.json +117 -0
  81. package/versions/base/component-docs/modus-wc-select.json +159 -0
  82. package/versions/base/component-docs/modus-wc-side-navigation.json +102 -0
  83. package/versions/base/component-docs/modus-wc-skeleton.json +65 -0
  84. package/versions/base/component-docs/modus-wc-slider.json +163 -0
  85. package/versions/base/component-docs/modus-wc-stepper.json +47 -0
  86. package/versions/base/component-docs/modus-wc-switch.json +149 -0
  87. package/versions/base/component-docs/modus-wc-table.json +202 -0
  88. package/versions/base/component-docs/modus-wc-tabs.json +86 -0
  89. package/versions/base/component-docs/modus-wc-text-input.json +278 -0
  90. package/versions/base/component-docs/modus-wc-textarea.json +215 -0
  91. package/versions/base/component-docs/modus-wc-theme-switcher.json +49 -0
  92. package/versions/base/component-docs/modus-wc-time-input.json +211 -0
  93. package/versions/base/component-docs/modus-wc-toast.json +56 -0
  94. package/versions/base/component-docs/modus-wc-toolbar.json +44 -0
  95. package/versions/base/component-docs/modus-wc-tooltip.json +94 -0
  96. package/versions/base/component-docs/modus-wc-typography.json +73 -0
  97. package/versions/base/component-docs/modus-wc-utility-panel.json +86 -0
  98. package/versions/base/docs/_all_docs.json +15 -0
  99. package/versions/base/docs/accessibility.mdx +32 -0
  100. package/versions/base/docs/angular.mdx +346 -0
  101. package/versions/base/docs/form-inputs.mdx +86 -0
  102. package/versions/base/docs/getting-started.mdx +91 -0
  103. package/versions/base/docs/modus-figma-mcp-integration-guide.mdx +254 -0
  104. package/versions/base/docs/modus-icon-usage.mdx +210 -0
  105. package/versions/base/docs/react.mdx +129 -0
  106. package/versions/base/docs/styling.mdx +107 -0
  107. package/versions/base/docs/testing.mdx +18 -0
  108. package/versions/base/docs/vue.mdx +159 -0
@@ -0,0 +1,219 @@
1
+ {
2
+ "description": "A customizable input component used to create number inputs with types",
3
+ "properties": [
4
+ {
5
+ "name": "autoComplete",
6
+ "type": "'on' | 'off'",
7
+ "description": "Hint for form autofill feature.",
8
+ "default": null,
9
+ "mutable": false,
10
+ "end_line": 29
11
+ },
12
+ {
13
+ "name": "bordered",
14
+ "type": "boolean",
15
+ "description": "Indicates that the input should have a border.",
16
+ "default": "true",
17
+ "mutable": false,
18
+ "end_line": 32
19
+ },
20
+ {
21
+ "name": "currencySymbol",
22
+ "type": "string",
23
+ "description": "The currency symbol to display.",
24
+ "default": "''",
25
+ "mutable": false,
26
+ "end_line": 35
27
+ },
28
+ {
29
+ "name": "customClass",
30
+ "type": "string",
31
+ "description": "Custom CSS class to apply to the input.",
32
+ "default": "''",
33
+ "mutable": false,
34
+ "end_line": 38
35
+ },
36
+ {
37
+ "name": "disabled",
38
+ "type": "boolean",
39
+ "description": "Whether the form control is disabled.",
40
+ "default": "false",
41
+ "mutable": false,
42
+ "end_line": 41
43
+ },
44
+ {
45
+ "name": "feedback",
46
+ "type": "IInputFeedbackProp",
47
+ "description": "Feedback to render below the input.",
48
+ "default": null,
49
+ "mutable": false,
50
+ "end_line": 44
51
+ },
52
+ {
53
+ "name": "inputId",
54
+ "type": "string",
55
+ "description": "The ID of the input element.",
56
+ "default": null,
57
+ "mutable": false,
58
+ "end_line": 47
59
+ },
60
+ {
61
+ "name": "inputTabIndex",
62
+ "type": "number",
63
+ "description": "Determine the control's relative ordering for sequential focus navigation (typically with the Tab key).",
64
+ "default": null,
65
+ "mutable": false,
66
+ "end_line": 50
67
+ },
68
+ {
69
+ "name": "label",
70
+ "type": "string",
71
+ "description": "The text to display within the label.",
72
+ "default": null,
73
+ "mutable": false,
74
+ "end_line": 53
75
+ },
76
+ {
77
+ "name": "max",
78
+ "type": "number",
79
+ "description": "The input's maximum value.",
80
+ "default": null,
81
+ "mutable": false,
82
+ "end_line": 56
83
+ },
84
+ {
85
+ "name": "min",
86
+ "type": "number",
87
+ "description": "The input's minimum value.",
88
+ "default": null,
89
+ "mutable": false,
90
+ "end_line": 59
91
+ },
92
+ {
93
+ "name": "name",
94
+ "type": "string",
95
+ "description": "Name of the form control. Submitted with the form as part of a name/value pair.",
96
+ "default": null,
97
+ "mutable": false,
98
+ "end_line": 62
99
+ },
100
+ {
101
+ "name": "placeholder",
102
+ "type": "string",
103
+ "description": "Text that appears in the form control when it has no value set.",
104
+ "default": "''",
105
+ "mutable": false,
106
+ "end_line": 65
107
+ },
108
+ {
109
+ "name": "readOnly",
110
+ "type": "boolean",
111
+ "description": "Whether the value is editable.",
112
+ "default": "false",
113
+ "mutable": false,
114
+ "end_line": 68
115
+ },
116
+ {
117
+ "name": "required",
118
+ "type": "boolean",
119
+ "description": "A value is required for the form to be submittable.",
120
+ "default": "false",
121
+ "mutable": false,
122
+ "end_line": 71
123
+ },
124
+ {
125
+ "name": "size",
126
+ "type": "ModusSize",
127
+ "description": "The size of the input.",
128
+ "default": "'md'",
129
+ "mutable": false,
130
+ "end_line": 74
131
+ },
132
+ {
133
+ "name": "step",
134
+ "type": "number",
135
+ "description": "The granularity that the value adheres to.",
136
+ "default": null,
137
+ "mutable": false,
138
+ "end_line": 77
139
+ },
140
+ {
141
+ "name": "type",
142
+ "type": "'number' | 'range'",
143
+ "description": "Type of form control.",
144
+ "default": "'number'",
145
+ "mutable": false,
146
+ "end_line": 80
147
+ },
148
+ {
149
+ "name": "value",
150
+ "type": "string",
151
+ "description": "The value of the control.",
152
+ "default": "''",
153
+ "mutable": true,
154
+ "end_line": 83
155
+ }
156
+ ],
157
+ "events": [
158
+ {
159
+ "name": "inputBlur",
160
+ "detail": "FocusEvent",
161
+ "description": "Event emitted when the input loses focus.",
162
+ "end_line": 86
163
+ },
164
+ {
165
+ "name": "inputChange",
166
+ "detail": "InputEvent",
167
+ "description": "Event emitted when the input value changes.",
168
+ "end_line": 89
169
+ },
170
+ {
171
+ "name": "inputFocus",
172
+ "detail": "FocusEvent",
173
+ "description": "Event emitted when the input gains focus.",
174
+ "end_line": 92
175
+ }
176
+ ],
177
+ "methods": [],
178
+ "slots": [],
179
+ "examples": {
180
+ "basic": "<number-input-shadow-host\n style=\"width: 200px;display: block;\"\n .props=${{ ...args }}\n ></number-input-shadow-host>",
181
+ "variations": [],
182
+ "args": {
183
+ "bordered": "true",
184
+ "disabled": "false",
185
+ "inputmode": "'numeric'",
186
+ "label": "'Label'",
187
+ "size": "'md'",
188
+ "type": "'number'",
189
+ "value": "''"
190
+ },
191
+ "argTypes": {},
192
+ "usage": [],
193
+ "events": [
194
+ "inputBlur",
195
+ "inputChange",
196
+ "inputFocus"
197
+ ]
198
+ },
199
+ "tag": "modus-wc-number-input",
200
+ "storyExample": {
201
+ "template": "<number-input-shadow-host\n style=\"width: 200px;display: block;\"\n .props=${{ ...args }}\n ></number-input-shadow-host>",
202
+ "args": {
203
+ "bordered": "true",
204
+ "disabled": "false",
205
+ "inputmode": "'numeric'",
206
+ "label": "'Label'",
207
+ "size": "'md'",
208
+ "type": "'number'",
209
+ "value": "''"
210
+ },
211
+ "argTypes": {},
212
+ "events": [
213
+ "inputBlur",
214
+ "inputChange",
215
+ "inputFocus"
216
+ ],
217
+ "fullContent": "import { withActions } from '@storybook/addon-actions/decorator';\nimport { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createShadowHostClass } from '../../providers/shadow-dom/shadow-host-helper';\nimport { IInputFeedbackProp, ModusSize } from '../types';\n\ninterface NumberInputArgs {\n 'auto-complete'?: 'on' | 'off';\n bordered?: boolean;\n 'currency-symbol'?: string;\n 'custom-class'?: string;\n disabled?: boolean;\n feedback?: IInputFeedbackProp;\n 'input-aria-invalid'?: 'true' | 'false';\n 'input-id'?: string;\n inputmode?: 'decimal' | 'none' | 'numeric';\n 'input-tab-index'?: number;\n label?: string;\n max?: number;\n min?: number;\n name?: string;\n placeholder?: string;\n 'read-only'?: boolean;\n required?: boolean;\n size?: ModusSize;\n step?: number;\n type?: 'number' | 'range';\n value: string;\n}\n\nconst meta: Meta<NumberInputArgs> = {\n title: 'Components/Forms/Number Input',\n component: 'modus-wc-number-input',\n args: {\n bordered: true,\n disabled: false,\n inputmode: 'numeric',\n label: 'Label',\n size: 'md',\n type: 'number',\n value: '',\n },\n argTypes: {\n 'auto-complete': {\n control: { type: 'select' },\n options: ['on', 'off'],\n },\n feedback: {\n description: 'Feedback prop for input components',\n table: {\n type: {\n detail: `\n Interface: IInputFeedbackProp\n Properties:\n - level ('error' | 'info' | 'success' | 'warning'): The feedback level\n - message (string, optional): The feedback message\n `,\n },\n },\n },\n 'input-aria-invalid': {\n control: { type: 'select' },\n options: ['true', 'false'],\n },\n inputmode: {\n control: { type: 'select' },\n options: ['decimal', 'none', 'numeric'],\n },\n size: {\n control: { type: 'select' },\n options: ['sm', 'md', 'lg'],\n },\n type: {\n control: { type: 'select' },\n options: ['number', 'range'],\n },\n },\n decorators: [withActions],\n parameters: {\n actions: {\n handles: ['inputBlur', 'inputChange', 'inputFocus'],\n },\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj<NumberInputArgs>;\n\nconst Template: Story = {\n render: (args) => html`\n <modus-wc-number-input\n aria-label=\"Number input\"\n auto-complete=${ifDefined(args['auto-complete'])}\n ?bordered=${args.bordered}\n currency-symbol=${ifDefined(args['currency-symbol'])}\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n .feedback=${args.feedback}\n input-aria-invalid=${ifDefined(args['input-aria-invalid'])}\n input-id=${ifDefined(args['input-id'])}\n inputmode=${ifDefined(args.inputmode)}\n input-tab-index=${ifDefined(args['input-tab-index'])}\n label=${ifDefined(args.label)}\n max=${ifDefined(args.max)}\n min=${ifDefined(args.min)}\n name=${ifDefined(args.name)}\n placeholder=${ifDefined(args.placeholder)}\n ?read-only=${args['read-only']}\n ?required=${args.required}\n size=${ifDefined(args.size)}\n step=${ifDefined(args.step)}\n type=${ifDefined(args.type)}\n .value=${args.value}\n ></modus-wc-number-input>\n `,\n};\n\nexport const Default: Story = { ...Template };\n\nconst errorFeedback: IInputFeedbackProp = {\n level: 'error',\n message: 'Value is required.',\n};\n\nexport const Currency: Story = {\n ...Template,\n args: { 'currency-symbol': '$' },\n};\n\nexport const WithErrorFeedback: Story = {\n ...Template,\n args: { feedback: errorFeedback, required: true },\n parameters: {\n docs: {\n source: {\n transform: (src) => `${src}\n<script>\n const numberInputElement = document.querySelector('modus-wc-number-input');\n numberInputElement.feedback = {\n level: 'error',\n message: 'Value is required.'\n };\n</script>`,\n },\n },\n },\n};\n\nexport const ShadowDomParent: Story = {\n render: (args) => {\n // Create a unique shadow host for number-input component\n if (!customElements.get('number-input-shadow-host')) {\n const NumberInputShadowHost = createShadowHostClass<NumberInputArgs>({\n componentTag: 'modus-wc-number-input',\n propsMapper: (v: NumberInputArgs, el: HTMLElement) => {\n const numberInputEl = el as unknown as {\n autoComplete: string;\n bordered: boolean;\n currencySymbol: string;\n customClass: string;\n disabled: boolean;\n feedback: IInputFeedbackProp;\n inputId: string;\n inputTabIndex: number;\n label: string;\n max: number;\n min: number;\n name: string;\n placeholder: string;\n readOnly: boolean;\n required: boolean;\n size: string;\n step: number;\n type: string;\n value: string;\n };\n numberInputEl.autoComplete = v['auto-complete'] ?? '';\n numberInputEl.bordered = Boolean(v.bordered);\n numberInputEl.currencySymbol = v['currency-symbol'] ?? '';\n numberInputEl.customClass = v['custom-class'] || '';\n numberInputEl.disabled = Boolean(v.disabled);\n numberInputEl.inputId = v['input-id'] ?? '';\n numberInputEl.inputTabIndex = v['input-tab-index'] ?? 0;\n numberInputEl.label = v.label ?? '';\n numberInputEl.max = v.max ?? 0;\n numberInputEl.min = v.min ?? 0;\n numberInputEl.name = v.name ?? '';\n numberInputEl.placeholder = v.placeholder ?? '';\n numberInputEl.readOnly = Boolean(v['read-only']);\n numberInputEl.required = Boolean(v.required);\n numberInputEl.size = v.size ?? '';\n numberInputEl.step = v.step ?? 1;\n numberInputEl.type = v.type ?? '';\n numberInputEl.value = v.value;\n },\n });\n customElements.define('number-input-shadow-host', NumberInputShadowHost);\n }\n\n return html`<number-input-shadow-host\n style=\"width: 200px;display: block;\"\n .props=${{ ...args }}\n ></number-input-shadow-host>`;\n },\n};\n\nexport const Migration: Story = {\n parameters: {\n docs: {\n description: {\n story: `\n#### Breaking Changes\n\n - In 1.0 input state was maintained by the component. 2.0 components encourage users to follow a controlled\n input model. See the Form Inputs [documentation](/docs/documentation-form-inputs--docs) for\n additional info and examples.\n - Instead of changing the internal input type for currency formatting, the component now always renders\n a number input and displays the currency symbol via the \\`currency-symbol\\` prop.\n - Size values have changed from verbose names (\\`medium\\`, \\`large\\`) to abbreviations (\\`sm\\`, \\`md\\`, \\`lg\\`).\n\n#### Prop Mapping\n\n| 1.0 Prop | 2.0 Prop | Notes |\n|--------------|---------------------|-----------------------------------------|\n| aria-label | aria-label | |\n| currency | currency-symbol | |\n| disabled | disabled | |\n| error-text | feedback.message | Use \\`feedback\\` level |\n| helper-text | | Not carried over |\n| label | label | |\n| locale | | Not carried over |\n| max-value | max | |\n| min-value | min | |\n| placeholder | placeholder | |\n| read-only | read-only | |\n| required | required | |\n| size | size | \\`medium\\` → \\`md\\`, \\`large\\` → \\`lg\\` |\n| step | step | |\n| text-align | | Not carried over, use CSS instead |\n| valid-text | feedback.message | Use \\`feedback\\` level |\n| value | value | |\n\n#### Event Mapping\n\n| 1.0 Event | 2.0 Event | Notes |\n|--------------|--------------|-------|\n| valueChange | inputChange | |\n `,\n },\n },\n // To hide the actual story rendering and only show docs:\n controls: { disable: true },\n canvas: { disable: true },\n },\n // Simple render function or leave it empty\n render: () => html`<div></div>`,\n};\n"
218
+ }
219
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "description": "Pagination component to navigate through pages of content",
3
+ "properties": [
4
+ {
5
+ "name": "ariaLabelValues",
6
+ "type": "IAriaLabelValues",
7
+ "description": "Aria label values for pagination buttons",
8
+ "default": null,
9
+ "mutable": false,
10
+ "end_line": 55
11
+ },
12
+ {
13
+ "name": "count",
14
+ "type": "number",
15
+ "description": "Total number of pages",
16
+ "default": "1",
17
+ "mutable": false,
18
+ "end_line": 58
19
+ },
20
+ {
21
+ "name": "customClass",
22
+ "type": "string",
23
+ "description": "Custom CSS class to apply",
24
+ "default": "''",
25
+ "mutable": false,
26
+ "end_line": 61
27
+ },
28
+ {
29
+ "name": "nextButtonText",
30
+ "type": "string",
31
+ "description": "The next page button text. If not set, an icon control will be used.",
32
+ "default": null,
33
+ "mutable": false,
34
+ "end_line": 64
35
+ },
36
+ {
37
+ "name": "page",
38
+ "type": "number",
39
+ "description": "The current page number",
40
+ "default": "1",
41
+ "mutable": false,
42
+ "end_line": 67
43
+ },
44
+ {
45
+ "name": "prevButtonText",
46
+ "type": "string",
47
+ "description": "The previous page button text. If not set, an icon control will be used.",
48
+ "default": null,
49
+ "mutable": false,
50
+ "end_line": 70
51
+ },
52
+ {
53
+ "name": "size",
54
+ "type": "ModusSize",
55
+ "description": "Size of the pagination buttons",
56
+ "default": "'md'",
57
+ "mutable": false,
58
+ "end_line": 73
59
+ }
60
+ ],
61
+ "events": [
62
+ {
63
+ "name": "pageChange",
64
+ "detail": "IPageChange",
65
+ "description": "Event emitted when page changes",
66
+ "end_line": 76
67
+ }
68
+ ],
69
+ "methods": [],
70
+ "slots": [],
71
+ "examples": {
72
+ "basic": null,
73
+ "variations": [],
74
+ "args": {
75
+ "aria-label-values": "defaultLabelValues",
76
+ "count": "5",
77
+ "custom-class": "''",
78
+ "page": "1",
79
+ "size": "'md'"
80
+ },
81
+ "argTypes": {},
82
+ "usage": [],
83
+ "events": [
84
+ "pageChange"
85
+ ]
86
+ },
87
+ "tag": "modus-wc-pagination",
88
+ "storyExample": {
89
+ "template": "",
90
+ "args": {
91
+ "aria-label-values": "defaultLabelValues",
92
+ "count": "5",
93
+ "custom-class": "''",
94
+ "page": "1",
95
+ "size": "'md'"
96
+ },
97
+ "argTypes": {},
98
+ "events": [
99
+ "pageChange"
100
+ ],
101
+ "fullContent": "import { withActions } from '@storybook/addon-actions/decorator';\nimport { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { IAriaLabelValues } from './modus-wc-pagination';\n\nconst defaultLabelValues: IAriaLabelValues = {\n firstPage: 'First page',\n lastPage: 'Last page',\n nextPage: 'Next page',\n page: 'Page {0}',\n previousPage: 'Previous page',\n};\n\ninterface PaginationArgs {\n 'aria-label-values'?: IAriaLabelValues;\n count: number;\n 'custom-class'?: string;\n 'next-button-text'?: string;\n page: number;\n 'prev-button-text'?: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst meta: Meta<PaginationArgs> = {\n title: 'Components/Pagination',\n component: 'modus-wc-pagination',\n args: {\n 'aria-label-values': defaultLabelValues,\n count: 5,\n 'custom-class': '',\n page: 1,\n size: 'md',\n },\n argTypes: {\n 'aria-label-values': {\n description: 'Custom aria label values for pagination buttons',\n table: {\n type: {\n detail: `\n Interface: IAriaLabelValues\n Properties:\n - firstPage (string, optional): Aria label for the first page button\n - lastPage (string, optional): Aria label for the last page button\n - nextPage (string, optional): Aria label for the next page button\n - page (string, optional): Aria label for the page number button. Use {0} as placeholder for the page number\n - previousPage (string, optional): Aria label for the previous page button\n `,\n },\n },\n },\n size: {\n control: { type: 'select' },\n options: ['sm', 'md', 'lg'],\n },\n },\n decorators: [withActions],\n parameters: {\n actions: {\n handles: ['pageChange'],\n },\n docs: {\n description: {\n component: `\n## Event Interface Documentation\n\nThe pageChange event emits an object with the following interface:\n\n\\`\\`\\`typescript\ninterface IPageChange {\n /** The number of the newly selected page */\n newPage: number;\n /** The number of the previously selected page */\n prevPage: number;\n}\n\\`\\`\\`\n `,\n },\n },\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj<PaginationArgs>;\n\nexport const Default: Story = {\n render: (args) => html`\n <modus-wc-pagination\n .ariaLabelValues=${args['aria-label-values']}\n count=${args.count}\n custom-class=${ifDefined(args['custom-class'])}\n next-button-text=\"${ifDefined(args['next-button-text'])}\"\n page=${args.page}\n prev-button-text=\"${ifDefined(args['prev-button-text'])}\"\n size=${ifDefined(args.size)}\n ></modus-wc-pagination>\n `,\n};\n\nexport const Migration: Story = {\n parameters: {\n docs: {\n description: {\n story: `\n#### Breaking Changes\n\n - In 1.0 the pagination component incorporated ellipses to indicate page skips. In 2.0, the component\n has been simplified to only show at most 5 page buttons relative to current page with previous/next\n and first/last navigation buttons.\n - In 1.0 the \\`active-page\\` prop was used, while 2.0 uses \\`page\\` instead.\n - The \\`pageChange\\` event in 1.0 emitted just the page number value. In 2.0, it emits an object\n with \\`newPage\\` and \\`prevPage\\` properties.\n - Size values have changed from verbose names (\\`small\\`, \\`medium\\`, \\`large\\`) to abbreviations (\\`sm\\`, \\`md\\`, \\`lg\\`).\n\n#### Prop Mapping\n\n| 1.0 Prop | 2.0 Prop | Notes |\n|-----------------------|--------------------|-------------------------------------------------------------|\n| active-page | page | |\n| aria-label | aria-label | |\n| max-page | count | |\n| min-page | | Not carried over, minimum page is always 1 |\n| next-page-button-text | next-button-text | |\n| prev-page-button-text | prev-button-text | |\n| size | size | \\`small\\` → \\`sm\\`, \\`medium\\` → \\`md\\`, \\`large\\` → \\`lg\\` |\n\n#### Event Mapping\n\n| 1.0 Event | 2.0 Event | Notes |\n|-------------|-------------|---------------------------------------------------------|\n| pageChange | pageChange | Now emits an object with \\`newPage\\` and \\`prevPage\\` |\n `,\n },\n },\n controls: { disable: true },\n canvas: { disable: true },\n },\n render: () => html`<div></div>`,\n};\n"
102
+ }
103
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "description": "A customizable panel component used to organize content in a structured layout. This component provides 'header', 'body', and 'footer' `<slot>` elements for inserting custom HTML.",
3
+ "properties": [
4
+ {
5
+ "name": "customClass",
6
+ "type": "string",
7
+ "description": "Custom CSS class to apply to the outer div.",
8
+ "default": "''",
9
+ "mutable": false,
10
+ "end_line": 21
11
+ },
12
+ {
13
+ "name": "width",
14
+ "type": "string",
15
+ "description": "Width of the panel in pixels.",
16
+ "default": "'350px'",
17
+ "mutable": false,
18
+ "end_line": 24
19
+ },
20
+ {
21
+ "name": "height",
22
+ "type": "string",
23
+ "description": "Height of the panel in pixels.",
24
+ "default": "'700px'",
25
+ "mutable": false,
26
+ "end_line": 27
27
+ },
28
+ {
29
+ "name": "floating",
30
+ "type": "boolean",
31
+ "description": "Enable floating mode with elevated shadow.",
32
+ "default": "false",
33
+ "mutable": false,
34
+ "end_line": 30
35
+ }
36
+ ],
37
+ "events": [],
38
+ "methods": [],
39
+ "slots": [
40
+ {
41
+ "name": "header",
42
+ "description": "Slot for header content"
43
+ },
44
+ {
45
+ "name": "body",
46
+ "description": "Slot for body content"
47
+ },
48
+ {
49
+ "name": "footer",
50
+ "description": "Slot for footer content"
51
+ }
52
+ ],
53
+ "examples": {
54
+ "basic": "<style>\n .panel-section {\n padding: 12px;\n }\n</style>\n<modus-wc-panel custom-class=\"${ifDefined(args['custom-class'])}\" width=\"${ifDefined(args.width)}\" height=\"${ifDefined(args.height)}\" ?floating=\"${args.floating}\">\n <modus-wc-menu slot=\"header\"> \n <modus-wc-menu-item label=\"Home\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"home\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu size=\"lg\" slot=\"body\">\n <modus-wc-menu-item label=\"Dashboard\" value=\"dashboard\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Projects\" value=\"projects\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Team\" value=\"team\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Calendar\" value=\"calendar\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Documents\" value=\"documents\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Reports\" value=\"reports\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Analytics\" value=\"analytics\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Messages\" value=\"messages\"></modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu slot=\"footer\"> \n <modus-wc-menu-item label=\"Settings\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"settings\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n</modus-wc-panel>",
55
+ "variations": [],
56
+ "args": {
57
+ "width": "'250px'",
58
+ "height": "'500px'",
59
+ "floating": "false"
60
+ },
61
+ "argTypes": {},
62
+ "usage": []
63
+ },
64
+ "tag": "modus-wc-panel",
65
+ "storyExample": {
66
+ "template": "<style>\n .panel-section {\n padding: 12px;\n }\n</style>\n<modus-wc-panel custom-class=\"${ifDefined(args['custom-class'])}\" width=\"${ifDefined(args.width)}\" height=\"${ifDefined(args.height)}\" ?floating=\"${args.floating}\">\n <modus-wc-menu slot=\"header\"> \n <modus-wc-menu-item label=\"Home\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"home\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu size=\"lg\" slot=\"body\">\n <modus-wc-menu-item label=\"Dashboard\" value=\"dashboard\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Projects\" value=\"projects\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Team\" value=\"team\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Calendar\" value=\"calendar\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Documents\" value=\"documents\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Reports\" value=\"reports\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Analytics\" value=\"analytics\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Messages\" value=\"messages\"></modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu slot=\"footer\"> \n <modus-wc-menu-item label=\"Settings\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"settings\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n</modus-wc-panel>",
67
+ "args": {
68
+ "width": "'250px'",
69
+ "height": "'500px'",
70
+ "floating": "false"
71
+ },
72
+ "argTypes": {},
73
+ "events": [],
74
+ "fullContent": "import { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\ninterface PanelArgs {\n 'custom-class'?: string;\n width?: string;\n height?: string;\n floating?: boolean;\n}\n\nconst meta: Meta<PanelArgs> = {\n title: 'Components/Panel',\n component: 'modus-wc-panel',\n parameters: {\n layout: 'padded',\n },\n argTypes: {\n floating: {\n control: { type: 'boolean' },\n },\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj<PanelArgs>;\n\nexport const Default: Story = {\n args: {\n width: '250px',\n height: '500px',\n floating: false,\n },\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n .panel-section {\n padding: 12px;\n }\n</style>\n<modus-wc-panel custom-class=\"${ifDefined(args['custom-class'])}\" width=\"${ifDefined(args.width)}\" height=\"${ifDefined(args.height)}\" ?floating=\"${args.floating}\">\n <modus-wc-menu slot=\"header\"> \n <modus-wc-menu-item label=\"Home\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"home\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu size=\"lg\" slot=\"body\">\n <modus-wc-menu-item label=\"Dashboard\" value=\"dashboard\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Projects\" value=\"projects\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Team\" value=\"team\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Calendar\" value=\"calendar\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Documents\" value=\"documents\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Reports\" value=\"reports\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Analytics\" value=\"analytics\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Messages\" value=\"messages\"></modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu slot=\"footer\"> \n <modus-wc-menu-item label=\"Settings\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"settings\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n</modus-wc-panel>\n `;\n },\n};\n\nexport const Floating: Story = {\n args: {\n width: '250px',\n height: '500px',\n floating: true,\n },\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n .panel-section {\n padding: 12px;\n }\n</style>\n<modus-wc-panel custom-class=\"${ifDefined(args['custom-class'])}\" width=\"${ifDefined(args.width)}\" height=\"${ifDefined(args.height)}\" ?floating=\"${args.floating}\">\n <modus-wc-menu slot=\"header\">\n <modus-wc-menu-item label=\"Menu\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"menu\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu size=\"lg\" slot=\"body\">\n <modus-wc-menu-item label=\"Files\" value=\"files\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Inbox\" value=\"inbox\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Starred\" value=\"starred\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Recent\" value=\"recent\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Shared\" value=\"shared\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Archive\" value=\"archive\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Trash\" value=\"trash\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Settings\" value=\"settings\"></modus-wc-menu-item>\n </modus-wc-menu>\n\n <modus-wc-menu slot=\"footer\">\n <modus-wc-menu-item label=\"Help\" custom-class=\"panel-section\">\n <modus-wc-icon slot=\"start-icon\" name=\"help\"></modus-wc-icon>\n </modus-wc-menu-item>\n </modus-wc-menu>\n</modus-wc-panel>\n `;\n },\n};\n\nexport const BodyOnly: Story = {\n args: {\n width: '250px',\n height: 'auto',\n },\n render: (args) => {\n // prettier-ignore\n return html`\n<modus-wc-panel custom-class=\"${ifDefined(args['custom-class'])}\" width=\"${ifDefined(args.width)}\" height=\"${ifDefined(args.height)}\" ?floating=\"${args.floating}\">\n <modus-wc-menu size=\"lg\" slot=\"body\">\n <modus-wc-menu-item label=\"Dashboard\" value=\"dashboard\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Projects\" value=\"projects\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Team\" value=\"team\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Calendar\" value=\"calendar\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Documents\" value=\"documents\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Reports\" value=\"reports\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Analytics\" value=\"analytics\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Messages\" value=\"messages\"></modus-wc-menu-item>\n <modus-wc-menu-item label=\"Tasks\" value=\"tasks\"></modus-wc-menu-item>\n </modus-wc-menu>\n</modus-wc-panel>\n `;\n },\n};\n"
75
+ }
76
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "description": "A customizable progress component used to show the progress of a task or show the passing of time. The radial variant supports slotting in custom HTML to be displayed within the progress circle.",
3
+ "properties": [
4
+ {
5
+ "name": "customClass",
6
+ "type": "string",
7
+ "description": "Custom CSS class to apply to the progress element.",
8
+ "default": "''",
9
+ "mutable": false,
10
+ "end_line": 21
11
+ },
12
+ {
13
+ "name": "indeterminate",
14
+ "type": "boolean",
15
+ "description": "The indeterminate state of the progress component.",
16
+ "default": "false",
17
+ "mutable": true,
18
+ "end_line": 24
19
+ },
20
+ {
21
+ "name": "label",
22
+ "type": "string",
23
+ "description": "A text label to render within the progress bar",
24
+ "default": null,
25
+ "mutable": false,
26
+ "end_line": 27
27
+ },
28
+ {
29
+ "name": "max",
30
+ "type": "number",
31
+ "description": "The progress component's maximum value.",
32
+ "default": "100",
33
+ "mutable": false,
34
+ "end_line": 30
35
+ },
36
+ {
37
+ "name": "value",
38
+ "type": "number",
39
+ "description": "The value of the progress component.",
40
+ "default": "0",
41
+ "mutable": true,
42
+ "end_line": 33
43
+ },
44
+ {
45
+ "name": "variant",
46
+ "type": "'default' | 'radial'",
47
+ "description": "The variant of the progress component.",
48
+ "default": "'default'",
49
+ "mutable": false,
50
+ "end_line": 36
51
+ }
52
+ ],
53
+ "events": [],
54
+ "methods": [],
55
+ "slots": [
56
+ {
57
+ "name": "default",
58
+ "description": "Slot for default content"
59
+ }
60
+ ],
61
+ "examples": {
62
+ "basic": "<modus-wc-progress\n aria-label=\"Progress bar\"\n custom-class=\"${ifDefined(args['custom-class'])}\"\n ?indeterminate=${args.indeterminate}\n label=${ifDefined(args.label)}\n max=${ifDefined(args.max)}\n value=${args.value}\n variant=${ifDefined(args.variant)}\n ></modus-wc-progress>",
63
+ "variations": [],
64
+ "args": {
65
+ "indeterminate": "false",
66
+ "max": "100",
67
+ "value": "70",
68
+ "variant": "'default'"
69
+ },
70
+ "argTypes": {},
71
+ "usage": []
72
+ },
73
+ "tag": "modus-wc-progress",
74
+ "storyExample": {
75
+ "template": "<modus-wc-progress\n aria-label=\"Progress bar\"\n custom-class=\"${ifDefined(args['custom-class'])}\"\n ?indeterminate=${args.indeterminate}\n label=${ifDefined(args.label)}\n max=${ifDefined(args.max)}\n value=${args.value}\n variant=${ifDefined(args.variant)}\n ></modus-wc-progress>",
76
+ "args": {
77
+ "indeterminate": "false",
78
+ "max": "100",
79
+ "value": "70",
80
+ "variant": "'default'"
81
+ },
82
+ "argTypes": {},
83
+ "events": [],
84
+ "fullContent": "import { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\ninterface ProgressArgs {\n 'custom-class'?: string;\n indeterminate: boolean;\n label?: string;\n max?: number;\n value: number;\n variant?: 'default' | 'radial';\n}\n\nconst meta: Meta<ProgressArgs> = {\n title: 'Components/Progress',\n component: 'modus-wc-progress',\n args: {\n indeterminate: false,\n max: 100,\n value: 70,\n variant: 'default',\n },\n argTypes: {\n variant: {\n control: { type: 'select' },\n options: ['default', 'radial'],\n },\n },\n parameters: {\n layout: 'padded',\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj<ProgressArgs>;\n\nexport const Default: Story = {\n render: (args) => {\n return html`\n <modus-wc-progress\n aria-label=\"Progress bar\"\n custom-class=\"${ifDefined(args['custom-class'])}\"\n ?indeterminate=${args.indeterminate}\n label=${ifDefined(args.label)}\n max=${ifDefined(args.max)}\n value=${args.value}\n variant=${ifDefined(args.variant)}\n ></modus-wc-progress>\n `;\n },\n};\n\nexport const Indeterminate: Story = {\n render: () => {\n return html` <modus-wc-progress indeterminate=\"true\"></modus-wc-progress> `;\n },\n};\n\nexport const SizeVariations: Story = {\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n modus-wc-progress.modus-wc-progress-container .size-small {\n height: 0.5rem;\n }\n modus-wc-progress.modus-wc-progress-container .size-compact {\n height: 0.25rem;\n }\n</style>\n<div>\n <div>\n Default size\n <modus-wc-progress value=${args.value}></modus-wc-progress>\n </div>\n <div>\n Small size\n <modus-wc-progress\n value=${args.value}\n custom-class=\"size-small\"\n ></modus-wc-progress>\n </div>\n <div>\n Compact size\n <modus-wc-progress\n value=${args.value}\n custom-class=\"size-compact\"\n ></modus-wc-progress>\n </div>\n</div>\n `;\n },\n};\n\nexport const LabelTextColor: Story = {\n args: {\n label: 'Loading...',\n value: 50,\n },\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n modus-wc-progress .modus-wc-progress-label.custom-label-color {\n color: #f00;\n }\n</style>\n<modus-wc-progress\n value=${args.value}\n label=${ifDefined(args.label)}\n custom-class=\"custom-label-color\"\n></modus-wc-progress>\n `;\n },\n};\n\nexport const CustomBarColor: Story = {\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n modus-wc-progress .modus-wc-progress.custom-bar-color::-webkit-progress-value {\n background-color: #f48;\n }\n modus-wc-progress .modus-wc-progress.custom-bar-color::-moz-progress-bar {\n background-color: #f48;\n }\n</style>\n<modus-wc-progress\n value=${args.value}\n custom-class=\"custom-bar-color\"\n></modus-wc-progress>\n `;\n },\n};\n\nexport const CustomBackgroundColor: Story = {\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n modus-wc-progress .modus-wc-progress.custom-bg-color {\n background-color: #f00;\n }\n</style>\n<modus-wc-progress\n value=${args.value}\n custom-class=\"custom-bg-color\"\n></modus-wc-progress>\n `;\n },\n};\n\nexport const RadialWithSlottedContent: Story = {\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n #radial-icon {\n justify-content: center;\n }\n</style>\n<modus-wc-progress\n aria-label=\"progress radial\"\n ?indeterminate=${args.indeterminate}\n max=${ifDefined(args.max)}\n variant=\"radial\"\n value=${args.value}\n>\n <modus-wc-icon id=\"radial-icon\" name=\"clipboard\" size=\"md\"></modus-wc-icon>\n ${args.value}%\n</modus-wc-progress>\n `;\n },\n parameters: {\n layout: 'centered',\n },\n};\n\nexport const RadialWithCustomSizeAndThickness: Story = {\n render: (args) => {\n // prettier-ignore\n return html`\n<style>\n .radial-progress--lg {\n --size: 12rem;\n }\n .radial-progress--thin {\n --thickness: 0.5rem;\n }\n</style>\n<modus-wc-progress\n aria-label=\"progress radial\"\n custom-class=\"radial-progress--lg\"\n ?indeterminate=${args.indeterminate}\n max=${ifDefined(args.max)}\n variant=\"radial\"\n value=${args.value}\n>\n ${args.value}%\n</modus-wc-progress>\n<modus-wc-progress\n aria-label=\"progress radial\"\n custom-class=\"radial-progress--lg radial-progress--thin\"\n ?indeterminate=${args.indeterminate}\n max=${ifDefined(args.max)}\n variant=\"radial\"\n value=${args.value}\n>\n ${args.value}%\n</modus-wc-progress>\n `;\n },\n parameters: {\n layout: 'centered',\n },\n};\n\nexport const Migration: Story = {\n parameters: {\n docs: {\n description: {\n story: `\n#### Breaking Changes\n\n - Colors and sizes are now handled through CSS instead of direct props.\n - The \\`mode\\` prop has been replaced with an \\`indeterminate\\` boolean prop.\n\n#### Prop Mapping\n\n| 1.0 Prop | 2.0 Prop | Notes |\n|-------------------|---------------|------------------------------------------------------|\n| aria-label | aria-label | |\n| background-color | | Not carried over, use CSS instead |\n| color | | Not carried over, use CSS instead |\n| max-value | max | |\n| min-value | | Not carried over |\n| mode | indeterminate | 1.0: \\`determinate\\`/\\`indeterminate\\`, 2.0: boolean |\n| size | | Not carried over, use CSS instead |\n| text | label | |\n| text-color | | Not carried over, use CSS instead |\n| value | value | |\n `,\n },\n },\n controls: { disable: true },\n canvas: { disable: true },\n },\n render: () => html`<div></div>`,\n};\n"
85
+ }
86
+ }