@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,65 @@
1
+ {
2
+ "description": "A customizable skeleton component used to create skeletons of various sizes and shapes",
3
+ "properties": [
4
+ {
5
+ "name": "customClass",
6
+ "type": "string",
7
+ "description": "Custom CSS class to apply to the inner div.",
8
+ "default": "''",
9
+ "mutable": false,
10
+ "end_line": 19
11
+ },
12
+ {
13
+ "name": "height",
14
+ "type": "string",
15
+ "description": "The height of the skeleton.",
16
+ "default": "'var(--modus-wc-line-height-md)'",
17
+ "mutable": false,
18
+ "end_line": 22
19
+ },
20
+ {
21
+ "name": "shape",
22
+ "type": "'circle' | 'rectangle'",
23
+ "description": "The shape of the skeleton.",
24
+ "default": "'rectangle'",
25
+ "mutable": false,
26
+ "end_line": 25
27
+ },
28
+ {
29
+ "name": "width",
30
+ "type": "string",
31
+ "description": "The width of the skeleton.",
32
+ "default": "'100%'",
33
+ "mutable": false,
34
+ "end_line": 28
35
+ }
36
+ ],
37
+ "events": [],
38
+ "methods": [],
39
+ "slots": [],
40
+ "examples": {
41
+ "basic": "<modus-wc-skeleton\n custom-class=${ifDefined(args['custom-class'])}\n height=${ifDefined(args.height)}\n shape=${ifDefined(args.shape)}\n width=${ifDefined(args.width)}\n ></modus-wc-skeleton>",
42
+ "variations": [],
43
+ "args": {
44
+ "custom-class": "''",
45
+ "height": "'1.5rem'",
46
+ "shape": "'rectangle'",
47
+ "width": "'100%'"
48
+ },
49
+ "argTypes": {},
50
+ "usage": []
51
+ },
52
+ "tag": "modus-wc-skeleton",
53
+ "storyExample": {
54
+ "template": "<modus-wc-skeleton\n custom-class=${ifDefined(args['custom-class'])}\n height=${ifDefined(args.height)}\n shape=${ifDefined(args.shape)}\n width=${ifDefined(args.width)}\n ></modus-wc-skeleton>",
55
+ "args": {
56
+ "custom-class": "''",
57
+ "height": "'1.5rem'",
58
+ "shape": "'rectangle'",
59
+ "width": "'100%'"
60
+ },
61
+ "argTypes": {},
62
+ "events": [],
63
+ "fullContent": "import { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\ninterface SkeletonArgs {\n 'custom-class'?: string;\n height?: string;\n shape?: 'circle' | 'rectangle';\n width?: string;\n}\n\nconst meta: Meta<SkeletonArgs> = {\n title: 'Components/Skeleton',\n component: 'modus-wc-skeleton',\n args: {\n 'custom-class': '',\n height: '1.5rem',\n shape: 'rectangle',\n width: '100%',\n },\n argTypes: {\n shape: {\n control: {\n type: 'select',\n },\n options: ['circle', 'rectangle'],\n },\n },\n parameters: {\n layout: 'padded',\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj<SkeletonArgs>;\n\nexport const Default: Story = {\n render: (args) => {\n return html`\n <modus-wc-skeleton\n custom-class=${ifDefined(args['custom-class'])}\n height=${ifDefined(args.height)}\n shape=${ifDefined(args.shape)}\n width=${ifDefined(args.width)}\n ></modus-wc-skeleton>\n `;\n },\n};\n\nexport const Circle: Story = {\n render: () => {\n return html`\n <modus-wc-skeleton\n height=\"5rem\"\n shape=\"circle\"\n width=\"5rem\"\n ></modus-wc-skeleton>\n `;\n },\n};\n\nexport const Square: Story = {\n render: () => {\n return html`\n <modus-wc-skeleton height=\"5rem\" width=\"5rem\"></modus-wc-skeleton>\n `;\n },\n};\n\nexport const Composed: Story = {\n render: () => {\n // prettier-ignore\n return html`\n<style>\n .skeleton-container {\n width: 13rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n .skeleton-profile {\n display: flex;\n gap: 1rem;\n }\n\n .skeleton-text {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n</style>\n<div class=\"skeleton-container\">\n <div class=\"skeleton-profile\">\n <modus-wc-skeleton\n height=\"4rem\"\n shape=\"circle\"\n width=\"4rem\"\n ></modus-wc-skeleton>\n <div class=\"skeleton-text\">\n <modus-wc-skeleton width=\"5rem\"></modus-wc-skeleton>\n <modus-wc-skeleton width=\"7rem\"></modus-wc-skeleton>\n </div>\n </div>\n <modus-wc-skeleton height=\"8rem\"></modus-wc-skeleton>\n</div>\n `;\n },\n};\n"
64
+ }
65
+ }
@@ -0,0 +1,163 @@
1
+ {
2
+ "description": "A customizable slider component",
3
+ "properties": [
4
+ {
5
+ "name": "customClass",
6
+ "type": "string",
7
+ "description": "Custom CSS class to apply to the inner div.",
8
+ "default": "''",
9
+ "mutable": false,
10
+ "end_line": 29
11
+ },
12
+ {
13
+ "name": "disabled",
14
+ "type": "boolean",
15
+ "description": "The disabled state of the slider.",
16
+ "default": "false",
17
+ "mutable": false,
18
+ "end_line": 32
19
+ },
20
+ {
21
+ "name": "inputId",
22
+ "type": "string",
23
+ "description": "The ID of the input element.",
24
+ "default": null,
25
+ "mutable": false,
26
+ "end_line": 35
27
+ },
28
+ {
29
+ "name": "inputTabIndex",
30
+ "type": "number",
31
+ "description": "The tabindex of the input.",
32
+ "default": null,
33
+ "mutable": false,
34
+ "end_line": 38
35
+ },
36
+ {
37
+ "name": "label",
38
+ "type": "string",
39
+ "description": "The text to display within the label.",
40
+ "default": null,
41
+ "mutable": false,
42
+ "end_line": 41
43
+ },
44
+ {
45
+ "name": "max",
46
+ "type": "number",
47
+ "description": "The maximum slider value.",
48
+ "default": null,
49
+ "mutable": false,
50
+ "end_line": 44
51
+ },
52
+ {
53
+ "name": "min",
54
+ "type": "number",
55
+ "description": "The minimum slider value.",
56
+ "default": null,
57
+ "mutable": false,
58
+ "end_line": 47
59
+ },
60
+ {
61
+ "name": "name",
62
+ "type": "string",
63
+ "description": "Name of the form control. Submitted with the form as part of a name/value pair.",
64
+ "default": "''",
65
+ "mutable": false,
66
+ "end_line": 50
67
+ },
68
+ {
69
+ "name": "required",
70
+ "type": "boolean",
71
+ "description": "A value is required for the form to be submittable.",
72
+ "default": "false",
73
+ "mutable": false,
74
+ "end_line": 53
75
+ },
76
+ {
77
+ "name": "size",
78
+ "type": "ModusSize",
79
+ "description": "The size of the input.",
80
+ "default": "'md'",
81
+ "mutable": false,
82
+ "end_line": 56
83
+ },
84
+ {
85
+ "name": "step",
86
+ "type": "number",
87
+ "description": "The increment of the slider.",
88
+ "default": null,
89
+ "mutable": false,
90
+ "end_line": 59
91
+ },
92
+ {
93
+ "name": "value",
94
+ "type": "number",
95
+ "description": "The value of the slider.",
96
+ "default": "0",
97
+ "mutable": true,
98
+ "end_line": 62
99
+ }
100
+ ],
101
+ "events": [
102
+ {
103
+ "name": "inputBlur",
104
+ "detail": "FocusEvent",
105
+ "description": "Emitted when the input loses focus.",
106
+ "end_line": 65
107
+ },
108
+ {
109
+ "name": "inputChange",
110
+ "detail": "InputEvent",
111
+ "description": "Emitted when the input value changes.",
112
+ "end_line": 68
113
+ },
114
+ {
115
+ "name": "inputFocus",
116
+ "detail": "FocusEvent",
117
+ "description": "Emitted when the input gains focus.",
118
+ "end_line": 71
119
+ }
120
+ ],
121
+ "methods": [],
122
+ "slots": [],
123
+ "examples": {
124
+ "basic": "<modus-wc-slider\n aria-label=\"Slider\"\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n input-id=${ifDefined(args['input-id'])}\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 ?required=${args.required}\n size=${ifDefined(args.size)}\n step=${ifDefined(args.step)}\n .value=${args.value}\n ></modus-wc-slider>",
125
+ "variations": [],
126
+ "args": {
127
+ "custom-class": "''",
128
+ "disabled": "false",
129
+ "label": "'Label'",
130
+ "name": "''",
131
+ "required": "false",
132
+ "size": "'md'",
133
+ "value": "true"
134
+ },
135
+ "argTypes": {},
136
+ "usage": [],
137
+ "events": [
138
+ "inputBlur",
139
+ "inputChange",
140
+ "inputFocus"
141
+ ]
142
+ },
143
+ "tag": "modus-wc-slider",
144
+ "storyExample": {
145
+ "template": "<modus-wc-slider\n aria-label=\"Slider\"\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n input-id=${ifDefined(args['input-id'])}\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 ?required=${args.required}\n size=${ifDefined(args.size)}\n step=${ifDefined(args.step)}\n .value=${args.value}\n ></modus-wc-slider>",
146
+ "args": {
147
+ "custom-class": "''",
148
+ "disabled": "false",
149
+ "label": "'Label'",
150
+ "name": "''",
151
+ "required": "false",
152
+ "size": "'md'",
153
+ "value": "true"
154
+ },
155
+ "argTypes": {},
156
+ "events": [
157
+ "inputBlur",
158
+ "inputChange",
159
+ "inputFocus"
160
+ ],
161
+ "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 { ModusSize } from '../types';\n\ninterface SliderArgs {\n 'custom-class'?: string;\n disabled?: boolean;\n 'input-id'?: string;\n 'input-tab-index'?: number;\n label?: string;\n max?: number;\n min?: number;\n name?: string;\n required?: boolean;\n size?: ModusSize;\n step?: number;\n value: boolean;\n}\n\nconst meta: Meta<SliderArgs> = {\n title: 'Components/Forms/Slider',\n component: 'modus-wc-slider',\n args: {\n 'custom-class': '',\n disabled: false,\n label: 'Label',\n name: '',\n required: false,\n size: 'md',\n value: true,\n },\n argTypes: {\n size: {\n control: { type: 'select' },\n options: ['sm', 'md', 'lg'],\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<SliderArgs>;\n\nexport const Default: Story = {\n render: (args) => {\n return html`\n <modus-wc-slider\n aria-label=\"Slider\"\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n input-id=${ifDefined(args['input-id'])}\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 ?required=${args.required}\n size=${ifDefined(args.size)}\n step=${ifDefined(args.step)}\n .value=${args.value}\n ></modus-wc-slider>\n `;\n },\n};\n\nexport const ShadowDomParent: Story = {\n render: (args) => {\n // Create a unique shadow host for slider component\n if (!customElements.get('slider-shadow-host')) {\n const SliderShadowHost = createShadowHostClass<SliderArgs>({\n componentTag: 'modus-wc-slider',\n propsMapper: (v: SliderArgs, el: HTMLElement) => {\n const sliderEl = el as unknown as {\n customClass: string;\n disabled: boolean;\n inputId: string;\n inputTabIndex: number;\n label: string;\n max: number;\n min: number;\n name: string;\n required: boolean;\n size: string;\n step: number;\n value: number;\n };\n sliderEl.customClass = v['custom-class'] || '';\n sliderEl.disabled = Boolean(v.disabled);\n sliderEl.inputId = v['input-id'] ?? '';\n sliderEl.inputTabIndex = v['input-tab-index'] ?? 0;\n sliderEl.label = v.label ?? '';\n sliderEl.max = v.max ?? 100;\n sliderEl.min = v.min ?? 0;\n sliderEl.name = v.name ?? '';\n sliderEl.required = Boolean(v.required);\n sliderEl.size = v.size ?? 'md';\n sliderEl.step = v.step ?? 1;\n sliderEl.value = typeof v.value === 'number' ? v.value : 0;\n },\n });\n customElements.define('slider-shadow-host', SliderShadowHost);\n }\n\n return html`<slider-shadow-host\n .props=${{ ...args }}\n ></slider-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 additional info and examples.\n - Property names have changed: \\`max-value\\` → \\`max\\`, \\`min-value\\` → \\`min\\`.\n\n#### Prop Mapping\n\n| 1.0 Prop | 2.0 Prop | Notes |\n|-------------|--------------|-------|\n| aria-label | aria-label | |\n| disabled | disabled | |\n| label | label | |\n| max-value | max | |\n| min-value | min | |\n| value | value | |\n\n#### Event Mapping\n\n| 1.0 Event | 2.0 Event | Notes |\n|-------------|-------------|------------------|\n| valueChange | | Not carried over |\n| valueInput | inputChange | |\n `,\n },\n },\n controls: { disable: true },\n canvas: { disable: true },\n },\n render: () => html`<div></div>`,\n};\n"
162
+ }
163
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "description": "Used to show a list of steps in a process.",
3
+ "properties": [
4
+ {
5
+ "name": "customClass",
6
+ "type": "string",
7
+ "description": "Custom CSS class to apply to the steps element.",
8
+ "default": "''",
9
+ "mutable": false,
10
+ "end_line": 39
11
+ },
12
+ {
13
+ "name": "orientation",
14
+ "type": "Orientation",
15
+ "description": "The orientation of the steps.",
16
+ "default": null,
17
+ "mutable": false,
18
+ "end_line": 42
19
+ },
20
+ {
21
+ "name": "steps",
22
+ "type": "IStepperItem[]",
23
+ "description": "The steps to display.",
24
+ "default": "[]",
25
+ "mutable": false,
26
+ "end_line": 45
27
+ }
28
+ ],
29
+ "events": [],
30
+ "methods": [],
31
+ "slots": [],
32
+ "examples": {
33
+ "basic": null,
34
+ "variations": [],
35
+ "args": {},
36
+ "argTypes": {},
37
+ "usage": []
38
+ },
39
+ "tag": "modus-wc-stepper",
40
+ "storyExample": {
41
+ "template": "",
42
+ "args": {},
43
+ "argTypes": {},
44
+ "events": [],
45
+ "fullContent": "import { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { Orientation } from '../types';\n\ninterface StepperArgs {\n 'custom-class'?: string;\n orientation: Orientation;\n steps?: IStepperItem[];\n}\n\ninterface IStepperItem {\n color?:\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'neutral';\n content?: string;\n customClass?: string;\n label?: string;\n}\n\nconst meta: Meta<StepperArgs> = {\n title: 'Components/Stepper',\n component: 'modus-wc-stepper',\n args: {\n steps: [\n { label: 'Scale', color: 'primary' },\n { label: 'Belong', color: 'primary' },\n { label: 'Grow', color: 'warning' },\n { label: 'Innovate', content: '🚀' },\n ],\n },\n argTypes: {\n 'custom-class': {\n control: 'text',\n },\n orientation: {\n control: { type: 'select' },\n options: ['horizontal', 'vertical'],\n },\n steps: {\n description: 'Array of step objects defining the steps to display',\n table: {\n type: {\n detail: `\n Interface: IStepperItem\n Properties:\n - color ('primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral', optional): The color theme of the step\n - content (string, optional): Custom content to display in the step indicator\n - customClass (string, optional): Custom CSS class to apply to the step\n - label (string, optional): Text label for the step\n `,\n },\n },\n },\n },\n parameters: {\n layout: 'padded',\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj<StepperArgs>;\n\nconst Template: Story = {\n // prettier-ignore\n render: (args) => html`\n<modus-wc-stepper\n custom-class=\"${ifDefined(args['custom-class'])}\"\n orientation=\"${ifDefined(args.orientation)}\"\n .steps=\"${args.steps}\"\n>\n</modus-wc-stepper>\n<script>\n// Adding this block to show how to set stepper steps via JS. \n// const steps = [\n// { label: 'Scale', color: 'primary' },\n// { label: 'Belong', color: 'primary' },\n// { label: 'Grow', color: 'warning' },\n// { label: 'Innovate', content: '🚀' }\n// ]; \n// const stepper = document.querySelector('modus-wc-stepper'); \n// stepper.steps = steps;\n</script>\n\n `,\n};\n\nexport const Default: Story = { ...Template };\n"
46
+ }
47
+ }
@@ -0,0 +1,149 @@
1
+ {
2
+ "description": "A customizable switch component",
3
+ "properties": [
4
+ {
5
+ "name": "customClass",
6
+ "type": "string",
7
+ "description": "Custom CSS class to apply to the inner div.",
8
+ "default": "''",
9
+ "mutable": false,
10
+ "end_line": 30
11
+ },
12
+ {
13
+ "name": "disabled",
14
+ "type": "boolean",
15
+ "description": "The disabled state of the switch.",
16
+ "default": "false",
17
+ "mutable": false,
18
+ "end_line": 33
19
+ },
20
+ {
21
+ "name": "indeterminate",
22
+ "type": "boolean",
23
+ "description": "The indeterminate state of the switch.",
24
+ "default": "false",
25
+ "mutable": true,
26
+ "end_line": 36
27
+ },
28
+ {
29
+ "name": "inputId",
30
+ "type": "string",
31
+ "description": "The ID of the input element.",
32
+ "default": null,
33
+ "mutable": false,
34
+ "end_line": 39
35
+ },
36
+ {
37
+ "name": "inputTabIndex",
38
+ "type": "number",
39
+ "description": "The tabindex of the input.",
40
+ "default": null,
41
+ "mutable": false,
42
+ "end_line": 42
43
+ },
44
+ {
45
+ "name": "label",
46
+ "type": "string",
47
+ "description": "The text to display within the label.",
48
+ "default": null,
49
+ "mutable": false,
50
+ "end_line": 45
51
+ },
52
+ {
53
+ "name": "name",
54
+ "type": "string",
55
+ "description": "Name of the form control. Submitted with the form as part of a name/value pair.",
56
+ "default": "''",
57
+ "mutable": false,
58
+ "end_line": 48
59
+ },
60
+ {
61
+ "name": "required",
62
+ "type": "boolean",
63
+ "description": "A value is required for the form to be submittable.",
64
+ "default": "false",
65
+ "mutable": false,
66
+ "end_line": 51
67
+ },
68
+ {
69
+ "name": "size",
70
+ "type": "ModusSize",
71
+ "description": "The size of the input.",
72
+ "default": "'md'",
73
+ "mutable": false,
74
+ "end_line": 54
75
+ },
76
+ {
77
+ "name": "value",
78
+ "type": "boolean",
79
+ "description": "The value of the switch.",
80
+ "default": "false",
81
+ "mutable": true,
82
+ "end_line": 57
83
+ }
84
+ ],
85
+ "events": [
86
+ {
87
+ "name": "inputBlur",
88
+ "detail": "FocusEvent",
89
+ "description": "Emitted when the input loses focus.",
90
+ "end_line": 60
91
+ },
92
+ {
93
+ "name": "inputChange",
94
+ "detail": "InputEvent",
95
+ "description": "Emitted when the input value changes.",
96
+ "end_line": 63
97
+ },
98
+ {
99
+ "name": "inputFocus",
100
+ "detail": "FocusEvent",
101
+ "description": "Emitted when the input gains focus.",
102
+ "end_line": 66
103
+ }
104
+ ],
105
+ "methods": [],
106
+ "slots": [],
107
+ "examples": {
108
+ "basic": "<modus-wc-switch\n aria-label=\"Toggle\"\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n .indeterminate=${args.indeterminate}\n input-id=${ifDefined(args['input-id'])}\n input-tab-index=${ifDefined(args['input-tab-index'])}\n label=${ifDefined(args.label)}\n name=${ifDefined(args.name)}\n ?required=${args.required}\n size=${ifDefined(args.size)}\n .value=${args.value}\n ></modus-wc-switch>",
109
+ "variations": [],
110
+ "args": {
111
+ "custom-class": "''",
112
+ "disabled": "false",
113
+ "indeterminate": "false",
114
+ "label": "'Label'",
115
+ "name": "''",
116
+ "required": "false",
117
+ "size": "'md'",
118
+ "value": "true"
119
+ },
120
+ "argTypes": {},
121
+ "usage": [],
122
+ "events": [
123
+ "inputBlur",
124
+ "inputChange",
125
+ "inputFocus"
126
+ ]
127
+ },
128
+ "tag": "modus-wc-switch",
129
+ "storyExample": {
130
+ "template": "<modus-wc-switch\n aria-label=\"Toggle\"\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n .indeterminate=${args.indeterminate}\n input-id=${ifDefined(args['input-id'])}\n input-tab-index=${ifDefined(args['input-tab-index'])}\n label=${ifDefined(args.label)}\n name=${ifDefined(args.name)}\n ?required=${args.required}\n size=${ifDefined(args.size)}\n .value=${args.value}\n ></modus-wc-switch>",
131
+ "args": {
132
+ "custom-class": "''",
133
+ "disabled": "false",
134
+ "indeterminate": "false",
135
+ "label": "'Label'",
136
+ "name": "''",
137
+ "required": "false",
138
+ "size": "'md'",
139
+ "value": "true"
140
+ },
141
+ "argTypes": {},
142
+ "events": [
143
+ "inputBlur",
144
+ "inputChange",
145
+ "inputFocus"
146
+ ],
147
+ "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 { ModusSize } from '../types';\n\ninterface SwitchArgs {\n 'custom-class'?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n 'input-id'?: string;\n 'input-tab-index'?: number;\n label?: string;\n name?: string;\n required?: boolean;\n size?: ModusSize;\n value: boolean;\n}\n\nconst meta: Meta<SwitchArgs> = {\n title: 'Components/Forms/Switch',\n component: 'modus-wc-switch',\n args: {\n 'custom-class': '',\n disabled: false,\n indeterminate: false,\n label: 'Label',\n name: '',\n required: false,\n size: 'md',\n value: true,\n },\n argTypes: {\n size: {\n control: { type: 'select' },\n options: ['sm', 'md', 'lg'],\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<SwitchArgs>;\n\nexport const Default: Story = {\n render: (args) => {\n return html`\n <modus-wc-switch\n aria-label=\"Toggle\"\n custom-class=${ifDefined(args['custom-class'])}\n ?disabled=${args.disabled}\n .indeterminate=${args.indeterminate}\n input-id=${ifDefined(args['input-id'])}\n input-tab-index=${ifDefined(args['input-tab-index'])}\n label=${ifDefined(args.label)}\n name=${ifDefined(args.name)}\n ?required=${args.required}\n size=${ifDefined(args.size)}\n .value=${args.value}\n ></modus-wc-switch>\n `;\n },\n};\n\nexport const ShadowDomParent: Story = {\n render: (args) => {\n // Create a unique shadow host for switch component\n if (!customElements.get('switch-shadow-host')) {\n const SwitchShadowHost = createShadowHostClass<SwitchArgs>({\n componentTag: 'modus-wc-switch',\n propsMapper: (v: SwitchArgs, el: HTMLElement) => {\n const switchEl = el as unknown as {\n customClass: string;\n disabled: boolean;\n indeterminate: boolean;\n inputId: string;\n inputTabIndex: number;\n label: string;\n name: string;\n required: boolean;\n size: string;\n value: boolean;\n };\n switchEl.customClass = v['custom-class'] || '';\n switchEl.disabled = Boolean(v.disabled);\n switchEl.indeterminate = Boolean(v.indeterminate);\n switchEl.inputId = v['input-id'] || '';\n switchEl.inputTabIndex = v['input-tab-index'] || 0;\n switchEl.label = v.label || '';\n switchEl.name = v.name || '';\n switchEl.required = Boolean(v.required);\n switchEl.size = v.size || 'md';\n switchEl.value = Boolean(v.value);\n },\n });\n customElements.define('switch-shadow-host', SwitchShadowHost);\n }\n\n return html`<switch-shadow-host\n .props=${{ ...args }}\n ></switch-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 for additional info and examples.\n - \\`checked\\` prop has been renamed to \\`value\\` to maintain consistency across form components.\n - Size values have changed from verbose names (\\`small\\`, \\`medium\\`) 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| checked | value | |\n| disabled | disabled | |\n| label | label | |\n| size | size | \\`small\\` → \\`sm\\`, \\`medium\\` → \\`md\\` |\n\n#### Event Mapping\n\n| 1.0 Event | 2.0 Event | Notes |\n|----------------|----------------|-------------------------------------------------------|\n| switchClick | inputChange | |\n `,\n },\n },\n controls: { disable: true },\n canvas: { disable: true },\n },\n render: () => html`<div></div>`,\n};\n"
148
+ }
149
+ }