@citizenplane/pimp 16.0.3 → 16.2.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/dist/pimp.es.js +781 -757
- package/dist/pimp.umd.js +21 -21
- package/dist/style.css +1 -1
- package/package.json +10 -8
- package/src/components/CpDate.vue +3 -1
- package/src/components/CpHeading.vue +4 -5
- package/src/components/CpMultiselect.vue +2 -5
- package/src/components/CpTable.vue +4 -2
- package/src/components/CpTelInput.vue +18 -12
- package/src/components/CpText.vue +141 -0
- package/src/components/CpToast.vue +1 -1
- package/src/components/CpTransitionExpand.vue +23 -20
- package/src/components/index.ts +2 -0
- package/src/libs/CoreDatepicker.vue +1 -0
- package/src/stories/BaseInputLabel.stories.ts +36 -9
- package/src/stories/Colors.mdx +9 -0
- package/src/stories/Colors.stories.ts +177 -0
- package/src/stories/CpAccordion.stories.ts +188 -159
- package/src/stories/CpAccordionGroup.stories.ts +51 -95
- package/src/stories/CpAirlineLogo.stories.ts +52 -28
- package/src/stories/CpAlert.stories.ts +196 -159
- package/src/stories/CpBadge.stories.ts +260 -194
- package/src/stories/CpButton.stories.ts +257 -426
- package/src/stories/CpCheckbox.stories.ts +102 -30
- package/src/stories/CpContextualMenu.stories.ts +14 -9
- package/src/stories/CpDate.stories.ts +53 -26
- package/src/stories/CpDatepicker.stories.ts +53 -80
- package/src/stories/CpDialog.stories.ts +23 -2
- package/src/stories/CpHeading.stories.ts +60 -20
- package/src/stories/CpIcon.stories.ts +98 -31
- package/src/stories/CpInput.stories.ts +164 -73
- package/src/stories/CpItemActions.stories.ts +23 -12
- package/src/stories/CpLoader.stories.ts +55 -7
- package/src/stories/CpMenuItem.stories.ts +53 -27
- package/src/stories/CpMultiselect.stories.ts +53 -72
- package/src/stories/CpPartnerBadge.stories.ts +58 -76
- package/src/stories/CpRadio.stories.ts +45 -49
- package/src/stories/CpRadioGroup.stories.ts +47 -40
- package/src/stories/CpSelect.stories.ts +108 -34
- package/src/stories/CpSelectMenu.stories.ts +66 -55
- package/src/stories/CpSelectableButton.stories.ts +170 -81
- package/src/stories/CpSwitch.stories.ts +136 -134
- package/src/stories/CpTable.stories.ts +69 -13
- package/src/stories/CpTableEmptyState.stories.ts +11 -7
- package/src/stories/CpTabs.stories.ts +23 -5
- package/src/stories/CpTelInput.stories.ts +28 -19
- package/src/stories/CpText.stories.ts +131 -0
- package/src/stories/CpTextarea.stories.ts +74 -27
- package/src/stories/CpToast.stories.ts +75 -109
- package/src/stories/CpTooltip.stories.ts +82 -77
- package/src/stories/CpTransitionCounter.stories.ts +5 -1
- package/src/stories/CpTransitionExpand.stories.ts +12 -7
- package/src/stories/CpTransitionListItems.stories.ts +6 -1
- package/src/stories/CpTransitionSize.stories.ts +9 -1
- package/src/stories/CpTransitionSlide.stories.ts +5 -1
- package/src/stories/CpTransitionTabContent.stories.ts +5 -1
- package/src/stories/Dimensions.mdx +9 -0
- package/src/stories/Dimensions.stories.ts +119 -0
- package/src/stories/Easings.mdx +9 -0
- package/src/stories/Easings.stories.ts +101 -0
- package/src/stories/FocusRings.mdx +9 -0
- package/src/stories/FocusRings.stories.ts +74 -0
- package/src/stories/Shadows.mdx +9 -0
- package/src/stories/Shadows.stories.ts +100 -0
- package/src/stories/Typography.mdx +9 -0
- package/src/stories/Typography.stories.ts +181 -0
- package/src/stories/documentationStyles.ts +2 -10
- package/src/stories/tokenUtils.ts +259 -0
- package/src/types/primevue-toasteventbus.d.ts +14 -0
- package/tsconfig.json +1 -0
- package/.lintstagedrc.json +0 -4
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
import { computed } from 'vue'
|
|
2
2
|
|
|
3
|
-
import type { Args, Meta, StoryObj } from '@storybook/vue3'
|
|
3
|
+
import type { Args, Meta, StoryObj } from '@storybook/vue3-vite'
|
|
4
4
|
import type { MenuItem } from 'primevue/menuitem'
|
|
5
5
|
|
|
6
6
|
import CpAccordion from '@/components/CpAccordion.vue'
|
|
7
7
|
import CpAccordionGroup from '@/components/CpAccordionGroup.vue'
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
docCellStyle,
|
|
11
|
-
docLabelStyle,
|
|
12
|
-
docPageStyle,
|
|
13
|
-
docRowColumnStyle,
|
|
14
|
-
docSectionStyle,
|
|
15
|
-
docTitleStyle,
|
|
16
|
-
} from '@/stories/documentationStyles'
|
|
17
|
-
|
|
18
9
|
const sampleContentStyle =
|
|
19
10
|
'padding: 16px; font-size: 13px; color: #374151; background: repeating-linear-gradient(45deg, #fff9c4, #fff9c4 4px, #fffde7 4px, #fffde7 8px);'
|
|
20
11
|
|
|
12
|
+
const wrapperStyle =
|
|
13
|
+
'box-sizing: border-box; width: 100%; max-width: 1200px; margin: 0 auto; padding: 24px; width: 500px;'
|
|
14
|
+
|
|
21
15
|
type CpAccordionGroupStoryArgs = {
|
|
22
16
|
itemActions: MenuItem[]
|
|
23
17
|
itemDefaultOpenState: boolean
|
|
@@ -43,7 +37,7 @@ const defaultItemActions: MenuItem[] = [
|
|
|
43
37
|
]
|
|
44
38
|
|
|
45
39
|
const meta = {
|
|
46
|
-
title: '
|
|
40
|
+
title: 'Molecules/CpAccordionGroup',
|
|
47
41
|
component: CpAccordionGroup,
|
|
48
42
|
argTypes: {
|
|
49
43
|
variant: {
|
|
@@ -110,10 +104,10 @@ const defaultRender = (args: Args) => ({
|
|
|
110
104
|
}
|
|
111
105
|
})
|
|
112
106
|
|
|
113
|
-
return { accordionBind, args, sampleContentStyle }
|
|
107
|
+
return { accordionBind, args, sampleContentStyle, wrapperStyle }
|
|
114
108
|
},
|
|
115
109
|
template: `
|
|
116
|
-
<div style="
|
|
110
|
+
<div :style="wrapperStyle">
|
|
117
111
|
<CpAccordionGroup :variant="args.variant">
|
|
118
112
|
<CpAccordion
|
|
119
113
|
v-for="i in 3"
|
|
@@ -128,91 +122,13 @@ const defaultRender = (args: Args) => ({
|
|
|
128
122
|
`,
|
|
129
123
|
})
|
|
130
124
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
},
|
|
135
|
-
render: () => ({
|
|
136
|
-
components: { CpAccordion, CpAccordionGroup },
|
|
137
|
-
setup: () => ({
|
|
138
|
-
docPageStyle,
|
|
139
|
-
docSectionStyle,
|
|
140
|
-
docTitleStyle,
|
|
141
|
-
docRowColumnStyle,
|
|
142
|
-
docCellStyle,
|
|
143
|
-
docLabelStyle,
|
|
144
|
-
sampleContentStyle,
|
|
145
|
-
}),
|
|
146
|
-
template: `
|
|
147
|
-
<div :style="docPageStyle">
|
|
148
|
-
<h1 style="margin: 0 0 24px 0; font-size: 28px; font-weight: 700; color: #111827;">CpAccordionGroup</h1>
|
|
149
|
-
|
|
150
|
-
<section :style="docSectionStyle">
|
|
151
|
-
<h2 :style="docTitleStyle">Style</h2>
|
|
152
|
-
<div :style="docRowColumnStyle">
|
|
153
|
-
<div :style="docCellStyle">
|
|
154
|
-
<span :style="docLabelStyle">Minimal</span>
|
|
155
|
-
<CpAccordionGroup variant="minimal">
|
|
156
|
-
<CpAccordion key="doc-default-1" title="DIDA TRAVEL" icon-position="leading">
|
|
157
|
-
<div :style="sampleContentStyle" />
|
|
158
|
-
</CpAccordion>
|
|
159
|
-
<CpAccordion key="doc-default-2" title="DIDA TRAVEL" icon-position="leading">
|
|
160
|
-
<div :style="sampleContentStyle" />
|
|
161
|
-
</CpAccordion>
|
|
162
|
-
<CpAccordion key="doc-default-3" title="DIDA TRAVEL" icon-position="leading">
|
|
163
|
-
<div :style="sampleContentStyle" />
|
|
164
|
-
</CpAccordion>
|
|
165
|
-
</CpAccordionGroup>
|
|
166
|
-
</div>
|
|
167
|
-
|
|
168
|
-
<div :style="docCellStyle">
|
|
169
|
-
<span :style="docLabelStyle">Default</span>
|
|
170
|
-
<CpAccordionGroup variant="default">
|
|
171
|
-
<CpAccordion key="doc-bb-1" title="DIDA TRAVEL" icon-position="leading">
|
|
172
|
-
<div :style="sampleContentStyle" />
|
|
173
|
-
</CpAccordion>
|
|
174
|
-
<CpAccordion key="doc-bb-2" title="DIDA TRAVEL" icon-position="leading">
|
|
175
|
-
<div :style="sampleContentStyle" />
|
|
176
|
-
</CpAccordion>
|
|
177
|
-
<CpAccordion key="doc-bb-3" title="DIDA TRAVEL" icon-position="leading">
|
|
178
|
-
<div :style="sampleContentStyle" />
|
|
179
|
-
</CpAccordion>
|
|
180
|
-
</CpAccordionGroup>
|
|
181
|
-
</div>
|
|
182
|
-
|
|
183
|
-
<div :style="docCellStyle">
|
|
184
|
-
<span :style="docLabelStyle">Primary</span>
|
|
185
|
-
<CpAccordionGroup variant="primary">
|
|
186
|
-
<CpAccordion key="doc-gb-1" title="DIDA TRAVEL" icon-position="leading">
|
|
187
|
-
<div :style="sampleContentStyle" />
|
|
188
|
-
</CpAccordion>
|
|
189
|
-
<CpAccordion key="doc-gb-2" title="DIDA TRAVEL" icon-position="leading">
|
|
190
|
-
<div :style="sampleContentStyle" />
|
|
191
|
-
</CpAccordion>
|
|
192
|
-
<CpAccordion key="doc-gb-3" title="DIDA TRAVEL" icon-position="leading">
|
|
193
|
-
<div :style="sampleContentStyle" />
|
|
194
|
-
</CpAccordion>
|
|
195
|
-
</CpAccordionGroup>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
</section>
|
|
199
|
-
</div>
|
|
200
|
-
`,
|
|
201
|
-
}),
|
|
202
|
-
parameters: {
|
|
203
|
-
controls: { disable: true },
|
|
204
|
-
docs: {
|
|
205
|
-
source: {
|
|
206
|
-
code: null,
|
|
207
|
-
},
|
|
208
|
-
},
|
|
209
|
-
},
|
|
210
|
-
}
|
|
211
|
-
|
|
125
|
+
/**
|
|
126
|
+
* Default accordion group rendered with the `default` variant.
|
|
127
|
+
*/
|
|
212
128
|
export const Default: Story = {
|
|
213
129
|
args: {
|
|
214
130
|
variant: 'default',
|
|
215
|
-
itemTitle: '
|
|
131
|
+
itemTitle: 'Accordion',
|
|
216
132
|
itemDefaultOpenState: false,
|
|
217
133
|
itemIconPosition: 'leading',
|
|
218
134
|
itemQuickOptionsLimit: 2,
|
|
@@ -221,3 +137,43 @@ export const Default: Story = {
|
|
|
221
137
|
},
|
|
222
138
|
render: defaultRender,
|
|
223
139
|
}
|
|
140
|
+
|
|
141
|
+
/* -------------------------------------------------------------------------- */
|
|
142
|
+
/* Variants */
|
|
143
|
+
/* -------------------------------------------------------------------------- */
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Minimal variant: no container border, no separators between items. Use when
|
|
147
|
+
* the grouping is implicit in the surrounding layout.
|
|
148
|
+
*/
|
|
149
|
+
export const Minimal: Story = {
|
|
150
|
+
args: {
|
|
151
|
+
...Default.args,
|
|
152
|
+
variant: 'minimal',
|
|
153
|
+
},
|
|
154
|
+
render: defaultRender,
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Default variant: thin separator lines between items, no outer border.
|
|
159
|
+
* This is the most common variant.
|
|
160
|
+
*/
|
|
161
|
+
export const DefaultVariant: Story = {
|
|
162
|
+
args: {
|
|
163
|
+
...Default.args,
|
|
164
|
+
variant: 'default',
|
|
165
|
+
},
|
|
166
|
+
render: defaultRender,
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Primary variant: the group is wrapped in a rounded card with an outer border
|
|
171
|
+
* and separators between items.
|
|
172
|
+
*/
|
|
173
|
+
export const Primary: Story = {
|
|
174
|
+
args: {
|
|
175
|
+
...Default.args,
|
|
176
|
+
variant: 'primary',
|
|
177
|
+
},
|
|
178
|
+
render: defaultRender,
|
|
179
|
+
}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/vue3'
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
|
|
2
2
|
|
|
3
3
|
import CpAirlineLogo from '@/components/CpAirlineLogo.vue'
|
|
4
4
|
|
|
5
|
+
import { docCellStyle, docLabelStyle, docRowWrapStyle } from '@/stories/documentationStyles'
|
|
6
|
+
|
|
7
|
+
const airlineSizes = [16, 24, 32, 48] as const
|
|
8
|
+
|
|
5
9
|
const meta = {
|
|
6
|
-
title: '
|
|
10
|
+
title: 'Atoms/CpAirlineLogo',
|
|
7
11
|
component: CpAirlineLogo,
|
|
8
12
|
parameters: {
|
|
9
13
|
docs: {
|
|
10
14
|
description: {
|
|
11
15
|
component:
|
|
12
|
-
'
|
|
16
|
+
'Displays an airline logo fetched from the Kiwi.com CDN using its IATA code. Falls back to a placeholder when the code is unknown.',
|
|
13
17
|
},
|
|
14
18
|
},
|
|
15
19
|
},
|
|
16
20
|
argTypes: {
|
|
17
21
|
iataCode: {
|
|
18
22
|
control: 'text',
|
|
19
|
-
description: 'The IATA airline code (e.g
|
|
23
|
+
description: 'The IATA airline code (e.g. "LH" for Lufthansa, "BA" for British Airways)',
|
|
20
24
|
table: {
|
|
21
25
|
type: { summary: 'string' },
|
|
22
26
|
defaultValue: { summary: '1L' },
|
|
@@ -31,21 +35,26 @@ const meta = {
|
|
|
31
35
|
},
|
|
32
36
|
},
|
|
33
37
|
},
|
|
34
|
-
tags: ['autodocs'],
|
|
35
38
|
} satisfies Meta<typeof CpAirlineLogo>
|
|
36
39
|
|
|
37
40
|
export default meta
|
|
41
|
+
|
|
38
42
|
type Story = StoryObj<typeof meta>
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
type AirlineLogoStoryArgs = NonNullable<Story['args']>
|
|
45
|
+
|
|
46
|
+
const defaultRender = (args: AirlineLogoStoryArgs) => ({
|
|
42
47
|
components: { CpAirlineLogo },
|
|
43
48
|
setup() {
|
|
44
49
|
return { args }
|
|
45
50
|
},
|
|
46
|
-
template:
|
|
51
|
+
template: '<CpAirlineLogo v-bind="args" />',
|
|
47
52
|
})
|
|
48
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Default airline logo. Use the controls to experiment with each prop in
|
|
56
|
+
* isolation.
|
|
57
|
+
*/
|
|
49
58
|
export const Default: Story = {
|
|
50
59
|
args: {
|
|
51
60
|
iataCode: 'AF',
|
|
@@ -54,40 +63,55 @@ export const Default: Story = {
|
|
|
54
63
|
render: defaultRender,
|
|
55
64
|
}
|
|
56
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Logo rendered at the sizes most commonly used across the design system.
|
|
68
|
+
*/
|
|
69
|
+
export const Sizes: Story = {
|
|
70
|
+
parameters: { controls: { disable: true } },
|
|
71
|
+
render: () => ({
|
|
72
|
+
components: { CpAirlineLogo },
|
|
73
|
+
setup() {
|
|
74
|
+
return { airlineSizes, docCellStyle, docLabelStyle, docRowWrapStyle }
|
|
75
|
+
},
|
|
76
|
+
template: `
|
|
77
|
+
<div :style="docRowWrapStyle">
|
|
78
|
+
<div v-for="size in airlineSizes" :key="size" :style="docCellStyle">
|
|
79
|
+
<span :style="docLabelStyle">{{ size }}px</span>
|
|
80
|
+
<CpAirlineLogo iata-code="AF" :size="size" />
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
`,
|
|
84
|
+
}),
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* A sample of common airline logos displayed side by side.
|
|
89
|
+
*/
|
|
57
90
|
export const MultipleAirlines: Story = {
|
|
91
|
+
parameters: { controls: { disable: true } },
|
|
58
92
|
render: () => ({
|
|
59
93
|
components: { CpAirlineLogo },
|
|
60
94
|
template: `
|
|
61
95
|
<div style="display: flex; gap: 16px; align-items: center; flex-wrap: wrap;">
|
|
62
|
-
<CpAirlineLogo
|
|
63
|
-
<CpAirlineLogo
|
|
64
|
-
<CpAirlineLogo
|
|
65
|
-
<CpAirlineLogo
|
|
66
|
-
<CpAirlineLogo
|
|
67
|
-
<CpAirlineLogo
|
|
96
|
+
<CpAirlineLogo iata-code="1L" :size="32" />
|
|
97
|
+
<CpAirlineLogo iata-code="BA" :size="32" />
|
|
98
|
+
<CpAirlineLogo iata-code="EK" :size="32" />
|
|
99
|
+
<CpAirlineLogo iata-code="AA" :size="32" />
|
|
100
|
+
<CpAirlineLogo iata-code="AF" :size="32" />
|
|
101
|
+
<CpAirlineLogo iata-code="KL" :size="32" />
|
|
68
102
|
</div>
|
|
69
103
|
`,
|
|
70
104
|
}),
|
|
71
|
-
parameters: {
|
|
72
|
-
docs: {
|
|
73
|
-
description: {
|
|
74
|
-
story: 'Multiple airline logos displayed together.',
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
105
|
}
|
|
79
106
|
|
|
107
|
+
/**
|
|
108
|
+
* With an empty `iataCode`, the component falls back to a neutral
|
|
109
|
+
* placeholder.
|
|
110
|
+
*/
|
|
80
111
|
export const EmptyIATACode: Story = {
|
|
81
112
|
args: {
|
|
82
113
|
iataCode: '',
|
|
83
114
|
size: 32,
|
|
84
115
|
},
|
|
85
116
|
render: defaultRender,
|
|
86
|
-
parameters: {
|
|
87
|
-
docs: {
|
|
88
|
-
description: {
|
|
89
|
-
story: 'Shows the component with an empty IATA code.',
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
117
|
}
|