@fluentui-copilot/react-prompt-starter 0.0.0-nightly-20251010-0406-7df7c6d1.1 → 0.0.0-nightly-20251013-0406-7c7739c8.1

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 (116) hide show
  1. package/CHANGELOG.json +3 -3
  2. package/CHANGELOG.md +4 -4
  3. package/dist/index.d.ts +164 -0
  4. package/lib/PromptStarter.js +1 -0
  5. package/lib/PromptStarter.js.map +1 -0
  6. package/lib/PromptStarterList.js +1 -0
  7. package/lib/PromptStarterList.js.map +1 -0
  8. package/lib/PromptStarterV2.js +1 -0
  9. package/lib/PromptStarterV2.js.map +1 -0
  10. package/lib/components/PromptStarter/PromptStarter.js +12 -0
  11. package/lib/components/PromptStarter/PromptStarter.js.map +1 -0
  12. package/lib/components/PromptStarter/PromptStarter.types.js +3 -0
  13. package/lib/components/PromptStarter/PromptStarter.types.js.map +1 -0
  14. package/lib/components/PromptStarter/index.js +4 -0
  15. package/lib/components/PromptStarter/index.js.map +1 -0
  16. package/lib/components/PromptStarter/renderPromptStarter.js +18 -0
  17. package/lib/components/PromptStarter/renderPromptStarter.js.map +1 -0
  18. package/lib/components/PromptStarter/usePromptStarter.js +53 -0
  19. package/lib/components/PromptStarter/usePromptStarter.js.map +1 -0
  20. package/lib/components/PromptStarter/usePromptStarterStyles.styles.js +138 -0
  21. package/lib/components/PromptStarter/usePromptStarterStyles.styles.js.map +1 -0
  22. package/lib/components/PromptStarter/usePromptStarterStyles.styles.raw.js +94 -0
  23. package/lib/components/PromptStarter/usePromptStarterStyles.styles.raw.js.map +1 -0
  24. package/lib/components/PromptStarterV2/PromptStarter/PromptStarter.js +12 -0
  25. package/lib/components/PromptStarterV2/PromptStarter/PromptStarter.js.map +1 -0
  26. package/lib/components/PromptStarterV2/PromptStarter/PromptStarter.types.js +3 -0
  27. package/lib/components/PromptStarterV2/PromptStarter/PromptStarter.types.js.map +1 -0
  28. package/lib/components/PromptStarterV2/PromptStarter/index.js +4 -0
  29. package/lib/components/PromptStarterV2/PromptStarter/index.js.map +1 -0
  30. package/lib/components/PromptStarterV2/PromptStarter/promptStarterMotion.js +63 -0
  31. package/lib/components/PromptStarterV2/PromptStarter/promptStarterMotion.js.map +1 -0
  32. package/lib/components/PromptStarterV2/PromptStarter/renderPromptStarter.js +18 -0
  33. package/lib/components/PromptStarterV2/PromptStarter/renderPromptStarter.js.map +1 -0
  34. package/lib/components/PromptStarterV2/PromptStarter/usePromptStarter.js +73 -0
  35. package/lib/components/PromptStarterV2/PromptStarter/usePromptStarter.js.map +1 -0
  36. package/lib/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.js +338 -0
  37. package/lib/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.js.map +1 -0
  38. package/lib/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.raw.js +160 -0
  39. package/lib/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.raw.js.map +1 -0
  40. package/lib/components/PromptStarterV2/PromptStarterList/PromptStarterList.js +12 -0
  41. package/lib/components/PromptStarterV2/PromptStarterList/PromptStarterList.js.map +1 -0
  42. package/lib/components/PromptStarterV2/PromptStarterList/PromptStarterList.types.js +1 -0
  43. package/lib/components/PromptStarterV2/PromptStarterList/PromptStarterList.types.js.map +1 -0
  44. package/lib/components/PromptStarterV2/PromptStarterList/index.js +4 -0
  45. package/lib/components/PromptStarterV2/PromptStarterList/index.js.map +1 -0
  46. package/lib/components/PromptStarterV2/PromptStarterList/renderPromptStarterList.js +22 -0
  47. package/lib/components/PromptStarterV2/PromptStarterList/renderPromptStarterList.js.map +1 -0
  48. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterList.js +117 -0
  49. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterList.js.map +1 -0
  50. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterListContextValues.js +6 -0
  51. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterListContextValues.js.map +1 -0
  52. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.js +83 -0
  53. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.js.map +1 -0
  54. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.raw.js +73 -0
  55. package/lib/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.raw.js.map +1 -0
  56. package/lib/contexts/PromptStarterListContext.js +7 -0
  57. package/lib/contexts/PromptStarterListContext.js.map +1 -0
  58. package/lib/index.js +3 -0
  59. package/lib/index.js.map +1 -0
  60. package/lib-commonjs/PromptStarter.js +28 -0
  61. package/lib-commonjs/PromptStarter.js.map +1 -0
  62. package/lib-commonjs/PromptStarterList.js +28 -0
  63. package/lib-commonjs/PromptStarterList.js.map +1 -0
  64. package/lib-commonjs/PromptStarterV2.js +28 -0
  65. package/lib-commonjs/PromptStarterV2.js.map +1 -0
  66. package/lib-commonjs/components/PromptStarter/PromptStarter.js +23 -0
  67. package/lib-commonjs/components/PromptStarter/PromptStarter.js.map +1 -0
  68. package/lib-commonjs/components/PromptStarter/PromptStarter.types.js +6 -0
  69. package/lib-commonjs/components/PromptStarter/PromptStarter.types.js.map +1 -0
  70. package/lib-commonjs/components/PromptStarter/index.js +31 -0
  71. package/lib-commonjs/components/PromptStarter/index.js.map +1 -0
  72. package/lib-commonjs/components/PromptStarter/renderPromptStarter.js +28 -0
  73. package/lib-commonjs/components/PromptStarter/renderPromptStarter.js.map +1 -0
  74. package/lib-commonjs/components/PromptStarter/usePromptStarter.js +55 -0
  75. package/lib-commonjs/components/PromptStarter/usePromptStarter.js.map +1 -0
  76. package/lib-commonjs/components/PromptStarter/usePromptStarterStyles.styles.js +292 -0
  77. package/lib-commonjs/components/PromptStarter/usePromptStarterStyles.styles.js.map +1 -0
  78. package/lib-commonjs/components/PromptStarter/usePromptStarterStyles.styles.raw.js +112 -0
  79. package/lib-commonjs/components/PromptStarter/usePromptStarterStyles.styles.raw.js.map +1 -0
  80. package/lib-commonjs/components/PromptStarterV2/PromptStarter/PromptStarter.js +23 -0
  81. package/lib-commonjs/components/PromptStarterV2/PromptStarter/PromptStarter.js.map +1 -0
  82. package/lib-commonjs/components/PromptStarterV2/PromptStarter/PromptStarter.types.js +6 -0
  83. package/lib-commonjs/components/PromptStarterV2/PromptStarter/PromptStarter.types.js.map +1 -0
  84. package/lib-commonjs/components/PromptStarterV2/PromptStarter/index.js +31 -0
  85. package/lib-commonjs/components/PromptStarterV2/PromptStarter/index.js.map +1 -0
  86. package/lib-commonjs/components/PromptStarterV2/PromptStarter/promptStarterMotion.js +73 -0
  87. package/lib-commonjs/components/PromptStarterV2/PromptStarter/promptStarterMotion.js.map +1 -0
  88. package/lib-commonjs/components/PromptStarterV2/PromptStarter/renderPromptStarter.js +28 -0
  89. package/lib-commonjs/components/PromptStarterV2/PromptStarter/renderPromptStarter.js.map +1 -0
  90. package/lib-commonjs/components/PromptStarterV2/PromptStarter/usePromptStarter.js +75 -0
  91. package/lib-commonjs/components/PromptStarterV2/PromptStarter/usePromptStarter.js.map +1 -0
  92. package/lib-commonjs/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.js +620 -0
  93. package/lib-commonjs/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.js.map +1 -0
  94. package/lib-commonjs/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.raw.js +178 -0
  95. package/lib-commonjs/components/PromptStarterV2/PromptStarter/usePromptStarterStyles.styles.raw.js.map +1 -0
  96. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/PromptStarterList.js +23 -0
  97. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/PromptStarterList.js.map +1 -0
  98. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/PromptStarterList.types.js +4 -0
  99. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/PromptStarterList.types.js.map +1 -0
  100. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/index.js +31 -0
  101. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/index.js.map +1 -0
  102. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/renderPromptStarterList.js +30 -0
  103. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/renderPromptStarterList.js.map +1 -0
  104. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterList.js +120 -0
  105. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterList.js.map +1 -0
  106. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterListContextValues.js +16 -0
  107. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterListContextValues.js.map +1 -0
  108. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.js +126 -0
  109. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.js.map +1 -0
  110. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.raw.js +89 -0
  111. package/lib-commonjs/components/PromptStarterV2/PromptStarterList/usePromptStarterListStyles.styles.raw.js.map +1 -0
  112. package/lib-commonjs/contexts/PromptStarterListContext.js +28 -0
  113. package/lib-commonjs/contexts/PromptStarterListContext.js.map +1 -0
  114. package/lib-commonjs/index.js +60 -0
  115. package/lib-commonjs/index.js.map +1 -0
  116. package/package.json +3 -3
@@ -0,0 +1,160 @@
1
+ import { makeStyles, makeResetStyles, mergeClasses, shorthands, typographyStyles, createFocusOutlineStyle } from '@fluentui/react-components';
2
+ import { tokens } from '@fluentui-copilot/tokens';
3
+ export const promptStarterClassNames = {
4
+ root: 'fai-PromptStarter',
5
+ primaryAction: 'fai-PromptStarter__primaryAction',
6
+ icon: 'fai-PromptStarter__icon',
7
+ category: 'fai-PromptStarter__category',
8
+ prompt: 'fai-PromptStarter__prompt',
9
+ reasonMarker: 'fai-PromptStarter__reasonMarker',
10
+ actions: 'fai-PromptStarter__actions'
11
+ };
12
+ const useRootResetStyles = makeResetStyles({
13
+ display: 'grid',
14
+ gridTemplateColumns: '1fr auto',
15
+ gridTemplateRows: 'max-content auto',
16
+ minWidth: '214px',
17
+ // Apply styles to the primary action on hover / active states
18
+ '&:hover': {
19
+ [`& .${promptStarterClassNames.primaryAction}`]: {
20
+ boxShadow: tokens.shadow16,
21
+ transform: 'scale(1.03)',
22
+ transition: `transform ${tokens.durationNormal} ${tokens.curveDecelerateMin}`
23
+ }
24
+ },
25
+ '&:active': {
26
+ [`& .${promptStarterClassNames.primaryAction}`]: {
27
+ boxShadow: tokens.shadow8,
28
+ transform: 'scale(1.03)',
29
+ transition: `transform ${tokens.durationNormal} ${tokens.curveDecelerateMin}`
30
+ }
31
+ },
32
+ // Hide actions when not focused or hovered
33
+ ':not(:focus-within):not(:hover)': {
34
+ [`& .${promptStarterClassNames.actions}`]: {
35
+ clip: 'rect(0px, 0px, 0px, 0px)',
36
+ height: '1px',
37
+ margin: '-1px',
38
+ overflow: 'hidden',
39
+ padding: '0px',
40
+ width: '1px',
41
+ position: 'absolute',
42
+ opacity: 0
43
+ }
44
+ }
45
+ });
46
+ const useStyles = makeStyles({
47
+ primaryAction: {
48
+ gridRow: '1 / 3',
49
+ gridColumn: '1 / 3',
50
+ position: 'relative',
51
+ display: 'grid',
52
+ gridTemplateColumns: 'max-content 1fr',
53
+ gridAutoRows: 'max-content 1fr max-content',
54
+ borderRadius: '28px',
55
+ backgroundColor: tokens.colorNeutralBackground1,
56
+ color: tokens.colorNeutralForeground2,
57
+ fontFamily: tokens.fontFamilyBase,
58
+ cursor: 'pointer',
59
+ outlineStyle: 'none',
60
+ textAlign: 'left',
61
+ columnGap: tokens.spacingHorizontalMNudge,
62
+ rowGap: tokens.spacingVerticalS,
63
+ padding: `${tokens.spacingVerticalL} ${tokens.spacingHorizontalL}`,
64
+ ...shorthands.border(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStroke2),
65
+ ...createFocusOutlineStyle({
66
+ style: {
67
+ outlineRadius: '28px'
68
+ }
69
+ })
70
+ },
71
+ primaryActionHovered: {
72
+ boxShadow: tokens.shadow16,
73
+ transform: 'scale(1.03)',
74
+ transition: `transform ${tokens.durationNormal} ${tokens.curveDecelerateMin}`
75
+ },
76
+ icon: {
77
+ display: 'flex',
78
+ alignItems: 'center',
79
+ minHeight: tokens.spacingVerticalXXL,
80
+ gridRow: 1,
81
+ gridColumn: '1 / 2'
82
+ },
83
+ category: {
84
+ display: 'flex',
85
+ alignItems: 'center',
86
+ ...typographyStyles.body1Strong,
87
+ gridRow: 1,
88
+ gridColumn: '2 / 3'
89
+ },
90
+ actions: {
91
+ margin: `${tokens.spacingVerticalL} ${tokens.spacingHorizontalL}
92
+ ${tokens.spacingVerticalNone} ${tokens.spacingHorizontalNone}`,
93
+ position: 'relative',
94
+ gridRow: '1 / 2',
95
+ gridColumn: '2 / 3',
96
+ opacity: 1,
97
+ transition: `opacity ${tokens.durationFast} ${tokens.curveLinear}`
98
+ },
99
+ actionsWithCategory: {
100
+ // Add a background and gradient fade to truncate the title if applicable
101
+ backgroundColor: tokens.colorNeutralBackground1,
102
+ boxShadow: `-12px 0 12px 0 ${tokens.colorNeutralBackground1}`
103
+ },
104
+ prompt: {
105
+ ...typographyStyles.body1Strong,
106
+ // Truncate text after two lines.
107
+ display: '-webkit-box',
108
+ '-webkit-box-orient': 'vertical',
109
+ '-webkit-line-clamp': '2',
110
+ overflowY: 'hidden',
111
+ gridRow: '2',
112
+ gridColumn: '1 / 3'
113
+ },
114
+ promptNoReasonMarker: {
115
+ // Truncate text after three lines when no reason marker is present.
116
+ '-webkit-line-clamp': '3'
117
+ },
118
+ reasonMarker: {
119
+ gridRow: '3',
120
+ gridColumn: '1 / 3',
121
+ ...typographyStyles.caption2
122
+ }
123
+ });
124
+ const useSingleColumnStyles = makeStyles({
125
+ primaryAction: {
126
+ display: 'flex',
127
+ borderRadius: tokens.borderRadius2XL,
128
+ ...createFocusOutlineStyle({
129
+ style: {
130
+ outlineRadius: tokens.borderRadius2XL
131
+ }
132
+ })
133
+ },
134
+ prompt: {
135
+ ...typographyStyles.caption1Strong
136
+ }
137
+ });
138
+ export const usePromptStarterStyles_unstable = (state)=>{
139
+ 'use no memo';
140
+ const { isSingleColumn } = state;
141
+ const styles = useStyles();
142
+ const rootResetStyles = useRootResetStyles();
143
+ const singleColumnStyles = useSingleColumnStyles();
144
+ state.root.className = mergeClasses(promptStarterClassNames.root, rootResetStyles, state.root.className);
145
+ state.primaryAction.className = mergeClasses(promptStarterClassNames.primaryAction, styles.primaryAction, isSingleColumn && singleColumnStyles.primaryAction, state.primaryAction.className);
146
+ if (state.icon) {
147
+ state.icon.className = mergeClasses(promptStarterClassNames.icon, styles.icon, state.icon.className);
148
+ }
149
+ if (state.category) {
150
+ state.category.className = mergeClasses(promptStarterClassNames.category, styles.category, state.category.className);
151
+ }
152
+ state.prompt.className = mergeClasses(promptStarterClassNames.prompt, styles.prompt, !state.reasonMarker && styles.promptNoReasonMarker, isSingleColumn && singleColumnStyles.prompt, state.prompt.className);
153
+ if (state.reasonMarker) {
154
+ state.reasonMarker.className = mergeClasses(promptStarterClassNames.reasonMarker, styles.reasonMarker, state.reasonMarker.className);
155
+ }
156
+ if (state.actions) {
157
+ state.actions.className = mergeClasses(promptStarterClassNames.actions, styles.actions, state.category && styles.actionsWithCategory, state.actions.className);
158
+ }
159
+ return state;
160
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["usePromptStarterStyles.styles.ts"],"sourcesContent":["import {\n makeStyles,\n makeResetStyles,\n mergeClasses,\n shorthands,\n typographyStyles,\n createFocusOutlineStyle,\n} from '@fluentui/react-components';\nimport { tokens } from '@fluentui-copilot/tokens';\nimport type { PromptStarterSlots, PromptStarterState } from './PromptStarter.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\n\nexport const promptStarterClassNames: SlotClassNames<PromptStarterSlots> = {\n root: 'fai-PromptStarter',\n primaryAction: 'fai-PromptStarter__primaryAction',\n icon: 'fai-PromptStarter__icon',\n category: 'fai-PromptStarter__category',\n prompt: 'fai-PromptStarter__prompt',\n reasonMarker: 'fai-PromptStarter__reasonMarker',\n actions: 'fai-PromptStarter__actions',\n};\n\nconst useRootResetStyles = makeResetStyles({\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n gridTemplateRows: 'max-content auto',\n minWidth: '214px',\n\n // Apply styles to the primary action on hover / active states\n '&:hover': {\n [`& .${promptStarterClassNames.primaryAction}`]: {\n boxShadow: tokens.shadow16,\n transform: 'scale(1.03)',\n transition: `transform ${tokens.durationNormal} ${tokens.curveDecelerateMin}`,\n },\n },\n '&:active': {\n [`& .${promptStarterClassNames.primaryAction}`]: {\n boxShadow: tokens.shadow8,\n transform: 'scale(1.03)',\n transition: `transform ${tokens.durationNormal} ${tokens.curveDecelerateMin}`,\n },\n },\n\n // Hide actions when not focused or hovered\n ':not(:focus-within):not(:hover)': {\n [`& .${promptStarterClassNames.actions}`]: {\n clip: 'rect(0px, 0px, 0px, 0px)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0px',\n width: '1px',\n position: 'absolute',\n opacity: 0,\n },\n },\n});\n\nconst useStyles = makeStyles({\n primaryAction: {\n gridRow: '1 / 3',\n gridColumn: '1 / 3',\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: 'max-content 1fr',\n gridAutoRows: 'max-content 1fr max-content',\n borderRadius: '28px',\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground2,\n fontFamily: tokens.fontFamilyBase,\n cursor: 'pointer',\n outlineStyle: 'none',\n textAlign: 'left',\n columnGap: tokens.spacingHorizontalMNudge,\n rowGap: tokens.spacingVerticalS,\n padding: `${tokens.spacingVerticalL} ${tokens.spacingHorizontalL}`,\n ...shorthands.border(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStroke2),\n ...createFocusOutlineStyle({ style: { outlineRadius: '28px' } }),\n },\n\n primaryActionHovered: {\n boxShadow: tokens.shadow16,\n transform: 'scale(1.03)',\n transition: `transform ${tokens.durationNormal} ${tokens.curveDecelerateMin}`,\n },\n\n icon: {\n display: 'flex',\n alignItems: 'center',\n minHeight: tokens.spacingVerticalXXL,\n gridRow: 1,\n gridColumn: '1 / 2',\n },\n category: {\n display: 'flex',\n alignItems: 'center',\n ...typographyStyles.body1Strong,\n\n gridRow: 1,\n gridColumn: '2 / 3',\n },\n actions: {\n margin: `${tokens.spacingVerticalL} ${tokens.spacingHorizontalL}\n ${tokens.spacingVerticalNone} ${tokens.spacingHorizontalNone}`,\n position: 'relative',\n gridRow: '1 / 2',\n gridColumn: '2 / 3',\n\n opacity: 1,\n transition: `opacity ${tokens.durationFast} ${tokens.curveLinear}`,\n },\n actionsWithCategory: {\n // Add a background and gradient fade to truncate the title if applicable\n backgroundColor: tokens.colorNeutralBackground1,\n\n boxShadow: `-12px 0 12px 0 ${tokens.colorNeutralBackground1}`,\n },\n prompt: {\n ...typographyStyles.body1Strong,\n\n // Truncate text after two lines.\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': '2',\n overflowY: 'hidden',\n gridRow: '2',\n gridColumn: '1 / 3',\n },\n promptNoReasonMarker: {\n // Truncate text after three lines when no reason marker is present.\n '-webkit-line-clamp': '3',\n },\n reasonMarker: {\n gridRow: '3',\n gridColumn: '1 / 3',\n ...typographyStyles.caption2,\n },\n});\n\nconst useSingleColumnStyles = makeStyles({\n primaryAction: {\n display: 'flex',\n borderRadius: tokens.borderRadius2XL,\n ...createFocusOutlineStyle({ style: { outlineRadius: tokens.borderRadius2XL } }),\n },\n prompt: {\n ...typographyStyles.caption1Strong,\n },\n});\n\nexport const usePromptStarterStyles_unstable = (state: PromptStarterState): PromptStarterState => {\n 'use no memo';\n\n const { isSingleColumn } = state;\n\n const styles = useStyles();\n const rootResetStyles = useRootResetStyles();\n const singleColumnStyles = useSingleColumnStyles();\n state.root.className = mergeClasses(promptStarterClassNames.root, rootResetStyles, state.root.className);\n state.primaryAction.className = mergeClasses(\n promptStarterClassNames.primaryAction,\n styles.primaryAction,\n isSingleColumn && singleColumnStyles.primaryAction,\n state.primaryAction.className,\n );\n if (state.icon) {\n state.icon.className = mergeClasses(promptStarterClassNames.icon, styles.icon, state.icon.className);\n }\n if (state.category) {\n state.category.className = mergeClasses(\n promptStarterClassNames.category,\n styles.category,\n state.category.className,\n );\n }\n state.prompt.className = mergeClasses(\n promptStarterClassNames.prompt,\n styles.prompt,\n !state.reasonMarker && styles.promptNoReasonMarker,\n isSingleColumn && singleColumnStyles.prompt,\n state.prompt.className,\n );\n if (state.reasonMarker) {\n state.reasonMarker.className = mergeClasses(\n promptStarterClassNames.reasonMarker,\n styles.reasonMarker,\n state.reasonMarker.className,\n );\n }\n if (state.actions) {\n state.actions.className = mergeClasses(\n promptStarterClassNames.actions,\n styles.actions,\n state.category && styles.actionsWithCategory,\n state.actions.className,\n );\n }\n\n return state;\n};\n"],"names":["makeStyles","makeResetStyles","mergeClasses","shorthands","typographyStyles","createFocusOutlineStyle","tokens","promptStarterClassNames","root","primaryAction","icon","category","prompt","reasonMarker","actions","useRootResetStyles","display","gridTemplateColumns","gridTemplateRows","minWidth","boxShadow","shadow16","transform","transition","durationNormal","curveDecelerateMin","shadow8","clip","height","margin","overflow","padding","width","position","opacity","useStyles","gridRow","gridColumn","gridAutoRows","borderRadius","backgroundColor","colorNeutralBackground1","color","colorNeutralForeground2","fontFamily","fontFamilyBase","cursor","outlineStyle","textAlign","columnGap","spacingHorizontalMNudge","rowGap","spacingVerticalS","spacingVerticalL","spacingHorizontalL","border","strokeWidthThin","colorNeutralStroke2","style","outlineRadius","primaryActionHovered","alignItems","minHeight","spacingVerticalXXL","body1Strong","spacingVerticalNone","spacingHorizontalNone","durationFast","curveLinear","actionsWithCategory","overflowY","promptNoReasonMarker","caption2","useSingleColumnStyles","borderRadius2XL","caption1Strong","usePromptStarterStyles_unstable","state","isSingleColumn","styles","rootResetStyles","singleColumnStyles","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { usePromptStarterList_unstable } from './usePromptStarterList';
3
+ import { renderPromptStarterList_unstable } from './renderPromptStarterList';
4
+ import { usePromptStarterListStyles_unstable } from './usePromptStarterListStyles.styles';
5
+ import { usePromptStarterListContextValues } from './usePromptStarterListContextValues';
6
+ export const PromptStarterList = /*#__PURE__*/ React.forwardRef((props, ref)=>{
7
+ const state = usePromptStarterList_unstable(props, ref);
8
+ const contextValues = usePromptStarterListContextValues(state);
9
+ usePromptStarterListStyles_unstable(state);
10
+ return renderPromptStarterList_unstable(state, contextValues);
11
+ });
12
+ PromptStarterList.displayName = 'PromptStarterList';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PromptStarterList.tsx"],"sourcesContent":["import * as React from 'react';\nimport { usePromptStarterList_unstable } from './usePromptStarterList';\nimport { renderPromptStarterList_unstable } from './renderPromptStarterList';\nimport { usePromptStarterListStyles_unstable } from './usePromptStarterListStyles.styles';\nimport type { PromptStarterListProps } from './PromptStarterList.types';\nimport type { ForwardRefComponent } from '@fluentui/react-components';\nimport { usePromptStarterListContextValues } from './usePromptStarterListContextValues';\n\nexport const PromptStarterList: ForwardRefComponent<PromptStarterListProps> = React.forwardRef((props, ref) => {\n const state = usePromptStarterList_unstable(props, ref);\n const contextValues = usePromptStarterListContextValues(state);\n\n usePromptStarterListStyles_unstable(state);\n return renderPromptStarterList_unstable(state, contextValues);\n});\n\nPromptStarterList.displayName = 'PromptStarterList';\n"],"names":["React","usePromptStarterList_unstable","renderPromptStarterList_unstable","usePromptStarterListStyles_unstable","usePromptStarterListContextValues","PromptStarterList","forwardRef","props","ref","state","contextValues","displayName"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,gCAAgC,QAAQ,4BAA4B;AAC7E,SAASC,mCAAmC,QAAQ,sCAAsC;AAG1F,SAASC,iCAAiC,QAAQ,sCAAsC;AAExF,OAAO,MAAMC,kCAAiEL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACrG,MAAMC,QAAQR,8BAA8BM,OAAOC;IACnD,MAAME,gBAAgBN,kCAAkCK;IAExDN,oCAAoCM;IACpC,OAAOP,iCAAiCO,OAAOC;AACjD,GAAG;AAEHL,kBAAkBM,WAAW,GAAG"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PromptStarterList.types.ts"],"sourcesContent":["import type { DesignVersion } from '@fluentui-copilot/react-provider';\nimport type {\n ComponentProps,\n ComponentState,\n Slot,\n Button,\n UseArrowNavigationGroupOptions,\n} from '@fluentui/react-components';\n\nexport type PromptStarterListSlots = {\n root: NonNullable<Slot<'div'>>;\n gridWrapper: NonNullable<Slot<'div'>>;\n actions?: Slot<'span'>;\n expandButton?: Slot<typeof Button>;\n};\n\n/**\n * PromptStarterList Props\n */\nexport type PromptStarterListProps = ComponentProps<Partial<PromptStarterListSlots>, 'gridWrapper'> &\n DesignVersion & {\n /**\n * Text for the expand button when the list is collapsed.\n *\n * default: \"Show more\"\n */\n expandButtonLabel?: string;\n /**\n * Text for the expand button when the list is expanded.\n *\n * default: \"Show less\"\n */\n collapseButtonLabel?: string;\n /**\n * Arrow navigation options. This can be used to customize Tabster's direction,\n * tab behavior, and memoization options.\n *\n * default: { axis: 'horizontal', memorizeCurrent: true }\n */\n arrowNavigationOptions?: UseArrowNavigationGroupOptions;\n\n /**\n * Whether to animate the entrance of its items when it first mounts.\n *\n * @default true\n */\n animateOnMount?: boolean;\n };\n\n/**\n * State used in rendering PromptStarterList\n */\nexport type PromptStarterListState = ComponentState<PromptStarterListSlots> &\n Required<Pick<PromptStarterListProps, 'designVersion'>> & {\n numberOfColumns: number;\n isExpanded?: boolean;\n };\n\nexport type PromptStarterListContextValue = Pick<PromptStarterListState, 'numberOfColumns' | 'isExpanded'>;\n"],"names":[],"rangeMappings":"","mappings":"AA0DA,WAA2G"}
@@ -0,0 +1,4 @@
1
+ export { PromptStarterList } from './PromptStarterList';
2
+ export { renderPromptStarterList_unstable } from './renderPromptStarterList';
3
+ export { usePromptStarterList_unstable } from './usePromptStarterList';
4
+ export { promptStarterListClassNames, usePromptStarterListStyles_unstable } from './usePromptStarterListStyles.styles';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export { PromptStarterList } from './PromptStarterList';\nexport type {\n PromptStarterListProps,\n PromptStarterListSlots,\n PromptStarterListState,\n PromptStarterListContextValue,\n} from './PromptStarterList.types';\nexport { renderPromptStarterList_unstable } from './renderPromptStarterList';\nexport { usePromptStarterList_unstable } from './usePromptStarterList';\nexport { promptStarterListClassNames, usePromptStarterListStyles_unstable } from './usePromptStarterListStyles.styles';\n"],"names":["PromptStarterList","renderPromptStarterList_unstable","usePromptStarterList_unstable","promptStarterListClassNames","usePromptStarterListStyles_unstable"],"rangeMappings":";;;","mappings":"AAAA,SAASA,iBAAiB,QAAQ,sBAAsB;AAOxD,SAASC,gCAAgC,QAAQ,4BAA4B;AAC7E,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,2BAA2B,EAAEC,mCAAmC,QAAQ,sCAAsC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
+ import { assertSlots, PresenceGroup } from '@fluentui/react-components';
3
+ import { PromptStarterListProvider } from '../../../contexts/PromptStarterListContext';
4
+ /**
5
+ * Render the final JSX of PromptStarterList
6
+ */ export const renderPromptStarterList_unstable = (state, contextValue)=>{
7
+ assertSlots(state);
8
+ return /*#__PURE__*/ _jsx(PromptStarterListProvider, {
9
+ value: contextValue,
10
+ children: /*#__PURE__*/ _jsxs(state.root, {
11
+ children: [
12
+ /*#__PURE__*/ _jsx(PresenceGroup, {
13
+ children: /*#__PURE__*/ _jsx(state.gridWrapper, {
14
+ children: state.root.children
15
+ })
16
+ }),
17
+ state.actions && /*#__PURE__*/ _jsx(state.actions, {}),
18
+ state.expandButton && /*#__PURE__*/ _jsx(state.expandButton, {})
19
+ ]
20
+ })
21
+ });
22
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["renderPromptStarterList.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots, PresenceGroup } from '@fluentui/react-components';\nimport type { JSXElement } from '@fluentui/react-components';\nimport { PromptStarterListProvider } from '../../../contexts/PromptStarterListContext';\nimport type {\n PromptStarterListState,\n PromptStarterListSlots,\n PromptStarterListContextValue,\n} from './PromptStarterList.types';\n\n/**\n * Render the final JSX of PromptStarterList\n */\nexport const renderPromptStarterList_unstable = (\n state: PromptStarterListState,\n contextValue: PromptStarterListContextValue,\n): JSXElement => {\n assertSlots<PromptStarterListSlots>(state);\n\n return (\n <PromptStarterListProvider value={contextValue}>\n <state.root>\n <PresenceGroup>\n <state.gridWrapper>{state.root.children}</state.gridWrapper>\n </PresenceGroup>\n {state.actions && <state.actions />}\n {state.expandButton && <state.expandButton />}\n </state.root>\n </PromptStarterListProvider>\n );\n};\n"],"names":["assertSlots","PresenceGroup","PromptStarterListProvider","renderPromptStarterList_unstable","state","contextValue","value","root","gridWrapper","children","actions","expandButton"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,EAAEC,aAAa,QAAQ,6BAA6B;AAExE,SAASC,yBAAyB,QAAQ,6CAA6C;AAOvF;;CAEC,GACD,OAAO,MAAMC,mCAAmC,CAC9CC,OACAC;IAEAL,YAAoCI;IAEpC,qBACE,KAACF;QAA0BI,OAAOD;kBAChC,cAAA,MAACD,MAAMG,IAAI;;8BACT,KAACN;8BACC,cAAA,KAACG,MAAMI,WAAW;kCAAEJ,MAAMG,IAAI,CAACE,QAAQ;;;gBAExCL,MAAMM,OAAO,kBAAI,KAACN,MAAMM,OAAO;gBAC/BN,MAAMO,YAAY,kBAAI,KAACP,MAAMO,YAAY;;;;AAIlD,EAAE"}
@@ -0,0 +1,117 @@
1
+ import * as React from 'react';
2
+ import { getIntrinsicElementProps, slot, Button, useArrowNavigationGroup, mergeCallbacks, useFluent, useMergedRefs } from '@fluentui/react-components';
3
+ import { useDesignVersion } from '@fluentui-copilot/react-provider';
4
+ import { ChevronDown12Regular } from '@fluentui/react-icons';
5
+ import { PromptStarterMotion } from '../PromptStarter/promptStarterMotion';
6
+ /**
7
+ * Create the state required to render PromptStarterList.
8
+ *
9
+ * The returned state can be modified with hooks such as usePromptStarterListStyles_unstable,
10
+ * before being passed to renderPromptStarterList_unstable.
11
+ *
12
+ * @param props - props from this instance of PromptStarterList
13
+ * @param ref - reference to root HTMLElement of PromptStarterList
14
+ */ export const usePromptStarterList_unstable = (props, ref)=>{
15
+ const { arrowNavigationOptions, expandButtonLabel = 'Show more', collapseButtonLabel = 'Show less', animateOnMount = true } = props;
16
+ const designVersion = useDesignVersion(props.designVersion);
17
+ var _arrowNavigationOptions_axis, _arrowNavigationOptions_memorizeCurrent;
18
+ const focusAttrs = useArrowNavigationGroup({
19
+ ...arrowNavigationOptions,
20
+ axis: (_arrowNavigationOptions_axis = arrowNavigationOptions === null || arrowNavigationOptions === void 0 ? void 0 : arrowNavigationOptions.axis) !== null && _arrowNavigationOptions_axis !== void 0 ? _arrowNavigationOptions_axis : 'both',
21
+ memorizeCurrent: (_arrowNavigationOptions_memorizeCurrent = arrowNavigationOptions === null || arrowNavigationOptions === void 0 ? void 0 : arrowNavigationOptions.memorizeCurrent) !== null && _arrowNavigationOptions_memorizeCurrent !== void 0 ? _arrowNavigationOptions_memorizeCurrent : true
22
+ });
23
+ const [isExpanded, setIsExpanded] = React.useState(false);
24
+ const [numberOfColumns, setNumberOfColumns] = React.useState(3);
25
+ const gridWrapperRef = React.useRef(null);
26
+ const { targetDocument } = useFluent();
27
+ const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
28
+ React.useEffect(()=>{
29
+ if (!win || !gridWrapperRef.current) return;
30
+ const promptStarterGrid = gridWrapperRef.current;
31
+ const updateNumberOfColumns = ()=>{
32
+ const numColumns = win.getComputedStyle(promptStarterGrid).gridTemplateColumns.split(' ').length;
33
+ setNumberOfColumns(numColumns);
34
+ };
35
+ const ro = new win.ResizeObserver(updateNumberOfColumns);
36
+ ro.observe(promptStarterGrid);
37
+ return ()=>{
38
+ ro.unobserve(promptStarterGrid);
39
+ };
40
+ }, [
41
+ win
42
+ ]);
43
+ const state = {
44
+ numberOfColumns: numberOfColumns,
45
+ isExpanded,
46
+ designVersion,
47
+ components: {
48
+ root: 'div',
49
+ gridWrapper: 'div',
50
+ actions: 'span',
51
+ expandButton: Button
52
+ },
53
+ root: slot.always(getIntrinsicElementProps('div', {
54
+ ref,
55
+ ...props
56
+ }), {
57
+ elementType: 'div'
58
+ }),
59
+ gridWrapper: slot.always(props.gridWrapper, {
60
+ defaultProps: {
61
+ role: 'list',
62
+ ...focusAttrs
63
+ },
64
+ elementType: 'div'
65
+ }),
66
+ actions: slot.optional(props.actions, {
67
+ elementType: 'span'
68
+ }),
69
+ expandButton: slot.optional(props.expandButton, {
70
+ defaultProps: {
71
+ appearance: 'subtle',
72
+ size: 'small',
73
+ shape: 'rounded',
74
+ icon: /*#__PURE__*/ React.createElement(ChevronDown12Regular, null),
75
+ iconPosition: 'after',
76
+ 'aria-expanded': isExpanded,
77
+ children: isExpanded ? collapseButtonLabel : expandButtonLabel
78
+ },
79
+ renderByDefault: true,
80
+ elementType: Button
81
+ })
82
+ };
83
+ state.gridWrapper.ref = useMergedRefs(gridWrapperRef, state.gridWrapper.ref);
84
+ // Get the array of children.
85
+ const childrenArray = React.useMemo(()=>{
86
+ return React.Children.toArray(state.root.children);
87
+ }, [
88
+ state.root.children
89
+ ]);
90
+ // Add motion to the children.
91
+ const childrenWithMotion = React.useMemo(()=>childrenArray.map((child, index)=>{
92
+ // Throw error if the child is not a valid React element or is a Fragment.
93
+ if (!/*#__PURE__*/ React.isValidElement(child) || child.type === React.Fragment) {
94
+ throw new Error('You should only use PromptStarter components as the children of PromptStarterList.');
95
+ }
96
+ // In the collapsed state, if there is one column, we show three children.
97
+ // If there are two or three columns, we show two or three. All children
98
+ // are shown in the expanded state.
99
+ const visibility = numberOfColumns === 1 && index < 3 || index < numberOfColumns || isExpanded;
100
+ return /*#__PURE__*/ React.createElement(PromptStarterMotion, {
101
+ appear: animateOnMount,
102
+ key: index,
103
+ index: index,
104
+ visible: visibility,
105
+ numberOfColumns: numberOfColumns
106
+ }, child);
107
+ }), [
108
+ childrenArray,
109
+ numberOfColumns,
110
+ isExpanded
111
+ ]);
112
+ state.root.children = childrenWithMotion;
113
+ if (state.expandButton) {
114
+ state.expandButton.onClick = mergeCallbacks(state.expandButton.onClick, ()=>setIsExpanded(!isExpanded));
115
+ }
116
+ return state;
117
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["usePromptStarterList.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n getIntrinsicElementProps,\n slot,\n Button,\n useArrowNavigationGroup,\n mergeCallbacks,\n useFluent,\n useMergedRefs,\n} from '@fluentui/react-components';\nimport type { PromptStarterListProps, PromptStarterListState } from './PromptStarterList.types';\nimport { useDesignVersion } from '@fluentui-copilot/react-provider';\nimport { ChevronDown12Regular } from '@fluentui/react-icons';\nimport { PromptStarterMotion } from '../PromptStarter/promptStarterMotion';\n\n/**\n * Create the state required to render PromptStarterList.\n *\n * The returned state can be modified with hooks such as usePromptStarterListStyles_unstable,\n * before being passed to renderPromptStarterList_unstable.\n *\n * @param props - props from this instance of PromptStarterList\n * @param ref - reference to root HTMLElement of PromptStarterList\n */\nexport const usePromptStarterList_unstable = (\n props: PromptStarterListProps,\n ref: React.Ref<HTMLDivElement>,\n): PromptStarterListState => {\n const {\n arrowNavigationOptions,\n expandButtonLabel = 'Show more',\n collapseButtonLabel = 'Show less',\n animateOnMount = true,\n } = props;\n const designVersion = useDesignVersion(props.designVersion);\n const focusAttrs = useArrowNavigationGroup({\n ...arrowNavigationOptions,\n axis: arrowNavigationOptions?.axis ?? 'both',\n memorizeCurrent: arrowNavigationOptions?.memorizeCurrent ?? true,\n });\n\n const [isExpanded, setIsExpanded] = React.useState(false);\n const [numberOfColumns, setNumberOfColumns] = React.useState<number>(3);\n\n const gridWrapperRef = React.useRef<HTMLDivElement>(null);\n const { targetDocument } = useFluent();\n const win = targetDocument?.defaultView;\n\n React.useEffect(() => {\n if (!win || !gridWrapperRef.current) return;\n\n const promptStarterGrid = gridWrapperRef.current;\n\n const updateNumberOfColumns = () => {\n const numColumns = win.getComputedStyle(promptStarterGrid).gridTemplateColumns.split(' ').length;\n setNumberOfColumns(numColumns);\n };\n\n const ro = new win.ResizeObserver(updateNumberOfColumns);\n ro.observe(promptStarterGrid);\n\n return () => {\n ro.unobserve(promptStarterGrid);\n };\n }, [win]);\n\n const state: PromptStarterListState = {\n numberOfColumns: numberOfColumns,\n isExpanded,\n designVersion,\n components: {\n root: 'div',\n gridWrapper: 'div',\n actions: 'span',\n expandButton: Button,\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref,\n ...props,\n }),\n { elementType: 'div' },\n ),\n gridWrapper: slot.always(props.gridWrapper, {\n defaultProps: {\n role: 'list',\n ...focusAttrs,\n },\n elementType: 'div',\n }),\n actions: slot.optional(props.actions, {\n elementType: 'span',\n }),\n expandButton: slot.optional(props.expandButton, {\n defaultProps: {\n appearance: 'subtle',\n size: 'small',\n shape: 'rounded',\n icon: <ChevronDown12Regular />,\n iconPosition: 'after',\n 'aria-expanded': isExpanded,\n children: isExpanded ? collapseButtonLabel : expandButtonLabel,\n },\n renderByDefault: true,\n elementType: Button,\n }),\n };\n\n state.gridWrapper.ref = useMergedRefs(gridWrapperRef, state.gridWrapper.ref);\n\n // Get the array of children.\n const childrenArray = React.useMemo<\n (React.ReactElement<any> | number | string | Iterable<React.ReactNode> | React.ReactPortal)[]\n >(() => {\n return React.Children.toArray(state.root.children);\n }, [state.root.children]);\n\n // Add motion to the children.\n const childrenWithMotion = React.useMemo(\n () =>\n childrenArray.map((child, index) => {\n // Throw error if the child is not a valid React element or is a Fragment.\n if (!React.isValidElement(child) || child.type === React.Fragment) {\n throw new Error('You should only use PromptStarter components as the children of PromptStarterList.');\n }\n\n // In the collapsed state, if there is one column, we show three children.\n // If there are two or three columns, we show two or three. All children\n // are shown in the expanded state.\n const visibility = (numberOfColumns === 1 && index < 3) || index < numberOfColumns || isExpanded;\n\n return (\n <PromptStarterMotion\n appear={animateOnMount}\n key={index}\n index={index}\n visible={visibility}\n numberOfColumns={numberOfColumns}\n >\n {child}\n </PromptStarterMotion>\n );\n }),\n [childrenArray, numberOfColumns, isExpanded],\n );\n\n state.root.children = childrenWithMotion;\n\n if (state.expandButton) {\n state.expandButton.onClick = mergeCallbacks(\n state.expandButton.onClick as React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement>,\n () => setIsExpanded(!isExpanded),\n );\n }\n\n return state;\n};\n"],"names":["React","getIntrinsicElementProps","slot","Button","useArrowNavigationGroup","mergeCallbacks","useFluent","useMergedRefs","useDesignVersion","ChevronDown12Regular","PromptStarterMotion","usePromptStarterList_unstable","props","ref","arrowNavigationOptions","expandButtonLabel","collapseButtonLabel","animateOnMount","designVersion","focusAttrs","axis","memorizeCurrent","isExpanded","setIsExpanded","useState","numberOfColumns","setNumberOfColumns","gridWrapperRef","useRef","targetDocument","win","defaultView","useEffect","current","promptStarterGrid","updateNumberOfColumns","numColumns","getComputedStyle","gridTemplateColumns","split","length","ro","ResizeObserver","observe","unobserve","state","components","root","gridWrapper","actions","expandButton","always","elementType","defaultProps","role","optional","appearance","size","shape","icon","iconPosition","children","renderByDefault","childrenArray","useMemo","Children","toArray","childrenWithMotion","map","child","index","isValidElement","type","Fragment","Error","visibility","appear","key","visible","onClick"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export function usePromptStarterListContextValues(state) {
2
+ const { numberOfColumns } = state;
3
+ return {
4
+ numberOfColumns
5
+ };
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["usePromptStarterListContextValues.ts"],"sourcesContent":["import type { PromptStarterListContextValue, PromptStarterListState } from './PromptStarterList.types';\n\nexport function usePromptStarterListContextValues(state: PromptStarterListState): PromptStarterListContextValue {\n const { numberOfColumns } = state;\n\n return {\n numberOfColumns,\n };\n}\n"],"names":["usePromptStarterListContextValues","state","numberOfColumns"],"rangeMappings":";;;;;","mappings":"AAEA,OAAO,SAASA,kCAAkCC,KAA6B;IAC7E,MAAM,EAAEC,eAAe,EAAE,GAAGD;IAE5B,OAAO;QACLC;IACF;AACF"}
@@ -0,0 +1,83 @@
1
+ import { buttonClassNames, __resetStyles, __styles, mergeClasses } from '@fluentui/react-components';
2
+ import { tokens } from '@fluentui-copilot/tokens';
3
+ export const promptStarterListClassNames = {
4
+ root: 'fai-PromptStarterList',
5
+ gridWrapper: 'fai-PromptStarterList__gridWrapper',
6
+ actions: 'fai-PromptStarterList__actions',
7
+ expandButton: 'fai-PromptStarterList__expandButton'
8
+ };
9
+ /**
10
+ * Styles for the root slot
11
+ */
12
+ const useRootClassName = __resetStyles("r1svwxtk", null, [".r1svwxtk{display:grid;grid-template-columns:1fr max-content max-content;grid-template-rows:max-content max-content;grid-template-areas:\"grid grid grid\" \". actions expandButton\";max-width:772px;row-gap:var(--spacingVerticalXL);column-gap:var(--spacingHorizontalSNudge);}"]);
13
+ const useStyles = __styles({
14
+ gridWrapper: {
15
+ Bw0ie65: 0,
16
+ Br312pm: 0,
17
+ nk6f5a: 0,
18
+ Ijaq50: 0,
19
+ Bq1tomu: "fl4njfv",
20
+ mc9l5x: "f13qh94s",
21
+ i8kkvl: 0,
22
+ Belr9w4: 0,
23
+ rmohyg: "f1p93rwu",
24
+ t4k1zu: "f4wu0r3",
25
+ Budl1dq: "fvo7o13",
26
+ Bxotwcr: "f1nkeedh"
27
+ },
28
+ actions: {
29
+ Bw0ie65: 0,
30
+ Br312pm: 0,
31
+ nk6f5a: 0,
32
+ Ijaq50: 0,
33
+ Bq1tomu: "fceb517"
34
+ },
35
+ expandButton: {
36
+ Bw0ie65: 0,
37
+ Br312pm: 0,
38
+ nk6f5a: 0,
39
+ Ijaq50: 0,
40
+ Bq1tomu: "f1najgz0",
41
+ wrk2wx: "f11k2d1d",
42
+ dutsh0: "f1iwh30k",
43
+ B4u5nao: "fn63aq9",
44
+ Bbdnnc7: "fm7zj7h",
45
+ x3br3k: "fuzcl37"
46
+ },
47
+ expandButtonExpanded: {
48
+ Bs9jjb3: ["f5l68jj", "f1i29bk4"]
49
+ }
50
+ }, {
51
+ d: [[".fl4njfv{grid-area:grid;}", {
52
+ p: -1
53
+ }], ".f13qh94s{display:grid;}", [".f1p93rwu{gap:var(--spacingHorizontalL);}", {
54
+ p: -1
55
+ }], ".f4wu0r3{grid-auto-columns:max-content;}", ".fvo7o13{grid-template-columns:repeat(auto-fit, minmax(214px, 1fr));}", ".f1nkeedh{grid-auto-flow:unset;}", [".fceb517{grid-area:actions;}", {
56
+ p: -1
57
+ }], [".f1najgz0{grid-area:expandButton;}", {
58
+ p: -1
59
+ }], ".f11k2d1d .fui-Button__icon{font-size:12px;}", ".f1iwh30k .fui-Button__icon{height:12px;}", ".fn63aq9 .fui-Button__icon{width:12px;}", ".f5l68jj>.fui-Button__icon{transform:rotate(180deg);}", ".f1i29bk4>.fui-Button__icon{transform:rotate(-180deg);}"],
60
+ h: [".fm7zj7h:hover .fui-Button__icon{color:var(--colorNeutralForeground2Hover);}", ".fuzcl37:hover:active .fui-Button__icon{color:var(--colorNeutralForeground2Pressed);}"]
61
+ });
62
+ /**
63
+ * Apply styling to the PromptStarterList slots based on the state
64
+ */
65
+ export const usePromptStarterListStyles_unstable = state => {
66
+ 'use no memo';
67
+
68
+ const {
69
+ isExpanded
70
+ } = state;
71
+ const rootClassName = useRootClassName();
72
+ const styles = useStyles();
73
+ state.root.className = mergeClasses(promptStarterListClassNames.root, rootClassName, state.root.className);
74
+ state.gridWrapper.className = mergeClasses(promptStarterListClassNames.gridWrapper, styles.gridWrapper, state.gridWrapper.className);
75
+ if (state.actions) {
76
+ state.actions.className = mergeClasses(promptStarterListClassNames.actions, styles.actions, state.actions.className);
77
+ }
78
+ if (state.expandButton) {
79
+ state.expandButton.className = mergeClasses(promptStarterListClassNames.expandButton, styles.expandButton, isExpanded && styles.expandButtonExpanded, state.expandButton.className);
80
+ }
81
+ return state;
82
+ };
83
+ //# sourceMappingURL=usePromptStarterListStyles.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["usePromptStarterListStyles.styles.ts"],"sourcesContent":["import { buttonClassNames, makeResetStyles, makeStyles, mergeClasses } from '@fluentui/react-components';\nimport type { PromptStarterListSlots, PromptStarterListState } from './PromptStarterList.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\nimport { tokens } from '@fluentui-copilot/tokens';\n\nexport const promptStarterListClassNames: SlotClassNames<PromptStarterListSlots> = {\n root: 'fai-PromptStarterList',\n gridWrapper: 'fai-PromptStarterList__gridWrapper',\n actions: 'fai-PromptStarterList__actions',\n expandButton: 'fai-PromptStarterList__expandButton',\n};\n\n/**\n * Styles for the root slot\n */\nconst useRootClassName = makeResetStyles({\n display: 'grid',\n gridTemplateColumns: '1fr max-content max-content',\n gridTemplateRows: 'max-content max-content',\n gridTemplateAreas: `\"grid grid grid\"\n \". actions expandButton\"`,\n maxWidth: '772px',\n rowGap: tokens.spacingVerticalXL,\n columnGap: tokens.spacingHorizontalSNudge,\n});\n\nconst useStyles = makeStyles({\n gridWrapper: {\n gridArea: 'grid',\n display: 'grid',\n gap: tokens.spacingHorizontalL,\n gridAutoColumns: 'max-content',\n\n gridTemplateColumns: `repeat(auto-fit, minmax(214px, 1fr))`,\n gridAutoFlow: 'unset',\n },\n\n actions: {\n gridArea: 'actions',\n },\n\n expandButton: {\n gridArea: 'expandButton',\n [`& .${buttonClassNames.icon}`]: {\n fontSize: '12px',\n height: '12px',\n width: '12px',\n },\n ':hover': {\n [`& .${buttonClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Hover,\n },\n },\n ':hover:active': {\n [`& .${buttonClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Pressed,\n },\n },\n },\n\n expandButtonExpanded: {\n [`& > .${buttonClassNames.icon}`]: {\n transform: 'rotate(180deg)',\n },\n },\n});\n\n/**\n * Apply styling to the PromptStarterList slots based on the state\n */\nexport const usePromptStarterListStyles_unstable = (state: PromptStarterListState): PromptStarterListState => {\n 'use no memo';\n\n const { isExpanded } = state;\n\n const rootClassName = useRootClassName();\n const styles = useStyles();\n state.root.className = mergeClasses(promptStarterListClassNames.root, rootClassName, state.root.className);\n state.gridWrapper.className = mergeClasses(\n promptStarterListClassNames.gridWrapper,\n styles.gridWrapper,\n state.gridWrapper.className,\n );\n if (state.actions) {\n state.actions.className = mergeClasses(\n promptStarterListClassNames.actions,\n styles.actions,\n state.actions.className,\n );\n }\n if (state.expandButton) {\n state.expandButton.className = mergeClasses(\n promptStarterListClassNames.expandButton,\n styles.expandButton,\n isExpanded && styles.expandButtonExpanded,\n state.expandButton.className,\n );\n }\n\n return state;\n};\n"],"names":["buttonClassNames","makeResetStyles","makeStyles","mergeClasses","tokens","promptStarterListClassNames","root","gridWrapper","actions","expandButton","useRootClassName","display","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","maxWidth","rowGap","spacingVerticalXL","columnGap","spacingHorizontalSNudge","useStyles","gridArea","gap","spacingHorizontalL","gridAutoColumns","gridAutoFlow","icon","fontSize","height","width","color","colorNeutralForeground2Hover","colorNeutralForeground2Pressed","expandButtonExpanded","transform","usePromptStarterListStyles_unstable","state","isExpanded","rootClassName","styles","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,gBAAgB,EAAEC,eAAe,EAAEC,UAAU,EAAEC,YAAY,QAAQ,6BAA6B;AAGzG,SAASC,MAAM,QAAQ,2BAA2B;AAElD,OAAO,MAAMC,8BAAsE;IACjFC,MAAM;IACNC,aAAa;IACbC,SAAS;IACTC,cAAc;AAChB,EAAE;AAEF;;CAEC,GACD,MAAMC,mBAAmBT,gBAAgB;IACvCU,SAAS;IACTC,qBAAqB;IACrBC,kBAAkB;IAClBC,mBAAmB,CAAC;8CACwB,CAAC;IAC7CC,UAAU;IACVC,QAAQZ,OAAOa,iBAAiB;IAChCC,WAAWd,OAAOe,uBAAuB;AAC3C;AAEA,MAAMC,YAAYlB,WAAW;IAC3BK,aAAa;QACXc,UAAU;QACVV,SAAS;QACTW,KAAKlB,OAAOmB,kBAAkB;QAC9BC,iBAAiB;QAEjBZ,qBAAqB,CAAC,oCAAoC,CAAC;QAC3Da,cAAc;IAChB;IAEAjB,SAAS;QACPa,UAAU;IACZ;IAEAZ,cAAc;QACZY,UAAU;QACV,CAAC,CAAC,GAAG,EAAErB,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;YAC/BC,UAAU;YACVC,QAAQ;YACRC,OAAO;QACT;QACA,UAAU;YACR,CAAC,CAAC,GAAG,EAAE7B,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC/BI,OAAO1B,OAAO2B,4BAA4B;YAC5C;QACF;QACA,iBAAiB;YACf,CAAC,CAAC,GAAG,EAAE/B,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC/BI,OAAO1B,OAAO4B,8BAA8B;YAC9C;QACF;IACF;IAEAC,sBAAsB;QACpB,CAAC,CAAC,KAAK,EAAEjC,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;YACjCQ,WAAW;QACb;IACF;AACF;AAEA;;CAEC,GACD,OAAO,MAAMC,sCAAsC,CAACC;IAClD;IAEA,MAAM,EAAEC,UAAU,EAAE,GAAGD;IAEvB,MAAME,gBAAgB5B;IACtB,MAAM6B,SAASnB;IACfgB,MAAM9B,IAAI,CAACkC,SAAS,GAAGrC,aAAaE,4BAA4BC,IAAI,EAAEgC,eAAeF,MAAM9B,IAAI,CAACkC,SAAS;IACzGJ,MAAM7B,WAAW,CAACiC,SAAS,GAAGrC,aAC5BE,4BAA4BE,WAAW,EACvCgC,OAAOhC,WAAW,EAClB6B,MAAM7B,WAAW,CAACiC,SAAS;IAE7B,IAAIJ,MAAM5B,OAAO,EAAE;QACjB4B,MAAM5B,OAAO,CAACgC,SAAS,GAAGrC,aACxBE,4BAA4BG,OAAO,EACnC+B,OAAO/B,OAAO,EACd4B,MAAM5B,OAAO,CAACgC,SAAS;IAE3B;IACA,IAAIJ,MAAM3B,YAAY,EAAE;QACtB2B,MAAM3B,YAAY,CAAC+B,SAAS,GAAGrC,aAC7BE,4BAA4BI,YAAY,EACxC8B,OAAO9B,YAAY,EACnB4B,cAAcE,OAAON,oBAAoB,EACzCG,MAAM3B,YAAY,CAAC+B,SAAS;IAEhC;IAEA,OAAOJ;AACT,EAAE"}
@@ -0,0 +1,73 @@
1
+ import { buttonClassNames, makeResetStyles, makeStyles, mergeClasses } from '@fluentui/react-components';
2
+ import { tokens } from '@fluentui-copilot/tokens';
3
+ export const promptStarterListClassNames = {
4
+ root: 'fai-PromptStarterList',
5
+ gridWrapper: 'fai-PromptStarterList__gridWrapper',
6
+ actions: 'fai-PromptStarterList__actions',
7
+ expandButton: 'fai-PromptStarterList__expandButton'
8
+ };
9
+ /**
10
+ * Styles for the root slot
11
+ */ const useRootClassName = makeResetStyles({
12
+ display: 'grid',
13
+ gridTemplateColumns: '1fr max-content max-content',
14
+ gridTemplateRows: 'max-content max-content',
15
+ gridTemplateAreas: `"grid grid grid"
16
+ ". actions expandButton"`,
17
+ maxWidth: '772px',
18
+ rowGap: tokens.spacingVerticalXL,
19
+ columnGap: tokens.spacingHorizontalSNudge
20
+ });
21
+ const useStyles = makeStyles({
22
+ gridWrapper: {
23
+ gridArea: 'grid',
24
+ display: 'grid',
25
+ gap: tokens.spacingHorizontalL,
26
+ gridAutoColumns: 'max-content',
27
+ gridTemplateColumns: `repeat(auto-fit, minmax(214px, 1fr))`,
28
+ gridAutoFlow: 'unset'
29
+ },
30
+ actions: {
31
+ gridArea: 'actions'
32
+ },
33
+ expandButton: {
34
+ gridArea: 'expandButton',
35
+ [`& .${buttonClassNames.icon}`]: {
36
+ fontSize: '12px',
37
+ height: '12px',
38
+ width: '12px'
39
+ },
40
+ ':hover': {
41
+ [`& .${buttonClassNames.icon}`]: {
42
+ color: tokens.colorNeutralForeground2Hover
43
+ }
44
+ },
45
+ ':hover:active': {
46
+ [`& .${buttonClassNames.icon}`]: {
47
+ color: tokens.colorNeutralForeground2Pressed
48
+ }
49
+ }
50
+ },
51
+ expandButtonExpanded: {
52
+ [`& > .${buttonClassNames.icon}`]: {
53
+ transform: 'rotate(180deg)'
54
+ }
55
+ }
56
+ });
57
+ /**
58
+ * Apply styling to the PromptStarterList slots based on the state
59
+ */ export const usePromptStarterListStyles_unstable = (state)=>{
60
+ 'use no memo';
61
+ const { isExpanded } = state;
62
+ const rootClassName = useRootClassName();
63
+ const styles = useStyles();
64
+ state.root.className = mergeClasses(promptStarterListClassNames.root, rootClassName, state.root.className);
65
+ state.gridWrapper.className = mergeClasses(promptStarterListClassNames.gridWrapper, styles.gridWrapper, state.gridWrapper.className);
66
+ if (state.actions) {
67
+ state.actions.className = mergeClasses(promptStarterListClassNames.actions, styles.actions, state.actions.className);
68
+ }
69
+ if (state.expandButton) {
70
+ state.expandButton.className = mergeClasses(promptStarterListClassNames.expandButton, styles.expandButton, isExpanded && styles.expandButtonExpanded, state.expandButton.className);
71
+ }
72
+ return state;
73
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["usePromptStarterListStyles.styles.ts"],"sourcesContent":["import { buttonClassNames, makeResetStyles, makeStyles, mergeClasses } from '@fluentui/react-components';\nimport type { PromptStarterListSlots, PromptStarterListState } from './PromptStarterList.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\nimport { tokens } from '@fluentui-copilot/tokens';\n\nexport const promptStarterListClassNames: SlotClassNames<PromptStarterListSlots> = {\n root: 'fai-PromptStarterList',\n gridWrapper: 'fai-PromptStarterList__gridWrapper',\n actions: 'fai-PromptStarterList__actions',\n expandButton: 'fai-PromptStarterList__expandButton',\n};\n\n/**\n * Styles for the root slot\n */\nconst useRootClassName = makeResetStyles({\n display: 'grid',\n gridTemplateColumns: '1fr max-content max-content',\n gridTemplateRows: 'max-content max-content',\n gridTemplateAreas: `\"grid grid grid\"\n \". actions expandButton\"`,\n maxWidth: '772px',\n rowGap: tokens.spacingVerticalXL,\n columnGap: tokens.spacingHorizontalSNudge,\n});\n\nconst useStyles = makeStyles({\n gridWrapper: {\n gridArea: 'grid',\n display: 'grid',\n gap: tokens.spacingHorizontalL,\n gridAutoColumns: 'max-content',\n\n gridTemplateColumns: `repeat(auto-fit, minmax(214px, 1fr))`,\n gridAutoFlow: 'unset',\n },\n\n actions: {\n gridArea: 'actions',\n },\n\n expandButton: {\n gridArea: 'expandButton',\n [`& .${buttonClassNames.icon}`]: {\n fontSize: '12px',\n height: '12px',\n width: '12px',\n },\n ':hover': {\n [`& .${buttonClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Hover,\n },\n },\n ':hover:active': {\n [`& .${buttonClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Pressed,\n },\n },\n },\n\n expandButtonExpanded: {\n [`& > .${buttonClassNames.icon}`]: {\n transform: 'rotate(180deg)',\n },\n },\n});\n\n/**\n * Apply styling to the PromptStarterList slots based on the state\n */\nexport const usePromptStarterListStyles_unstable = (state: PromptStarterListState): PromptStarterListState => {\n 'use no memo';\n\n const { isExpanded } = state;\n\n const rootClassName = useRootClassName();\n const styles = useStyles();\n state.root.className = mergeClasses(promptStarterListClassNames.root, rootClassName, state.root.className);\n state.gridWrapper.className = mergeClasses(\n promptStarterListClassNames.gridWrapper,\n styles.gridWrapper,\n state.gridWrapper.className,\n );\n if (state.actions) {\n state.actions.className = mergeClasses(\n promptStarterListClassNames.actions,\n styles.actions,\n state.actions.className,\n );\n }\n if (state.expandButton) {\n state.expandButton.className = mergeClasses(\n promptStarterListClassNames.expandButton,\n styles.expandButton,\n isExpanded && styles.expandButtonExpanded,\n state.expandButton.className,\n );\n }\n\n return state;\n};\n"],"names":["buttonClassNames","makeResetStyles","makeStyles","mergeClasses","tokens","promptStarterListClassNames","root","gridWrapper","actions","expandButton","useRootClassName","display","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","maxWidth","rowGap","spacingVerticalXL","columnGap","spacingHorizontalSNudge","useStyles","gridArea","gap","spacingHorizontalL","gridAutoColumns","gridAutoFlow","icon","fontSize","height","width","color","colorNeutralForeground2Hover","colorNeutralForeground2Pressed","expandButtonExpanded","transform","usePromptStarterListStyles_unstable","state","isExpanded","rootClassName","styles","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,gBAAgB,EAAEC,eAAe,EAAEC,UAAU,EAAEC,YAAY,QAAQ,6BAA6B;AAGzG,SAASC,MAAM,QAAQ,2BAA2B;AAElD,OAAO,MAAMC,8BAAsE;IACjFC,MAAM;IACNC,aAAa;IACbC,SAAS;IACTC,cAAc;AAChB,EAAE;AAEF;;CAEC,GACD,MAAMC,mBAAmBT,gBAAgB;IACvCU,SAAS;IACTC,qBAAqB;IACrBC,kBAAkB;IAClBC,mBAAmB,CAAC;8CACwB,CAAC;IAC7CC,UAAU;IACVC,QAAQZ,OAAOa,iBAAiB;IAChCC,WAAWd,OAAOe,uBAAuB;AAC3C;AAEA,MAAMC,YAAYlB,WAAW;IAC3BK,aAAa;QACXc,UAAU;QACVV,SAAS;QACTW,KAAKlB,OAAOmB,kBAAkB;QAC9BC,iBAAiB;QAEjBZ,qBAAqB,CAAC,oCAAoC,CAAC;QAC3Da,cAAc;IAChB;IAEAjB,SAAS;QACPa,UAAU;IACZ;IAEAZ,cAAc;QACZY,UAAU;QACV,CAAC,CAAC,GAAG,EAAErB,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;YAC/BC,UAAU;YACVC,QAAQ;YACRC,OAAO;QACT;QACA,UAAU;YACR,CAAC,CAAC,GAAG,EAAE7B,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC/BI,OAAO1B,OAAO2B,4BAA4B;YAC5C;QACF;QACA,iBAAiB;YACf,CAAC,CAAC,GAAG,EAAE/B,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC/BI,OAAO1B,OAAO4B,8BAA8B;YAC9C;QACF;IACF;IAEAC,sBAAsB;QACpB,CAAC,CAAC,KAAK,EAAEjC,iBAAiB0B,IAAI,CAAC,CAAC,CAAC,EAAE;YACjCQ,WAAW;QACb;IACF;AACF;AAEA;;CAEC,GACD,OAAO,MAAMC,sCAAsC,CAACC;IAClD;IAEA,MAAM,EAAEC,UAAU,EAAE,GAAGD;IAEvB,MAAME,gBAAgB5B;IACtB,MAAM6B,SAASnB;IACfgB,MAAM9B,IAAI,CAACkC,SAAS,GAAGrC,aAAaE,4BAA4BC,IAAI,EAAEgC,eAAeF,MAAM9B,IAAI,CAACkC,SAAS;IACzGJ,MAAM7B,WAAW,CAACiC,SAAS,GAAGrC,aAC5BE,4BAA4BE,WAAW,EACvCgC,OAAOhC,WAAW,EAClB6B,MAAM7B,WAAW,CAACiC,SAAS;IAE7B,IAAIJ,MAAM5B,OAAO,EAAE;QACjB4B,MAAM5B,OAAO,CAACgC,SAAS,GAAGrC,aACxBE,4BAA4BG,OAAO,EACnC+B,OAAO/B,OAAO,EACd4B,MAAM5B,OAAO,CAACgC,SAAS;IAE3B;IACA,IAAIJ,MAAM3B,YAAY,EAAE;QACtB2B,MAAM3B,YAAY,CAAC+B,SAAS,GAAGrC,aAC7BE,4BAA4BI,YAAY,EACxC8B,OAAO9B,YAAY,EACnB4B,cAAcE,OAAON,oBAAoB,EACzCG,MAAM3B,YAAY,CAAC+B,SAAS;IAEhC;IAEA,OAAOJ;AACT,EAAE"}
@@ -0,0 +1,7 @@
1
+ import { createContext, useContextSelector } from '@fluentui/react-context-selector';
2
+ export const PromptStarterListContext = createContext(undefined);
3
+ const promptStarterListContextDefaultValue = {
4
+ numberOfColumns: 3
5
+ };
6
+ export const usePromptStarterListContext = (selector)=>useContextSelector(PromptStarterListContext, (ctx = promptStarterListContextDefaultValue)=>selector(ctx));
7
+ export const PromptStarterListProvider = PromptStarterListContext.Provider;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PromptStarterListContext.ts"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport type { ContextSelector } from '@fluentui/react-context-selector';\nimport type { PromptStarterListContextValue } from '../PromptStarterList';\n\nexport const PromptStarterListContext = createContext<PromptStarterListContextValue | undefined>(undefined);\n\nconst promptStarterListContextDefaultValue: PromptStarterListContextValue = {\n numberOfColumns: 3,\n};\n\nexport const usePromptStarterListContext = <T>(selector: ContextSelector<PromptStarterListContextValue, T>): T =>\n useContextSelector(PromptStarterListContext, (ctx = promptStarterListContextDefaultValue) => selector(ctx));\nexport const PromptStarterListProvider = PromptStarterListContext.Provider;\n"],"names":["createContext","useContextSelector","PromptStarterListContext","undefined","promptStarterListContextDefaultValue","numberOfColumns","usePromptStarterListContext","selector","ctx","PromptStarterListProvider","Provider"],"rangeMappings":";;;;;;","mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,mCAAmC;AAIrF,OAAO,MAAMC,2BAA2BF,cAAyDG,WAAW;AAE5G,MAAMC,uCAAsE;IAC1EC,iBAAiB;AACnB;AAEA,OAAO,MAAMC,8BAA8B,CAAIC,WAC7CN,mBAAmBC,0BAA0B,CAACM,MAAMJ,oCAAoC,GAAKG,SAASC,MAAM;AAC9G,OAAO,MAAMC,4BAA4BP,yBAAyBQ,QAAQ,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { PromptStarter, promptStarterClassNames, renderPromptStarter_unstable, usePromptStarterStyles_unstable, usePromptStarter_unstable } from './PromptStarter';
2
+ export { PromptStarter as PromptStarterV2, promptStarterClassNames as promptStarterV2ClassNames, renderPromptStarter_unstable as renderPromptStarterV2_unstable, usePromptStarterStyles_unstable as usePromptStarterV2Styles_unstable, usePromptStarter_unstable as usePromptStarterV2_unstable } from './PromptStarterV2';
3
+ export { PromptStarterList, renderPromptStarterList_unstable, usePromptStarterList_unstable, promptStarterListClassNames, usePromptStarterListStyles_unstable } from './PromptStarterList';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export type { PromptStarterProps, PromptStarterSlots, PromptStarterState } from './PromptStarter';\nexport {\n PromptStarter,\n promptStarterClassNames,\n renderPromptStarter_unstable,\n usePromptStarterStyles_unstable,\n usePromptStarter_unstable,\n} from './PromptStarter';\n\nexport type {\n PromptStarterProps as PromptStarterV2Props,\n PromptStarterSlots as PromptStarterV2Slots,\n PromptStarterState as PromptStarterV2State,\n} from './PromptStarterV2';\nexport {\n PromptStarter as PromptStarterV2,\n promptStarterClassNames as promptStarterV2ClassNames,\n renderPromptStarter_unstable as renderPromptStarterV2_unstable,\n usePromptStarterStyles_unstable as usePromptStarterV2Styles_unstable,\n usePromptStarter_unstable as usePromptStarterV2_unstable,\n} from './PromptStarterV2';\n\nexport {\n PromptStarterList,\n renderPromptStarterList_unstable,\n usePromptStarterList_unstable,\n promptStarterListClassNames,\n usePromptStarterListStyles_unstable,\n} from './PromptStarterList';\nexport type { PromptStarterListProps, PromptStarterListSlots, PromptStarterListState } from './PromptStarterList';"],"names":["PromptStarter","promptStarterClassNames","renderPromptStarter_unstable","usePromptStarterStyles_unstable","usePromptStarter_unstable","PromptStarterV2","promptStarterV2ClassNames","renderPromptStarterV2_unstable","usePromptStarterV2Styles_unstable","usePromptStarterV2_unstable","PromptStarterList","renderPromptStarterList_unstable","usePromptStarterList_unstable","promptStarterListClassNames","usePromptStarterListStyles_unstable"],"rangeMappings":";;","mappings":"AACA,SACEA,aAAa,EACbC,uBAAuB,EACvBC,4BAA4B,EAC5BC,+BAA+B,EAC/BC,yBAAyB,QACpB,kBAAkB;AAOzB,SACEJ,iBAAiBK,eAAe,EAChCJ,2BAA2BK,yBAAyB,EACpDJ,gCAAgCK,8BAA8B,EAC9DJ,mCAAmCK,iCAAiC,EACpEJ,6BAA6BK,2BAA2B,QACnD,oBAAoB;AAE3B,SACEC,iBAAiB,EACjBC,gCAAgC,EAChCC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,mCAAmC,QAC9B,sBAAsB"}